主要内容

使用查找表在Simulink中实现模糊PID控制器金宝app

此示例显示了如何使用2-D查找表块来实现用于非线性PID控制的模糊推理系统。

概述

模糊推理系统(FIS)使用模糊逻辑将给定的输入映射到输出。例如,两输入一输出模糊控制器的典型映射可以在三维图中描述。该情节通常被称为情节控制曲面图。

对于控制应用,典型的FIS输入是错误(e(k))和更改错误(E(k)-e(k-1)),E.ce分别在控制面图中。FIS输出是根据模糊规则推断的控制动作,在表面图中。模糊逻辑工具箱™提供用于为所需控制表面设计FIS的命令和应用。然后,您可以使用Simulink®中的模糊逻辑控制器块模拟设计的FIS。金宝app

通常可以使用查找表逼近非线性控制面,以简化生成的代码并提高执行速度。例如,您可以用一组Lookup Table块替换Simulink中的Fuzzy Logic Controller块,FIS中定金宝app义的每个输出对应一个表。属性可以计算查找表中使用的数据evalfis.命令。

在此示例中,您可以为Simulink中的工厂设计一个非线性模糊PID控制器。金宝app该工厂是一个单一输入的单输出系统,可在离散时间。设计目标是实现良好的参考跟踪性能。

Ts=0.1;工厂=c2d(zpk([],[-1-3-5],1),Ts);

您还可以使用一个2-D查找表来实现模糊推理系统,该查找表近似于控制面并实现相同的控制性能。

模糊PID控制器结构

本例中的模糊控制器位于反馈回路中,使用模糊推理计算类似PID的动作。打开Simulink模型。金宝app

