2016-07-03 51 views
1

我使用狀態流創建此狀態機圖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的方波 –

回答

2

問題是,您正在使用默認的步長和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。

或者(根據您的其他要求),您可以使用可變步驟解算器。