7进阶、Simulink回调函数
为什么使用回调函数?为了使用户在数据初始化、模块拖拽、仿真结果绘图操作等过程中更加便利,表现力更加丰富,使模型和模块的动作,甚至跟模块端口相连
的信号的动作都能够由用户自定义,用户可以建立使用便利、具有个性化的模型执行过程。
7.1 什么是回调函数
Callback functions 是因某种操作而触发对其调用的函数,如按下按钮或双击操作等。
对于模型来说,回调函数在Simulink有举足轻重作用。当执行一系列动作,如选中某个模块或仿真开始时,回调函数便被触发执行。使用回调功能可用来执行一个MATLAB脚本或调用MATLAB函数。Simulink中回调函数的触发可通过模块、端口或模块的参数设置来实现。
Simulink回调函数应用场合:
- 打开Simulink模型时自动加载变量到工作空间;
- 双击模块时执行MATLAB脚本;
- 仿真开始前进行模型参数初始化;
- 仿真结束后将仿真出来的数据绘制图像;
- 关闭模型时清除相关变量或关闭图像。
7.2 回调跟踪
作用:可以清楚显示Simulink如何调用回到函数以及以何种顺序调用他们。
使能回调跟踪:在Preferences对话框中选择Callback tracing选项,或 在Command Window中执行set_param(0, 'Callback Tracing', 'on')
7.3 模型回调函数
创建模型回调函数:方法1,模型菜单中,File--Model Properties--Model Properties
左侧是回调函数的名字,表征被调用时刻,从上到下按时间先后排序。点击任意一个函数,在右侧框内编写函数内容。
在Command Window或M脚本文件中通过M代码设置模型回调函数。即通过set_param设置回调函数。
set_param指定一个MATLAB表达式,这个表达式表示回调函数的内容。
举例说明set_param设置回调函数的方法:
7.4 模块回调函数
右键模块--properties打开Callbacks列表和回调函数内容编辑框。在右侧填入回调函数的代码内容。
或者使用set_param指定MATLAB表达式作为某个回调函数的内容。如设定某个模块被删除时,显示This block is being deleted
在命令行中输入代码并回车执行: set_param(gcbh, 'DeleteFcn', 'msgbox("This block is being deleted!"); ' );
7.5 端口回调函数
7.6 参数回调函数的使用
7.7 回调函数使用例程
7.7.1 打开模型时自动加载变量
例如,现有一个模型包含增益模块Gain且增益为K,Simulink就会在Base Workspace中搜寻变量K,使用以下方法,可以在每次打开模型时自动定义K,可以在单独M脚本中定义变量K,然后使用PreLoadFcn回调函数来执行此脚本。
7.7.2 双击模块执行MATLAB脚本
7.7.3 开始仿真前执行命令
7.7.4 提示模块端口的连线情况
7.7.5 统计模型中所有模块信息
posted on 2021-02-20 16:31 Earth-Tech 阅读(715) 评论(0) 编辑 收藏 举报