色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PID算法調(diào)節(jié)C51程序(4)

          PID算法調(diào)節(jié)C51程序(4)

          作者: 時(shí)間:2016-11-23 來(lái)源:網(wǎng)絡(luò) 收藏
          typedef struct PID
          {
          double SetPoint; // Desired Value

          double Proportion; // Proportional Const
          double Integral; // Integral Const
          double Derivative; // Derivative Const

          double LastError; // Error[-1]
          double PrevError; // Error[-2]
          double SumError; // Sums of Errors
          } PID;



          double PIDCalc ( PID *pp, double NextPoint )

          { double dError, Error;

          pp->SumError += (Error = pp->SetPoint - NextPoint);
          dError = pp->LastError - pp->PrevError;
          pp->PrevError = pp->LastError;
          pp->LastError = Error;
          return ( pp->Proportion * Error
          + pp->Integral * pp->SumError
          + pp->Derivative * dError
          );
          }



          void PIDInit ( PID *pp )

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



          double sensor ( void ) // Dummy Sensor Function
          { return 100.0;
          }

          void actuator ( double rDelta ) // Dummy Actuator Function
          {}

          void main ( void )
          { PID sPID; // PID Control Structure
          double rOut; // PID Response (Output)
          double rIn; // PID Feedback (Input)

          PIDInit ( &sPID ); // Initialize Structure
          sPID.Proportion = 0.5; // Set PID Coefficients
          sPID.Integral = 0.5;
          sPID.Derivative = 0.0;
          sPID.SetPoint = 100.0; // Set PID Setpoint

          for (;;) // Mock Up of PID Processing
          { rIn = sensor (); // Read Input
          rOut = PIDCalc ( &sPID,rIn ); // Perform PID Interation
          actuator ( rOut ); // Effect Needed Changes
          }
          }


          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