PID算法的C语言实现
来源:互联网 发布:蚂蚁网络电视官方下载 编辑:程序博客网 时间:2024/04/30 20:10
float PIDcal(float setpoint,float actual_position){static float pre_error = 0; // 定义前一次误差static float integral = 0; // 定义积分项累加值float error; // 定义最新误差float derivative; // 定义微分项float output; // 定义输出// 计算误差error = setpoint - actual_position;// 死区设置,在误差极小的情况下不做积分处理,保证稳定性if(my_abs(error) > epsilon){ integral = integral + error*dt; // 积分项,做完壁障之后,积分清零}derivative = (error - pre_error)/dt; // 微分项output = Kp*error + Ki*integral + Kd*derivative; // 各项乘以系数得到PID输出// 输出限幅,确保输出不会太夸张if(output > MAX){output = MAX;}else if(output < MIN){output = MIN;} // 更新误差 pre_error = error; return output;}