Main Content

チャートへの列挙値の代入

Stateflow® チャートの可読性を高めるには、列挙データを使用します。列挙データでは以下が可能です。

  • 値の限定セットを作成し、名前によってこれらの値を参照します。

  • 関連する値を別個のデータ型にグループ化します。

  • 定数の長いリストを定義しなくても済みます。

列挙データは Simulink® モデルの Stateflow でサポートされます。詳細については、列挙データを使用した名前による値の参照を参照してください。

チャートの動作

この例では、列挙値を使ってステータス キーワードを発行するチャートの作成方法を説明します。

Stateflow chart with states called A and B.

シミュレーション中に、チャート アクションはステート A とステート B の間で切り替わります。

ステート A の実行

  • シミュレーションの開始に際し、ステート A に入ります。

  • ステート A が、値 RED を列挙データ color に代入することで、entry アクションを実行します。

  • 条件 [y > 6] が真になるまで、データ y はタイム ステップ (0.2 秒間隔) ごとに 1 回増分されます。

  • チャートが、ステート A からステート B への遷移を取得します。

ステート B の実行

  • ステート A からの遷移が発生した後、ステート B が入力されます。

  • ステート B が、値 GREEN を列挙データ color に代入することで、entry アクションを実行します。

  • 条件 [y < 3] が真になるまで、データ y はタイム ステップ (0.2 秒間隔) ごとに 1 回減分されます。

  • チャートが、ステート B からステート A に遷移します。

チャートの作成

チャートへのステートと遷移の追加

  1. 空のチャートをもつ Simulink モデルを作成するには、MATLAB® コマンド プロンプトで sfnew と入力します。

  2. 空のチャート内にステート A および B を追加します。テキスト プロンプトで、適切なアクション ステートメントを入力します。

  3. ステート A にデフォルト遷移を追加し、ステート A とステート B の間に遷移を追加します。

  4. それぞれの遷移をダブルクリックします。テキスト プロンプトで、適切な条件を入力します。

チャート用の列挙データ型の定義

  1. データ型定義を保存するためのファイルを作成するには、MATLAB ツールストリップの [ホーム] タブから、[新規作成][クラス] を選択します。

  2. MATLAB エディターで次のように入力します。

    classdef TrafficColors < Simulink.IntEnumType
      enumeration
        RED(0)
        GREEN(10)
      end
    end  
    classdef セクションは、TrafficColors という名前の整数ベースの列挙データ型を定義します。enumeration セクションには、このデータ型で許可される列挙値に続いて、その元となる数値が含まれています。

  3. ファイルを TrafficColors.m として、 MATLAB 検索パス上のフォルダーに保存します。

チャート データの定義

  1. 未定義のデータを解決するには、[シンボル] ペインで [未定義のシンボルを解決] アイコン をクリックします。Stateflow エディターによってチャート内の各シンボルに適切なスコープが割り当てられます。

    シンボルスコープ
    color出力データ
    yローカル データ
    GREENパラメーター データ
    REDパラメーター データ

  2. color を列挙データとして指定するには、[プロパティ インスペクター] で以下を行います。

    • [型] フィールドで [Enum:<class name>] を選択します。<class name> を、以前に定義したデータ型の名前 TrafficColors に置き換えます。

    • [ログ] で、[信号データのログ] チェック ボックスをオンにします。

  3. y のスコープと型を設定するには、[プロパティ インスペクター] で以下を行います。

    • [スコープ] フィールドで [出力] を選択します。

    • [型] フィールドで [uint8] を選択します。

    • [ログ] で、[信号データのログ] チェック ボックスをオンにします。

  4. [シンボル] ペインで、シンボル GREEN および RED を削除します。color を列挙データとして指定する前は、Stateflow エディターではこれらのシンボルが誤ってパラメーターとして識別されていました。

ログに記録された出力の表示

  1. モデルのシミュレーションを実行します。

  2. [シミュレーション] タブで、[結果の確認] にある [データ インスペクター] を選択します。

  3. シミュレーション データ インスペクター (Simulink)[検査] ペインで、信号 color および y を選択します。ログに記録された信号をまとめて表示するか、個別の座標軸に表示できます。詳細については、シミュレーション データの検証 (Simulink)を参照してください。

    Simulation Data Inspector showing simulation results for color and y.

  4. MATLAB ワークスペース内でログ データにアクセスするには、信号のログ オブジェクト logsout を呼び出します。たとえば、コマンド プロンプトで次のように入力します。

    losgout = out.logsout;
    colorLog = logsout.getElement("color");
    Tbl = table(colorLog.Values.Time,colorLog.Values.Data);
    Tbl.Properties.VariableNames = ["SimulationTime","Color"]
    Tbl =
    
      9×2 table
    
        SimulationTime    Color
        ______________    _____
    
               0          RED
             1.6          GREEN
             2.8          RED
               4          GREEN
             5.2          RED
             6.4          GREEN
             7.6          RED
             8.8          GREEN
              10          RED
    

参考

(Simulink)

関連するトピック