Stateflow ダイアグラムのアクティブな State をどのように判定しますか?

Stateflow を使って作成した state マシンの、現在のアクティブな状態 (state) を取得したいです。 Stateflow チャートのシミュレーション中には、アクティブな state はハイライトされますが、コマンドベースで現在のアクティブ state を判断することを行いたいです。

 Risposta accettata

MathWorks Support Team
MathWorks Support Team il 8 Gen 2013

0 voti

Stateflow には、現在のアクティブな state をシミュレーション中に取得する機能はありません。
代替案としてシミュレーション後であれば以下の手順で取得、判断することができます。
1. Simulink モデル上の Stateflow チャートブロックをマウスにて右クリックします。
2. コンテキストメニューより
(R2012a 以前) チャート信号のログ
(R2012b 以降) 信号と端子 -> チャート信号のログ
を選択します。
3. ログを取りたい全ての state 、パラメータ、ローカル変数を選択します。
4. シミュレーションの終了後、 Simulink.ModelDataLog オブジェクトが logsout として MATALB のワークスペースに生成されます。
5. それぞれの state のデータにアクセスするためには、 MATLAB コマンドウィンドウ上で次のように実行します。
logsout.Chart.<name-of-state>.Time % 時間ベクトル
logsout.Chart.<name-of-state>.Data % "stateの上記の要素の時刻に対応した Active/Inactive を 1,0 で示す
※ ここで <name-of-state> は state の名前
また、全ての state 、パラメータをリストするには次のようにタイプインします。
logsout.Chart

Più risposte (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!