的Simulink/Stateflow的错误与我的时钟

问题描述:

我使用状态流创建此状态机图Simulink中:的Simulink/Stateflow的错误与我的时钟

有两个状态(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)。

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

+0

你在使用什么解算器,以及正在使用什么步长?另外,为什么你定义你的时钟是从0-> 2,然后将其转换为布尔值(本质上是0-> 1)? –

+0

求解器是ode3。关于时钟,我想你必须使用转换器,因为它们是布尔值,因为我定义了三个事件时钟和另外两个“上升沿”输入。我不知道他们是否必须是布尔值。 0-2这是由simulink创建的东西,我不知道为什么要么......我把振幅1 50Hz的方波 –

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

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

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

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