使用事件侦听器和 MATLAB GUI 查看 Simulink 信号研究

💥💥💞💞欢迎来到本博客❤️❤️💥💥

****🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️**座右铭:**行百里者,半于九十。

目录

[💥1 概述](#💥1 概述)

[📚2 运行结果](#📚2 运行结果)

[🎉3 参考文献](#🎉3 参考文献)

[🌈4 Matlab代码、Simulink](#🌈4 Matlab代码、Simulink)


💥1 概述

该模型可以作为标准仿真执行,也可以在构建到通用实时目标后执行(适用于具有 RTW 许可证的用户)。在后一种情况下,RTW 的外部模式和 TCP/IP 用于将数据从正在运行的可执行文件传输到模型,然后再传输到 UI。

使用侦听器来查看信号而不是编写自定义 S 功能块的传统方法至少具有 2 个优点:首先,模型不会因必须添加任何特殊的查看块而"损坏"(如果模型也要与 RTW 一起使用,这尤其有利);其次,相同的UI可用于查看来自不同模型的信号。

要使用事件侦听器和 MATLAB GUI 查看 Simulink 信号,按照以下步骤进行操作:

  1. 打开 MATLAB:

启动 MATLAB 软件并等待其加载完毕。

  1. 打开 Simulink 模型:

在 MATLAB 命令窗口中输入 `simulink` 命令以打开 Simulink 应用程序。然后,选择或创建一个 Simulink 模型。

  1. 添加事件侦听器:

在 Simulink 模型中,右键点击您要监视的信号所连接的线条或块,然后选择 "Add Signal Logging" 或 "Add To Watch List" 选项。这将创建一个事件侦听器对象来获取该信号。

  1. 创建 MATLAB GUI:

在 MATLAB 命令窗口中输入 `guide` 命令以打开 MATLAB GUI 生成器。在该界面中,您可以创建用户界面来查看和分析 Simulink 信号。

  1. 设计 GUI 界面:

使用 MATLAB GUI 生成器的工具栏添加控件(如按钮、图表、文本框等),并将它们与 Simulink 模型中的信号、事件侦听器对象或其它功能函数关联起来。您可以根据需要自定义界面布局和外观。

  1. 编写回调函数:

为每个控件编写回调函数,以定义其交互行为。例如,可以编写一个回调函数以在按钮点击时更新信号数据或激活事件侦听器。

  1. 运行 GUI:

在 MATLAB GUI 生成器中点击 "运行" 按钮以启动用户界面。此时,您可以通过操作界面控件来查看 Simulink 信号、分析数据、显示图表等。

通过以上步骤,您可以使用事件侦听器和 MATLAB GUI 查看 Simulink 信号并进行相关的研究。根据具体的需求,您还可以进一步扩展和优化界面功能,以满足特定的分析要求。

📚 2 运行结果

部分代码:

% Create a panel for operations that can be performed

hop = uipanel('Parent',hf,...

'Units','normalized',...

'Position',[0.02 0.1 0.21 0.27],...

'Title','Operations',...

'BackgroundColor',get(hf,'Color'),...

'HandleVisibility','callback',...

'Tag','tunePanel');

strings = {'Build','Start','Stop'};

positions = [0.7 0.45 0.2];

tags = {'buildpb','startpb','stoppb'};

callbacks = {@localBuildPressed, @localStartPressed, @localStopPressed};

enabled ={'off','on','off'};

for idx = 1:length(strings)

uicontrol('Parent',hop,...

'Style','pushbutton',...

'Units','normalized',...

'Position',[0.15 positions(idx) 0.7 0.2],...

'BackgroundColor',get(hf,'Color'),...

'String',strings{idx},...

'Enable',enabled{idx},...

'Callback',callbacks{idx},...

'HandleVisibility','callback',...

'Tag',tags{idx});

end

% Create some application data storing the UI handles and various

% pieces of information about the model's original state.

% Can only do the following if a Simulink License is available

simulinkLicenceAvailable = license('test','Simulink');

if simulinkLicenceAvailable

try

% Load the simulink model

ad = localLoadModel(modelName);

% The gain value needs to be poked into the UI

set(hte,'String',ad.gainValue);

% Put an empty line on the axes for each signal that will be

% monitored

% Save the line handles, which will be useful to have in an

% array during the graphics updating routine.

nlines = length(ad.viewing);

hl = nan(1,nlines);

colourOrder = get(ha,'ColorOrder');

for idx = 1:nlines

hl(idx) = line('Parent',ha,...

'XData',[],...

'YData',[],...

'Color',colourOrder(mod(idx-1,size(colourOrder,1))+1,:),...

'EraseMode','xor',...

'Tag',sprintf('signalLine%d',idx));

end

ad.lineHandles = hl;

catch ME %#ok

simulinkLicenceAvailable = false;

end

end

if ~simulinkLicenceAvailable

% If no Simulink license available then disable all UI controls

% Not all uicomponents (e.g. figure, axes,...) have an Enable

% property so do this in a loop. The loop catches those widgets

% without an Enable property and does nothing for them.

allHandles = findall(hf);

arrayfun(@(h)set(h,'Enable','off'),allHandles,...

'ErrorHandler',@(obj,evt)disp(''));

% For the UI to be closed there needs to be a modelName field in

% appdata so just create a dummy one

ad.modelName = modelName;

% Also pop-up a dialog telling the user what's happening

str = sprintf('%s\n%s\n%s\n%s',...

'A Simulink license isn''t available, or cannot be',...

'checked out. The UI is being rendered however all ',...

'functionality is being disabled. Check for an available',...

'license then try again.');

hedlg = errordlg(str,'Simulink License Error','modal');

uiwait(hedlg);

end

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

1\]王嵩. GSM侦听器的设计与实现\[D\].北京邮电大学,2010. \[2\]宛世源,宋宝,唐小琦.基于FPGA的工业现场总线侦听器的设计与实现\[J\].组合机床与自动化加工技术,2014(01):93-95.DOI:10.13462/j.cnki.mmtamt.2014.01.026. ## [🌈](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzk0MDMzNzYwOA==&action=getalbum&album_id=2591810113208958977#wechat_redirect "🌈")****4 Matlab代码、Simulink****

相关推荐
guiyanakaung6 小时前
一篇文章让你学会 Compose Multiplatform 推荐的桌面应用打包工具 Conveyor
android·windows·macos
粟悟饭&龟波功8 小时前
Java—— ArrayList 和 LinkedList 详解
java·开发语言
冷雨夜中漫步8 小时前
Java中如何使用lambda表达式分类groupby
java·开发语言·windows·llama
a4576368768 小时前
Objective-c Block 面试题
开发语言·macos·objective-c
Cai junhao8 小时前
【Qt】Qt控件
开发语言·c++·笔记·qt
uyeonashi8 小时前
【QT系统相关】QT网络
开发语言·网络·c++·qt
程序猿小D9 小时前
第27节 Node.js Buffer
linux·开发语言·vscode·node.js·c#·编辑器·vim
曼岛_9 小时前
[架构之美]解决Windows 10主机与Windows 10虚拟机之间无法拖拽复制问题
windows·架构
武昌库里写JAVA9 小时前
【微服务】134:SpringCloud
java·开发语言·spring boot·学习·课程设计
yaoxin52112310 小时前
105. Java 继承 - 静态方法的隐藏
java·开发语言·jvm