文章目錄
前言
State斷點
Transition斷點
條件斷點
按State步進
Watch Data Value
Sequence Viewer
分析和應用
總結
前言
????????見《【研發日記】Matlab/Simulink技能解鎖(一)——在Simulink編輯窗口Debug》
????????見《【研發日記】Matlab/Simulink技能解鎖(二)——在Function編輯窗口Debug》
State斷點
????????當Stateflow出現異常時,如果能確定大致的State位置,就可以在相應的State上設置一個斷點(Breakpoint),軟件仿真運行到該斷點時就會停下來,然后就方便分析問題了,示例如下:
Transition斷點
????????有些情況下,還需要在狀態轉換連線上設置斷點,使軟件仿真運行時在轉換線上暫停,示例如下:
條件斷點
????????有些情況下,軟件異常只與某個Data的值相關,如果還按照位置和時間設置斷點就不行了。這時候還可以用Data閾值來設置條件斷點,軟件仿真運行過程中一旦該Data滿足閾值條件,就會觸發暫停,示例如下:
按State步進
????????有些軟件問題往往不能在一個狀態內就分析出來,需要對比多個相鄰周期運行的結果,這時候就可以使用State步進功能,讓軟件仿真每次只運行一個State就暫停下來,示例如下:
Watch Data Value
????????上述幾種方法使仿真運行暫停下來時,用鼠標點擊信號線就會出現一個黃色標簽,顯示信號的當前值,示例如下:
Sequence Viewer
????????上述幾種方法都是讓Stateflow暫停在某一個State,或步進的方式逐個查看State里邊的Data。但是當Stateflow的邏輯比較復雜,State的轉換關系成為關注的重點時,這時候使用Sequence Viewer模塊可以方便地查看State的轉換路徑,看清各個時刻是什么State,從哪個State轉換過來,去向哪個State,停留了多長時間等等。示例如下:
分析和應用
????????Stateflow的Debug在Simulink模型仿真調試方面的應用非常頻繁,尤其是應用于復雜的狀態機開發時作用非常明顯,例如一些上下電休眠喚醒策略、網絡管理策略、熱管理策略、故障處理策略等等。項目中把這些Debug功能用起來后,能夠有利于軟件異常問題的分析和定位,大大提高Bug查找速度,有效減少開發人員在人腦邏輯分析上面投入的精力和時間。
??????? 這些Debug方法主要適用于軟件開發工程中,早期模型搭建和原型機調試驗證時Bug較多的階段。當軟件開發進入后期升級迭代階段時,也可用于新功能或子模塊的分析驗證。不適用于在裝車階段出現問題的分析排查。
總結
????????以上就是本人在Debug Stateflow時,一些個人理解和分析的總結,首先介紹了它的幾種基本用法,然后展示它的使用示例,最后分析了該模塊的特點和適用場景。
????????后續還會分享另外幾個最近解鎖的Matlab/Simulink新技能,歡迎評論區留言、點贊、收藏和關注,這些鼓勵和支持都將成文本人持續分享的動力。
????????另外,上述例程使用的Demo工程,可以到筆者的主頁查找和下載。
????????版權聲明,原創文章,轉載和引用請注明出處和鏈接,侵權必究!