控制算法手记-PID控制器

工业自动化控制中,通常面临着一类问题:对于给定的参考输入或者控制目标(假设参考输入已知,求解参考输入的规划问题另外单独讨论),如何设计控制器使得被控对象的输出自动跟随参考输入。取决于被控对象,参考输入或控制目标可能是使机器运动到某一位置或以某一轨迹运动、输出特定的力/力矩或者某个部位达到设定温度等;如图1所示,典型工业自动控制系统一般由控制器(硬件及算法)、被控对象以及传感器等组成,其中传感器将感知到的被控对象状态输入到控制器,以便控制器根据系统当前状态调整控制指令。

图1 典型工业自动控制系统架构

遗憾的是,没有通用的控制算法能够处理所有控制问题。在设计控制算法之前,算法工程师需要充分了解并系统评估控制系统本身的特性,包括被控对象是一类什么系统、是否容易建立数学模型描述被控对象行为、模型参数是否容易辨识、外部干扰是否确定、系统状态是否可用传感器测量、传感器信号如何处理以提取有用信息、控制器硬件运算能力等等。以上特性的评估能够帮助工程师做出合理的决策,根据不同应用情景有针对性地设计控制算法。

PID控制器-成功背后的秘诀

PID控制器是一类在工业自动化控制中应用最广泛的控制器。它简单有效可靠,这和工业场合对控制算法的要求不谋而和。它只包含三个设计参数(比例系数P、积分系数I、微分系数D)或者更少,在低成本低性能的控制器硬件上也能运行良好,不需对整个控制系统进行建模仿真在现场就能调试设计这几个参数。成功的秘诀为:

PID控制器是一种根据偏差(参考输入减去实际输出)来计算控制指令的控制器PID控制器里的(P、I、D)分别对偏差值进行比例缩放、积分和微分,然后再进行求和,得到控制指令。这种控制指令的计算方法蕴含着朴素而直接的想法,能够适用于大多数应用场合。以日常生活中调节淋浴水温为例进行说明:P的调节机理是如果水温过高,就立即按照一定比例系数增大冷水阀门开度或减小热水阀门开度,P值越大,阀门调节开度越大,越快达到舒适温度,但会导致水温在某时间段内过热或过冷,还要反复几次才能达到合适水温;I和D调节机理则考虑了温度偏差值随时间变化的过程,根据温度累积偏差值(积分I)或者偏差值变化快慢(微分D)才调节阀门开度,使得这种调节过程更为精细;P、I、D的协同作用时,兼顾了快速、精确和稳定的需求,使得运转良好的自动控制系统成为可能。

PID控制器是一种最简单的数据驱动控制器,即控制器的实际运算完全基于输入到控制器的数据,没有用到任何系统模型的信息。具体来说:控制器输入为偏差值,由系统参考输入和实际测到的输出数据得来;控制器里的参数(P、I、D)也并不包含被控对象模型或参数。本科课程里,涉及到了伯德图、根轨迹法(RootLocus)和Nyquist曲线等基于被控对象模型的方法来设计PID参数,使人容易误认为PID是一种基于物理模型的控制器。然而必须注意到PID参数的确定虽然可以根据系统模型确定(也可以在不需要或不依赖系统模型的情况下现场调定),但控制器本身和被控对象并没有直接关系。正是由于不依赖控制对象模型的特点,使得在模型参数或系统模型发生变化,PID控制器仍能够维持可以接受的性能,即PID控制器具有一定的鲁棒性。

限制与不足

PID控制器的成功来源于其有效综合了基于偏差控制和数据驱动的特点,然而在一些场合也成为限制其性能的桎梏:

- PID控制器预设系统输出能够通过传感器实时在线测量,然而在实际工业场合中并不 能总是得到满足;

- PID控制器的思路是先产生偏差后有控制输出,这就意味着控制器即使能够提前获知 系统变化也不能及时做出调整,而是必须要等到变化发生后影响到系统输出再做出调 整,这损害了系统的实时响应能力;

- PID控制器无法有效处理强耦合、非线性或控制输入约束的情况;当系统内部复杂的 互相作用成为主导因素后,仅仅依靠输入输出数据的PID控制器便不具备与所要解决 问题相匹配的结构复杂度,控制器需要引入更多的数据或模型信息。

回到开始,没有通用的控制器能够处理所有被控对象的控制问题,是被控对象本身的特性决定了哪类控制器适用。即使应用广泛如PID控制器也面临着一系列不足,那么算法工程师该如何因地制宜,去设计更好的控制器以满足不同应用情景的需要呢?