1

我使用 StateFlow 在 Simulink 中创建了这个状态机图表:

有两种状态 (S1,S2),其中一种 (S1) 有 3 个嵌套的并行 FSM,每个有 4 个状态 (SS1, SS2, SS2, SS4) ,我在所有 3 个 FSM (SS1) 中都设置了一个默认状态),以及主要的两种状态(默认 S2)。

为了测试主 FSM (S1,S2) ,我对所有输入/事件使用了信号生成器。其中一个输入是方波,它是我的主 FSM (1 Hz) 的时钟事件,模拟持续时间为 50 秒。

我遇到的问题是我可以在信号生成器中看到我有一个方波,但是当我把范围放在那个时钟上时,我看到一个方波(从 0 到 49.5 秒然后下降到 0)。

在此处输入图像描述

我的时钟呢?什么不能正确喂养我的 FSM?

这是 FSM:

在此处输入图像描述

正交子状态是:

在此处输入图像描述

详细说明:

在此处输入图像描述

在 S1 和 S2 之间

在此处输入图像描述

具有时钟信号的信号生成器之一是:

在此处输入图像描述

另一个有以下信号:

在此处输入图像描述

4

1 回答 1

2

问题是您使用 ode3 的默认步长。当使用固定步长求解器时,auto步长计算为(StopTime-StartTime)/50。在您的情况下,这给出了 1 的步长。

由于 t = 0,1,2,3,...49 的Clock值为 2,这就是您在范围内看到的内容。在 t =50 时,Clock值为 0,这就是您在范围内看到的内容。

您需要转到下拉菜单的Solver PanelSimulaton->Model Configuration Parameters然后打开Additional Options选项并将步长更改为更小的值,例如 0.01。

或者(取决于您的其他要求)您可以使用可变步长求解器。

于 2016-07-04T02:20:22.703 回答