主要内容

在仿真软件中实现模糊PID控制器使用查找表万博1manbetx

这个例子展示了如何实现一个模糊推理系统对非线性PID控制使用一个二维查找表。

概述

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

对于控制应用程序,典型的FIS输入错误(e (k))和误差变化(e (k) - e (k - 1)),ECE分别控制曲面图。FIS的输出模糊规则的控制作用推断,u在曲面图。模糊逻辑工具箱™提供了设计一个FIS命令和应用程序所需的控制表面。然后您可以模拟设计FIS使用仿真软件中的模糊逻辑控制器块®。万博1manbetx

您通常可以近似非线性控制表面使用查找表来简化生成的代码,提高执行速度。例如,你可以换一个模糊逻辑控制器块与一组查找表块模型,一个表中定义的每个输出金融中间人。万博1manbetx你可以计算数据用于查找表使用evalfis命令。

对于本例,您设计一个非线性模糊PID控制器模型的一种植物。万博1manbetx对于植物是一个单,在离散时间系统。的设计目标是实现好的参考跟踪性能。

t = 0.1;工厂=汇集(zpk ([], [1 3 5], 1), Ts);

你也使用一个二维查找表实现模糊推理系统接近控制表面,达到相同的控制性能。

模糊PID控制器结构

模糊控制器在这个例子在反馈回路,并使用模糊推理计算PID-like行动。打开仿真软件模型。万博1manbetx

open_system (“sllookuptable”)

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

open_system (“sllookuptable /模糊PID”)

模糊PID控制器使用输出的变化——(y (k) - y (k - 1)),而不是改变的错误e (k) - e (k - 1),如FIS的第二输入信号。这样做可以防止参考信号的幅度变化直接导致微分作用。这两块,全球教育运动GCU部件,在前馈路径ru确保错误的信号e用于比例动作时,模糊PID控制器是线性的。

传统PID控制器设计

传统的PID控制器在本例中是一个离散PID控制器与向后欧拉数值积分在积分和导数的行动。控制器增益Kp,Ki,Kd

open_system (“sllookuptable /常规PID”)

类似于模糊PID控制器,输入信号的微分作用- y (k),而不是e (k)

您可以调整PID控制器增加手动或使用优化公式。在这个例子中,获得初始PID设计使用pidtune指挥与控制系统工具箱™。

定义了PID结构,优化控制器,并提取PID收益。

C0 = pid (1, 1, 1,“t”Ts,“如果”,“B”,“DF”,“B”);C = pidtune(植物,C0) (Kp、Ki Kd) = piddata (C);
C = t * z z 1 Kp + Ki * - - - - - - + Kd * - - - - - - z 1 Ts与Kp = 30.6 * z, Ki = 25.2, Kd = 9.02, t = 0.1样品时间:0.1秒离散PID控制器并联形式。

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

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

首先,配置的模糊推理系统,从输入产生一个线性控制表面ECE输出u。FIS的设置是基于设计选择[2]中描述:

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

  • 正常的范围输入-10 [10]。

  • 使用三角输入隶属函数重叠邻居函数成员值为0.5。

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

  • 使用恒定的输出隶属度函数。

构造模糊推理系统。

FIS = sugfis;

定义输入变量E

FIS = addInput (FIS, -10 [10],“名字”,“E”);FIS = addMF (FIS,“E”,“trimf”(-20 -10 0),“名字”,“负面”);FIS = addMF (FIS,“E”,“trimf”(-10 0),“名字”,“零”);FIS = addMF (FIS,“E”,“trimf”(0 10 20),“名字”,“积极”);

定义输入CE

FIS = addInput (FIS, -10 [10],“名字”,“CE”);FIS = addMF (FIS,“CE”,“trimf”(-20 -10 0),“名字”,“负面”);FIS = addMF (FIS,“CE”,“trimf”(-10 0),“名字”,“零”);FIS = addMF (FIS,“CE”,“trimf”(0 10 20),“名字”,“积极”);

定义输出变量u常数隶属度函数。

FIS = addOutput (FIS, 20 [-20],“名字”,“u”);FIS = addMF (FIS,“u”,“不变”,-20,“名字”,“LargeNegative”);FIS = addMF (FIS,“u”,“不变”,-10,“名字”,“SmallNegative”);FIS = addMF (FIS,“u”,“不变”0,“名字”,“零”);FIS = addMF (FIS,“u”,“不变”10“名字”,“SmallPositive”);FIS = addMF (FIS,“u”,“不变”,20岁,“名字”,“LargePositive”);

定义模糊规则如下:

  1. 如果ECE,然后uLargeNegative

  2. 如果ECE,然后uSmallNegative

  3. 如果ECE积极的,然后u

  4. 如果ECE,然后uSmallNegative

  5. 如果ECE,然后u

  6. 如果ECE积极的,然后uSmallPositive

  7. 如果E积极的CE,然后u

  8. 如果E积极的CE,然后uSmallPositive

  9. 如果E积极的CE积极的,然后uLargePositive

ruleList = [1 1 1 1 1;%规则11 2 2 1 1;%规则21 3 3 1 1;%规则32 1 2 1 1;%规则42 2 3 1 1;%规则52 3 4 1 1;%规则63 3 1 1;%规则73 2 4 1 1;%规则83 3 1 5 1];%规则9ruleList FIS = addRule (FIS);

当你从命令行实现金融中间人在这个例子中,你可以另外建立FIS使用模糊逻辑设计应用程序。

