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;}

原创粉丝点击