4.1 总体方案设计
如图4-1所示,输入的测试信号及其它一些要用于计算的参数由InTouch中给出并传入MATLAB中进行计算,再将结果传回InTouch中,二者之间的通信由DDE协议来完成。若图片无法显示请联系QQ752018766,先进控制在组态软件中的扩展与应用系统免费,转发请注明源于www.751com.cn
图4-1 MATLAB 和InTouch之间的通信
假设一典型二阶系统的传递函数为
(4-1)
以这个二阶系统作为被控对象,测试信号为阶跃信号,现利用MATLAB设计模糊控制器并对该控制系统进行仿真。在InTouch环境中设计相应的控制界面,并可以改变其中一些参数。
当MATLAB和InTouch之间的通信连接起来以后,测试信号从InTouch中传入MATLAB,并且通过改变InTouch界面上的参数,MATLAB中的计算结果做出相应的改变并传回到组态界面中显示出来。
系统总体结构图设计如图4-2,核心部分为模糊控制器,测试信号为阶跃信号。
图4-2 系统总体结构图
其中设置了三个限幅,限幅器1、限幅器2的限幅范围是[-6,6],其作用是把控制系统的误差及误差导数由基本论域变换到模糊控制器输入变量的论域。假设被控对象允许的最大输入是±20,因而在被控对象的前面设置了限幅器3,其限幅范围是[-20,20]。
通过反复试验设定输入e的量化因子k1初始值为30,ec的量化因子k2初始值为0.3,输出u的比例因子k3的初始值为60.通过模拟示波器来观察仿真后的结果。
4.2 基于MATLAB的模糊控制器的设计
设控制系统的输入为阶跃信号r,输出为y,误差为e1,误差导数为ec1,被控对象的输出为u1。模糊控制器与e1、ec1对应的输入分别为e、ec,与u1对应的输出为u。e,ec,u的论域取[-6,+6],语言值取5个,分别为“负大NB”,“负小NS”,“零ZR”,“正小PS”和“正大PB”。NB、NS、PS、PB取梯形隶属度函数,ZR取三角形隶属度函数。e、ec、u的隶属函数均相同,设置如下:e、ec、u [-6 6],NB [-
图4-3 e/ec/u的隶属函数曲线
根据经验,可以得到用“if…then…”形式表达的25条模糊控制规则:
1.if(e is NB)and(ec is NB)then(u is NB)
2.if(e is NB)and(ec is NS)then(u is NS)
3.if(e is NB)and(ec is ZR)then(u is NS)
.
.
.
23.if(e is PB)and(ec is ZR)then(u is PS)
24.if(e is PB)and(ec is PS)then(u is PB)
25. if(e is PB)and(ec is PB)then(u is PB)
以上模糊控制规则共计25条,这些控制规则可以总结归纳成表4-1:
表4-1 模糊控制规则表
ec e |
NB |
NS |
ZR |
PS |
PB |
NB |
NB |
NS |
NS |
ZR |
PS |
NS |
NB |
NS |
ZR |
ZR |
PS |
ZR |
NS |
NS |
ZR |
PS |
PS |
PS |
NS |
ZR |
ZR |
PS |
PB |
PB |
NS |
ZR |
PS |
PS |
PB |
建立好的模糊控制规则曲面如图4-4所示。
图4-4 模糊控制规则曲面
打开MATLAB中M文件编辑器,部分源程序如下:
clear all;
close all;
a=newfis('w1'); % 定义模糊控制器
. % 定义输入输出变量e,ec u
.
. % 模糊控制规则定义
a=addrule(a,rulelist); % 将模糊控制规则加到a中
a1=setfis(a,'DefuzzMethod','centroid'); % 解模糊的方法设置为centroid
writefis(a1,'w1'); % 将a以w1命名写到磁盘中
a2=readfis('w1'); % 从磁盘中读出并保存在工作空间中
ts=0.01; % 设置采样时间
sys=tf(9,[10,11,1]); % 被控对象的传递函数
dsys=c2d(sys,ts,'z'); % 将被控对象的传递函数离散化为差分方程
<< 上一页 [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] ... 下一页 >>