標題: 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