的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)。
哪里是我的时钟?什么不是正确喂养我的FSM?
这里是FSM:
正交子状态是:
详细:
,在S1和S2
其中一个信号生成器,其具有时钟信号之间的是:
另一个具有下列信号:
答
问题是,您正在使用默认的步长和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。
或者(根据您的其他要求),您可以使用可变步骤解算器。
你在使用什么解算器,以及正在使用什么步长?另外,为什么你定义你的时钟是从0-> 2,然后将其转换为布尔值(本质上是0-> 1)? –
求解器是ode3。关于时钟,我想你必须使用转换器,因为它们是布尔值,因为我定义了三个事件时钟和另外两个“上升沿”输入。我不知道他们是否必须是布尔值。 0-2这是由simulink创建的东西,我不知道为什么要么......我把振幅1 50Hz的方波 –