メインコンテンツ

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

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_car モデルを開きます。

    openExample("sf_car")

    このモデルの詳細については、Model a Car with Automatic Transmissionを参照してください。

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

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

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

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

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

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

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

    blockpath = "sf_car/shift_logic";
    op = get(xSteadyState,blockpath)
    op = 
    
    Block: "shift_logic"    (handle)    (active)
      Path:     sf_car/shift_logic
    
      Contains:
    
        + gear_state                     "State (AND)"                        (active)       
        + selection_state                "State (AND)"                        (active)       
          gear                           "State output data"                  gearType [1, 1]
          down_th                        "Local data"                         double [1, 1]  
          up_th                          "Local data"                         double [1, 1]  
          datasetWrittenToVector         "Data set written to vector"         logical 4x1  
  6. gear_state ステートの操作点情報を含む Stateflow.op.OperatingPointContainer オブジェクトにアクセスします。

    op.gear_state
    ans = 
    
    State: "gear_state"    (handle)    (active)
      Path:     sf_car/shift_logic/gear_state
    
      Contains:
    
        + first          "State (OR)"         (active)
        + fourth         "State (OR)"                 
        + second         "State (OR)"                 
        + third          "State (OR)"
  7. チャートの t = 3 でアクティブになっているステートを強調表示します。

    highlightActiveStates(op)

    Stateflow chart showing active states.

  8. ギア チェンジを反映するように、ステート gear_state 内のサブステート アクティビティを変更します。

    setActive(op.gear_state.second)

    Stateflow chart showing active states.

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

    isActive(op.gear_state.second)
    ans =
    
      logical
    
       1

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

    removeHighlighting(op)

バージョン履歴

R2009b で導入

すべて展開する