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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 標(biāo)準(zhǔn)的PID處理例程

          標(biāo)準(zhǔn)的PID處理例程

          作者: 時(shí)間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
          /*====================================================================================================
          這是從網(wǎng)上找來的一個(gè)比較典型的PID處理程序,在使用單片機(jī)作為控制cpu時(shí),請(qǐng)稍作簡(jiǎn)化,具體的PID
          參數(shù)必須由具體對(duì)象通過實(shí)驗(yàn)確定。由于單片機(jī)的處理速度和ram資源的限制,一般不采用浮點(diǎn)數(shù)運(yùn)算,
          而將所有參數(shù)全部用整數(shù),運(yùn)算到最后再除以一個(gè)2的N次方數(shù)據(jù)(相當(dāng)于移位),作類似定點(diǎn)數(shù)運(yùn)算,可
          大大提高運(yùn)算速度,根據(jù)控制精度的不同要求,當(dāng)精度要求很高時(shí),注意保留移位引起的“余數(shù)”,做好余
          數(shù)補(bǔ)償。這個(gè)程序只是一般常用pid算法的基本架構(gòu),沒有包含輸入輸出處理部分。
          =====================================================================================================*/
          #include
          #include
          /*====================================================================================================
          PIDFunction

          ThePID(比例、積分、微分)functionisusedinmainly
          controlapplications.PIDCalcperformsoneiterationofthePID
          algorithm.

          WhilethePIDfunctionworks,mainisjustadummyprogramshowing
          atypicalusage.
          =====================================================================================================*/

          typedefstructPID{

          doubleSetPoint;//設(shè)定目標(biāo)DesiredValue

          doubleProportion;//比例常數(shù)ProportionalConst
          doubleIntegral;//積分常數(shù)IntegralConst
          doubleDerivative;//微分常數(shù)DerivativeConst

          doubleLastError;//Error[-1]
          doublePrevError;//Error[-2]
          doubleSumError;//SumsofErrors

          }PID;

          /*====================================================================================================
          PID計(jì)算部分
          =====================================================================================================*/

          doublePIDCalc(PID*pp,doubleNextPoint)
          {
          doubledError,
          Error;

          Error=pp->SetPoint-NextPoint;//偏差
          pp->SumError+=Error;//積分
          dError=pp->LastError-pp->PrevError;//當(dāng)前微分
          pp->PrevError=pp->LastError;
          pp->LastError=Error;
          return(pp->Proportion*Error//比例項(xiàng)
          +pp->Integral*pp->SumError//積分項(xiàng)
          +pp->Derivative*dError//微分項(xiàng)
          );
          }

          /*====================================================================================================
          InitializePIDStructure
          =====================================================================================================*/

          voidPIDInit(PID*pp)
          {
          memset(pp,0,sizeof(PID));
          }

          /*====================================================================================================
          MainProgram
          =====================================================================================================*/

          doublesensor(void)//DummySensorFunction
          {
          return100.0;
          }

          voidactuator(doublerDelta)//DummyActuatorFunction
          {}

          voidmain(void)
          {
          PIDsPID;//PIDControlStructure
          doublerOut;//PIDResponse(Output)
          doublerIn;//PIDFeedback(Input)

          PIDInit(&sPID);//InitializeStructure
          sPID.Proportion=0.5;//SetPIDCoefficients
          sPID.Integral=0.5;
          sPID.Derivative=0.0;
          sPID.SetPoint=100.0;//SetPIDSetpoint

          for(;;){//MockUpofPIDProcessing

          rIn=sensor();//ReadInput
          rOut=PIDCalc(&sPID,rIn);//PerformPIDInteration
          actuator(rOut);//EffectNeededChanges
          }
          }


          關(guān)鍵詞: 標(biāo)準(zhǔn)PID處

          評(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); })();