Main Content

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

列挙データ型の定義

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

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

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

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

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

列挙データ型を Stateflow チャートに追加する前に、MATLAB® クラス定義ファイルで列挙データ型を定義しなければなりません。列挙型ごとに異なるファイルを作成します。

列挙データ型定義の要素

列挙データ型の定義は 3 つのコード セクションで構成されています。

コードのセクション必須目的
classdef

はい

列挙データ型の名前を提供

enumeration

はい

データ型で許容される列挙値をリスト

methods

いいえ

データ型をカスタマイズするメソッドを提供

列挙データ型の定義

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

  2. 定義の classdef セクションを完成させます。

    classdef BasicColors < Simulink.IntEnumType
      ...
    end

    classdef セクションは、BasicColors という列挙データ型を定義します。Stateflow は、組み込み型 Simulink.IntEnumType からデータ型を派生させます。列挙データ型の名前は、データ型名やワークスペース変数名の中で一意でなければなりません。

  3. enumeration セクションで列挙値を定義します。

    classdef BasicColors < Simulink.IntEnumType
      enumeration
        Red(0)
        Yellow(1)
        Green(2)
      end
    end

    列挙型は、任意の数の値を定義できます。enumeration セクションには、このデータ型で許容される列挙値のセットがリストされています。それぞれの列挙値は、名前と、元になる整数値から構成されています。それぞれの名前はその型内で一意でなければなりませんが、他の列挙型に現れてもかまいません。定義の methods セクションで別途指定しない限り、既定値はリストの最初の値になります。

  4. (オプション) methods セクションを使用してデータ型をカスタマイズします。このセクションには以下のメソッドが含まれている可能性があります。

    • getDefaultValue は既定の列挙値を、許容される値のリストにある最初の値以外で指定する。

    • getDescription は、Simulink Coder™ で生成したコードのデータ型の説明を指定する。

    • getHeaderFile は、Simulink Coder で生成したコード内に列挙型定義を含むカスタム ヘッダー ファイルを指定する。

    • getDataScope は、Simulink Coder で生成したコードのヘッダー ファイルに対する列挙型定義のインポートまたはエクスポートを有効にする。

    • addClassNameToEnumNames は、Simulink Coder で生成したコードでの識別子の可読性を高め、名前の競合を防ぐ。

    たとえば、次の MATLAB ファイルでは、列挙データ型 BasicColors を以下のようにカスタマイズした定義が提供されます。

    • 既定の列挙値として、許容される値のリストにある最後の値を指定します。

    • Simulink Coder で生成したコード用にデータ型の短い説明を含めます。生成コードに説明を含めるには、[Simulink データ オブジェクトの説明] (Embedded Coder) モデル コンフィギュレーション パラメーターを有効にします。このパラメーターには Embedded Coder® ライセンスが必要です。

    • Simulink Coder に定義を生成させないよう、カスタム ヘッダー ファイルからデータ型の定義をインポートします。

    • Simulink Coder で生成したコードの各列挙型メンバー名に、接頭辞としてデータ型の名前を追加します。

    classdef BasicColors < Simulink.IntEnumType
      enumeration
        Red(0)
        Yellow(1)
        Green(2)
      end
    
      methods (Static = true)
        function retVal = getDefaultValue()
          % GETDEFAULTVALUE Specifies the default enumeration member.
          % Return a valid member of this enumeration class to specify the default.
          % If you do not define this method, Simulink uses the first member.
          retVal = BasicColors.Green;
        end
    
        function retVal = getDescription()
          % GETDESCRIPTION Specifies a string to describe this enumerated type.
          retVal = 'This defines an enumerated type for colors';
        end
    
        function retVal = getHeaderFile()
          % GETHEADERFILE Specifies the file that defines this type in generated code.
          % The method getDataScope determines the significance of the specified file.
          retVal = 'imported_enum_type.h';
        end
    
        function retVal = getDataScope()
          % GETDATASCOPE Specifies whether generated code imports or exports this type.
          % Return one of these strings:
          % 'Auto':     define type in model_types.h, or import if header file specified
          % 'Exported': define type in a generated header file
          % 'Imported': import type definition from specified header file
          % If you do not define this method, DataScope is 'Auto' by default.
          retVal = 'Imported';
        end
    
        function retVal = addClassNameToEnumNames()
          % ADDCLASSNAMETOENUMNAMES Specifies whether to add the class name
          % as a prefix to enumeration member names in generated code.
          % Return true or false.
          % If you do not define this method, no prefix is added.
          retVal = true;
        end % function
      end % methods
    end % classdef

  5. ファイルを MATLAB パス上に保存します。ファイルの名前は、データ型の名前と厳密に一致しなければなりません。たとえば、データ型 BasicColors の定義は、BasicColors.m という名前のファイル内になければなりません。

    ヒント

    フォルダーを MATLAB 検索パスに追加するには、コマンド プロンプトで「addpath pathname」と入力します。

プロパティ インスペクターでのデータ型の指定

列挙データをチャートに追加する場合は、[プロパティ インスペクター] でその型を指定します。

  1. [型] フィールドで [Enum:<class name>] を選択します。

  2. <class name> を、データ型の名前に置き換えます。たとえば、[Enum:BasicColors][型] フィールドに入力できます。

  3. (オプション) 接頭辞付きの識別子を使用して列挙データの初期値を入力します。初期値は、有効な MATLAB 式にならなければなりません。接頭辞付きの識別子と接頭辞なしの識別子の詳細については、列挙値の表記法を参照してください。

関連するトピック