情节线性控制表面。

gensurf (FIS)

确定比例因子通用电气,全球教育运动,GCU部件,Kp,Ki,Kd收益的常规PID控制器。表达式的比较传统的PID和模糊PID线性相关的变量如下:

  • Kp=GCU部件*全球教育运动+*通用电气

  • Ki=GCU部件*通用电气

  • Kd=*全球教育运动

一步是假设最大的参考1,因此最大的错误e1。因为输入的范围E是-10年[10],准备好了吗通用电气10。你可以解决的全球教育运动,GCU部件,

通用电气= 10;GCE =通用电气* (Kp-sqrt (Kp ^ 2 - 4 * Ki * Kd)) / 2 /吻;GCU部件= Ki /通用电气;顾= Kd / GCE;

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

模糊控制器的块有两个输入(ECE)和一个输出(u)。因此,您可以使用一个二维查找表取代模糊系统。

从你的FIS生成二维查找表,通过输入宇宙循环,计算相应的输出值使用evalfis。自控制表面是线性的,您可以使用几个采样点对每个输入变量。

一步= 10;E = -10:步骤:10;CE = -10:步骤:10;N =长度(E);LookUpTableData = 0 (N);i = 1: Nj = 1: N%计算输出u为每个采样点的组合。LookUpTableData (i, j) = evalfis (FIS, [E (i) CE (j)]);结束结束

使用二维查找表视图的模糊PID控制器。

open_system (“sllookuptable /模糊PID使用查找表”)

唯一不同的模糊PID控制器相比,模糊逻辑控制器块被替换为一个二维查找表块。

当控制表面是线性的,使用二维查找表的模糊PID控制器产生相同的结果作为一个使用模糊逻辑控制器。

仿真软件模拟闭环反应万博1manbetx

仿真软件万博1manbetx模型模拟三种不同控制器子系统,即传统PID、模糊PID和模糊PID使用查找表,控制同一种植物。

运行仿真。比较闭环反应一步参考变化,开放的范围。正如预期的那样,所有三个控制器产生相同的结果。

sim卡(“sllookuptable”)open_system (“sllookuptable /范围”)

设计模糊PID控制器与非线性控制表面

线性模糊PID控制器后,你可以获得一个非线性控制表面通过调整FIS设置,比如它的风格,隶属度函数和规则库。

对于这个示例,使用Sugeno-type FIS设计一个陡峭的控制表面。每个输入设置有两个术语(积极的),规则的数量减少到4个。

构建金融中间人。

FIS = sugfis;

定义输入E

FIS = addInput (FIS, -10 [10],“名字”,“E”);FIS = addMF (FIS,“E”,“gaussmf”-10年[7],“名字”,“负面”);FIS = addMF (FIS,“E”,“gaussmf”,10 [7],“名字”,“积极”);

定义输入CE

FIS = addInput (FIS, -10 [10],“名字”,“CE”);FIS = addMF (FIS,“CE”,“gaussmf”-10年[7],“名字”,“负面”);FIS = addMF (FIS,“CE”,“gaussmf”,10 [7],“名字”,“积极”);

定义输出u

FIS = addOutput (FIS, 20 [-20],“名字”,“u”);FIS = addMF (FIS,“u”,“不变”,-20,“名字”,“最小值”);FIS = addMF (FIS,“u”,“不变”0,“名字”,“零”);FIS = addMF (FIS,“u”,“不变”,20岁,“名字”,“马克斯”);

定义以下规则:

  1. 如果ECE,然后u最小值

  2. 如果ECE积极的,然后u

  3. 如果E积极的CE,然后u

  4. 如果E积极的CE积极的,然后u马克斯

ruleList = [1 1 1 1 1;%规则11 2 2 1 1;%规则22 1 2 1 1;%规则32 2 3 1 1);%规则4ruleList FIS = addRule (FIS);

查看三维非线性控制表面。这个表面的中心附近有更高的增益ECE飞机比线性表面,这有助于减少误差更快时,误差很小。当误差较大时,控制器变得不那么咄咄逼人,以避免可能的饱和度。

gensurf (FIS)

在开始仿真之前,更新与新的控制表面数据查找表。因为表面是非线性,获得足够的近似,添加更多的采样点。

一步= 1;E = -10:步骤:10;CE = -10:步骤:10;N =长度(E);LookUpTableData = 0 (N);i = 1: Nj = 1: N%计算输出u为每个采样点的组合。LookUpTableData (i, j) = evalfis (FIS, [E (i) CE (j)]);结束结束

运行仿真。

sim卡(“sllookuptable”)

相比与传统的线性PID控制器(大超调)的响应曲线,非线性模糊PID控制器减少了超过50%。非线性模糊控制器的两个响应曲线几乎重叠,这表明二维查找表接近模糊系统。

bdclose (“sllookuptable”)%关闭模型还清理工作空间变量。

结论

你可以近似非线性模糊PID控制器使用查找表。通过更换一个模糊逻辑控制器块查找表块在仿真软件中,您可以部署和简化模糊控制器生成的代码,提高执行速度。万博1manbetx

引用

[1]徐,j . X。挂,C . C。刘,C。“平行结构和调优的模糊PID控制器。自动化36卷,第673 - 684页。2000年。

[2]示,J。调优的模糊PID控制器、技术报告、部门的自动化、丹麦技术大学,1999。

另请参阅

相关的话题