当前位置: 首页 > news >正文

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

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

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

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

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献


💥1 概述

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

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

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

1. 打开 MATLAB:
   启动 MATLAB 软件并等待其加载完毕。

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

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

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

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

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

7. 运行 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.

http://www.lryc.cn/news/108333.html

相关文章:

  • 使用协程让物体颜色慢慢消失
  • 服务器流量
  • 加拿大量子研究新动作!D-Wave与滑铁卢大学合作研究量子相干性
  • 网络安全进阶学习第十一课——MySQL手工注入(2)
  • 数据库和ORM如何优雅的添加字段?
  • QT ubuntu下开发视频播放 FFmpeg
  • 8.3一日总结
  • load、unload和pagehide、pageshow
  • 【面试问题12】
  • 高性能网络框架笔记
  • leetcode 738. 单调递增的数字
  • FPGA项目设计:数字时钟
  • 科技云报道:向量数据库:AI时代的下一个热点
  • 【更新】119所院校考研重点勾画更新预告!
  • 【Leetcode】(自食用)LRU算法(哈希链表法)
  • robots.txt 如何禁止蜘蛛(百度,360,搜狗,谷歌)搜索引擎获取页面内容
  • JVM 学习—— 类加载机制
  • C#实现int类型和字节流的相互在转化
  • Centos设置固定IP地址,外网访问
  • 非线性弹簧摆的仿真(Matlab代码实现)
  • css实现文字颜色渐变+阴影
  • C++学习笔记总结练习:关联容器
  • TypeScript技能总结(二)
  • 整理一些Postgresql工作中常用面试中会问的问题---Postgresql面试题001
  • Xposed回发android.os.NetworkOnMainThreadException修复
  • 【Leetcode】二叉树的最近公共祖先,二叉搜索树转换成排好序的双向链表,前序遍历与中序遍历构造二叉树
  • 途乐证券|互联金融概念爆发,安硕信息“20cm”涨停,高伟达等大涨
  • 计数排序算法
  • 企业高性能web服务器-nginx
  • GaussDB数据库的元数据及其管理简介