电机控制算法综述01-PID控制与模糊控制

文章目录
  1. 1. PID控制
  2. 2. 模糊控制

这一专栏将介绍电机控制算法,为接下来的课题研究提供参考。
本文将介绍PID控制与模糊控制。

PID控制

PID控制又称比例-积分-微分(Proportional-Integral-Derivative)控制,它将控制系统偏差的比例、积分、微分环节通过一定的线性组合得到控制量,实现对被控变量的闭环控制。PID控制算法简单,只需调整好比例、积分、微分这三个参数,就可以得到较好的控制效果,PID控制在各行各业中得到了广泛的应用。

图1 PID控制框图

PID控制系统框图如上图所示,其中\(r(t)\)为输入,\(e(t)\)为误差,\(u(t)\)为经过运算所得的控制量,\(y(t)\)实际的输出量(如转速、电流等)。输出与输入所得的偏差经过比例、积分、微分运算处理后求和得到控制量,进而得到新的输出值,如此循环往复,使得实际值(输出量)接近并稳定在设定值(输入量)附近,当输入量发生变化时,输出也会跟踪输入。

PID控制的运算公式如下:
\(u(t)=K_p[e(t)+\frac{1}{T_i}\int_0^t e(t)dt+T_d\frac{de(t)}{dt}]\)
\(=K_p e(t)+K_i \int_0^t e(t)dt+K_d\frac{de(t)}{dt}]\)
式中\(K_p\)为比例系数,\(K_i=\frac{K_p}{T_i}\)为积分系数,\(T_i\)为积分时间常数,\(K_d=\frac{K_p}{T_d}\)为微分系数,\(T_i\)为微分时间常数。

比例系数\(K_p\)会影响系统的响应速度。在其他参数不变的情况下,增大比例系数,可以在相同误差量下产生更大的输出。适当的比例系数可以使系统有更快的响应速度,提高系统的调节精度。比例系数过大更容易导致系统超调量过大,使系统不稳定;比例系数过小会使系统对设定值改变的反应速度变慢,影响控制效果。
积分系数\(K_i\)针对系统历史产生的误差,用于消除采用比例环节时系统可能产生的稳态误差,选取合适的积分系数,可以有效去除系统的稳态误差,且积分系数越大,消除效果越显著。但过大的积分系数,会在系统运行初期产生过饱和现象,使系统不稳定。
微分系数\(K_d\)主要通过对系统未来误差的预测,以削弱任何来自于偏差产生方向的变化,选取合适的微分系数,可以有效改善系统的动态性能。微分系数过大会则会延长系统反应扰动的时间,降低系统的抵抗扰动的能力。

早期的PID控制通过模拟电路实现,其运算公式如①所示,随着数字电子技术与微处理器的发展,现代的电机控制主要采用数字PID控制方式。数字PID主要分为位置式与增量式。
位置式PID公式如下:
\(u(k)=K_p[e(k)+\frac{T}{T_i}\sum_{j=0}^k e(j)+\frac{T_d}{T}(e(k)-e(k-1))]\)
\(=K_p e(k)+K_i \sum_{j=0}^k e(j)+K_d(e(k)-e(k-1))\)
该公式以\(T\)为采样周期,将连续运算转化为离散运算。计算得到的控制量\(u_(k)\)对应被控对象的实际位置,与每个时刻的偏差值\(e(k)\)皆有关,若系统出现故障,检测得到的值与实际值不符,则公式的积分部分会累计出较大的偏差,造成积分饱和,使系统处于开环状态。可以通过积分限幅和输出值限幅的方式限制过度的积分饱和所造成的系统失控。

首先根据式②得到\(k-1\)时刻的位置式PID公式为:
\(u(k-1)=K_p e(k-1)+K_i \sum_{j=0}^{k-1} e(j)+K_d(e(k-1)-e(k-2))\)
式②减去式③,得到增量式PID公式如下:
\(\Delta u(k)=K_p[e(k)-e(k-1)]+K_i e(k)+K_d[e(k)-2e(k-1)+e(k-2)]\)
该公式计算的是控制量的改变量,仅仅需要三个时刻的\(e(k)\)值,若系统出现故障,检测得到的值与实际值不符,仍能保持原来的控制量输出。增量式PID只需做输出值限幅,不用做积分限幅。
增量式PID的缺点体现在积分截断效应(将基准积分点分解为有限多个离散的积分点所产生的误差)较大,存在稳态误差。

PID控制的关键在于找到一组合适的\(K_p,K_i,K_d\)参数,以实现更好的控制效果,尽可能地提高控制性能,这个寻找参数的过程被称作参数整定。传统的参数整定方法又称工程整定方法,主要包括Z-N整定与衰减曲线方法,它通过大量的实验获取控制经验,需要根据实际情况与控制需求做出反复的调整。但随着科技的进步及生产力的发展,传统PID整定方法渐渐难以满足针对越来越复杂的被控对象的控制需求及越来越高的控制性能要求。因此需要将PID控制与模糊控制、智能优化算法、神经网络算法、滑模控制等新型控制方法相结合,改善PID控制参数整定效果及控制性能。

模糊控制

