Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

Simulink ベースのステートの作成と編集

周期的ダイナミクスと連続時間ダイナミクスを切り替えるシステムをモデル化するには、Simulink® ベースのステートを使用します。Simulink ベースのステートは、Simulink モデルの Stateflow® チャートでのみサポートされます。詳細については、ステートとしての Simulink サブシステムを参照してください。

Simulink ベースのステートは描画ツールを使用して作成できます。別の Simulink モデルからのシステムを再利用するには、Enabled Subsystem をコピーして貼り付けます。サブシステムを複数の Stateflow チャートで再利用するには、ライブラリに保存されている Action Subsystem をコピーして貼り付けます。

Simulink ベースのステートの作成

Simulink ベースのステートを作成するには、次のいずれかを行います。

  • Simulink ベースのステートの描画ツールを使用して、空の Simulink ベースのステートを作成する。

  • Enabled Subsystem または Action Subsystem を Stateflow チャートにコピーすることにより、別のモデルから Simulink ベースのステートを作成する。

  • ライブラリから Action Subsystem を Stateflow チャートにコピーすることにより、リンクされた Simulink ベースのステートを作成する。

空の Simulink ベースのステートの作成

  1. Stateflow チャート ブロックを Simulink モデルに追加します。Stateflow エディターを開くには、ブロックをダブルクリックします。

  2. オブジェクト パレットで、Simulink ベースのステートの描画ツール をクリックします。チャート上にカーソルを移動します。

  3. 新しい Simulink ベースのステートを配置するには、Stateflow キャンバスをクリックします。影付きのステートが表示されます。

  4. ステート ラベルを入力します。この例では、このステートで平坦な地面を走る棒高跳び選手をモデル化するため、ステート ラベルは Run_up です。Simulink ベースのステートは Action Subsystem であるため、新しいステートに Action Port が表示されます。

  5. 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 チャートに変更内容が反映されます。

  1. ライブラリ モデルを開きます。

  2. ライブラリ ブロック Run_up をコピーして Stateflow チャートに貼り付けます。

  3. リンクされているサブシステムの左下隅にリンクを表示するには、[デバッグ] タブで [情報のオーバーレイ][すべてのリンクを表示] を選択します。

  4. この Simulink サブシステムの出力端子 xy は、未定義シンボルとして Stateflow チャートに表示されます。対応する出力データを Stateflow チャートに追加するには、[未定義のシンボルを解決] ボタン をクリックします。

入力端子と出力端子の作成

Simulink ベースのステートを使用する場合、Simulink サブシステムの入力端子と出力端子は Stateflow チャート レベルの入力データと出力データに接続されます。この接続により、最上位レベルの Simulink モデルは、Simulink ベースのステートに含まれるサブシステムからデータを読み取ることができるようになります。

空の Simulink ベースのステートを作成すると、Stateflow は、親の Stateflow チャート内に存在する入力と出力に対応する入力と出力を Simulink サブシステム内に作成します。しかし、Simulink ベースのステートを作成した後に、これに入力端子と出力端子を追加する場合は、対応する入力データと出力データを Stateflow チャート内に作成しなければなりません。

Simulink ベースのステートに追加の入力端子と出力端子を作成するには、次を行います。

  1. Simulink ベースのステートを開きます。

  2. Simulink キャンバスをクリックし、in1 と入力して Enter キーを押します。未定義の入力端子が作成されます。

  3. 未定義シンボル in1 が、Stateflow チャートの [シンボル] ペインに表示されます。未定義シンボルを解決するには、[未定義のシンボルを解決] ボタン をクリックします。

  4. In1 という名前のチャート入力端子が作成されます。

追加の出力端子の作成

次の例では、モデル sf_pole_vault に追加の出力端子を作成します。

  1. モデルを開きます。

  2. チャート PoleVaulter を開き、Simulink ベースのステート Take_off をクリックします。

  3. Simulink ベースのステートのキャンバスをクリックし、out1 と入力して Enter キーを押します。未定義の出力端子が作成されます。出力端子の名前を theta_out に変更し、theta の信号に接続します。

  4. PoleVaulter の [シンボル] ペインに theta_out の未定義シンボルが表示されます。未定義シンボルを解決するには、[未定義のシンボルを解決] ボタン をクリックします。

  5. Stateflow は、theta_out というチャート内に出力端子 theta_out に対応する出力を作成します。

データの編集の詳細については、データ、イベント、メッセージの追加および変更を参照してください。

関連するトピック