主要内容

模型的回调

模型回调在指定的操作点执行,例如在您加载或保存模型之后。

你可以为库设置大部分相同的回调。只有可以为库执行的回调可用于为库设置。例如,不能设置InitFcn函数库的回调函数,它作为模拟的一部分调用,因为您不能模拟函数库。

创建模型回调

  1. 在Simuli金宝appnk中®工具条上的建模选项卡,在设计画廊,点击属性检查器

  2. 在模型或引用模型的顶层没有选择的情况下,在属性选项卡,在回调部分,选择要设置的回调。

    请注意

    块回调不同于模型回调。不要选择模型块来设置引用模型的模型回调。

  3. 在框中,输入希望回调执行的函数。

要以编程方式创建模型回调,请使用set_paramMATLAB函数赋值®编码到模型回调参数。

模型回调参数

模型回调参数 执行时

PreLoadFcn

在加载模型之前。

不使用模型参数PreLoadFcn模型回调,因为参数是在模型加载后加载的。相反,使用PostLoadFcn回调函数,在模型加载时使用模型参数。

为这个参数定义回调代码对于加载模型使用的变量很有用。

如果希望在不打开模型的情况下从MATLAB文件调用模型,请使用load_system函数,使PreLoadFcn执行。

有关示例,请参见:

限制包括:

  • PreLoadFcn回调,get_param不返回模型参数值,因为模型尚未加载。相反,get_param返回:

    • 标准模型参数的默认值,例如解算器

    • 属性添加的模型参数的错误消息add_param

  • 不支持对作用域的编程访问。金宝app

PostLoadFcn

在加载模型之后。

为这个参数定义回调代码对于生成需要加载模型的接口可能很有用。

限制包括:

  • 如果你做结构上的改变PostLoadFcn,函数不设置模型标记,以指示未保存的更改。当您关闭模型时,Simulink不会提示您保存。金宝app

  • 不支持对作用域的编程访问。金宝app

因为在此回调执行后将打开金宝appSimulink编辑器,所以PostLoadFcn回调不适合设置模型视图,例如设置缩放因子。保存模型的缩放信息,以使用特定的缩放因子打开模型。

InitFcn

在评估块参数之前的更新阶段。在模型更新和模拟期间调用此回调。

避免模型InitFcn编辑模型结构的回调。金宝appSimulink可以根据模型加载状态执行或忽略这些回调。

有关的更多信息InitFcn回调,看初始化函数

有关示例,请参见:

StartFcn

在模拟阶段之前。在模型更新期间不会调用此回调。

PauseFcn

模拟暂停后。

ContinueFcn

在继续模拟之前。

StopFcn

模拟停止后。

操作之前,将输出写入工作区变量和文件StopFcn是执行。

中的模拟输出不可用StopFcn命令行模拟的回调。

PreSaveFcn

在保存模型之前。

PostSaveFcn

保存模型后。

如果你做结构上的改变PostSaveFcn,函数不设置模型标记,以指示未保存的更改。当您关闭模型时,Simulink不会提示您保存。金宝app

CloseFcn

在框图关闭之前。

任何ModelCloseFcn而且DeleteFcn在模型中的块上设置的回调在模型之前被调用CloseFcn回调。的DestroyFcn模型中任何块的回调都在模型之后调用CloseFcn回调。

引用模型回调

在模型层次结构中,回调的执行反映了顶级模型及其引用的模型执行回调的顺序。例如,假设:

  • 模式一:

    • 参考模型B在加速器模式。

    • 有一个PostLoadFcn在MATLAB工作区中创建变量的回调函数。

    • 重建配置参数设置为总是如果检测到更改,或如果检测到任何已知依赖项的变化

  • 模型2:

    • 有一个CloseFcn清除MATLAB工作区的回调函数。

    • 尚未建成或已经过时。

模拟模型A会触发引用模型B的重新构建。当Simulink重新构建模型B时,它会打开和关闭模型B,从而调用模型B金宝appCloseFcn回调。CloseFcn清除MATLAB工作区,包括由模型A创建的变量OpenFcn回调。

而不是使用CloseFcn回调模型B,您可以使用aStopFcn在模型A中的回调,以清除模型从MATLAB工作区中使用的变量。或者,您可以为数据使用数据字典,以避免在基本工作空间中使用变量。

的仿真模式模型块影响所引用模型的模型回调何时执行。

模型块的仿真模式 行为
正常的

在模型编译期间,Simulink加载每个被配置为在正金宝app常模式下进行模拟且尚未加载的参考模型。

在大多数情况下,Simulin金宝appk只编译一次每个标准模式引用模型,而不考虑模型的数量模型块引用它。

InitFcnStartFcnPauseFcnContinueFcn,StopFcn模型回调对由模型编译器创建的模型的每个可执行形式执行。

在模型编译之后,引用的模型仍然被加载。

加速器

在模型编译期间,Simulink可以打开和关闭配置为金宝app以加速模式进行模拟的参考模型重建设置和模拟目标。在模型编译之前开放的模型仍然是开放的。

金宝appSimulink不执行某些回调。

  • 如果一切都是最新的重建配置参数设置为如果检测到任何已知依赖项的变化,则引用的模型不编译,其InitFcn回调不执行。

  • 回调函数如StartFcn而且StopFcn不执行,因为在加速模式下引用模型使用s函数,该函数启动和停止,而不是引用模型。

有关模型参考仿真模式的更多信息,请参见为模型层次选择仿真模式

相关的话题