本节主要介绍模糊PID控制方法。传统PID控制的三个参数在电机运行过程中保持不变,不能很好的适应复杂环境与扰动下的电机控制需求。模糊PID控制采用了模糊算法,可以根据系统的性能对PID的比例、积分、微分参数做实时调整,有效提高系统的动态性能、稳态性能及鲁棒性。

图2 模糊PID控制框图
模糊PID控制系统框图如上图所示,其中e是误差(设定值减去实际值)、ec是误差变化量,这两个量是模糊控制器的输入值。
首先,对e和ec做模糊化,将这两者由精确的数值转化为模糊量E与EC。
设定e和ec的论域,论域是输入值的上下限。再设定模糊量E和EC的模糊集,模糊集中的元素通常用两个字母表示,如模糊集{NB、NM、NS、ZO、PS、PM、PB},这七个子集的含义分别是负大(Negative Big)、负中(Negative Medium)、负小(Negative Small)、零(Zero)、正小(Positive Small)、正中(Positive Medium)、正大(Positive Big)。
将数值用模糊值来表示,比如设论域为{-240,240},模糊集为{NB、NM、NS、ZO、PS、PM、PB},那么模糊集中的七个子集就可以对应论域中的-180,-120,-60,0,60,120,180。
输入值显然不太可能正好是这几个值,所以需要引入隶属度隶属度函数这两个概念。
隶属度体现了论域中某个数值隶属于某个模糊子集的程度,隶属度函数反映了数值与各个模糊子集的隶属度的关系。
隶属度函数有很多种形式,如梯形、三角形、高斯型、Z型、S型。这里采用最常用的梯形与三角形为例构造隶属度函数,其中NB与PB采用梯形构造,其余子集采用三角形构造。
图3 隶属度函数

各个子集的隶属度函数如上图所示,以e=175为例,此时E同时属于NB与NM两个子集,其中对NB的隶属度为0.75,对NM的隶属度为0.25,对其他子集的隶属度为0。

同理,确定PID控制器中三个参数的变化量(\(\Delta K_p,\Delta K_i,\Delta K_d\))的论域与模糊集,为接下来的模糊推理与解模糊做准备,最大值及模糊集的划分需要考虑系统实际情况及电机控制需求加以确定。

模糊推理是指根据专家经验建立模糊规则表进行推理的过程,规则表确定了输入值E与EC在属于不同的模糊子集的情况下对应\(\Delta K_p,\Delta K_i,\Delta K_d\)所处的模糊子集。下面是列举一个\(\Delta K_p,\Delta K_i,\Delta K_d\)模糊规则表的例子,它未必适用于某个特定条件下的控制,需要结合被控对象的实际情况及电机控制需求对该规则表加以调整。

图4 ΔKp模糊规则表

\(K_p\)值影响系统的响应速度。增大\(K_p\)能提高响应速度,减小稳态偏差,但\(K_p\)过大会产生较大的超调,使系统不稳定;减小\(K_p\)可以减小超调,提高稳定性,但\(K_p\)过小会减慢响应速度,延长调节时间。
调节初期,应适当取较大的\(K_p\)值以提高响应速度;
调节中期,\(K_p\)应取较小值,使系统具有较小的超调并保证一定的响应速度;
调节后期,需要将\(K_p\)值调到较大值来减小静差,以提高控制精度。

图5 ΔKi模糊规则表

积分控制主要是用来消除系统的稳态偏差。由于某些原因(如饱和非线性等),积分过程有可能在调节过程的初期产生积分饱和,从而引起调节过程的较大超调。
调节初期,为防止积分饱和,其积分作用应当弱一些,甚至可以取零;
调节中期,为了避免影响稳定性,其积分作用应该比较适中;
调节后期,应增强积分作用,以减小调节静差。

图6 ΔKd模糊规则表

\(K_d\)值的选取对调节动态特性影响很大。\(K_d\)值过大,调节过程制动就会超前,致使调节时间过长;\(K_d\)值过小,调节过程制动就会落后,从而导致超调增加。
调节初期,应加大微分作用,这样可得到较小甚至避免超调;
调节中期,由于调节特性对\(K_d\)值的变化比较敏感,因此,\(K_d\)值应适当小一些并应保持固定不变;
调节后期,\(K_d\)值应减小,以减小被控过程的制动作用,进而补偿在调节过程初期由于\(K_d\)值较大所造成的调节过程的时间延长。

根据模糊化处理所得的偏差E与偏差变化量EC,以及\(\Delta K_p,\Delta K_i,\Delta K_d\)的模糊规则表,可以得到\(\Delta K_p,\Delta K_i,\Delta K_d\)所属的模糊子集,接下来要进行的是解模糊,将模糊值还原为准确数值。

重心法是最为常用的解模糊算法,它取的是加权平均值,其公式如下:
\[y=\frac{\sum_{i=1}^n f_i y_i}{\sum_{i=1}^n y_i}\] 式中n是模糊子集的个数,f为模糊子集对应的量化值(隶属度为1时的对应值)。
将所得数值乘以一个比例系数\(\alpha\),就可以得到变化量\(\Delta K\),进而得到n时刻的PID控制器参数值为:
\[K(n)=K(n-1)+\Delta K = K(n-1) + y*\alpha\]