日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

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

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

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

          關(guān)閉