标题:
各位大神,PID温度控制的程序不太懂,帮忙看下吧,小白感激不尽,黑币奉上!
[打印本页]
作者:
陶陶不在
时间:
2016-5-12 09:14
标题:
各位大神,PID温度控制的程序不太懂,帮忙看下吧,小白感激不尽,黑币奉上!
我在做PID温度控制的时候,下面的这个函数有一部分不懂,我用红色标记出来,大神帮忙看一下,帮下小白哈,小白再次感激不尽!
/***********************************************************
温度比较处理子程序
***********************************************************/
void compare_temper()
{
unsigned char i ;
//EA=0;
if(set_temper>temper)//设定值大于测量值
{
if(set_temper-temper>1)
{
high_time=100 ; //大于1°不进行PID运算
low_time=0 ;
}
else
{ //在1°范围内进行PID运算
for(i=0;i<10;i++)
//为什么要进行10次,这样前九次不是都没用了吗?
{
//get_temper();
rin=s;
// Read Input
rout=PIDCalc(&spid,rin); //执行PID运算(位置式PID)
// Perform PID Interation
}
if(high_time<=100) //限制最大值
high_time=(unsigned char)(rout/800);//这里为什么要除以800啊?
else
high_time=100;
low_time=(100-high_time);
}
}
/****************************************/
else if(set_temper<=temper) //当实际温度大于设置温度时
{
if(temper-set_temper>0)//如果实际温度大于设定温度
{
high_time=0 ;
low_time=100 ;
}
else
{
for(i=0;i<10;i++)
{
//get_temper();
rin=s ;
// Read Input
rout=PIDCalc(&spid,rin);
// Perform PID Interation
}
if(high_time<100) //此变量是无符号字符型
high_time=(unsigned char)(rout/10000);//这里又为什么除以10000?
else
high_time=0 ;//限制不输出负值
low_time=(100-high_time);
//EA=1;
}
}
}
各位大神帮忙看下,如果需要其他源程序,小白立马贴上。
在这里再次感谢各位大神了。
小白在线等,非常感谢!!!!
作者:
陶陶不在
时间:
2016-5-12 18:53
有没有大神 帮忙看一下嘛 谢谢了!!!
作者:
luoluoluo136
时间:
2016-5-13 08:49
1 rout是一个全局变量 2 为什么要除以10000要看你这个rout的定义,建议贴一下完整程序
作者:
陶陶不在
时间:
2016-5-13 10:28
luoluoluo136 发表于 2016-5-13 08:49
1 rout是一个全局变量 2 为什么要除以10000要看你这个rout的定义,建议贴一下完整程序
你好,rout 就是那个PID控制里面的u(k)就是PID的输出值。帮忙看下 非常感谢哈!
作者:
kommandoo
时间:
2017-11-4 22:15
我也想知道,研究半天了
作者:
love12345smile
时间:
2017-11-6 12:35
1 rout是一个全局变量 2 为什么要除以10000要看你这个rout的定义,建议贴一下完整程序
作者:
fsad
时间:
2019-10-21 09:37
麻烦附上完整程序看看呢
作者:
51黑是我爹
时间:
2019-10-21 17:14
你好,方便加个qq一起研究下吗?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1