编辑: huangshuowei01 2019-12-16
系统仿真学报Vol.

15 No.

1 JOURNAL OF SYSTEM SIMULATION Jan.

2003 ?

132 ? MATLAB 在模糊控制系统设计和仿真的应用 李祖欣 湖州师范学院物理系 浙江湖州

313000 摘要论述了基于 MATLAB6.X SIMULINK 语言的模糊控制系统设计与仿真方法 并通过 编写 M 文件的 S 函数 进一步扩展了 SIMULINK 的功能 将MATLAB 和SIMULINK 有机结合 起来 大大改善了仿真效率 实现了参数自调整的模糊控制系统的设计和高效仿真 同时给出具 体实例 关键词 MATLAB 语言 模糊控制 参数自调整 计算机仿真 文章编号 1004-731X (2003) 01-0132-03 中图分类号 TP273.4 文献标识码 B Application of MATLAB in the Design and Simulation of Fuzzy Control System LI Zu-xin (Department of Physics Huzhou Teachers College Huzhou Zhejiang 313000, China) Abstract This paper focuses on how to design and simulate a fuzzy control system with some toolboxes of MATLAB. The self-adjusting parameters in the fuzzy control system can be realized effectually through compiling S-function, which combines MATLAB with simulink and extends simulink'

s functions. At the same time, it provides a specific example. Keywords MATLAB language;

fuzzy control;

self-tuning parameter;

computer simulation 引言1 MATLAB 软件是在

1984 年由美国 Math Works 公司推出 的一套高效率的数值计算的可视化软件 它提供了丰富的数 值分析 矩阵运算 图形绘制 数据处理 图像处理等功能 并且提供了大量的应用于不同学科的工具箱 正因为它是一 个开放的环境 已经成为国际控制界广泛使用的语言之一 国内也出版了相应的书籍[1] 它主要介绍了模糊控制工具箱的 函数 对用 SIMULINK 建立仿真并没有涉及 本文在 MATLAB6.X基础上讲述了如何利用 SIMULINK 工 具箱和 FUZZY 工具箱构造模糊控制系统的结构框图和进行仿 真研究的方法和具体步骤 对于常规的模糊控制器的不足之 处 主要从三个方面去改善 1) 模糊控制器参数 量化因子 和比例因子 的自调整 2) 模糊规则集的自调整 3) 模糊控 制器与其它控制方式相结合 此时如果按上述一般方法构造 系统仿真 SIMULINK 已无能为力 我们通过编写 S 函数 将MATLAB 和SIMULINK 有机结合起来 可以实现参数自 调整的复杂模糊控制系统的设计和高效仿真

1 MATLAB 在模糊控制系统中的应用 1.1 生成和编辑模糊推理系统 FIS 模糊逻辑工具箱 Fuzzy Logic Toolbox 提供了模糊逻辑 收稿日期 2002-01-28 修回日期 2002-03-14 作者简介 李祖欣(1972), 男, 浙江长兴人, 讲师, 硕士, 研究方向为模糊 控制 信号处理及计算机仿真 控制器及系统设计的各种途径 它提供了生成和编辑 FIS 常 用的函数 如newfis addvar addmf addrule evalfis 等 它包括产生新的 FIS 给FIS 加入变量 隶属度函数和控制规 则 完成模糊推理运算等 用户可用命令调用这此些函数生 成FIS[1] 工具箱还提供了 GUI 图形用户界面 编辑函数 使用户能更直观地生成系统 它有 FIS 编辑器 隶属度函数 编辑器 规则编辑器 规则观测器和曲面观测器五个 GUI 工具下面以图

1 所示小容量锅炉给水控制为例加以说明 由 于小容量锅炉假水位现象不明显 采用单冲量控制系统 汽 包水位被控对象传递函数定为[2] G(S)=0.0125 S(11.5S+1) 1.1.1 隶属度函数的建立 若取输入汽包实际水位与给定水位值误差为 E 误差变 化EC 和输出 U 的论域均为{-6 -5 -4 -3 -2 -1

0 1

2 3

4 5 6} 其模糊子集均为{NB NM NS ZO PS PM PB} 在MATLAB 命令窗中键入命令 FUZZY 进入模糊逻辑 编辑窗口 FIS Editor 建立 E EC U 的隶属度函数 有三角 形trimf 高斯形 gaussmf 梯形(trapmf)等十一种可供选 择 在此均选常用的三角形隶属度函数 如图

2 所示 这些 图1模糊控制系统方框图 模糊 控制 器re(nT) U(nT) E(nT) y(nT) G(S) ke kec EC(nT) ku d dt 万方数据 Vol.

15 No.

1 Jan.

2003 李祖欣, 等MATLAB 在模糊控制系统设计和仿真的应用 ?

