logo资料库

Simulink模块参数在线修改方法-Simulink模块参数在线修改方法的研究.pdf

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
第21卷第12期 计算机仿真 2004年12月 文章编号:1006—9348(2004)12—0226-03 Simulink模块参数在线修改方法的研究 郑志波 (武汉大学电气工程学院,湖北武汉430072) 摘要:使用动态系统仿真工具Simulink对时变系统进行仿真或者研究变参数变结构控制理论的时候,模块的参数一般是要 根据仿真的中间结果进行在线动态修改的,而Simulink只提供了离线修改模块参数的方式。该文在分析S—Function模块 调用机理的基础上,研究了通过编制s一函数来实现在线修改模块参数的两种方法。文末给出了应用实例,证明其可行性。 由于实际系统大多是时变系统,而且现代控制理论设计控制器的参数大多也是需要动态调整的,该文研究结果将大大扩展 Simulink的使用范围。 关键词:函数;参数动态修改;数字仿真 中图分类号:TP317 文献标识码:A Research on Online Modifying Block’S Parameters in Simulink ZHENG Zhi—bo (School of Electrical Engineering,Wuhan University,Wuhan Hubei 430072,China) ABSTRACT:During the course of simulation,parameters of some blocks should be modified according to output val— He generated by the system when the dynamic system simulation tool,Simulink,is used to analyse time—variable systems or variable structure control theories.But Simulink only provides off—line modifying function.An approach which implements online modifying block’S parameters in Simulink through S—Function,based on the mechanism of how S—Function block is used,is presented in this paper.A sample on nonlinear PID control system is provided to show the validity of this approach. KEYWORDS:Function;Parameters’modifying online;Digital simulation 1 引言 了阐述。 交互式模型输入与仿真环境Simulink是MATLAB提供 但是,很多情况下,例如在系统辨识、自适应控制仿真研 的一个图形界面动态系统仿真工具。近几年,在学术界和工 究的场合、对时变系统进行仿真的情形、或者研究变参数变 业领域,它已成为在动态系统建模和仿真方面应用得最为广 结构控制的时候,模块的参数是要根据仿真的中间结果来进 泛的软件包之一¨1。Simulink的模块库为用户提供了多种 行在线动态修改的。此时,上述办法就行不通了。 多样的功能模块,用这些基本模块可以方便地构造各种简单 Simulink模块库中的S—Function模块为我们实现这种 和复杂系统并进行仿真分析和辅助设计。 功能提供了可能。本文就如何在仿真过程中在线动态修改 Simulink模块的参数可以通过双击模块后弹出的模块参 模块参数进行了研究,着重介绍了两种实现方法并给出了应 数对话框来设置和修改;如果将模块参数设置为MATLAB变 用实例。 量空间中的变量,我们也可以通过执行M脚本批量修改变 量的值,或者直接在MATLAB命令窗口中键人命令修改这些 2实现原理 变量的值,以达到修改模块参数的目的。文献[2]对此进行 收稿日期:2003—06—03 ——-——226.--—— 万方数据 万方数据 Simulink在仿真过程中对模型中的每一个模块重复进行 调用,在仿真的开始和结束阶段还执行一些附加的调用,用 来完成系统初始化和终止仿真的功能;如果在模型中加入s
一Function模块,那么在仿真过程当中,相应的s一函数就能 其中,WS可以为base和caller;为使s一函数中对变量X 被重复调用,而且s一函数中可以访问S—Function模块的输 的改变反映到MATLAB变量空间中,将WS设置为base 入、输出、连续(离散)状态,也可以加入其它有效的MATLAB 即可。 命令。 在S一函数中使用语句 因为需要在仿真过程中根据仿真中间结果来修改模块 evalin(‘base’,[‘X=’,num2str(newvalue)]); 参数,所以考虑在模型中加入S—Function模块,并修改模型 将MATLAB变量空间中的变量x的值更改为新值ne— 或模块的某些属性,使模型在启动仿真时执行一些初始化工 wvalueo 作,从而解决仿真过程中对模块参数动态修改的问题。 也可以直接用assignin函数实现。代码为: 使用S—Function模块需要编制相应的s一函数,以保证 assignin(‘base’,‘x’,newvalue); 能够获取仿真过程中的数据(t、x、U等),并根据相应规则即 3.2直接修改模块参数 时修改模块参数。 3实现方法 3.1通过变量传递 3.2.1 set param函数 set—param是用来修改Simulink系统和模块的参数的函 数,其调用格式为: set—param(‘obj’,‘parameterl’,valuel,‘parameter2’, 文献[2]中介绍了通过变量传递的方法来修改模块参数 value2,…); 的方法,但只是静态的,无法实现动态修改。而S一函数在每 一步仿真中都会执行,故可以在s一函数中添加变量修改的 其中‘obj’是Simulink系统名或模块全路径名,后面的 属性名和属性值成对出现,更详细的说明请参看MATLAB附 代码;但s一函数中无法访问MATLAB变量空间中的变量。 带的电子文档。 为实现S一函数的局部变量空间和MATLAB变量空间中变 量的相互访问,有如下两种方法。为便于论述,假定已经将 模块的某个参数设置为变量X。 3.1.1利用全局变量 3.2.2修改模块参数 Simulink自带范例“vdp”(van der pol Equation)的仿真模 型。假定要修改该系统中名为“Mu”的增益模块的参数一增 益(Gain)为100,则可以使用如下语句来实现: MATLAB中,语句“global x;”将x声明为全局变量。 为了在函数中访问全局变量x,还需要在函数中使用x之 set—param(‘vdp/Mu’,‘Gain’,‘100’); 需要注意的是,所有模块的参数都是以字符串的形式保 前将变量x声明为全局变量,否则,将被视为函数中的局 存的,所以增益(Gain)的新值100同样要以字符串 部变量。 “‘100”’,而不是数值“100”作为参数传递。 仿真初始化时,系统会检查各模块参数的有效性,定义 了全局变量x,还必须对其赋初值。为在仿真进行之前自动 3.2.3存在的问题及改进 上述处理方法有如下缺点: 将变量X设置为全局变量,并对X设置初值,可以将相关语 1)影响仿真速度 句存放在模块的OpenFcn属性中。“OpenFcn”将在首次打开 模型文件时自动调用。 设置模块的“OpenFcn”属性的语句为: 通过set—param命令来修改模块参数,如果被修改模块 所在的子系统是打开的,则该模块会自动更新,这样会导致 屏幕闪烁,同时对仿真速度的影响相当大,因为图形界面的 set_param(‘obj’,‘OpenFcn’,‘global x;x=100;’); 更新是很耗时的操作。 其中obj为模块全路径名。 为克服这一缺点,对该模块进行一次封装,而封装后生 在设置模块的“OpenFcn”属性之前,要断开模块同Simu— 成的子系统一般是无需打开的,这样,程序中对模块的修改 link库文件的连接(假如存在的话),否则会导致修改失败。 就不会导致系统不断地刷新屏幕、进而导致仿真速度变慢; 在s一函数中添加语句“global x;”,将变量x声明为全 而封装的子系统会在系统进行仿真初始化时在内存中自动 局变量,然后即可以在函数内部对x的值进行修改,并可以 展开,展开操作对仿真速度的影响可以忽略不计。 自动反映到MATLAB变量空间中去。 2)缺乏通用性 通过变量传递的方式来修改参数实现简单,但要注意避 上述方法中用set—param命令来修改模块参数,而模型 免在其它语句中对变量的修改,而且要防止不同模块使用相 全路径名在代码中直接给定,模块在子系统问移动、更名、其 同的变量,否则都会影响仿真结果正确性。 参数名称的改变或者系统更名等,都将要求更改编制的s一 3.1.2利用evalin函数 evalin函数的基本调用格式为¨1: 函数源代码,使程序不具备通用性。 考虑将被修改模块的模块名和参数名作为S—Function [x,Y,z,...]=evalin(WS,‘expression’) 模块的参数传递给s一函数,而且模块名采用相对路径,而在 ...——227...—— 万方数据 万方数据
s~函数中通过代码生成全路径名,以实现对指定模块指定 Kd=18.9642}(1+0.5$exp(一25★u2)); 参数的访问和修改。这样,程序就具备一定的通用性,可以 set_param([gcs,‘/’,block],blkpara,num2str(Kd)); 在更多的系统中得以方便调用。 4应用实例 文献[4]介绍了一种非线性PID,对其进行仿真研究。 PID控制器参数根据偏差信号动态调整,考虑用本文介绍的 方法实现在仿真过程中动态修改。 首先建立如图1所示的系统模型。 对系统进行仿真, 并与普通PID的控制效 果进行对比(PID的各 项控制参数均来自文献 [4]),得到图2所示曲 线。由图不难得出结 论:VAPID控制系统比 常规PID控制系统有更 快的响应速度和更小的 超调量。 圈2系统阶跃响应曲线 图1非线性PID控制系统模型 同文献[4]介绍的仿真方法相比,本文提供的方法保持 了Simulink方框图建模和建模具有递阶结构的特点,具备更 好的通用性,实现起来也相当简单。 (①PID模块是由Simulink Extras库中引出的PID Control- ler模块封装而成的;设置PID Controller(PID控制器)模块的 5结论 参数分别为Kp、Ki、0。 ②模型中名为“Controller Design”的模块是由s—Func- tion模块封装而成的,S—Function模块的“s一函数名”参数 设为“sfcn_paratune”,“S一函数参数”参数设为“D”。 ③定义全局变量并设置PID控制器参数的初值:选中 PID控制器模块,并在MATLAB命令窗口中执行以下 代码: Simulink提供了丰富的模型库供构建完整的系统使用。 它具有模块化、可重载、可封装、面向结构图编程及可视化等 特点,可以大大提高仿真的效率和可靠性。S—Function模块 更增加了它的开放性,利用它可以建立特定系统的模型、实 现仿真过程中的实时动画等各项功能。本文提出的模块参 数在线修改方法更加拓宽Simulink的应用领域,值得在进行 时变系统仿真、研究变参数变结构控制规律等系统仿真和辅 set—param(gcb,‘OpenFcn’,‘global Kp;Kp=10;Ki= 助设计的研究过程中参考。 0;’); 本文介绍的方法在某电厂单元负荷仿真培训系统中得 即可完成;将PID控制器模块的“open function:”属性 到广泛应用,效果良好。 设置为“global Kp;Kp=10;Ki=0;”,可以实现相同的 功能。 参考文献: ④设置其它相关仿真参数,并保存系统模型为“selfad— [1]姜蕊辉.数字电路虚拟实验系统中虚拟器件的设计[J].微型 justpid.mdl”文件。 编制S一函数sfcn_paratune,主要代码如下: function[sys,x0,str,ts]= sfcn_paratune(t,x,U,flag,block,blkpara) global Kp;%声明全局变量 %根据相关条件修改模块参数 %修改全局变量 Kp=0.9251{(1+0.01}(1一exp(一100}u2))); %修改MATLAB工作空间中的变量 机与应用,2001,20(1):21—22. [2]李洪儒,等.SIMULINK仿真过程中的动态数据传递研究[J]. 军械工程学院学报,1999,11(2):11—14. [3]MATLAB Function Reference.Volume 1:A—E.Version 6[z], The MathWorks Inc,2000. [4]周英玉,等.利用Matlab的S—Function实现非线性PID控制 [J].自动化与仪器仪表,2001,(2):24—26. [作者简介】 郑志波(1976一),男(汉族),湖北黄陂人,讲师, 在读博士生,主要研究方向:智能控制理论与应用、 Ki=0.0113}(0.41+0$exp(一100}u2)); 计算机仿真、电力电子与电力传动。 assignin(‘base’,’瞄’,ra); %直接修改模块参数 —--——228.--—— 万方数据 万方数据
Simulink模块参数在线修改方法的研究 作者: 郑志波 作者单位: 刊名: 武汉大学电气工程学院,湖北,武汉,430072 计算机仿真 英文刊名: COMPUTER SIMULATION 年,卷(期): 2004,21(12) 3次 被引用次数: 参考文献(3条) 1.周英玉 利用Matlab的S-Function实现非线性PID控制[期刊论文]-自动化与仪器仪表 2001(02) 2.李洪儒 SIMULINK仿真过程中的动态数据传递研究 1999(02) 3.姜蕊辉 数字电路虚拟实验系统中虚拟器件的设计[期刊论文]-微型机与应用 2001(01) 引证文献(3条) 1.张逸成.吴璐璐.胡晓军.梁海泉 带阻容负载的能量存储系统建模与稳定性分析[期刊论文]-系统仿真学报 2010(3) 2.YAO Peng-fei.尹俊勋.袁国栋 一种Simulink仿真系统封装为可执行文件的方法[期刊论文]-微计算机信息 2008(22) 3.徐利.吕中枢.赵君有.王春玲 基于SIMULINK的555定时器仿真[期刊论文]-沈阳工程学院学报(自然科学版) 2007(3) 本文链接:http://d.g.wanfangdata.com.cn/Periodical_jsjfz200412066.aspx
分享到:
收藏