控制系统设计人员始终追求的就是为应用找到最佳的控制方法。除了经典的PID控制外,本文还探讨了最优控制、模糊控制和人工神经网络控制。
每一个控制系统的用户/设计人员,都经常会被问到同一个问题:哪种控制方法最好。现在,比几十年前有了更多的选择,控制方法的问题尤为重要。很久以前,“黄金”解决方案(实际上是唯一的)是比例-积分-微分(PID)控制器。虽然PID控制本身没有什么问题,但实际存在的限制使其它控制方法在许多应用中更受欢迎。现在,还有哪些控制方法可供选择?
除了经典的PID控制外,本文还研究了最优控制、模糊控制和人工神经网络(或基于神经网络的控制)。在工厂应用的受控系统分析中,可以看到经典PID控制器的局限性。虽然可以有很多应用领域,但本文分析聚焦于位置伺服机构,此类装置广泛应用于工业机器人、自动驾驶车辆和许多其它(不仅是在工业领域)应用。
01
位置伺服系统识别
如果受控系统是基于恒定励磁(例如永磁体)的直流电机的伺服机构,则可以通过简化的传递函数来描述,在s域中电压的角位移为:
其中:K代表电机扭矩常数;T代表电机的机械参数:J/B,其中J是包括负载在内的总惯性,B表示电机阻尼;Ti代表积分常数(由电机转速和传动比确定)。
上面的传递函数代表与积分器组合的一阶系统。理论上,还有另一个一阶、低通滤波器,其时间常数等于电机绕组电感和电阻的比值;这个时间常数明显小于主时间常数T,因此不必考虑它。
如果您是电机用户,而不是电机设计师,那么通过实验测量其在开环中的响应来找到(主)时间常数可能会更简单。为此,向伺服系统施加一定的驱动变量(电压,VIN),例如,相当于最大伺服速度的50%。伺服系统负载必须是正常工作条件下的满载。扫描伺服机构的位置响应,并在其到达最大位置之前将其关闭。可能产生的测量值如图1所示。
▲图1:控制系统设计图展示了开环伺服系统的响应特性。
根据上述特性,并通过输入值(例如,对应于最大伺服速度50%的阶跃函数VIN),确定典型伺服系统的一阶非静态(积分器与一阶滞后相结合)传递函数的T和Ti常数。伺服电机和伺服驱动运动控制系统,可以使用下述的各种闭环控制,包括方程、案例、图形、表格。
02
如何应用PID控制器?
PID补偿是最常见的闭环控制形式之一。为什么它如此受欢迎?在大多数应用中,受控过程可以通过一阶或二阶传递函数进行建模。PID控制器可以消除或至少显著补偿传递函数的两个极点。PID控制器在s域中的传递函数(U(s))/(E(s))可以表示如下:
现在,让我们假设一个受控系统,它可以用一阶非静态传递函数来近似表示:
控制系统的开环传递函数(Y(s))/(E(s)),等于
为什么使用PD而不是PID?首先,请注意,在完整的PID控制器中,积分部分是缺失的。为什么?因为积分器已经存在于受控的伺服系统中。在最佳调谐的控制系统中,比率KD /KP必须与τ1时间常数相匹配,因此开环传递函数将减小到:(KPK)/(sτ2)。理想调谐PD控制系统的闭环传递函数 (Y(s))/(R(s)),等于:
这对应于具有时间常数τ的单极传递函数,相当于τ2 /(KP K),其中τ2是积分时间常数,KP是控制器的比例常数,K是受控系统的增益。然而,如果通过使用如图1所示的响应特性找到时间常数,则增益(即常数K)值变为1.0。则闭环传递函数时间常数τ等于τ2 /KP。这非常好,因为通过使ΚP足够大,可以从闭环控制系统获得更快的时间响应。实际上,“足够大”可以提供5到10倍的响应速度。KP值越高,反应越不稳定。记住,在近似的系统参数中,实际值肯定会不同。
然而,这种最佳调谐的P(I)D控制器有其缺点。观察P(I)D控制器的输出(驱动)变量:一开始它几乎达到极限值,然后迅速下降,但在相当长的一段时间内,仍远远高于这种受控系统(伺服机构)所能承受的水平。想象一下,伺服电机的运行电压为24V,最初获得的电压会高达数千伏,随后稳定在数百伏。没有控制器能够驱动如此高的电压,即使能驱动,电机也无法承受如此高的压力。因此,在控制器中添加限制器,可确保驱动变量不会超过受控系统(在这种情况下为直流电机)可接受的最大值。伺服机构的最终PID控制配置如图2所示。
▲图2:控制系统设计图展示了位置伺服系统的 PID 控制。
在本文的最后,会比较PID控制器与其它控制器的性能。具有无限驱动变量的最佳调谐PD控制器(即理想控制器),其输出特性如图8中黄色线所示;实际输出(驱动变量限于最大可接受值)则以红色线表示。
03
应用时间最优控制
几十年来,最优控制一直是广泛研究的主题。关于最优控制的一些基本观点值得回顾,我们可以用一个例子来更好地理解时间最优控制。
假设一个带有直流电机的常用电动伺服机构。手头的任务是控制伺服,使其在最短的时间内到达新的参考点。如果必须应用实际驱动变量,优化的PID控制器将无法实现这一目标。直觉反应是向直流电机施加最大可接受电压,并让电机全速前进。
然后,在某一时间点改变电压极性,使电机开始以最大可能的速度减速。稍后,当电机速度为零时,关闭电压。如果电压极性在合适的时点改变,那么,在电机停止运行的瞬间,伺服将准确地停在所需的位置。这被称为最优控制。在这种情况下,因为时间是该最优控制的标准,所以这种控制被称为时间最优控制。
04
查找开关曲线的形状
图3展示了在状态空间中的时间最优控制过程,在这种情况下,状态空间是二维空间(区域);一个维度是输出变量,另一个维度则是其(时间的)导数。在应用新参考值时,输出变量沿水平轴移动,因此它代表调节误差(err),即参考值与实际输出值之间的差值。同时在t0时刻,向直流电机施加最大电压。伺服离开其初始位置P0,并开始加速。在时间点t1,控制器改变电压极性,电机速度很快开始下降。在时间点t2,电机速度变为零并且达到期望位置P2,驱动变量电压被关闭。虽然这看起来很简单,但获得开关曲线的形状并不是那么简单。
▲图3:控制系统设计图展示了状态空间中的时间最优控制。
如果受控系统是具有简化传递函数的伺服机构,则s域中电压的角位移为:
那么一个完整的、时间最优的控制系统可以用图4所示的框图表示。
该控制方案与PID控制完全不同。这是一种非线性控制,因为第二个非线性部分N2代表的是继电器:提供驱动变量±U值,所以这种控制被称为开关控制。N1是开关曲线的第一个非线性部分,调节误差E的“sqrt”平方根函数,提供了相当合理的结果。在实践中,总是很难找到精确的开关曲线,因此,控制器可能一直在其最大值和最小值之间切换驱动电压。为了避免这种情况的发生,需要为继电器增加死区。
在本文的最后,让我们看看与其它类型的控制器相比,这种时间最优控制器的性能如何。其输出变量函数以图8中亮蓝色线表示。
05
如何应用模糊控制?
模糊控制是另一种非线性控制方法,对于难以分析的受控系统,或在设计时动态行为未知的受控系统,它是非常好的解决方案。模糊控制可以与“次优”时间最优控制相比较(它可以提供比最优结果较差的结果),尽管它们仍然可以是非常好的。在这种具有位置伺服机构控制的特殊情况下,可以采用图5中的控制方案(图5)进行模糊控制。
▲图4:控制系统设计图展示了伺服机构的时间最优控制系统。
▲图5:控制系统设计图展示了伺服机构的模糊控制系统。
模糊控制可以看作是模糊逻辑的扩展或修改。第一阶段,模糊逻辑(在一个被称为模糊化的过程中)将“清晰”的输入变量转换为“模糊”的集合。第二阶段,它处理这些模糊集。最后,在一个被称为去模糊化的过程中,将处理后的模糊集转换为清晰的输出变量。
对于输入变量的模糊化,例如,选择一组lambda形状_/_的5个成员函数。为了使控制过程更好(更精细),在本文案例中使用了7个成员函数。它们涵盖了调节误差、误差及其导数和状态变量,这些变量值处于-1000到+1000之间。它们可以被称为:高负(HN),中等负(MN),低负(LN),小(S),低正(LP),中等正(MP)和高正(LP)。输出(驱动)变量模糊化,使用了7个类似的级别:全负(FN),中等负(MN),低负(LN),零(Z),低正(LP),中等正(MP)和全正(FP)。
▲图6:在控制系统设计中,参考模糊控制知识库很有帮助。
处理模糊集是模糊控制最关键的阶段。它由模糊控制知识库“控制”。图6展示了适用的知识库。注意err和der输入变量是如何量化的。它们的分布函数不是等距分布的;err成员函数被更多地“推向”中心(S),而der成员函数则被更多地推向最高值。为什么这种安排更好?检查知识库中的输出变量分布提供了答案。考察零(Z)级。它们的配置为:紧密地跟随误差的平方根函数err的输出,这是可能是对时间最优控制中使用的开关曲线的最佳仿真。接下来,看看与其它控制器相比,模糊控制器的性能如何,其输出变量的形状以图8中橙色线表示。
06
应用基于神经网络的控制
在控制系统中使用人工神经网络(ANN)有无数种可能性。其中,很多使用基于神经网络的受控系统(工厂)模型,或对其逆动态进行建模,与经典PID控制器相结合,有助于创建自适应和其它更复杂的控制系统。
通过训练这种神经网络,模拟位置伺服系统的开关曲线可以尝试一种不同的方法。正如之前所了解的,通过使用时间最优控制可以实现最快速的伺服机构运动。开关曲线最关键的一个方面,是使用调节误差的平方根函数。甚至是模糊控制器,也被“调谐”以模拟该平方根函数。
然而,由于实际开关曲线仍然可以与sqrt()函数的近似值不同。有没有办法找到位置伺服机构的实际开关曲线?答案是肯定的。可以找到位置伺服机构的实际开关曲线,“训练”ANN记住它并按需生成它。更进一步,可以训练ANN来接管整个开关控制器。
开关曲线是关于[err,der]对值的序列,伺服电机驱动器对可施加到电机的额定(最大)电压进行极性转换。通过在开环中运行伺服机构(即无反馈),测量并记录其位置(err)和速度(der)来查找相应的值。
首先,准备一系列预期的伺服机构速度(der)值,从最低值到最高值。现在,将正的最大驱动变量(电压+U)施加到电机上,并让其运行,直到伺服机构达到该系列中的第一个预期der值。重要提示:记录与P1相同时刻的伺服位置,同时将执行变量转换为-U值。当der降至零时,关闭电压并将当前位置记录为P2。该过程提供了第一个开关曲线点的第一对[err,der]坐标(其中err=P2–P1)。当然,伺服机构必须完全按照预期使用的方式满载运行。
[err,der]坐标序列表示开关曲线点。为了获得最佳结果,沿der轴均匀分布大约50个坐标(对)。然后训练一个合适的神经网络,使用这些开关点将执行变量传送到伺服机构。即使是最简单的具有一个隐藏层和大约12个节点的ANN也可以实现这种功能。
图7展示了一个输出值表,可用于训练ANN控制器。在捕获开关曲线点之后,需要离线训练ANN控制器,即不直接在物理控制系统实体上进行训练。从捕获的坐标序列的底部(或顶部)开始,对于每个单独的der输入,您需要生成多个err值(从-max到+max),并向[err,der]坐标的每个组合提供(到ANN输出)特定的输出值。开关曲线的所有输出值对应负的最大驱动值;开关曲线右侧的所有输出值对应为正的最大值。误差坐标离开关曲线越远,需要提供的±U值就越少,因为输出曲线保持平坦。
▲图7:这个简单的人工神经网络训练数据表,有助于 ANN 控制系统的设计。
此训练数据表与模糊系统的知识库非常相似。起初,只使用状态空间的上半部分来训练ANN控制器。当伺服必须沿相反方向移动时,ANN控制器将仅交换输出值。然而,如果伺服系统在两个运动方向上的行为不相同,则必须在整个状态空间内,对ANN控制器进行行为训练。基于神经网络的控制系统如何与其它系统竞争?可查看其输出变量的形状,如图8中白色线展示。
07
四种控制方法的比较
使用Python的屏幕截图(图8)展示了模拟伺服机构及其控制器的结果。伺服机构的传递函数近似为1/((1+s100)s200),其中时间常数以样本数表示。阶跃函数(期望的伺服系统位置)是从0到800(其中1000是期望位置和驱动变量的最大值)生成的,在1000个样本之后,它从800下降到400。输入阶跃函数在图8中以绿色线表示。
图8还展示了各个控制系统的运行情况。第一个是最佳调谐的PD控制器,它对阶跃函数做出即时反应。它的KP参数设置为5。但这实际上只是一个理想的PD控制。这些实际最佳调谐PD控制器具有有限驱动变量,其行为如红色曲线所示。与其它控制器相比,它实际上是表现最差(最慢)的。然而,如果调整得当,它不会超调,这在某些应用中可能非常重要。
▲图8:此图比较了不同的控制方法,以帮助确定应用的最佳状态。包括最优控制(蓝色线)、模糊控制(橙色线)、人工神经网络(白色线)和 PID 控制(黄色和红色线)。
表现最好(最快)的控制器是基于ANN的控制器(如白色曲线所示)。这并不奇怪;神经网络经过训练,可以模拟精确的开关曲线,因此它表现为一个完美的、时间最优的控制系统。
通过sqrt(e)函数来模拟开关曲线的经典时间最优控制器(蓝色线)表现稍差(较慢)。不过,考虑到其实施非常简单,因此不应对其性能有太多抱怨。
在这种特殊情况下,模糊控制器(橙色线)表现不佳。不过,它没有调整到最佳性能(仅进行了初始调整以大致模拟开关曲线),因此其性能有进一步提高的空间。理论上,模糊控制器的性能不应比经典的时间最优控制器差。
这个特定案例验证了神经网络在工业控制中的应用。然而,如果系统“在运行中”改变行为/参数,则需要一个更能容忍这种变化的控制器。容差是模糊控制器的亮点。最令人惊讶的发现之一是:50多年前在大学里学习的经典时间最优控制器(基于sqrt()函数),仍然可以很好地运行。