133 ? 隶属度函数曲线可以是等距离 也可以是非等距离的 当偏 差大于某值时 曲线的 密度设置得小一些 这 样可以提高系统的响应 速度 当偏差小于某值 时 曲线的密度设置得 大一些 这样可以提高 系统的响应精度和减少 超调 一般合适的隶属 度函数应该保证相邻模糊量的交点在 0.3-0.7 之间 1.1.2 糊控制规则和决策方法 控制规则是对专家的理论知识和实践经验的总结 此处 共有

49 条规则 如表

1 所示 在Rule Editor 窗口中 输入这些规则 如选择 verbose 规则表达形式 我们写成为 1.If (e is NB) and (ec is NB) then (u is PB) (1) 其中最后括号中的

1 表示该条规则的权值 模糊决策采用 与And 方法为 min 或Or 方法 为max 推理(Implication)方法为 min,合成(Aggregation)方法 为max 解模糊化(Defuzzification)方法为重心法 centroid 如此设计的模糊控制器的输入与输出的关系曲线如图

3 所示 显然模糊控制是一种非线性控制 在控制曲面上 检查其期望值是否在模糊控制输出结论 空间的中心附近 若超过 20% 则需重新调整规则 隶属度 函数或模糊运算 对模糊控制器进行优化[3] 这样建立了一个 FIS 系统的文件 取文件名为 a.fis 注 意该模糊控制器的命名与 FIS 命名应一致 若进行仿真时 需用 readfis 命令把建好的 a.fis 读入工作空间(workspace)中1.2 SIMULINK 仿真及参数的调整 MATLAB 提供的 SIMULINK 是一种用来对动态系统进 行建模 仿真和分析的软件包 它支持连续 离散及两者混 合的线性和非线性系统 在MATLAB 命令窗口中输入 simulink 弹出编辑框 选择相应的模块 其中在模糊控制工具箱中有 一个模糊控制器模块(Fuzzy Logic Controller) 将这些模块连 接起来构成系统结构图 双击各个模块输入相应的参数 同 时仿真时选择各种数值算法 仿真步长等重要参数 并可用 示波器将仿真动态结果给予显示 只有将模糊控制器模块与 FIS 文件对应起来才能真正构成一个模糊控制系统 它还可以 将仿真结果以不同变量存在 workspace 中用plot()函数在图 形窗口中绘出供分析和比较 图4是在 SIMULINK 环境下 模糊控制器与二阶被控对象组成的控制系统仿真框图

2 编写 S 函数实现参数自调整的高效仿真 2.1 ke kec ku 参数自调整原则 当偏差 E 较大时 对ke 的加权应大一些 有利于消除误 差 同时 ku 取较大值 这样可以保证系统的快速性 当E较小时 系统将接近稳态 此时应对 kec 加权大一点 ku 同时 减少 这样可以避免产生超调 使系统尽快进入稳态精度范 围2.2 编写 S 函数 作为一种开放的语言 MATLAB 提供了多种用户扩展工 具 给用户提供编写复杂的函数 创建系统末提供的模块功 能 在直接使用 SIMULINK 难以进行仿真时 可以考虑编写 S 函数S函数的格式为[4][5] Function [sys,x0,str,ts] =sFunname(t,x,u,flag) 其中 sFunname 为定义的 S 函数名 t,x,u 分别为时间 状态变量和输入向量 flag 为返回变量标志 系统针对返回不同的值进行不同的操作 当flag=0 时系统进 行初始化 返回信息到 sys 初值至 x0 sys 数组中各元素的 值含义分别为 sys(1)= 连续状态变量数 sys(2)=离散状态变 量数 sys(3)=输出变量数 sys(4)=输入变量数 sys(5)= 离散 状态方程根的数目 sys(6)=1 flag=3 时使用输入变量返回输 出或0flag=3 时不使用输入变量 flag=

1 时返回连续的 状态导数至 sys flag=2 时返回离散状态 x(n+1)至sys flag=3 时返回输出变量 y flag=4 为计算下一个采样时间点并返回 flag=5 为系统保留 flag=9 为结束仿真 针对上述参数自调整 问题 编写如下 S 函数 function [sys,x0]=s1(t,x,u,flag) global ke kec ku;

ke=0.3;

kec=0.8;

ku=2;

%给量化因子和比例因子赋初值 if flag==0 图3 模糊控制器的输入输出曲线图 E U EC 图4模糊控制系统仿真框图 表1模糊控制规则表 NB NM NS ZO PS PM PB NB NM NS ZO PS PM PB PB PB PM PM PS ZO ZO PB PB PM PM PS ZO ZO ZO ZO NS NM NM NB NB PB PB PM PS ZO NM NM PB PB PM ZO NM NB NB PM PM ZO NS NM NB ........

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题