我们想要在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