標題:
各位大神,PID溫度控制的程序不太懂,幫忙看下吧,小白感激不盡,黑幣奉上!
[打印本頁]
作者:
陶陶不在
時間:
2016-5-12 09:14
標題:
各位大神,PID溫度控制的程序不太懂,幫忙看下吧,小白感激不盡,黑幣奉上!
我在做PID溫度控制的時候,下面的這個函數(shù)有一部分不懂,我用紅色標記出來,大神幫忙看一下,幫下小白哈,小白再次感激不盡!
/***********************************************************
溫度比較處理子程序
***********************************************************/
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); //執(zhí)行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 發(fā)表于 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.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1