浅谈位置式PID
之前用pid控制小车,避免忘记 ,在这里整理一下资料(若有哪里不对,还请指教)
在说pid之前,先来说一下开环控制和闭环控制
开环控制
当操作者启动系统,使之进入运行状态后,系统将操作者的指令一次性输向受控对象。此后,操作者对受控对象的变化便不能作进一步的控制。(来自百度)。
闭环控制
当操作者启动系统后,通过系统运行将控制信息输向受控对象,并将受控对象的状态信息反馈到输入中,以修正操作过程,使系统的输出符合预期要求(来自百度)。
这里举一个例子:让电机转动,如果只需要使电机转起来,只需要通电,至于电机的转速无法控制。这属于开环控制。
(可能这里有人就会产生疑问了,如果通电,电机转动起来,我只需要测量一下电机转速,将电压人为调到需要转速的那个定值就行了,不需要PID来控制,还省了很多麻烦。
其实这里已经有闭环的意思了,不过只是根据输出调节输入的控制器变成了我们自己,而不是软件或者硬件而已。)
这里的pid控制也是闭环控制,是一种根据输出来控制系统的机制(这里就不讨论pid三个字母的含义了,只讨论其实践效果)。
方便理解,这里谈论一下pid的发展:
最先的控制是一种开关式的控制:假设要维持一个漏水水缸的水量,是这样操作的:水量低于设定值,打开进水阀,高于设定值,关闭进水阀。但是这样的调节精度不高,会使水缸的水在设定值的上下波动很厉害。(开关调节)
后来又改进了这种调节办法,改用按比例控制进水速度的办法。将水缸的实际水量与设定值做差再乘上一个系数作为进水的速度。这样的调节比前面的调节效果要好,但是会出现一些误差或者震荡,效果不是很理想。(纯比例调节)
再后来,在纯比例的基础上进入了积分和微分,构成了PID调节,这种调节方式就好了很多,达到了 快、准、狠 的要求。(PID调节)
进入正题:位置式PID
先看一个位置式的PID表达式(连续):
其中:
e
(
t
)
e_{(t)}
e(t) = 设定值 - 测量值;
K
p
K_p
Kp是比例系数;
T
i
T_i
Ti是积分周期;
T
d
T_d
Td是微分周期。
由于计算机是处理数字信号的,故需要将连续信号离散化,下面是离散表达式(连续表达式里散化过程,参考博客:PID控制经典教程;密码:empn)
其中:比例系数:
K
p
K_p
Kp;积分系数:
K
p
T
T
i
\frac {K_pT}{T_i}
TiKpT,用
K
i
K_i
Ki替代;微分系数:
K
p
T
d
T
\frac {K_pT_d}{T}
TKpTd,用
K
p
K_p
Kp替代。则有:
注:虽此表达式无周期T,但是在写PID控制程序时,最好将采样的周期固定,且采样周期应大于系统的周期。
到这里PID公式已经介绍完毕,现在来细谈这三个参数 K p K_p Kp, K i K_i Ki, K d K_d Kd。
由离散PID表达式可知,
K
p
K_p
Kp直接跟输出有关,所以这三个参数中
K
p
K_p
Kp对结果影响是最大的。如果想使调节反应快,可以适当增加
K
p
K_p
Kp,提高反应速度。
在控制电机转速PID中,
e
(
t
)
e_{(t)}
e(t)为实测转速-设定转速。经过PID计算后,
u
(
t
)
u_{(t)}
u(t)则为输出PWM占空比。
这里附上一篇整定参数的口诀:
参数整定找最佳,从小到大顺序查
先是比例后积分,最后再把微分加
曲线振荡很频繁,比例度盘要放大
曲线漂浮绕大湾,比例度盘往小扳
曲线偏离回复慢,积分时间往下降
曲线波动周期长,积分时间再加长
曲线振荡频率快,先把微分降下来
动差大来波动慢。微分时间应加长
理想曲线两个波,前高后低4比1
一看二调多分析,调节质量不会低
(博客未完待续)