控制/MCU
介绍
PID控制是一种用于控制输出的算法,以便将某些过程保持在精确的值。下面是一些应用实例:
(1)控制船上的方向舵位置以转向特定航向。
(2)控制提供给加热元件的功率以保持特定温度。
(3)控制汽车中的发动机油门以保持特定速度(“巡航控制”)。
(4)控制飞机上副翼的位置以保持特定的转弯率。
(5)控制水处理厂中添加到水流中的化学品的速率。
PID有三个变量,即输入,输出和设定值。PID算法控制输出,以使输入与设定值匹配。例如,在控制船舶方向舵以转向特定航向的场景中:
a.输入是指南针或 GPS 航向。
b.设定值是所需的航向。
c.输出是方向舵角。
输入和设定值之间的差异称为误差,PID算法旨在消除这个过程中的误差。为了理解为什么需要PID,让我们先来了解一些更简单的过程控制方法。
Bang-Bang控制
Bang-Bang控制是一种数字控制形式,输出要么完全打开(最大),要么完全关闭(最小),中间没有任何变化。当输出也是数字的时候,这种控制似乎更直观;比如一个完全打开或关闭的阀门,或者一个可以打开或关闭的空调器。以空调为例,输入是由温度传感器提供的,设定值是需要保持的温度。该算法很简单:
如果测得的温度高于设定值,则打开空调,否则将其关闭。
对于某些应用来说,这可能工作正常。但是,对于其他应用,可能会遇到问题:
(1)读数快速变化问题
第一个问题是围绕设定点的读数相对快速波动。例如,想象一下,设定点是20°C。根据房间周围的气流,或温度传感器的稳定性,读数可能在例如20.1°C和20.0°C之间波动;每次温度读数仅比设定值高0.1°C时,空调就会再次开启,而一旦读数再次达到20.0°C,它就会再次关闭。这有可能发生得非常快,这对房间里的人来说是很烦恼的,而且可能对空调器造成损害。. 如果同时有制冷和制热,我们可以想象这样的情景:温度在19.9°C和20.1°C之间波动,空调和加热器的开关速度相对较快--两者互相作用,浪费能源。
解决办法是在设定点周围添加一些延迟或缓冲,这被称为滞后。在我们的例子中,2°C的滞后意味着一旦温度达到20°C,空调关闭,那么直到温度再次上升到22°C,空调才会再次开启。如果还有暖气,那么在温度下降到18°C之前,暖气不会打开(但一旦打开,在温度上升到20°C之前不会再次关闭)。
(2)过冲问题
可能遇到的第二个问题是过冲问题。过冲是典型的情况,即在命令输出和输入测量输出命令的结果之间存在延迟时。以在水处理厂向水流中添加化学物质为例:化学物质需要一些时间才能溶解到水中,因此我们只能测量结果,也许是pH值,在添加化学品的下游一点点, 即过程中有一些延迟。
假设我们开始时的pH值有点太低,所以我们打开阀门向水中添加碱性,以使pH值升高一点;这开始工作,但是当我们在传感器上读取pH中性并关闭阀门时,上游已经添加了大量的碱性,并且传感器读数远远超过中性,并且我们开始获得非常高的pH读数;系统现在对高pH读数做出反应,打开阀门向水中添加酸,以再次降低pH值 - 但是当其影响到达传感器时,我们再次超过中性,读数再次变得太低...该过程重复,输出继续围绕设定点摆动,可能比触发纠正反应的原始误差的大小更超出设定点。
如果我们看一下控制船舶方向舵位置或汽车发动机油门位置的示例,那么更直观的是,需要比Bang-Bang控制系统更好的控制系统。如果只需要在航向上进行小幅修正,我们不想向右(右舷)或向左(左舷)全摆动;或者让汽车加速器在踏板到金属和完全关闭之间振荡,我们需要介于两者之间的东西。
比例控制
按照比例控制(PID中的P)操作,并根据输入和设定值之间的差异(与误差成比例)控制输出。如果输入和设定值之间的差异很小,那么我们只对输出进行小的调整,如果差异很大,那么我们对输出进行大的调整。如果船只是稍微偏离航线,那么我们只会稍微转动方向舵——我们不会把它一直转到尽可能远。对于某些系统,可能只需要比例控制。但是,对于其他系统,会遇到下一类的问题。
积分控制
使用比例控制时,几乎总是存在一定程度的稳态误差,这意味着系统没有完全达到设定值,因为设定点附近的比例控制量太小,无法克服影响系统的某些偏差(可能是电流或风)。在下图中,该过程稳定在设定值以下一点。
PID的积分(I)部分关注系统偏离设定值的时间,并增加输出以克服该偏差。例如,如果汽车的巡航控制设置为60英里/小时,但仅使用比例控制(由于空气或其他阻力)将速度保持在57英里/小时,那么PID的“积分”部分将随着时间的推移提高发动机功率以使速度提高60英里/小时设置。
同样,对于某些控制器,PI控制可能就是所有必需的。然而,PI本身在建立之前至少容易在设定点周围发生一些过冲和振荡,特别是当设定点和输入读数之间存在较大的初始差异时(例如在启动时或对设定点进行较大调整时),因为PID的组成部分将在过渡期间累积所有误差,从而变得很大(大于需要), 如果没有其他任何东西可以抑制它,那么唯一会再次减少它的将是相反方向上的一些累积错误。PID 中的 D 部分解决了这个问题。
微分控制
微分控制(PID中的D)通过通过缓解/阻尼输出来最大限度地减少或消除过冲;如果输入读数非常快速地向设定值移动,则PID的导数部分将激励输出放松,以最小化或消除过冲。在数学中,曲线的微分是该曲线在特定点上的角度或梯度 - 变化率 - 这就是这个术语所指的。在下图中,红线表示陡峭的梯度(这将导致PID算法中的D校正较大),蓝线表示浅梯度(这将导致PID算法中的D校正较小)。
调谐
PID 算法中的每个元素(比例元素、积分元素和导数元素)都可以进行调整或加权,以使其在算法中具有更大或更小的效果,并且正确的值因应用程序而异。PID调优是一个深层次的主题,其全部深度超出了本文的范围,但是对P,I和D中的每个元素的作用有一个很好的理解是一个很好的起点。选项包括查找特定类型进程的一些默认值、手动调整和模拟。手动调谐简要涉及按顺序调整每个P,I,D元素:
首先,I和D权重被设置为零,P权重被增加,直到系统开始围绕设定点振荡。然后P权重被设置为该值的一半。接下来,I权重增加,直到任何稳态误差被迅速纠正,但不至于使系统变得不稳定。最后,增加D权重,直到任何过冲被充分抑制,但不至于使系统变得反应迟钝或甚至不稳定(特别是当输入中存在一些噪声时可能发生)。
用PID进行数字输出控制
如果PID控制的输出是数字的,如继电器或电磁阀,可以使用脉宽调制等技术来有效地将数字输出转换成模拟输出。关于脉宽调制的更多信息,请看我们的PWM文章。PWM的频率是根据应用来选择的,而且根据系统的情况,可以实施额外的限制,比如说只有当占空比超过一定水平时才切换输出。
以下是使用 PICCOLO 微控制器对烤箱进行 PID 控制的示例,在 Proteus VSM 中进行模拟。
*本文章版权归英国LABCENTER公司所有,由广州风标电子提供翻译,原文链接如下:*https://www.labcenter.com/blog/sim-pid-control/
全部0条评论
快来发表一下你的评论吧 !