Main Content

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

パラレル化を使用した同期サブシステムのモデル化

同時実行される動作モードを実装するには、Stateflow® チャートで "パラレル化" を使用します。たとえば、複雑なシステム設計の一部としてパラレル ステートを使用して、同時にアクティブになる独立した複数のコンポーネントやサブシステムをモデル化することができます。詳細については、有限ステート マシンのモデル化を参照してください。

ステート構造

Stateflow チャートでは、排他的 (OR) ステートとパラレル (AND) ステートを組み合わせることができます。

  • 排他的 (OR) ステートは相互に排他的な動作モードを表します。同じ階層レベルで 2 つの排他的ステートをアクティブにしたり、同時に実行することはできません。Stateflow では、各排他的ステートが実線の四角形で表されます。

    Stateflow chart with two exclusive (OR) states.

  • パラレル (AND) ステートは独立した動作モードを表します。2 つ以上のパラレル ステートを同時にアクティブにすることが可能です。ただし、これらは順次実行されます。Stateflow では、各パラレル ステートが、実行順序を示す数字の付いた破線の四角形で表されます。

    Stateflow chart with two parallel (AND) states.

特定の階層レベルにあるステートはすべて同じタイプでなければなりません。親ステート (または、最上位ステートの場合はチャート自体) は、OR (排他) または AND (パラレル) のいずれかの構造をもっています。既定のステート構造タイプは OR (排他) です。構造タイプを変更するには、親ステートを右クリックして [構造][AND (パラレル)] を選択します。

パラレル構造の例

この例では、パラレル化を使用して施設内の気温を 120 度に保つ空調機を実装しています。

この空調機では 2 台のファンが動作します。最初のファンは気温が 120 度を超えるとオンになります。2 台目のファンは気温が 150 度を超えると追加の冷却機能を提供します。チャートはこれらのファンを FAN1 および FAN2 のパラレル ステートとしてモデル化し、空調機がオンのときはこの両方がアクティブになります。これらのファンは、2 つのファン動作モード (OnOff) を反映する、動作のしきい値以外は同一構成のステートと遷移をもっています。

3 番目のパラレル ステート SpeedValue は、各タイム ステップでスイッチがオンであったファンの数に基づいて、出力データ airflow の値を計算します。論理式 in(FAN1.On) の値は、FAN1On ステートがアクティブな場合は 1 です。そうでない場合、in(FAN1.On) は 0 になります。同様に、in(FAN2.On) の値は FAN2 のスイッチがオンとオフのどちらであるかを表します。これらの式の和は、各タイム ステップにおいてスイッチがオンであったファンの数を示します。

排他的 (OR) ステートとパラレル (AND) ステートの組み合わせ

次の表は、空調機のチャートに排他 (OR) ステートとパラレル (AND) ステートを使用する根拠をまとめています。

ステート構造理由
PowerOff, PowerOn排他的 (OR) ステート空調機が同時にオンでありオフであることは不可能です。
FAN1, FAN2パラレル (AND) ステートファンは必要な冷却量に応じてオンまたはオフになる独立コンポーネントとして動作します。
FAN1.On, FAN1.Off排他的 (OR) ステートファン 1 が同時にオンでありオフにすることはできません。
FAN2.On, FAN2.Off排他的 (OR) ステートファン 2 を同時にオンおよびオフにすることはできません。
SpeedValueパラレル (AND) ステートSpeedValue は、各タイム ステップでファンのステータスを監視する独立したサブシステムを表します。

メモ

チャート階層内の別の場所に同じ名前をもつオブジェクトがある場合に、オブジェクトに一意の識別子を指定するには、Fan1.OnFan2.On のようなドット表記を使用します。詳細については、ドット表記を使用したデータの識別を参照してください。

パラレル ステートの実行順序

FAN1FAN2、および SpeedValue が同時にアクティブであっても、シミュレーション時にはこれらのステートは順次実行されます。ステートの右上隅にある数字は実行順序を示します。この実行順序の根拠は次のとおりです。

  • FAN1FAN2 よりも低い温度でスイッチが入るため、最初に実行される。これは、FAN2 がオンとオフのどちらかであるかに関係なくオンになることが可能です。

  • FAN2FAN1 よりも高い温度でスイッチが入るため、2 番目に実行される。これは、FAN1 が既にオンの場合にのみオンになることが可能です。

  • SpeedValueFAN1FAN2 の最新ステータスを観察できるように、最後に実行される。

既定では、パラレル ステートの実行順序はチャート内での作成順序に基づいて Stateflow により割り当てられます。パラレル ステートの実行順序を変更するには、ステートを右クリックして [実行順序] ドロップダウン リストから値を選択します。

例の確認

Stateflow の例には Stateflow チャートと Simulink® サブシステムが含まれています。

Simulink model that simulates an air controller system.

気温 temp に基づいて、Air Controller チャートはファンをオンにし、airflow の値を Physical Plant サブシステムに渡します。次の表に示されるように、この出力値によって冷却量が決まります。

airflow の値説明冷却活動係数 kCool
0ファンは稼動していない。temp の値は減少しない。0
11 つのファンが稼動している。temp の値は冷却活動係数に従って減少する。0.05
22 つのファンが稼動している。temp の値は冷却活動係数に従って減少する。0.1

Physical Plant ブロックにより、次の式に基づいて施設内の気温が更新されます。

temp(0) = TInitial

temp'(t) = (TAmbient - temp(t))·(kHeat - kCool),

ここで、

  • TInitial は初期温度 (既定 = 70o)

  • TAmbient は周囲温度 (既定 = 160o)

  • kHeat は施設の熱伝達係数 (既定 = 0.01)

  • kCoolairflow に対応する冷却活動係数

temp の新しい値によって、シミュレーションの次のタイム ステップにおける冷却量が決まります。

参考

関連するトピック