工业实践中,一般希望所设计的控制算法尽可能地简单,直观,需要调节整定的参数尽可能的少。这一方面缩短了控制算法设计、调试时间,另一方面也保证了控制算法的可靠性(复杂往往带来可靠性的下降),降低了应用和维护门槛。因此,长期以来,PID控制器在工业自动化中得到了广泛应用。然而,无论在学术研究还是工业中高端应用场合,控制算法复杂化是一个十分明显的趋势。控制算法的这种复杂化趋势,使得工程师在面临此类情境时,通常会在心里暗自发问:控制算法,有必要这么复杂嚒,会不会把简单问题复杂化?
控制算法的复杂化趋势是对控制系统性能要求逐渐提高的必然结果。一方面,随着对控制系统性能要求的不断提高,在控制算法设计过程中,需要考虑的能够影响控制系统性能的因素不断增多(性能要求较低时,这些因素对最终性能的影响可以忽略不计),势必要求对控制算法的结构做出合理安排以容纳、处理这些因素;另一方面,影响控制系统性能提高的因素大多来自被控系统的物理/硬件层面(具体工艺/工作过程、执行器的工作特性等),如果无法在物理/硬件层面避免一些非理想因素(如精密运动平台中压电晶体、磁滞伸缩材料的滞回特性,传动系统中的柔性和摩檫力矩,液压阀口压降-流量非线性、温度控制系统中的死区时间等),那么提高控制系统性能的要求势必全部由控制算法来实现;
事实上,控制系统的设计和控制性能的提升应该放在整个系统或者产品设计的框架下进行,控制算法工程师应该和机械工程师、电气/仪表工程师、工艺工程师等人员进行有效协同,首先在系统的层面规避问题/非理想因素。如果能够通过改进结构设计/工艺流程,来规避掉影响控制系统性能的主要因素/改进控制系统性能,控制算法需要处理的因素变少,那么即使是相对简单的控制算法,也能实现高性能的控制指标。反之,如果物理/硬件层面的设计不合理,那么在控制算法设计上花费再多的精力,可能也无法满足性能要求(被控系统特性决定了被控系统性能的上限);
因此,应理性对待控制算法的复杂化趋势:在能够解决问题的基础上,不刻意追求控制算法的复杂化(如果能用PID控制器/改进设计实现性能目标,没必要用其他控制算法);在需要精巧、复杂的控制算法时,也能够认真分析被控系统(参见控制算法手记—认识你的被控系统),总结影响控制系统性能的主导因素,并建立合乎需要的数学模型(参见控制算法手记—建模重要嚒),选择合适的控制算法结构,有针对性地去处理各个层面上的非理想因素,使得问题的结构和控制算法结构相匹配。
控制算法的复杂化体现在控制算法的结构、(稳定性)分析及设计、调试维护三个方面:为匹配现实问题的结构,控制算法本身需要在结构上进行一定调整;控制算法在结构上的复杂性,不仅使得设计参数变多,而且也使得包含控制算法的整个控制系统动力学行为丰富/复杂起来,控制系统稳定性分析及控制算法设计也变得复杂起来;控制算法结构和设计的复杂性,大大提高了控制算法的应用门槛,系统调试时间变长、维护成本也相应增加。
控制算法的结构复杂化
如图1所示,为应对被控系统中存在的诸多非理想因素,控制算法的设计可以从工业中最常用最简单的PID控制器逐步演化到(前馈+反馈+状态观测/滤波+系数/参数辨识)的复杂结构。实际应用中,控制算法的结构并不一定需要同时具备这些模块,而是根据所面临的问题结构有针对性的选用或组合这些模块。
图1. 控制算法的结构复杂化
结合图1中所示的非理想因素,对控制算法结构的选择说明如下:
观测/滤波器模块一般用于处理感知系统中存在的非理想因素,同时还可以通过构建合适的干扰感测器(参见控制算法手记-二自由度控制器)对无法测量的外界干扰(如负载力矩,如协作机器人中的无力矩传感器的负载感知功能)或者参数变化进行补偿。取决于非理想因素的形式,观测/滤波器模块可以表现为不同算法:如Kalman滤波器通常在运动控制系统中实现用于实现从位置信号生成速度/加速度信号,实现无相位延迟的滤波;Luenberger/Kalman观测器则对工业中大量存在的部分状态不可测量/无法安装传感器的场合特别适用(如果系统机理明确,能够建立相对准确的系统模型,那么通过观测器则相当于构建了一个虚拟传感器,实现对不可测量的准确估计),使得全状态反馈成为可能;同时,其他类型的观测器,如滑膜观测器/高增益观测器则可对非线性动态系统进行状态观测/干扰补偿;
与观测/滤波模块类似的是参数辨识模块,该模块接受被控对象输入/输出数据,并基于机理模型对系统参数变化/外部干扰参数进行辨识,并将辨识出来的信息送入反馈控制器,使得控制输入能够适应参数变化。另外,参数辨识模块辨识出来的信息还可以送入前馈控制器中,用于实现对未知干扰(如非线性摩檫力)的理想补偿;
轨迹规划+前馈控制通常实现对已知或者能够辨识的外部干扰(包含输入指令)进行提前因应,改善系统的动态跟踪性能。对于一些欠驱动场合(即控制输入的自由度小于输出的自由度)或者临界阻尼的动态系统,还可以通过有效的轨迹规划(或者输入整形),抑制系统振荡,保证系统控制性能;
自动控制的核心机制在于反馈,反馈控制器本身能够有效处理绝大多数非理想因素。如果系统机理不明/无法准确建模/模型过于复杂(如化工过程控制/涡流场控制),可以采集足够的数据,则采用数据驱动控制方法;如果系统能够相对准确建模,但存在模型不确定性/参数变化/未知外界干扰,则可以采用鲁棒(H无穷/滑膜控制等);其余控制算法,如自适应控制、模型预测控制、反馈线性化等算法以及之间不同的组合则针对不同的非理想因素进行针对性地设计。
控制系统稳定性分析及控制算法设计复杂化
自动化控制系统的核心特征在于在机器/设备运行过程中不需要人工手动干预,依靠自身采集到的实时信号和相应控制算法,给出动态控制指令,让机器/设备自动运行并满足预期性能要求。放心让机器自动运行的前提是由被控对象-控制算法组成的被控系统必须稳定(系统不会跑飞),如果无法保证控制系统稳定性,机器/设备就无法正常运行,严重时甚至会导致机器/设备损坏,人员伤亡等后果。控制算法在结构上的复杂性,使得包含控制算法的整个控制系统动力学行为丰富/复杂起来(取决于具体情况,整个被控系统可能会从线性系统转变为非线性时变系统,出现多个平衡点/吸引区域/有限逃逸时间等非线性动力学行为,系统失稳风险增加),稳定性分析以及以稳定性分析依托的控制算法设计变得尤为重要。
被控系统之所以存在稳定性的问题,在于被控系统本身是一个动态变化的系统,表征系统动态的所有变量都在实时发生变化,并最终使系统到达预期工作点/工作区间。如果给出的控制输入不合适(控制算法设计不合适)和被控对象本身的动态特性结合后,很有可能会出现某些变量的动态变化远远超出预期/合理范围,并进入到不可逆的过程(系统失去稳定性,无法恢复到平衡状态或者预期状态)。以新冠疫情在人群中的传播为例,如果不做及时检测追踪(测量反馈)并采取相应的强制、治疗措施(控制输入),感染人数就会呈现指数极增长,医疗系统崩溃,疫情发展就会失控(系统失稳);相反地,如果及时采集检测追踪,并配合相应的强制措施,就可以使得疫情传播在相当小的范围内(系统保持稳定),并最终控制住疫情。
事实上,取决于研究对象(线性/非线性)和场景(系统受到外部干扰/初始状态变化/参数变化/不确定性等),稳定性的意涵以及相应的判断依据是多种多样的。这些稳定性的定义在于描述了随着时间的变化,在不同初始状态和时刻下,表征系统运行状态的变量是否能够收敛、以什么样的速度收敛,能在多大范围内收敛于在一个什么样的区间内。稳定性的各种定义并不是只为了理论分析而提出的虚幻概念,是和系统实际能达到的控制性能是紧密相关的:如果能够保证某一被控系统是全局指数稳定的(Globally exponentially stable),那么不论系统初始状态如何,系统控制误差(或者其他变量)能在相当短时间内减小为零,并能够长期保持在零;如果只能保证某一被控系统是局部渐近稳定(Locally asymptotically stable),那么在一个较窄的工作范围内,系统的控制误差随着时间增长慢慢减小到零;如果无法保证系统指数/渐近稳定性,只能保证输入输出有界(Bounded Input Bounded Output),那么只能预期,系统控制误差会在收敛在某一范围内;从这个意义上来说,从稳定性展开的分析,能够清楚定义控制系统所能达到的性能上限,并以此为基础能够合理地设计控制器。
因此,翻开各种先进控制算法(如非线性控制、基于模型的自适应控制、滑膜控制或一些数据驱动控制方法)的教科书,往往前面会涉及大量的稳定性概念/繁琐的稳定性分析章节,后面才涉及到控制算法的具体设计。这一方面说明控制算法结构的复杂化,大大增加了控制系统的稳定性分析和设计,另一方面也成为想学习先进控制算法的同学或者工程师的一个主要障碍。这些稳定性分析过于强调各种数学概念,而缺少对这些概念和现实物理世界的关联等方面的论述;同时初学者往往都是从经典控制理论(以传递函数为基础,单输入、单输出的线性定常系统,只有单个平衡点,而且系统稳定性一般直接对应着全局渐近稳定性)过渡到来先进控制算法的学习中,对稳定性分析在先进控制算法设计中所起到的基础性作用缺少认知。实际上,即使被控对象是单输入、单输出的线性定常系统,由于自适应、参数辨识等环节的运用,使得整体的闭环系统仍然表现出时变非线性特性,系统的稳定性也会发生变化(即使原有的控制系统能够保证稳定性)。了解这些稳定性分析和设计方法,对于先进控制算法的成功落地是十分必要的。
总结
控制算法的复杂化是为因应控制系统性能指标不断提高的趋势而出现的,是为了能够有针对性地处理(处理方式包含识别/辨识、适应、消除、补偿、抑制影响等方法)各种影响控制系统性能提高的非理想因素。
应该客观理性对待控制算法的复杂化趋势,不应刻意追求算法复杂性(在能够保证控制系统性能的前提下,控制算法越简单越好),也不应回避实际问题对控制算法复杂化的需求,认真分析被控系统(参见控制算法手记—认识你的被控系统),总结影响控制系统性能的主导因素,并建立合乎需要的数学模型(控制算法手记—建模重要嚒),选择合适的控制算法结构,有针对性地去处理各个层面上的非理想因素,使得问题的结构和控制算法结构相匹配。
应该从整个系统/产品的层面,去处理控制系统和控制算法的设计,注重各个子系统工程师之间的协同,能在系统/设计层面解决的问题,可以优先考虑在系统层面解决。这也要求主管/系统工程师应该具备各个专业领域的基本概念和学习、沟通能力,在系统层面上协调优化整体被控系统性能。