|
50黑币
我在做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;
- }
- }
- }
- 各位大神帮忙看下,如果需要其他源程序,小白立马贴上。
- 在这里再次感谢各位大神了。
- 小白在线等,非常感谢!!!!
|
|