#include <iostream>
using namespace std;
struct _PID
{
float SetSpeed;
float ActualSpeed;
float Kp;
float Ki;
float Kd;
float err;
float Last_err;
float integral;
}PID;
void PID_init ()
{
PID.SetSpeed = 0;
PID.ActualSpeed = 0;
PID.Kp = 0.2;
PID.Ki = 0.0125;
PID.Kd = 0.2;
PID.integral = 0;
PID.Last_err = 0;
}
float PID_Algothrim (float speed)
{
PID.SetSpeed = speed;
PID.err = PID.SetSpeed - PID.ActualSpeed;
PID.integral += PID.err;
PID.ActualSpeed = PID.Kp* PID.err + PID.Ki*PID.integral + PID.Kd*(PID.err-PID.Last_err);
PID.Last_err = PID.err;
return PID.ActualSpeed;
}
int main ()
{
float result;
int i = 1000;
PID_init ();
while(i)
{
i--;
result = PID_Algothrim (100.0);
cout << result << "\t";
}
return 0;
}
位置型PID算法
最新推荐文章于 2024-07-12 16:47:29 发布