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 统计模型中所有模块信息

原文地址:https://www.cnblogs.com/snoopingmind/p/14421934.html