在GUI中调用Simulink模型

上传人:沈*** 文档编号:96110995 上传时间:2022-05-25 格式:DOC 页数:13 大小:596.50KB
返回 下载 相关 举报
在GUI中调用Simulink模型_第1页
第1页 / 共13页
在GUI中调用Simulink模型_第2页
第2页 / 共13页
在GUI中调用Simulink模型_第3页
第3页 / 共13页
点击查看更多>>
资源描述
GUI指导教程系列9在GUI中调用Simulink 模型- MATLAB技术论坛.2021-08-14 | 阅:1 转:51| 分享修改MATLAB技术论坛标题:GUI指导教程系列在GUI中调用Simulink模型标题:GUI指导教程系歹0作者:dynamic 时间:2021-3-25 22:40 在GUI中调用Simulink模型本节教程主要向大家演示使用三种不同的方法,在GUIDE中嵌入Simulink模块关 于原理 大家可 以参考 :/ mathworks /access/ . g_guisf6-8865.htmlGUIDE的面向对象可在Simulink中能够直观快速的搭建系统模型,如果再联合视化编程,可以说是锦上添花!将 Simulink融入到GUIDE中可以方便模型的 端用户,很容易直接可视化的操控模型参数和显示仿真结果,而此时并不需要进 入Simulink环境。构建Simulink模型该局部我们将快速的构建一个Simulink模型方便在后面的GUIDE中使用。本次 我们就使用一个简单的二阶 质量-弹簧-阻尼系统作为例如吧在使用该教程时,我们假定您已经具备Simulink相关建模根底和了解 质量-弹 阻尼系统的理论。因此在这里我就不深入介绍Simulink模型的建立和 质量-弓 -阻尼系统的数学推导。如果确实需要,建议您参考 :/1、先下载论坛为您制作好的 Simulink和GUI模型 simulink-gui.zip 13.04 KB,下载次数:338,包含 simulink_gui.fig、simulink_gui.m、simulateButton.m 和mass_spring.mdl四个文件,将其解压到 MATLAB工作目录。2、在Simulink中翻开模型,框图如下所示3、 请注意增益(Gain)模块的增益使用的是变量1/m、c/m和k/m,而不是数值。 因为Simulink默认使用根本状态空间(Base WorkSpace)的数据,因此在仿真之前 必须先在状态空间定义参数m、c和k,否那么将出错。当然我们可以 使用 set_param()函数直接设置参数,这个将会在后面讲解。4、 由丁函数有自己的状态空间(不是Base Workspace),因此在函数中使用sim() 函数进行模型仿真,即使你在函数中定义了模型的必要参数,但是这些参数只存 在丁函数状态空间中,模型在仿真是没法获取。比方下面的代码将会导致错误function runSimulinkModel(m,c,k)2 %即使在函数中有模型的参数输入或定义,但是 Simulink默认只使用基 本状态空间的数据3 sim(mass_spring);复制代码5、 由丁函数状态空间和根本状态空间的变量和数据不兼容,这就增加了在GUIDE 中调用Simulink模型的难度。在接下来的教程中,我们将讨论使用三种方法来解 决这个问题!GUIDE 调用 Simulink方法一:主要使用set_param函数设置仿真参数方法二:Simulink中提供的simset函数,可以让用户自定Simulink模型的运行空间默认 是Base Workspace,我们只要将Simulink设置为从当前工作空间运行就 Ok 了。 关丁 simset的更多用法,感兴趣的网友可以自己参考 Matlab帮助!1、在 GUIDE 中翻开 simulink_gui.fig文件不会使用 GUIDE ,那先看下 :/ matlabsky /thread-5217-1-1.html , GUI 布局如下所示2、翻开 simulink_gui.msimulate_pushbutton_Callbackaxes(handles.axes1) %文件定位到 Simulate!按钮的回调函数,在后面添加如下代码将axes1设置为当前坐标系,便丁绘制仿真结果5 m=str2num(get(handles.mass_editText,String); %获取质量6 c=str2num(get(handles.damping_editText,String); % 获取阻尼7 k=str2num(get(handles.spring_editText,String); % 获取劲度系数89 %配置Simulink仿真选项,使其使用当前工作空间10 %设置Simulink从当前工作空间运行I l options = simset(SrcWorkspace,current);1213 %使用sim()函数对模型进行仿真14 %第一参数是模型名称15 %第二个参数是向量,指定仿真开始和结束时间16 %如果设置为口,那么使用在Simulink中设置的始末时间17 %第三个参数设置Simulink仿真选项IS sim(mass_spring,options);1920 %绘制图形模型中有一个OUT模块,使用它我们可以设置输出变量为tout 和 yout21 %然后就可以直接调用Simulink的获取仿真结果tout和yout进行绘图了 plot(tout,yout)匚 3 xlabel(Time): ylabel(Displacement) Title(2nd Order Mass Spring System):grid on复制代码3、保存修改,再运行GUI。在文本框中输入 质量-弹簧-阻尼系统的三个参数(注 意不要输入字母、符号或负数),然后点击Simulate ! 按钮,看看我们的劳动成 果吧!Porsmctliri;Dw甲 ng Co8*1Srig Cgftd.irtPJVECL4-3rt5-dcl方法三:1、同样在 GUIDE中翻开未经有修改的 simulink_gui.fig 文件E* BK*.、DM 弟g到2、双击Simulate ! 按钮翻开届性查看器,将Callback届性 修改为 simulateButton 。以后每次点击 Simulate ! 按钮时,那么 GUI 只响应 simlateButton中定义的操作,而不是 simulate_pushbutton_Callback注意:simulateButton是另外编写的一个 M脚本文件,MATLAB中脚本文件(不 同丁函数文件)中的所有变量和数据共用根本状态空间。3、其实simulateButton.m 脚本的代码如下2? % 注意到simulateButton.m 文件不是一个M函数(以function开头的为M 函数),而是M脚本!2S % Matlab脚本将在根本工作空间运行,它涉及到所有的变量和数据都保存 在根本工作空间!29 %而Simulink所有参数默认调用根本工作空间的数据,所以此时我们就可以直接使用sim()函数进行模型仿真了!303】clear all3233 %获取当前GUI窗体的句柄3: h =gcf;35 %获取GUI的handles结构体,它包含了所有控件的信息3 handles = guidata(h);3738 %选择当前坐标系,由丁后面的绘图3“ axes(handles.axes1);4041 %获取文本框中的Simulink仿真参数42 m=str2num(get(handles.mass_editText,String); %注意获取的 string 是一个字符申,需要使用str2num将其转换为数值43 c=str2num(get(handles.damping_editText,String);44 k=str2num(get(handles.spring_editText,String);4546 %仿真系统47 sim(mass_spring);4S49 %绘制仿真结果图形H plot(tout,yout)、一 xlabel(Time)弋 ylabel(Displacement)、3 Tltle(2nd Order Mass Spring System)::.grid on复制代码其实方法二的一种变形就是,跨空间计算Simulink模型所需要的参数,比方evalin(base,m=5),就表示在根本工作空间运行 m=5这条命令。4、保存下对GUI的修改,验证下我们的成果吧!Fw laments LMassDwhping Costfof Cm时川Mibulink qij|i2nd Order Mrwe Spring System 1 5在Etc-lrB_rLs-_j图片附件:image001.gif (2021-3-25 22:42, 5.23 KB) / 下载次数 6 :/ matlabsky /forum.php?mod=attachment&aid=NDQ0NHwyYzg5 NTYyY3wxMzA0MDc3ODI0fDkwMDk5x(t)图片附件:image003.png (2021-3-25 22:42, 12.78 KB) / 下载次数 9 :/image28.360doc /DownloadImg/2021/04/2919/11332968_3图片附件:image005.png (2021-3-25 22:42, 15.32 KB) / 下载次数 5 :/image28.360doc /DownloadImg/2021/04/2919/11332968_4图片附件:image007.png (2021-3-25 22:42, 11.16 KB) / 下载次数 4 :/ matlabsky /forum.php?mod=attachment&aid=NDQ0N3wzZDlkN zA3NHwxMzA0MDc3ODI0fDkwMDk5图片附件:image013.png (2021-3-25 22:42, 12.05 KB) / 下载次数 2 :/image28.360doc /DownloadImg/2021/04/2919/11332968_5simulink_guiPeratnetersMass|20Damping Coeff.Spring Constant f,0Simulate!J nl 2d2nd Order Mass Spring System写E(DE-dsQ1 6_ ;!;附件:simulink-gui.zip (2021-3-25 22:44, 13.04 KB) / 下载次数 338 :/ matlabsky /forum.php?mod=attachment&aid=NDQ0OXw2ZDE0 NDQwNHwxMzA0MDc3ODI0fDkwMDk5图片附件:image005.png (2021-3-25 23:09, 15.32 KB) /下载次数 6 :/image28.360doc /DownloadImg/2021/04/2919/11332968_6图片附件:image013.png (2021-3-25 23:09, 12.05 KB) / 下载次数 4 :/image28.360doc /DownloadImg/2021/04/2919/11332968_75inmlink_guiPar&irietersDamping Coeff.Spring Constant | 1.0Simulate!2nd Order Mass Spring System-ucuEiuuE-ds-classignin(base,m,m);assignin(base,c,c);assignin(base,k,k);sim(massspring);也可以
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!