Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

使用 Stateflow 调度 Simulink 函数

此示例说明如何使用时序逻辑在 Stateflow® 图中调度 Simulink® 函数。一个 Simulink 函数就是一个 Simulink 子系统,您可以在 Stateflow 图中定义它以及在状态和转移的动作中调用它。有关详细信息,请参阅在 Stateflow 图中重用 Simulink 函数

打开并检查模型

在此示例中,Simulink 函数 algo 在每个时间步将输入递增 1。Stateflow 图包括以不同速率调用函数 algo 的两个状态。

时序逻辑运算符确定函数调用和状态之间转移的调度。基于事件的时序逻辑运算符 everyFastScheduler 设置为每两个时间步调用一次 Simulink 函数,将 SlowScheduler 设置为每五个时间步调用一次该相同函数。因此,FastSchedulerSlowScheduler 更频繁地执行该函数。

FastSchedulerSlowScheduler 的转移发生在 FastScheduler 被激活 1.5 秒后。在 SlowScheduler 被激活 3.5 秒后,发生返回到 FastScheduler 的转移。绝对时间时序逻辑运算符 after 控制状态之间转移的时序。

基于事件的时序逻辑运算符和绝对时间时序逻辑运算符的区别

您使用的时序逻辑运算符的类型取决于您是调度函数调用还是转移。

基于事件的时序逻辑运算符,如 every,取决于 Simulink 求解器使用的步长。自状态激活以来的函数调用次数也取决于求解器的步长。因此,在 Simulink 模型的图中,不支持使用 every 作为绝对时间时序逻辑运算符。

绝对时间时序逻辑运算符(如 after)依赖自状态激活以来经过的时间。在 Simulink 模型的图中,不支持使用 at 作为绝对时间时序逻辑运算符。

有关详细信息,请参阅使用时序逻辑控制图的执行

查看仿真结果

运行模型。Scope 模块通过不同斜率陡度来说明每个函数调用的速率。斜率越陡,表示 Simulink 函数调用越频繁。

另请参阅

| |

相关主题