前面已经将控制系统的基础知识点过了一遍,从本节开始,将正式学习PID控制的相关知识,将会从基本的PID公式概念解释,再基于matlab仿真介绍十几种数字式PID的基本概念。本文重点讲解PID的经典公式。
运算 | 连续表示 | 运算 | 离散表示 |
---|---|---|---|
积分 | ∫ 0 t x ( t ) d t \int_0^t x(t)dt ∫0t?x(t)dt | 求和 | ∑ n = 0 N x ( n ) \displaystyle \sum_{n=0}^N x(n) n=0∑N?x(n) |
求导 | d x ( t ) d t \frac{dx(t)}{dt} dtdx(t)? | 变化率 | x ( n ) ? x ( n ? 1 ) Δ t \frac{x(n)-x(n-1)}{\Delta t} Δtx(n)?x(n?1)? |
上图是前面我们学过的闭环控制系统框图,我们看到图中标记的这个u(t)是控制器的输出,也就是控制器环节与执行器之间的信号量。公式中有一个熟悉的参数 e e e,这是误差,也是图中控制系统中的 E E E(等于期望输出减去实际输出)。
公式分成三部分相加,第一部分主要是误差变量,第二部分主要是一个从 0 0 0 到 t t t 对误差 e e e 的积分运算,第三部分主要是对误差 e e e 求导。
k p k_p kp?是比例系数, T i T_i Ti? 是积分时间, T d T_d Td? 是微分时间,这三个参数也是PID里要调的三个参数,这三个参数在实际 PID 实现中,如单片机实现、matlab、simulink仿真中都是经过化简后直接调节 K p K_p Kp?、 K i K_i Ki?、 K d K_d Kd?这三个参数。
u ( t ) = k p e + k i ∫ 0 t e d t + k d d e d t u(t)=k_p e+k_i\int_0^t edt+k_d\frac{de}{dt} u(t)=kp?e+ki?∫0t?edt+kd?dtde?
u ( t ) = k p e i + k i ∑ i = 0 N e i + k d e i ? e i ? 1 Δ t u(t)=k_p e_i+k_i \displaystyle \sum_{i=0}^N e_i+k_d \frac{e_i-e_{i-1}}{\Delta t} u(t)=kp?ei?+ki?i=0∑N?ei?+kd?Δtei??ei?1??
(1)Proportional比例控制
纯比例控制下:
我们来看第一幅图,假如我们要让无人机悬停在 10 10 10米的高度,设为 h = 10 h=10 h=10,而此时,它的高度是 2 2 2米,设为 h 0 = 2 h0=2 h0=2。那就有 e = h ? h 0 = 8 e=h-h0=8 e=h?h0=8米的误差,假设Kp等于0.5,则比例环节 K p ? e = 0.5 ? 8 = 4 K_p* e=0.5*8=4 Kp??e=0.5?8=4米,比例控制就是每次调节高度是误差的 K p K_p Kp?倍,第一次调节后,无人机上升了4米。
第二幅图,此时无人机的高度,设为 h 1 = 2 + 4 = 6 h1=2+4=6 h1=2+4=6米,也就是最初未调节前无人机的高度 2 2 2米,再加上第1次调节的高度 4 4 4米,现在是 6 6 6米。那我们看现在的误差是多少,现在的误差是设定高度 10 10 10米减去现在高度 6 6 6米,即 e = h ? h 1 = 10 ? 6 = 4 e=h-h1=10-6=4 e=h?h1=10?6=4米。再乘以 K p K_p Kp?,即 K p ? e = 0.5 ? 4 = 2 Kp*e=0.5*4=2 Kp?e=0.5?4=2米,目前还有两米误差,依次进行下去,随着误差的减小,每次调节上升的量也逐渐减小,但最终会接近 10 10 10米的目标高度,这个过程就是比例控制。
可以看到比例系数 K p K_p Kp?越大,系统反应越快,无人机可以更快的靠近目标,但比例控制也有天生的弱点,在实际过程中有着各种各样的干扰,比如无人机到达 8 8 8米后,有持续的风将无人机向下吹,每次正好往下吹 1 1 1米,而比例控制往上升的高度误差 2 2 2乘以系数 0.5 0.5 0.5,也正好是 1 1 1米,这样的话,这个无人机就会悬停在这个高度,无法达到指定高度,这就是静态误差(也叫稳态误差)。也就是说虽然较大的比例系数能让系统快速到达目标值附近,但 K p K_p Kp?调的再大,也避免不了与目标值存在稳态误差,这就需要引入积分控制。
(2)Integral积分控制
在比例控制上,引入积分控制。
积分控制是对过去所有的误差求和,在离散的情况下,就是做累加,无人机经过两次控制,第一次误差是 8 8 8米,第二次误差是 4 4 4米,那么它的累积误差就是 12 12 12米,如果积分系数是 0.1 0.1 0.1,那即便此时向下吹的高度和比例控制上升的高度效果抵消,积分控制还是可以让无人机往上吹 1.2 1.2 1.2米,这样就可以逐渐达到目标高度。
对于这个控制过程加入合适的积分控制系数后,被控量就能既快速又精准的到到目标值。但是,这样的控制仍然不完美,至少在一些对偏差控制要求比较严格的场合,仍然是一次失败的调节,因为这个控制曲线的超调量太大。如果这个曲线是汽车自动驾驶情况下方向盘的控制曲线,这么大的过冲,对于乘客来说,肯定是一场精心动魄的体验。
我们再回到无人的例子,我们经过三次控制累积误差已经从 12 12 12变成 12.8 12.8 12.8,乘以积分系数 K i K_i Ki?等于 1.28 1.28 1.28,而此时无人机距离目标高度只有 0.8 0.8 0.8米,直接飞上去,就出现了过冲现象,此时就该微分控制出场了。
(3)Derivative微分控制
微分控制就是通过当前时刻与前一时刻误差量的差值,对未来做预测,如果差值为正,就认为误差在逐渐变大,需要加大控制强度,使误差降下来,如果误差为负,则误差在逐渐变小,控制强度可以小一点,让目标平稳缓和的到达指定值,这样我们给 K d K_d Kd?一个合适的值,就可以让无人机平稳达到 10 10 10米的高度。
从阶跃函数可以看出,系统超调量得到有效控制,最终得到了我们期望的一个曲线。
本节完 |
---|
特别说明:文中如有编辑错误,感谢指出,会及时更新。本文的实例是之前学习阶段看的一个视频,感觉很有代表性,就分享在这里,如有侵权,请私信我删除。