我使用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>
我的时钟在哪里?什么不能正确地喂养我的FSM?
这是FSM:
正交子状态是:
详细信息:
在S1和S2之间
其中一个信号构建器具有时钟信号:
另一个有以下信号:
答案 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。
或者(根据您的其他要求),您可以使用变量步骤求解器。