Main Content

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

setActive

ステートをアクティブとして設定

    説明

    setActive(stateOp) は、操作点 stateOp に対応するステートをアクティブとして設定します。stateOp は、リーフ ステートの操作点でなければなりません。setActive を呼び出すと、チャートは以下によってステートの整合性を維持します。

    • 適切なステートの出入り

    • 新たにアクティブになったステートのテンポラル カウンターのリセット

    • アクティブ ステート データの値の更新

    • ステートにバインドされている Function-Call Subsystem および Simulink® 関数の有効化または無効化

    しかし、チャートは、前にアクティブであったステートに対する exit アクション、または新たにアクティブになったステートに対する entry アクションは実行しません。さらに、ステートは、ステートを親とするいずれのローカル データも再初期化しません。

    すべて折りたたむ

    1. sf_aircraft モデルを開きます。

      openExample("stateflow/FaultDetectionControlLogicInAnAircraftControlSystemExample")

      このモデルの詳細については、航空機の昇降舵の制御システムの故障の検出を参照してください。

    2. 最終の操作点を保存するようにモデルを設定します。[コンフィギュレーション パラメーター] ダイアログ ボックスを開き、[データのインポート/エクスポート] ペインで次を行います。

      1. [最終状態] を選択し、操作点の名前を入力します。この例では、xSteadyState を使用します。

      2. [最終の操作点を保存] を選択します。

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

    3. このシミュレーション セグメントの終了時間を設定します。[シミュレーション] タブで、[終了時間]3 に設定します。

    4. シミュレーションを実行します。

    5. Mode Logic チャートの操作点情報を含む Stateflow.op.BlockOperatingPoint オブジェクトにアクセスします。

      blockpath = "sf_aircraft/Mode Logic";
      op = get(xSteadyState,blockpath)
      op = 
      
        Block:    "Mode Logic"    (handle)    (active)
        Path:     sf_aircraft/Mode Logic
      
        Contains:
      
          + Actuators          "State (OR)"                    (active)
          + LI_act             "Function"
          + LO_act             "Function"
          + L_switch           "Function"
          + RI_act             "Function"
          + RO_act             "Function"
          + R_switch           "Function"
            LI_mode            "State output data"		sf_aircraft_ModeType [1,1]
            LO_mode            "State output data"		sf_aircraft_ModeType [1,1]
            RI_mode            "State output data"		sf_aircraft_ModeType [1,1]
            RO_mode            "State output data"		sf_aircraft_ModeType [1,1]
    6. Actuators ステートの操作点情報を含む Stateflow.op.OperatingPointContainer オブジェクトにアクセスします。

      op.Actuators
      ans = 
      
        State:    "Actuators"    (handle)    (active)
        Path:     sf_aircraft/Mode Logic/Actuators
      
        Contains:
      
          + LI            "State (AND)"         (active)
          + LO            "State (AND)"         (active)
          + RI            "State (AND)"         (active)
          + RO            "State (AND)"         (active)
      
    7. チャートの t = 3 でアクティブになっているステートを強調表示します。

      highlightActiveStates(op)

      Stateflow chart showing active states.

    8. 左側の外部アクチュエータの故障を反映するように、ステート LO 内のサブステート アクティビティを変更します。

      setActive(op.Actuators.LO.Isolated)

      Stateflow chart showing active states.

    9. 変更された操作点において、ステート LO 内のサブステート Isolated がアクティブであることを確認します。

      isActive(op.Actuators.LO.Isolated)
      ans =
      
        logical
      
         1

    10. Stateflow® エディターでのアクティブ ステートの強調表示を解除します。

      removeHighlighting(op)

    入力引数

    すべて折りたたむ

    リーフ ステートの操作点。Stateflow.op.OperatingPointContainer オブジェクトとして指定します。

    バージョン履歴

    R2009b で導入