前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实时获取simulink状态

实时获取simulink状态

作者头像
万木逢春
发布2020-02-11 16:31:29
2.5K0
发布2020-02-11 16:31:29
举报
文章被收录于专栏:帮你学MatLab

我们想要在GUI界面内展示simulink模型的运行状态,可以通过给模型中特定模块绑定监听事件,当模块发生特定事件后调用我们绑定的函数,在函数当中获取模型中的其他参数值

显示界面使用的是高版本MATLAB的App designer工具

这里主要是选择模型文件、设定运行需要的参数和开始运行模型文件,控件的回调函数写法与原先的GUI差别不大

获取参数值并且更新显示(也就是绑定在模块事件上)的函数:

function varargout = updateApp(varargin)

persistent app_plot

% 声明持久变量存放参数

rto1 = get_param('exampleModell/Out1','RuntimeObject');

str1 = num2str(rto1.InputPort(1).Data);

rto2 = get_param('exampleModell/Out2','RuntimeObject');

str2 = num2str(rto2.InputPort(1).Data);

% 获取界面中的绘图句柄

all_tag_objects = findall(0, '-property', 'tag');

all_tags = get(all_tag_objects, 'tag');

[tf, idx] = ismember('Out1', all_tags);

if tf

st1 = all_tag_objects(idx);

end

[tf, idx] = ismember('Out2', all_tags);

if tf

st2 = all_tag_objects(idx);

end

[tf, idx] = ismember('UIAxes', all_tags);

if tf

app_plot = all_tag_objects(idx);

end

XData = get_param('exampleModell','SimulationTime');

YData = rto1.InputPort(1).Data;

% 更新GUI显示

set(st2,'Value',str2double(str2));

set(st1,'Value',str2double(str1));

plot(app_plot,XData,YData,'.');

hold(app_plot, 'on' );

drawnow;

这里用的模型就是简单的示例

在模型的 StartFcn 回调函数中注册侦听程序、在slx模型文件右击

弹出菜单后选择model properties可以进入模型回调函数设置界面

很多时候我们需要在模型运行结束后绘图、就是在stopfcn里面调用写好的绘图m文件

我们这里在StartFcn 回调函数中给想要获取参数值的模块注册侦听程序、模块每次输出值得时候就会调用updateApp函数、运行起来就是这样的效果

示例文件下载链接:

https://pan.baidu.com/s/1MV3UnhJIFkV84CPOyiN9yg

提取码:

ezsq

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 帮你学MatLab 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档