Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

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

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

ステート構造

チャートまたはステートの構造タイプは、チャートまたはステートに排他的ステートとパラレル ステートのどちらを含めるかを指定します。

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

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

Stateflow チャートでは、ステート構造をステート階層の異なるレベルで設定することで、排他的ステートとパラレル ステートを組み合わせることができます。既定のステート構造タイプは [Exclusive (OR)] です。構造タイプを Parallel (AND) に変更するには、親ステートを右クリックして [構造][パラレル (AND)] を選択します。構造タイプを Exclusive (OR) に戻すには、親ステートを右クリックして [構造][排他 (OR)] を選択します。

空調機のモデル化

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

空調機のチャートの最上位レベルには、2 つの排他的ステート PowerOff および PowerOn があります。空調機が同時にオンでありオフであることは不可能なため、チャートでは排他的 (OR) 構造が使用されます。

この空調機では 2 台のファンが動作します。最初のファンは気温が 120 度を超えるとオンになります。2 台目のファンは気温が 150 度を超えると追加の冷却機能を提供します。チャートはこれらのファンを、最上位ステート PowerOn のパラレル サブステート FAN1 および FAN2 としてモデル化します。ファンは必要な冷却量に応じてオンまたはオフになる独立コンポーネントとして動作するため、PowerOn はパラレル (AND) 構造を使用して、空調機がオンのときに両方のサブステートが確実にアクティブになるようにします。

これらのファンは、2 つのファン動作モード On および Off を反映する、動作のしきい値以外は同一構成のサブステートと遷移をもつステートでモデル化されています。どちらのファンも同時にオンでありオフであることは不可能なため、FAN1FAN2 では排他的 (OR) 構造が使用されます。

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

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

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

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

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

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

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

例の確認

この例には、Air Controller という Stateflow チャートと Physical Plant という Simulink® サブシステムが含まれています。

施設の気温に基づいて、チャートはファンをオンにし、稼動中のファンの数 airflow をサブシステムに出力します。この値は、次の規則に従って冷却活動係数 $k_{\mathrm Cool}$ を決定します。

  • airflow = 0 — ファンは稼動していない。$k_{\mathrm{Cool}} = 0$ であるため、気温は低下しない。

  • airflow = 1 — 1 つのファンが稼動している。気温は冷却活動係数 $k_{\mathrm{Cool}} = 0.05$ に従って低下する。

  • airflow = 2 — 2 つのファンが稼動している。気温は冷却活動係数 $k_{\mathrm{Cool}} = 0.1$ に従って低下する。

Physical Plant サブシステムにより、次の式に基づいて施設内の気温 $temp$ が更新されます。

$$temp(0) = T_{\mathrm{Initial}}$$

$$temp'(t) = (T_{\mathrm{Ambient}}-temp(t)) \cdot (k_{\mathrm{Heat}}-k_{\mathrm{Cool}}),$$

ここで、

  • $T_{\mathrm{Initial}}$ は初期温度です。既定値は 70° です。

  • $T_{\mathrm{Ambient}}$ は周囲温度です。既定値は 160° です。

  • $k_{\mathrm{Heat}}$ は施設の熱伝達係数です。既定値は 0.01 です。

  • $k_{\mathrm{Cool}}$airflow に対応する冷却活動係数です。

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

関連するトピック