Main Content

Stateflow.op.OperatingPointContainer

ステート、ボックス、または関数の操作点情報

説明

Stateflow.op.OperatingPointContainer オブジェクトには、シミュレーション中の Stateflow® チャートのステート、ボックス、または関数のスナップショットが含まれています。操作点には、以下に関する情報が含まれています。

  • アクティブなサブステート

  • ステートおよび関数のローカル データ

  • MATLAB® 関数の永続変数と真理値表

作成

変更した操作点の保存の説明にあるように、Simulink® モデルの最終の操作点を保存すると、モデル内の各 Stateflow チャートについて Stateflow.op.BlockOperatingPoint オブジェクトが作成されます。このオブジェクトには、チャート内の各ステート、ボックス、または関数の Stateflow.op.OperatingPointContainer オブジェクトが含まれます。

親である Stateflow.op.BlockOperatingPoint または Stateflow.op.OperatingPointContainer 内のステート、ボックス、または関数の名前と一致するプロパティを使用して、Stateflow.op.OperatingPointContainer オブジェクトにアクセスします。たとえば、op がチャートの Stateflow.op.BlockOperatingPoint オブジェクトであるとします。state という最上位のステートの Stateflow.op.OperatingPointContainer オブジェクトにアクセスするには、次のように入力します。

op.state

同様に、最上位のステート state 内の substate というサブステートの Stateflow.op.OperatingPointContainer オブジェクトにアクセスするには、次のように入力します。

op.state.substate

プロパティ

Stateflow.op.OperatingPointContainer オブジェクトには、ステート、ボックス、または関数内の各サブステート、ボックス、関数、ローカル データ、および永続変数のプロパティが含まれます。プロパティの名前は、ステート、関数、ボックス、またはデータの名前と一致します。以下に例を示します。

  • ステートに substate という名前のサブステートがある場合、このステートの Stateflow.op.OperatingPointContainer オブジェクトには、Stateflow.op.OperatingPointContainer オブジェクトとして指定される substate という名前のプロパティがあります。

  • MATLAB 関数に persistentVar という名前の永続変数がある場合、この関数の Stateflow.op.OperatingPointContainer オブジェクトには、Stateflow.op.OperatingPointData オブジェクトとして指定される persistentVar という名前のプロパティがあります。

オブジェクト関数

setActiveステートをアクティブとして設定
isActiveステートがアクティブかどうかの判定
getPrevActiveChild前にアクティブであったサブステートの取得
setPrevActiveChild前にアクティブであったサブステートの設定
open編集環境でオブジェクトを表示

すべて折りたたむ

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

    openExample("sf_aircraft")

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

  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)

バージョン履歴

R2009b で導入

すべて展開する