Main Content

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

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

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

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

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

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

チャートの動作

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

シミュレーション中に、チャート アクションはステート 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. シミュレーション データ インスペクターで color 信号と y 信号のチェック ボックスをオンにして、それらが別々の座標軸に表示されるようにします。

  3. 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
    

関連するトピック