このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
列挙データ型の定義
Stateflow® チャートの可読性を高めるには、列挙データを使用します。列挙データでは以下が可能です。
値の限定セットを作成し、名前によってこれらの値を参照します。
関連する値を別個のデータ型にグループ化します。
定数の長いリストを定義しなくても済みます。
列挙データは Simulink® モデルの Stateflow でサポートされます。詳細については、列挙データを使用した名前による値の参照を参照してください。
列挙データ型を Stateflow チャートに追加する前に、MATLAB® クラス定義ファイルで列挙データ型を定義しなければなりません。列挙型ごとに異なるファイルを作成します。
列挙データ型定義の要素
列挙データ型の定義は 3 つのコード セクションで構成されています。
コードのセクション | 必須 | 目的 |
---|---|---|
classdef | はい | 列挙データ型の名前を提供 |
enumeration | はい | データ型で許容される列挙値をリスト |
methods | いいえ | データ型をカスタマイズするメソッドを提供 |
列挙データ型の定義
データ型定義を保存するための新規ファイルを開きます。MATLAB ツールストリップの [ホーム] タブで、[新規作成] 、 [クラス] を選択します。
定義の
classdef
セクションを完成させます。classdef BasicColors < Simulink.IntEnumType ... end
classdef
セクションは、BasicColors
という列挙データ型を定義します。Stateflow は、組み込み型Simulink.IntEnumType
からデータ型を派生させます。列挙データ型の名前は、データ型名やワークスペース変数名の中で一意でなければなりません。enumeration
セクションで列挙値を定義します。classdef BasicColors < Simulink.IntEnumType enumeration Red(0) Yellow(1) Green(2) end end
列挙型は、任意の数の値を定義できます。
enumeration
セクションには、このデータ型で許容される列挙値のセットがリストされています。それぞれの列挙値は、名前と、元になる整数値から構成されています。それぞれの名前はその型内で一意でなければなりませんが、他の列挙型に現れてもかまいません。定義のmethods
セクションで別途指定しない限り、既定値はリストの最初の値になります。(オプション)
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
ファイルを MATLAB パス上に保存します。ファイルの名前は、データ型の名前と厳密に一致しなければなりません。たとえば、データ型
BasicColors
の定義は、BasicColors.m
という名前のファイル内になければなりません。ヒント
フォルダーを MATLAB 検索パスに追加するには、コマンド プロンプトで「
addpath
」と入力します。pathname
プロパティ インスペクターでのデータ型の指定
列挙データをチャートに追加する場合は、[プロパティ インスペクター] でその型を指定します。
[型] フィールドで
[Enum:<class name>]
を選択します。<class name>
を、データ型の名前に置き換えます。たとえば、[Enum:BasicColors]
を [型] フィールドに入力できます。(オプション) 接頭辞付きの識別子を使用して列挙データの初期値を入力します。初期値は、有効な MATLAB 式にならなければなりません。接頭辞付きの識別子と接頭辞なしの識別子の詳細については、列挙値の表記法を参照してください。
関連するトピック
- チャートへの列挙値の代入
- 列挙データを使用する場合のベスト プラクティス
- Simulink モデルでの列挙型データの使用 (Simulink)
- Simulink 列挙型のカスタマイズ (Simulink)