当前位置: 华文问答 > 科学

PID调参的实用方法和经验有哪些?

2015-01-08科学

最近一直在做四轴飞行器 做个笔记吧

四轴地面站参数设置菜单中,有一项 PID 设置,对于没接触过 PID 的人来说,那完全是一头雾水,一堆摸不着头脑的数字。
PID 控制是自动化控制领域应用非常广的控制方式, P 代表比例,I 代表积分,D 代表 微分 ,它以传感器采集的数据作为输入源,按预定的 PID 参数根据特定的公式计算以后输出控制。

P 比例控制处理目前误差,使 设备尽快回到正确的位置;

I 积分 控制处理过去累积误差 ,众所周知积分的实质是求和,将过去误差记录下来,测量值-误差=较精确的值。

D 微分控制是对未来误差的预测,

举个形象的例子 ,一列即将到站的火车在快要到达站点的时候会切断输出动力,让其凭借惯性滑行到月台位置。假如设置火车以 100km/h 的速度在站前 1km 的地方切断动力开始滑行,那么这个 100 比 1 就是比例 P 的含义, P 越大,它在站前开始滑行的速度越快。滑行初始速度快的好处就是进站快。


但过快的初始滑行速度会导致火车在惯性的作用下冲过月台,这样一来火车不得不进行倒车,但是因为 P 设置过大,倒车以后的滑行也会同样使火车倒过头了,这样一来,就形成了一种反复前行后退的震荡局面。


而 P 设置小了,进站速度会变得非常缓慢,进站时间延长。所以设置一个合适的 P 值是 PID 调节的首要任务。由于 P 是一个固定的数值,如果将火车的速度与月台的距离用一个坐标图理想化的表现出来的话,不考虑惯性及外力的作用,这两者的关系呈现出来 P 调节的结果会是一条直线,斜线越陡,代表进站时间越短。

P 调节即比例调节,误差越大则输出越大,最终使设备回到正确的位置。

(PS:如果一个电热器要使水温保持在二十度,默认调节范围为十度到二十度,如果当前温度为十度则输出为100%,使水温尽快回到二十度)


上图的 P 调节结果只是为了方便理解,在实际中是根本不可能出现的 ,PID 计算的结果也不是这样子。不管怎样,如果只有 P 调节,火车要么设置一个比较低的 P 值以非常缓慢的速度到达目标月台,要么就是过冲了,很难设置在速度与准确度之间求得平衡。



所以接下来该是应用D 微分控制了 。根据上面举的例子,假如 P 等于 100 的时候,火车
刚好能滑行到月台,所耗费的时间是 10 分钟。但是对应一个自稳定性能要求很高的自动化系
统来说,这 10 分钟的时间太长了,可不可以 加快 呢?


当然可以,这样虽然会造成冲过月台,但我们可以通过刹车来控制,这里的 刹车实质就是 D 微分控制。


我们把 P 加大到 120,让火车司机驾驶火车在站前 1km 的地方以 120km/h 的速度开始减速滑行。

然后站前 500 米的时候踩一下刹车让速度降为 80km/h。

站前 300 米再踩一下刹车让速度降为 50km/h。

站前 100 米又踩一下刹车,让速度降为 20km/h。

站前 10 米让火车在较短的时间内滑行到月台准确的位置。

这样一来,进站速度会大大加快,原来需要 10 分钟的时间可能只需要 5 分钟就行了。


这就是 D 的作用,我们权且把 D 理解为刹车吧,如果仍旧以坐标图形象表达 D 对 P 调节的响,那就是 D 使 P 调节出来的一条直线变成了一条曲线,在 PID 公式中,D 的左右就是改变 P 的曲线,D 的数值越大,对 P 的影响也越大。

加入 D 后的曲线前期较陡,进站比较快,后期平缓,使得火车可以平稳准确的进站。


根据 PD 的这个关系,我们可以得出一个调节步骤:先把 D 置零,加大 P值,使飞行器适当过冲开始震荡,然后增加 D 的数值,拉低 P 调节后期的作用,使过冲现象放缓,最终调到不过冲为止。


P 越大,飞行器倾斜后恢复的速度越快,表现为越灵敏,但过大会产生震荡;


D 越大,调节越平缓,表现为越平稳,但 D 过大会使调节时间延长,表现为反映迟钝。

(这里的 D 指的就是 D 的数值,在一般的 PID 表述中,D 越接近 0,P 作用越大,这点需要注意一下)


最后是 I 的作用,I 是积分,是为了消除误差而加入的参数,

假如上面的例子中,火车靠站以后,离最终的目标停止线还是差了 1 米,我们虽然也可以认为这是一次合格的停车,但这毕竟是误差,如果我们认可了这 1 米的误差,那在此基础上火车第二次靠站就会有 2米的误差了。

如此以往,误差会越来越大,所以我们要把这个误差记录下来,当第二次进站的时候就可以发挥作用了,如果差了 1 米,火车驾驶员就可以在原来的 PD 调节基础上进行 I 积分,延迟 1 米输出(或者提前),即 999 米开始减速,最终可以刚刚好到达停止线。


如果没有 I 的作用,在多轴飞行器平台上的表现就是飞行器越来越倾斜,最终失去平衡。


I 的调节是建立在 PD 的基础上的,PD 的改变都会影响 I 的效果,所以最终的调节步骤就是先调 P 确立灵敏度,接着调节 D 调整平稳度,最后调节 I 确定精度。



自动控制原理的故事

(挺有意思的故事)

死区 dead band 讲得很形象

夏天了,室内温度设在28度,实际温度高于28度了,空调机启动致冷,把房间的温度降下来;实际温度低于28度了,空调机关闭,让房间温度受环境气温自然升上去。通过这样简单的开关控制,室内温度应该就控制在28度。

不过这里有一个问题, 如果温度高于28度一点点,空调机就启动;低于28度一点点,空调机就关闭;那如果温度传感器和空调机的开关足够灵敏的话,空调机的开关频率可以无穷高,空调机不断地开开关关,要发神经病了。

这对机器不好,在实际上也没有必要。解决的办法是设立一个「死区」 (dead band),温度高于29度时开机,低于27度时关机。 注意不要搞反了,否则控制单元要发神经了。

有了一个死区后, 室内温度不再可能严格控制在28度,而是在27到29度之间「晃荡」。 如果环境温度一定,空调机的制冷量一定,室内的升温/降温动态模型已知,可以计算温度「晃荡」的周期。

这种开关控制看起来「土」,其实好处不少。对于大部分过程来说,开关控制的精度不高但可以保证稳定,或者说系统输出是「有界」的,也就是说实际测量值一定会被限制在一定的范围,而不可能无限制地发散出去。

抛砖引玉,有什么不对的地方欢迎指正。


以上です