在绝对式PID计算模块程序中,包括了PID的结构体,PID结构体内变量的初始化,
PID计算公式的实现,在实际的操作中,采用了积分分离的PID控制,当误差较大时,
取消积分作用,误差较小时引入积分,消除静态误差。PID中的参数包括,期望值、实
际值、偏差值、上一个偏差值、片成功变化率、PID初始化参数,模糊PID输出的整定
量和控制器计算结果,使用的结构体如下:
struct -pid
float SetSpeed;//期望值
float ActualSpeed;//实际值
float err;//偏差值
float err last; //上一个偏差值
float err rate;/偏差变化率
float Kp,Ki,Kd;//比例,微分,积分参数
float KpAdd,KiAdd,KdAdd;//模糊PID计算出的整定量
float voltage;//计算结果
} pid;
PID计算PWM占空比的编程算法}si]如下:
pid.voltage=(pid.Kp+ pid.KpAdd)*pid.err +pid.index*( pid.Ki+ pid.KiAdd)*pid.integral
+(pid.Kd+ pid.KdAdd)*(pid.err-pid.err last);
|