天天看點

Stateflow調試器

作者:雲龍派

Stateflow調試器是非常重要的Stateflow圖形工具之一。

如果需要啟動調試器,則需要單擊Stateflow圖形編輯器工具欄上的調試器(Debug)按鈕,彈出的Stateflow調試器菜單欄如下圖所示:

Stateflow調試器

在右邊的控制仿真運作的菜單上,有用來完全進行仿真調試運作狀态(Run)、單步執行(Step Forward)、單步退回(step Back)、以及停止仿真等功能按鈕。

1.設定斷點

在進行調試之前要設定相應的斷點,除了全局斷點(全局斷點可以在調試的過程中設定或者取消),還可以針對狀态、轉移、事件以及函數等對象設定斷點。

對象的斷點設定可以選擇要添加斷點的對象,點選add breakpoint即可添加相應的斷點,其中事件的斷點可以在模型檢視器中添加。

狀态的斷點有三種,分别為:

State During:在執行狀态的During動作之前進入調試模式
State Entry:在執行狀态的Entry動作之前進入調試模式。
State Exit:在執行狀态的Exit動作之前進入調試模式。           

斷點的設定可以選擇狀态,點選滑鼠右鍵選擇set breakpoint,就是在狀态的左下角出現一個小紅點,點選小紅點可以選擇狀态斷點的類型。同樣選擇狀态,滑鼠點選右鍵選擇clear breakpoint即可清除斷點。

Stateflow調試器
Stateflow調試器
Stateflow調試器

對狀态設定斷點也可以利用上方的Debug菜單快捷按鈕,選中要添加斷點的狀态,點選Add Breakpoint,即可為狀态添加斷點。同時也可以點選清除斷點的按鈕。

Stateflow調試器

轉移的斷點有兩種,分别為:

When Tested:在轉移被檢測之前進入調試模式。
When Valid:轉移經過檢測是有效的,在執行前進入調試模式。           

與狀态添加斷點類似,轉移添加斷點也可以通過選擇相應的轉移,點選右鍵即可,也可以通過菜單欄的方式添加斷點。

Stateflow調試器

事件的斷點有兩種,分别為:

Start of Broadcast:在事件被廣播之前進入調試模式。
End of Broadcast:在事件廣播結束後進入調試模式。           

事件的斷點設定可以在其屬性對話框中完成或者在模型檢視器中完成。

Stateflow調試器

圖形函數的斷點隻有一個:

Function Call:在函數被調用之前進入調試模式。           

可以選擇圖形函數,點選滑鼠右鍵,選擇set Breakpoint During Function Call。

Stateflow調試器

真值表的斷點設定方法和圖形函數類似。

2.調試過程

在下圖所示的Stateflow模型中包含了圖形函數factorial,這個函數得到功能是求階乘。

Stateflow調試器
Stateflow調試器

模型仿真運作時,會報錯,圖形函數中的本地資料對象n和result的類型不能inherit繼承的類型,可以改成double。

Stateflow調試器
Stateflow調試器
Stateflow調試器

修改完成後,模型能夠運作,結果如下:

Stateflow調試器

我們對模型的狀态A添加狀态斷點,運作模型後,當事件E第一次發生并且激活狀态圖時進入調試模型,此時的模型如下圖所示:

Stateflow調試器

選中狀态,點選上方的Add to Watch ,可以将資料對象添加到可視視窗。

Stateflow調試器

點選上方的Breakpoint list即可檢視所有的斷點和資料對象設定為可視的值。

Stateflow調試器
Stateflow調試器

錯誤檢測的選項:

Stateflow調試器

參考内容

[1] 張威.Stateflow邏輯系統模組化[M].西安:西安電子科技大學出版社,2007.

本文内容來源于網絡,僅供參考學習,如内容、圖檔有任何版權問題,請聯系處理,24小時内删除。

作 者 | 郭志龍

編 輯 | 郭志龍

校 對 | 郭志龍