我的时钟Simulink / StateFlow错误

时间:2016-07-03 21:12:07

标签: matlab simulink stateflow

我使用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)。 / p>

enter image description here

我的时钟在哪里?什么不能正确地喂养我的FSM?

这是FSM:

enter image description here

正交子状态是:

enter image description here

详细信息:

enter image description here

在S1和S2之间

enter image description here

其中一个信号构建器具有时钟信号:

enter image description here

另一个有以下信号:

enter image description here

1 个答案:

答案 0 :(得分:2)

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

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

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

或者(根据您的其他要求),您可以使用变量步骤求解器。