標題: pid溫度調(diào)節(jié) [打印本頁]
作者: shenlong 時間: 2017-9-28 17:36
標題: pid溫度調(diào)節(jié)
if(set_temper>temper)
{
if(set_temper-temper>1)
{
high_time=100 ; //大于1°不進行PID運算
low_time=0 ;
}
else
{ //在1°范圍內(nèi)進行PID運算
for(i=0;i<10;i++)
{
//get_temper();
rin=s;
// Read Input
rout=PIDCalc(&spid,rin); //執(zhí)行PID運算
// Perform PID Interation
}
if(high_time<=100) //限制最大值
high_time=(unsigned char)(rout/800);\\為什么除以800
else
high_time=100;
low_time=(100-high_time);
作者: useeker 時間: 2017-9-28 18:16
僅憑這一小段程序無法得出為什么除以800的結論
作者: pangzimengnan 時間: 2017-9-28 19:05
你單獨放這么一段程序,除了作者誰也不能保證完全看的明白啊。我個人認為你這個程序是有些問題的,首先設定溫度大于實時溫度1度就不進行PID運算,那溫度控制肯定是不理想的,由于慣性會有很大的超調(diào),這里就需要微分環(huán)節(jié)的抑制。另外函數(shù)里面什么rin,s什么的變量你全都沒有做說明,誰知道是寫的是什么?看后面代碼的意思應該是PID輸出映射PWM控制占空比,但是輸出限幅的位置就錯了。最后至于為啥要除以800?多半是PID參數(shù)調(diào)的不好,不能直接映射。不過一看就有問題的程序,你再細扣其中幾個數(shù)字的問題那也沒什么意義。
作者: wxszx 時間: 2017-9-28 19:57
其實第一個if判斷可以不要的吧
作者: yzwzfyz 時間: 2017-9-28 23:44
因為在此之前擴大了800倍。
作者: yzczone 時間: 2017-9-29 11:06
這個程序根本不能判斷為什么除800
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |