PID控制有物理含义吗
一、背景
对于PID的初学者,经常会有疑惑,为什么位置的误差通过PID就变成了期望速度?他们之间有什么物理关系吗?还有对于无人机,为什么期望升力,又是期望加速度,又是期望油门,这个输出的量纲到底是什么?
其实,产生这个疑问的根本原因是没有区分开环控制和闭环控制。在实际控制系统中,我们经常用到开环控制和闭环控制的组合。开环控制其实就是前馈,闭环控制是反馈。接下来将以一个简单例子,说明这种这两种控制的关系。
二、关于开环与闭环控制
对于平面上一个木块,质量为 m = 0.5 k g m= 0.5 \rm kg m=0.5kg,木块的加速度 a a a 能够瞬间达到设置的值 a d a_d ad,现在希望木块达到速度 v d = 1 m / s v_d= 1 \rm m/s vd=1m/s,请问需要设置怎样的加速度 a d ( t ) a_d(t) ad(t)。
2.1 开环控制
使用高中物理知识,容易想象,施加如下加速度
a d ( t ) = { 1 , t ≤ 1 0 , t = 0 a_d(t) = \begin{cases} 1, \quad t \leq 1 \\ 0, \quad t = 0 \end{cases} ad(t)={1,t≤10,t=0
可以使得木块在 1 s 1 \rm s 1s 时达到期望的速度 v d v_d vd。其实,这就是一个开环控制,在理想环境中可以成立,但是在实际环境中并不可行。实际的问题有:施加的加速度有点噪声,或者不能精确地达到 1 m / s 2 1 \rm m/s^2 1m/s2,或者小物块的受到微小的空气阻力,这些都将会导致 a ( t ) ≠ a d ( t ) a(t) \neq a_d(t) a(t)=ad(t),积分后速度无法刚好达到 1 m / s 1 \rm m/s 1m/s。再考虑几分钟,几小时甚至几天之后,让这 1 m / s 1 \rm m/s 1m/s 的速度维持下去几乎是不可能的事情。
2.2 闭环控制
为了解决这个问题,一个直观的思路就是来一个实时的控制,如果偏移了 v d v_d vd,就施加个反方向的加速度,也就是
a d ( t ) = K ( v d − v ) a_d(t) = K ( v_d - v) ad(t)=K(vd−v)
其中, K K K 为一个正的常数。如果 v < v d v < v_d v<vd ,那么 a d > 0 a_d>0 ad>0 ,让木块加速度;如果 v > v d v > v_d v>vd ,那么 a d < 0 a_d < 0 ad<0 ,让木块减速。这样,一个比例控制就横空出世了。通过这样一个实时的反馈,我们有信心让这个木块几天后还保持着 1 m / s 1 \rm m/s 1m/s 的速度。控制器Simulink仿真如图1所示,效果如图2所示。
对比开环控制与闭环控制,开环控制是有明确的物理关系的,这个加速度大小与施加的时间符合运动学规律。但是闭环控制并没有这样的物理等式(但是具备物理关系),速度的误差乘以一个系数显然不等于加速度,况且这个系数还可以随意调节。
再如,控制率完全可以改为
a d ( t ) = K arctan ( v d − v ) a_d(t) = K \arctan(v_d - v) ad(t)=Karctan(vd−v)
一个非线性控制就诞生了,一样能让速度达到期望值,这更显然没有确定的物理等式。控制器Simulink仿真如图1所示,效果如图2所示。
注意区分控制器与被控对象。前面说反馈控制没有明确的物理等式,但是被控对象还是有明确的等式关系的,加速度积分是速度。如果被控对象不具备明确的物理等式,例如 x x x 轴的加速度与 y y y 轴的速度,那么这个系统不可控,不可控的系统也就没有设计控制器一说了。
三、关于量纲
现在假设不能直接控制木块的加速度,而是能够直接控制施加的外力。显然
F d = m a d = 0.5 a d F_d = m a_d = 0.5 a_d Fd=mad=0.5ad
如果使用开环控制,那么
F d ( t ) = { 0.5 , t ≤ 1 0 , t = 0 F_d(t) = \begin{cases} 0.5, \quad t \leq 1 \\ 0, \quad t = 0 \end{cases} Fd(t)={0.5,t≤10,t=0
如果使用闭环控制
F d ( t ) = K ′ ( v d − v ) F_d(t) = K' ( v_d - v) Fd(t)=K′(vd−v)
此时,理论上 K ′ = 0.5 K K'=0.5 K K′=0.5K。
在实际工程中,我们把PID参数随意调大调小,输出是加速度还是力并不重要,这个量纲的转化已经包含在参数中了。
这就解释了为什么无人机中期望的升力为什么又变成期望油门。其实不用在意这个量纲,只要是升力和油门是一个正比例关系,把PID对应调大调小就完成了量纲变化。而名称根据业内习惯称呼即可。
上面说的量纲变化只针对线性关系(准确说只针对正比例关系)。如果两者有非线性关系,就不是直接调节PID大小这么简单了,可能需要设计对应的非线性控制率。如果有微积分关系,控制器结构都需要做出对应的调整。
四旋翼课程链接
1、基于PX4实现的四旋翼建模与控制[理论+源码+实战]:https://ebzbf.xetslk.com/s/3jYSUf
2、零基础入门四旋翼建模与控制(MATLAB仿真)[理论+实战]: https://ebzbf.xet.tech/s/3OMs38
3、[硬件+代码]御风250-四旋翼无人机(基于PX4):https://ebzbf.xetslk.com/s/14S0P4