开放式系统('sllockuptable'

模糊PID控制器采用并行结构,如模糊PID子系统所示。有关更多信息,请参见[1]。该控制器是模糊PI控制和模糊PD控制的结合。

开放式系统(“sllookuptable /模糊PID”

模糊PID控制器使用输出的变化- (y(k)-y(k-1)),而不是改变错误E(k)-e(k-1),作为FIS的第二个输入信号。这样做可以防止参考信号的阶跃变化直接触发导数动作。两个增益块,普通中等教育GCU,在来自的前馈路径中R.,确保错误信号E.当模糊PID控制器是线性时,以比例动作使用。

常规PID控制器的设计

在该示例中传统的PID控制器是具有积分和衍生动作的反向欧拉数值集成的离散时间PID控制器。控制器收益是金伯利进程碘化钾杜兰特

开放式系统(“sllookuptable/常规PID”

类似于模糊PID控制器,输入信号到衍生物动作是-y(k)而不是e(k)

您可以手动或使用调整公式调整PID控制器增益。在本例中,使用皮顿来自控制系统工具箱的命令™.

定义PID结构,调整控制器,提取PID增益。

C0=pid(1,1,1,“t”Ts,“如果”'B''df''B'); C=pidtune(工厂,C0)[Kp,Ki,Kd]=piddata(C);
C = TS * Z Z-1 KP + KI * ------ + KD * ------ Z-1 TS * Z带KP = 30.6,ki = 25.2,KD = 9.02,TS = 0.1样品时间:0.1秒离散时间PID控制器并行形式。

设计等效线性模糊PID控制器

通过配置FIS并选择四个缩放因子,您可以获得一个线性模糊PID控制器,可再现传统PID控制器的控制性能。

首先,配置模糊推理系统,使其从输入中产生线性控制表面E.ce输出.FIS设置基于[2]中所述的设计选择:

  • 使用具有默认推理方法的Sugeno风格模糊推理系统。

  • 将两个输入的范围标准化为[-10]。

  • 使用三角形输入成员函数,该函数在成员值为0.5时与其相邻函数重叠。

  • 使用[-20 20]的输出范围。

  • 使用常量输出成员函数。

构建模糊推理系统。

FIS=sugfis;

定义输入变量E.

FIS=附加输入(FIS,[-10],'姓名'“E”);fis = addmf(fis,“E”'trimf',[-20 -10 0],'姓名''消极的');fis = addmf(fis,“E”'trimf',[-10 0 10],'姓名'“零”);fis = addmf(fis,“E”'trimf',[0 10 20],'姓名''积极的');

定义输入ce

FIS=附加输入(FIS,[-10],'姓名'');fis = addmf(fis,''trimf',[-20 -10 0],'姓名''消极的');fis = addmf(fis,''trimf',[-10 0 10],'姓名'“零”);fis = addmf(fis,''trimf',[0 10 20],'姓名''积极的');

定义输出变量具有常数成员职能。

FIS=添加输出(FIS,[-20],'姓名''U');fis = addmf(fis,'U''持续的',-20,'姓名'“大反复无常”);fis = addmf(fis,'U''持续的',-10,'姓名'“小负”);fis = addmf(fis,'U''持续的',0,'姓名'“零”);fis = addmf(fis,'U''持续的'10,'姓名''小型');fis = addmf(fis,'U''持续的'20,'姓名'“大阳性”);

定义以下模糊规则:

  1. 如果E.是负的,ce那么是否定的-20

  2. 如果E.是负的,ce是零,然后-10

  3. 如果E.是负的,ce那么是积极的0.

  4. 如果E.是零ce那么是否定的-10

  5. 如果E.是零ce是零,然后0.

  6. 如果E.是零ce那么,这是肯定的10.

  7. 如果E.是积极的,也是积极的ce那么是否定的0.

  8. 如果E.是积极的,也是积极的ce是零,然后10.

  9. 如果E.是积极的,也是积极的ce那么,这是肯定的20.

rulelist = [1 1 1 1 1;% 规则11 2 2 1 1;%规则21 3 3 1 1;%规则3.2 1 2 1 1;%规则4.2 2 3 1 1;%规则5.2 3 4 1 1;%规则6.3 1 3 1 1;%规则7.3 2 4 1 1;%规则8.3 3 5 1 1];%规则9.FIS = addrule(FIS,尺码);

在此示例中从命令行实现您的FIS时,您可以使用使用的方式使用您的FIS模糊逻辑设计器应用程序。

绘制线性控制表面。

gensurf(FIS)

确定比例因子通用电气普通中等教育GCU金伯利进程碘化钾杜兰特采用常规PID控制器控制系统的增益。比较传统PID和线性模糊PID的表达式,变量之间的关系如下:

  • 金伯利进程=GCU*普通中等教育+*通用电气

  • 碘化钾=GCU*通用电气

  • 杜兰特=*普通中等教育

假设最大参考步长为1,因此最大错误E.1。由于输入范围E.是[-10 10],设置通用电气10.. 然后你就可以解决这个问题了普通中等教育GCU

GE=10;GCE=GE*(Kp sqrt(Kp^2-4*Ki*Kd))/2/Ki;GCU=Ki/GE;GU=Kd/GCE;

利用二维查表实现模糊推理系统

模糊控制器块有两个输入(E.ce)和一个输出()因此,您可以使用二维查找表替换模糊系统。

要从FIS生成二维查找表,请循环输入范围,并使用evalfis.。由于控制表面是线性的,因此可以为每个输入变量使用一些采样点。

步骤=10;E=-10:步骤:10;CE=-10:步骤:10;N=长度(E);LookUpTableData=0(N);为了我= 1:n为了j = 1:n计算每个样本点组合的输出u。SpeeUppastabata(i,j)= evalfis(fis,[e(i)ce(j)]);终止终止

使用2-D查找表查看模糊PID控制器。

开放式系统(“使用查找表”sllockuptable / fuzzy pid'

与模糊PID控制器相比,唯一的区别在于模糊逻辑控制器块被二维查找表块替换。

当控制表面是线性的,使用2-D查找表的模糊PID控制器将与使用模糊逻辑控制器块的结果产生相同的结果。

模拟Simulink中的闭环响应金宝app

Simu金宝applink模型模拟三个不同的控制器子系统,即常规PID、模糊PID和使用查找表的模糊PID,以控制同一对象。

运行模拟。要将闭环响应与步进参考更改进行比较,请打开范围。正如预期的那样,所有三个控制器都产生相同的结果。

SIM('sllockuptable')开放式系统(“sllookuptable/Scope”

具有非线性控制表面的模糊PID控制器

一旦有了线性模糊PID控制器,就可以通过调整FIS设置来获得非线性控制曲面,比如它的样式、成员函数和规则库。

对于本例,使用sugeno型FIS设计一个陡峭的控制面。每个输入集有两个项(积极的消极的),规则的数量减少到四条。

构建金融中间人。

FIS=sugfis;

定义输入E.

FIS=附加输入(FIS,[-10],'姓名'“E”);fis = addmf(fis,“E”“高斯函数”,[7-10],'姓名''消极的');fis = addmf(fis,“E”“高斯函数”,[7 10],'姓名''积极的');

定义输入ce

FIS=附加输入(FIS,[-10],'姓名'');fis = addmf(fis,'“高斯函数”,[7-10],'姓名''消极的');fis = addmf(fis,'“高斯函数”,[7 10],'姓名''积极的');

定义输出

FIS=添加输出(FIS,[-20],'姓名''U');fis = addmf(fis,'U''持续的',-20,'姓名''min');fis = addmf(fis,'U''持续的',0,'姓名'“零”);fis = addmf(fis,'U''持续的'20,'姓名''最大限度');

定义以下规则:

  1. 如果E.是负的,ce那么是否定的-20

  2. 如果E.是负的,ce那么,这是肯定的0.

  3. 如果E.是积极的,也是积极的ce那么是否定的0.

  4. 如果E.是积极的,也是积极的ce那么,这是肯定的20.

rulelist = [1 1 1 1 1;......% 规则11 2 2 1 1;......%规则22 1 2 1 1;......%规则3.2 2 3 1 1];%规则4.FIS = addrule(FIS,尺码);

查看3-D非线性控制表面。该表面在中心附近具有更高的增益E.ce与线性曲面相比,平面具有更高的精度,这有助于在误差较小时更快地减小误差。当误差较大时,控制器的攻击性会降低,以避免可能的饱和。

gensurf(FIS)

在开始模拟之前,请使用新的控制表面数据更新查找表。由于表面是非线性的,得到足够的近似,添加更多采样点。

步骤= 1;e = -10:步骤:10;CE = -10:步骤:10;n =长度(e);LookuptableData =零(n);为了我= 1:n为了j = 1:n计算每个样本点组合的输出u。SpeeUppastabata(i,j)= evalfis(fis,[e(i)ce(j)]);终止终止

运行模拟。

SIM('sllockuptable'

与传统的线性PID控制器(响应曲线具有大超调量)相比,非线性模糊PID控制器使超调量降低了50%。非线性模糊控制器的两个响应曲线几乎重合,说明二维查找表很好地逼近了模糊系统。

bdclose('sllockuptable'%闭合模型也清除其工作区变量。

结论

您可以使用查找表近似非线性模糊PID控制器。通过在Simulink中使用查找表块替换模糊逻辑控制器块,您可以部署具有简化生成代码和提高执行速度的模糊控制器。金宝app

参考文献

[1] Xu,J.X.,Hang,C. C.,Liu,C。“模糊PID控制器的并行结构和调整”。自动的,第36卷,第673-684页。2000

[2] jantzen,j。调整模糊PID控制器,丹麦技术大学自动化系技术报告,1999。

也可以看看

阻碍

相关的话题