<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)PID算法程序(三)增量式PID控制算法

          51單片機(jī)PID算法程序(三)增量式PID控制算法

          作者: 時(shí)間:2016-11-24 來源:網(wǎng)絡(luò) 收藏

          當(dāng)執(zhí)行機(jī)構(gòu)需要的不是控制量的絕對(duì)值,而是控制量的增量(例如去驅(qū)動(dòng)步進(jìn)電動(dòng)機(jī))時(shí),需要用PID的“增量算法”。

          本文引用地址:http://www.ex-cimer.com/article/201611/320783.htm


          增量式PID控制算法可以通過(2-4)式推導(dǎo)出。由(2-4)可以得到控制器的第k-1個(gè)采樣時(shí)刻的輸出值為:


          (2-5)


          將(2-4)與(2-5)相減并整理,就可以得到增量式PID控制算法公式為:


          (2-6)


          其中



          由(2-6)可以看出,如果計(jì)算機(jī)控制系統(tǒng)采用恒定的采樣周期T,一旦確定A、B、C,只要使用前后三次測(cè)量的偏差值,就可以由(2-6)求出控制量。


          增量式PID控制算法與位置式PID算法(2-4)相比,計(jì)算量小得多,因此在實(shí)際中得到廣泛的應(yīng)用。


          位置式PID控制算法也可以通過增量式控制算法推出遞推計(jì)算公式:


          (2-7)


          (2-7)就是目前在計(jì)算機(jī)控制中廣泛應(yīng)用的數(shù)字遞推PID控制算法。



          增量式PID控制算法C51程序



          typedef struct PID


          {


          int SetPoint;//設(shè)定目標(biāo)Desired Value


          long SumError;//誤差累計(jì)


          double Proportion;//比例常數(shù)Proportional Const


          double Integral;//積分常數(shù)Integral Const


          double Derivative;//微分常數(shù)Derivative Const


          int LastError; //Error[-1]


          int PrevError; //Error[-2]


          } PID;

          static PID sPID;

          static PID *sptr = &sPID;

          void IncPIDInit(void)

          {

          sptr->SumError = 0;

          sptr->LastError = 0;//Error[-1]


          sptr->PrevError = 0;//Error[-2]


          sptr->Proportion = 0;//比例常數(shù)Proportional Const


          sptr->Integral = 0;//積分常數(shù)Integral Const


          sptr->Derivative = 0;//微分常數(shù)Derivative Const


          sptr->SetPoint = 0;


          }




          int IncPIDCalc(int NextPoint)


          {


          register int iError, iIncpid;//當(dāng)前誤差


          iError = sptr->SetPoint - NextPoint;//增量計(jì)算


          iIncpid = sptr->Proportion * iError//E[k]項(xiàng)


          - sptr->Integral * sptr->LastError//E[k-1]項(xiàng)


          + sptr->Derivative * sptr->PrevError;//E[k-2]項(xiàng)


          //存儲(chǔ)誤差,用于下次計(jì)算


          sptr->PrevError = sptr->LastError;


          sptr->LastError = iError;


          //返回增量值


          return(iIncpid);


          }



          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();