PID算法分类
PID算法可分为位置式PID与增量式PID两大类。
在实际的编程应用中,需要使用离散化的PID算法,以适用计算机的使用环境,下面以电机转速控制为例,来看一下两种PID算法的基本原理。
位置式PID
位置式PID是当前系统的实际位置,与想要达到的预期位置的偏差,进行PID控制

- 比例P:e(k) 此次误差
- 积分I:∑e(i) 误差的累加
- 微分D:e(k) - e(k-1) 此次误差-上次误差
因为有误差积分 ∑e(i),一直累加,也就是当前的输出u(k)与过去的所有状态都有关系。
位置式PID算法的伪代码如下:
//位置式PID(伪代码)
previous_err = 0;
integral = 0;
loop: //根据目标值与测量值(如电机的设定速度与读到的编码器转后后的速度),循环计算更新输出值(如PWM)
error = setpoint - measured_value; /\*误差项:目标值-测量值\*/
integral += error \* dt; /\*积分项:误差项的累计\*/
derivative = (error - previous_error) / dt; /\*微分项:误差的变化率\*/
output = Kp\*error + Ki\*integral + Kd\*derivative; /\*三项分别乘以PID系数即为输出\*/
previous_err = err; //更新误差
wait(dt); //等待固定的计算周期
goto loop;
增量式PID

- 比例P:e(k) - e(k-1) 此次误差-上次误差
- 积分I:e(k) 此次误差d
- 微分D:e(k) - 2e(k-1)+e(k-2) 这次误差-2×上次误差+上上次误差
注意增量式PID首先计算的是Δu(k),然后与上次的输出相加,才是此次的输出结果。增量式PID没有误差累加,控制增量Δu(k)的确定仅与最近3次的采样值有关。
增量式PID算法的伪代码如下:
//增量式PID(伪代码)
previous02_error = 0; //上上次偏差
previous01_error = 0;

最低0.47元/天 解锁文章
568

被折叠的 条评论
为什么被折叠?



