此示例显示了如何使用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的动作。打开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控制器。控制器收益是金伯利进程
那碘化钾
和杜兰特
。
开放式系统(“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控制器并行形式。
通过配置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,'姓名'那“大阳性”);
定义以下模糊规则:
如果E.
是负的,ce
那么是否定的你
是-20
。
如果E.
是负的,ce
是零,然后你
是-10
。
如果E.
是负的,ce
那么是积极的你
是0.
。
如果E.
是零ce
那么是否定的你
是-10
。
如果E.
是零ce
是零,然后你
是0.
。
如果E.
是零ce
那么,这是肯定的你
是10.
。
如果E.
是积极的,也是积极的ce
那么是否定的你
是0.
。
如果E.
是积极的,也是积极的ce
是零,然后你
是10.
。
如果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控制器将与使用模糊逻辑控制器块的结果产生相同的结果。
Simu金宝applink模型模拟三个不同的控制器子系统,即常规PID、模糊PID和使用查找表的模糊PID,以控制同一对象。
运行模拟。要将闭环响应与步进参考更改进行比较,请打开范围。正如预期的那样,所有三个控制器都产生相同的结果。
SIM('sllockuptable')开放式系统(“sllookuptable/Scope”)
一旦有了线性模糊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,'姓名'那'最大限度');
定义以下规则:
如果E.
是负的,ce
那么是否定的你
是-20
。
如果E.
是负的,ce
那么,这是肯定的你
是0.
。
如果E.
是积极的,也是积极的ce
那么是否定的你
是0.
。
如果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。