PID控制器
PID控制,即 比例(proportion) - 积分(integration) - 微分(differentiation) 控制 是自动控制原理中定义的一种控制方法也可以称为是校正方法.
积分形式:$U(t) = K_pe(t) + K_i\int_0^te(t)dt + K_d\cfrac{de(t)}{dt}$
离散化: $U(t) = K_pe(t) + K_i\sum{e(t)} + K_d(e(t) - e(t-1))$
增量式: $U(t-1) = K_pe(t-1) + K_i\sum{e(t-1)} + K_d(e(t-1) - e(t-2))$
\[\begin{aligned} \Delta{U(t)} &= U(t) - U(t-1) \\ &=K_p(e(t)-e(t-1)) + K_ie(t) + K_d(e(t)-2e(t-1)+e(t-2)) \end{aligned}\]如上图所示:Kp Ki Kd为pid三个参数.
-
比例环节
成比例地反映控制系统的偏差信号e(t),偏差一旦产生,控制器立即产生控制作用,以减小偏差。当仅有比例控制时系统输出存在稳态误差(Steady-state error)
优点: 调整系统的开环比例系数,提高系统的稳态精度,减低系统的惰性,加快响应速度。
缺点: 仅用P控制器,过大的开环比例系数不仅会使系统的超调量增大,而且会使系统稳定裕度变小,甚至不稳定。 -
积分环节
控制器的输出与输入误差信号的积分成正比关系。主要用于消除静差,提高系统的无差度。积分作用的强弱取决于积分时间常数T,T越大,积分作用越弱,反之则越强。
优点: 消除稳态误差。
缺点: 积分控制器的加入会影响系统的稳定性,使系统的稳定裕度减小。 -
微分环节
反映偏差信号的变化趋势,并能在偏差信号变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系. 无法单独起作用。
优点:使系统的响应速度变快,超调减小,振荡减轻,对动态过程有“预测”作用。
代码实现
输入误差与输入值,通过增量式pid调整
1
2
3
4
5
6
7
8
9
10
11
12
double PurePid::step_control(double val, double err) {
double res = val;
errs[err_cnt%3] = err;
if(err_cnt >= 3)
{
res += _kp * (errs[err_cnt % 3] - errs[(err_cnt-1) % 3]) + _ki * errs[err_cnt % 3] + _kd * (errs[err_cnt % 3] - 2 * errs[(err_cnt - 1) % 3] + errs[(err_cnt - 2) % 3]);
}
err_cnt++;
return res;
}