回调
在本演示中,我们将展示根据模型内部执行的条件从模型中调用函数的可能性。
模型本身是一个可记录的正弦曲线。 下图显示了可以在仿真过程中启用回调的操作方案。
本演示将包括一组测试,可以分为4组。:
- 基于模型开启条件的函数,
- 根据模型执行的条件函数,
- 基于保存模型条件的函数,
- 基于模型的闭包条件的函数。
要打开回调窗口,请打开"模型设置"->"编辑源代码"。
要触发下面描述的测试,您需要运行model_callback。engee。
第一个测试是在模型打开时触发回调。
In [ ]:
PreL = 0
PostL = 0
Init = 0
Start = 0
Pause = 0
Continue = 0
Stop = 0
PreS = 0
PostS = 0
Close = 0
Out[0]:
正如我们所看到的,两个变量在打开的那一刻被初始化。:
- 在打开模型之前,
- 打开模型后。
In [ ]:
print("PreLoad: " * string(PreL) * " / PostLoad: " * string(PostL) *
" / PreSave: " * string(PreS) * " / PostSave: " * string(PostS) *
" / Close: " * string(Close))
第二个测试是保存模型时的操作。

与之前的版本类似,保存前和保存后有两个带条件的功能。
In [ ]:
print("PreLoad: " * string(PreL) * " / PostLoad: " * string(PostL) *
" / PreSave: " * string(PreS) * " / PostSave: " * string(PostS) *
" / Close: " * string(Close))
第三个测试是模型的闭合。
从中我们可以看到,这个函数是在模型关闭时触发的。
In [ ]:
print("Close: " * string(Close))
最后一组回调是在仿真过程中基于操作发生的函数。 其中有5个,如下图所示。
现在让我们来看看这些函数被调用的情况。 正如您在打开模型之前的阶段所看到的,我们初始化了所有变量,然后根据条件进行更改。
- 初始化函数在模型的编译阶段之后调用。
- 启动功能在仿真的第一步执行。
- 暂停函数在仿真过程中暂停时调用。
- 在所有仿真步骤中执行的功能。
- 停止模拟过程的功能。
因此,如果我们运行模型并在仿真期间至少暂停该过程一次,那么将执行上述所有功能。 下图显示了在工作区中运行我们的测试后,所有变量都等于1。
结论
在这个演示中,我们已经展示了如何使用回调。 该工具旨在自动化建模过程,以及保存和分析仿真结果。 在回调的帮助下,我们可以完全摆脱与脚本的绑定,完全在模型中实现我们的整个项目,从声明参数的阶段开始,到分析结果的阶段结束。