Main Content

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

チャートでのステートの複数回再利用

次の例は、リンクされた Atomic サブチャートを使用して、Stateflow® チャートでステートと遷移の同じ構成を複数回繰り返す方法を示します。Atomic サブチャートは Simulink® モデル内の Stateflow チャートのみでサポートされます。詳細については、Atomic サブチャート使用した再利用可能なサブコンポーネントの作成を参照してください。

Atomic サブチャートがない元のモデル

次のモデルには Sine Wave (Simulink) ブロックが 2 つあり、一方は周波数が毎秒 1 ラジアンで、もう一方は周波数が毎秒 2 ラジアンです。

チャートの各ステートは飽和論理を使用して、入力正弦波を同じ周波数の出力矩形波に変換します。ステートは同じアクションを実行します。入力データと出力データの名前のみが異なります。

モデルのシミュレーションを行うと次の結果が得られます。

この例では Atomic サブチャートが使用されていないため、各サブコンポーネントを手動で維持する必要があります。たとえば、ステート A でロジックの変更を行った場合は、ステート B でも同じ変更を行わなければなりません。

一方で、この例のステートを Atomic サブチャートに置き換えると、モデル内で同じオブジェクトを再利用して同じシミュレーション結果を保持できます。ステート A を Atomic サブチャートとしてライブラリ モデルに保存し、そのサブチャートのリンクされたインスタンスをチャートで複数使用することができます。ライブラリ モデルでの変更は、サブチャートのリンクされたインスタンスすべてに伝播します。

Atomic サブチャートを使用するようにモデルを編集

手順 1: ステートの Atomic サブチャートへの変換

ステート A を右クリックして、[グループとサブチャート]、[Atomic サブチャート] を選択します。ステート A が Atomic サブチャートに変わり、左上隅に [Atomic] というラベルが表示されます。

手順 2: Atomic サブチャートでのライブラリの作成

  1. 新しいライブラリ モデルを作成します。

  2. Atomic サブチャートをコピーし、ライブラリ モデルに貼り付けます。

  3. ライブラリ モデルを保存します。

ライブラリ モデルでは、Atomic サブチャートが入力端子と出力端子をもつ独立したチャートとして表示されます。

手順 3: ステートのリンクされている Atomic サブチャートへの置換

  1. チャートで両方のステートを削除します。

  2. ライブラリの Atomic サブチャートをコピーし、チャートに 2 回貼り付けます。

  3. 2 番目の Atomic サブチャートの名前を B に変更します。

リンクされた各 Atomic サブチャートは不透明で、左上隅にラベル [Link] が付いています。

手順 4: 入出力変数のマッピングの編集

ここでモデルのシミュレーションを行うと、y2 の出力はゼロになります。未使用のデータについての警告も表示されます。Atomic サブチャート Bu2y2 の代わりに u1y1 を使用しているため、この警告が表示されます。

これらの警告に対処するには、入力変数と出力変数のマッピングを編集しなければなりません。

  1. サブチャート B を右クリックし、[サブチャートのマッピング] を選択します。

  2. [Input マッピング] で、u1 のメイン チャート シンボルが u2 になるように指定します。

  3. [Output マッピング] で、y1 のメイン チャート シンボルが y2 になるように指定します。

  4. [OK] をクリックします。

新しいモデルの実行

新しいモデルのシミュレーションを実行すると、結果が元の設計の結果と一致します。

ライブラリ チャートでの変更の伝播

ライブラリ チャートで、Pos から Neg への遷移を編集するとします。

この変更は、メイン チャートでリンクされているすべての Atomic サブチャートに伝播されます。各ステートを別々に更新する必要はありません。

参考

(Simulink)

関連するトピック