Simulink ベースのステートの作成と編集
周期的ダイナミクスと連続時間ダイナミクスを切り替えるシステムをモデル化するには、Simulink® ベースのステートを使用します。Simulink ベースのステートは、MATLAB® 内のスタンドアロンの Stateflow® チャートではサポートされません。詳細については、ステートとしての Simulink サブシステムを参照してください。
Simulink ベースのステートは、オブジェクト パレットを使用して作成できます。別の Simulink モデルからのシステムを再利用するには、Enabled Subsystem をコピーして貼り付けます。サブシステムを複数の Stateflow チャートで再利用するには、ライブラリに保存されている Action Subsystem をコピーして貼り付けます。
Simulink ベースのステートの作成
Simulink ベースのステートを作成するには、次のいずれかを行います。
Simulink ベースのステート パレット アイコンを使用して、空の Simulink ベースのステートを作成する。
Enabled Subsystem または Action Subsystem を Stateflow チャートにコピーすることにより、別のモデルから Simulink ベースのステートを作成する。
ライブラリから Action Subsystem を Stateflow チャートにコピーすることにより、リンクされた Simulink ベースのステートを作成する。
空の Simulink ベースのステートの作成
オブジェクト パレットで、Simulink ステート アイコン
をクリックします。
チャート キャンバスで、新しい Simulink ベースのステートの位置をクリックします。
ステートの名前を入力します。この例では、このステートで平坦な地面を走る棒高跳び選手をモデル化するため、ステート ラベルは
Run_up
です。Simulink ベースのステートは Action Subsystem であるため、新しいステートに Action Port が表示されます。Simulink サブシステムを作成します。このサブシステムは棒高跳び選手の直交座標を出力します。このモデルの詳細については、ブロックの状態データへのアクセスを参照してください。
Enabled Subsystem からの Simulink ベースのステートの作成
Simulink ベースのステートを Stateflow チャートに作成するには、別の Simulink モデルから Enabled Subsystem をコピーします。新しい Simulink ベースのステートを作成しなくても、Simulink モデルからのコンポーネントを Stateflow チャートで再利用できます。
1. モデル sf_clutch_enabled_subsystems
を開きます。
2.モデルから、Slipping
ブロックを Stateflow チャートにコピーします。
3. Simulink サブシステムの入力端子と出力端子が、未定義シンボルとして Stateflow チャートに表示されます。対応する入力データと出力データを Stateflow チャートに追加するには、[シンボル] ペインを開き、[未定義のシンボルを解決] ボタンをクリックします。詳細については、[シンボル] ペインを使用したシンボルの解決を参照してください。
リンクされた Simulink ベースのステートの作成
リンクされた Simulink ベースのステートを Stateflow チャートに作成するには、ライブラリから Action Subsystem を Stateflow にコピーします。ライブラリ ブロックが更新されると、そのブロックを含むすべての Stateflow チャートに変更内容が反映されます。
ライブラリ モデル
sf_pole_vault_lib
を開きます。openExample("stateflow/PoleVaulterExample", ... supportingFile="sf_pole_vault_lib")
ライブラリ ブロック
Run_up
をコピーして Stateflow チャートに貼り付けます。リンクされているサブシステムの左下隅にリンクを表示するには、[デバッグ] タブで [情報のオーバーレイ]、[すべてのリンクを表示] を選択します。
この Simulink サブシステムの出力端子
xy
は、未定義シンボルとして Stateflow チャートに表示されます。対応する出力データを Stateflow チャートに追加するには、[未定義のシンボルを解決] ボタンをクリックします。
入力端子と出力端子の作成
Simulink ベースのステートを使用する場合、Simulink サブシステムの入力端子と出力端子は Stateflow チャート レベルの入力データと出力データに接続されます。この接続により、最上位レベルの Simulink モデルは、Simulink ベースのステートに含まれるサブシステムからデータを読み取ることができるようになります。
空の Simulink ベースのステートを作成すると、Stateflow は、親の Stateflow チャート内に存在する入力と出力に対応する入力と出力を Simulink サブシステム内に作成します。しかし、Simulink ベースのステートを作成した後に、これに入力端子と出力端子を追加する場合は、対応する入力データと出力データを Stateflow チャート内に作成しなければなりません。
Simulink ベースのステートに追加の入力端子と出力端子を作成するには、次を行います。
Simulink ベースのステートを開きます。
Simulink キャンバスをクリックし、
in1
と入力して Enter キーを押します。未定義の入力端子が作成されます。未定義シンボル
in1
が、Stateflow チャートの [シンボル] ペインに表示されます。未定義シンボルを解決するには、[未定義のシンボルを解決] ボタンをクリックします。
In1
という名前のチャート入力端子が作成されます。
追加の出力端子の作成
次の例では、モデル sf_pole_vault
に追加の出力端子を作成します。
モデル
sf_pole_vault
を開きます。openExample("stateflow/PoleVaulterExample")
チャート
PoleVaulter
を開き、Simulink ベースのステートTake_off
をクリックします。Simulink ベースのステートのキャンバスをクリックし、
out1
と入力して Enter キーを押します。未定義の出力端子が作成されます。出力端子の名前をtheta_out
に変更し、theta の信号に接続します。PoleVaulter
の [シンボル] ペインにtheta_out
の未定義シンボルが表示されます。未定義シンボルを解決するには、[未定義のシンボルを解決] ボタンをクリックします。
Stateflow は、
theta_out
というチャート内に出力端子theta_out
に対応する出力を作成します。
データの編集の詳細については、データ、イベント、メッセージの追加および変更を参照してください。