#include "pid.h"
void PIDParameter_Init(PIDTypeDef *P, float goal, float real, float Kp, float Ki, float Kd)
{
P->differential = 0;
P->real = real;
P->goal = goal;
P->err = goal - real;
P->err_last = P->err;
P->Kp = Kp;
P->Ki = Ki;
P->Kd = Kd;
P->integral = 0;
return;
}
float PID_calculate(PIDTypeDef *P, float real)
{
float Output;
P->real = real;
P->err = P->goal - P->real;
P->integral += P->err;
P->differential = P->err - P->err_last;
Output = P->err*P->Kp + P->differential*P->Kd + P->integral*P->Ki;
P->err_last = P->err;
return Output;
}
评论1