在仿真软件中实现模糊PID控制器使用查找表万博1manbetx
这个例子展示了如何实现一个模糊推理系统对非线性PID控制使用一个二维查找表。
概述
一个模糊推理系统(FIS)给定的输入映射到输出使用模糊逻辑。例如,一个典型的映射的两个输入,一个输出模糊控制器可以在3 d描述情节。情节通常被称为一个控制曲面图。
对于控制应用程序,典型的FIS输入错误(e (k)
)和误差变化(e (k) - e (k - 1)
),E
和CE
分别控制曲面图。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部件
,在前馈路径r
来u
确保错误的信号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控制器的控制性能。
首先,配置的模糊推理系统,从输入产生一个线性控制表面E
和CE
输出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”);
定义模糊规则如下:
如果
E
是负
和CE
是负
,然后u
是LargeNegative
。如果
E
是负
和CE
是零
,然后u
是SmallNegative
。如果
E
是负
和CE
是积极的
,然后u
是零
。如果
E
是零
和CE
是负
,然后u
是SmallNegative
。如果
E
是零
和CE
是零
,然后u
是零
。如果
E
是零
和CE
是积极的
,然后u
是SmallPositive
。如果
E
是积极的
和CE
是负
,然后u
是零
。如果
E
是积极的
和CE
是零
,然后u
是SmallPositive
。如果
E
是积极的
和CE
是积极的
,然后u
是LargePositive
。
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
,因此最大的错误e
是1
。因为输入的范围E
是-10年[10],准备好了吗通用电气
来10
。你可以解决的全球教育运动
,GCU部件
,顾
。
通用电气= 10;GCE =通用电气* (Kp-sqrt (Kp ^ 2 - 4 * Ki * Kd)) / 2 /吻;GCU部件= Ki /通用电气;顾= Kd / GCE;
使用二维查找表实现模糊推理系统
模糊控制器的块有两个输入(E
和CE
)和一个输出(u
)。因此,您可以使用一个二维查找表取代模糊系统。
从你的FIS生成二维查找表,通过输入宇宙循环,计算相应的输出值使用evalfis
。自控制表面是线性的,您可以使用几个采样点对每个输入变量。
一步= 10;E = -10:步骤:10;CE = -10:步骤:10;N =长度(E);LookUpTableData = 0 (N);为i = 1: N为j = 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岁,“名字”,“马克斯”);
定义以下规则:
如果
E
是负
和CE
是负
,然后u
是最小值
。如果
E
是负
和CE
是积极的
,然后u
是零
。如果
E
是积极的
和CE
是负
,然后u
是零
。如果
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);
查看三维非线性控制表面。这个表面的中心附近有更高的增益E
和CE
飞机比线性表面,这有助于减少误差更快时,误差很小。当误差较大时,控制器变得不那么咄咄逼人,以避免可能的饱和度。
gensurf (FIS)
在开始仿真之前,更新与新的控制表面数据查找表。因为表面是非线性,获得足够的近似,添加更多的采样点。
一步= 1;E = -10:步骤:10;CE = -10:步骤:10;N =长度(E);LookUpTableData = 0 (N);为i = 1: N为j = 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。