列挙データを使用する場合のベスト プラクティス
Stateflow® チャートの可読性を高めるには、列挙データを使用します。列挙データでは以下が可能です。
値の限定セットを作成し、名前によってこれらの値を参照します。
関連する値を別個のデータ型にグループ化します。
定数の長いリストを定義しなくても済みます。
列挙データは Simulink® モデルの Stateflow でサポートされます。詳細については、列挙データを使用した名前による値の参照を参照してください。
列挙データ型の定義に関するガイドライン
各列挙型に一意の名前を使用する
名前の競合を避けるため、列挙データ型の名前として次に該当するものの名前は使用できません。
別のデータ型
Stateflow チャートのデータ オブジェクト
MATLAB® ベース ワークスペース内の変数
列挙型とクラス定義ファイルに同じ名前を使用する
Simulink モデルの列挙データ型を解決できるよう、型定義を含む MATLAB ファイルの名前はデータ型の名前と一致しなければなりません。
列挙型定義の変更を適用する
開いているモデルの列挙データ型定義を更新しても、その変更がすぐに有効になるわけではありません。データ型定義の更新の効果を見るには、以下の手順に従います。
モデルを保存して閉じます。
MATLAB ベース ワークスペースからデータ型のすべてのインスタンスを削除します。これらのインスタンスを検索するには、コマンド プロンプトで「
whos
」と入力します。モデルを開いてシミュレーションを開始するか、Simulink Coder™ を使用してコードを生成します。
列挙データの参照に関するガイドライン
接頭辞なしの識別子について、一意の名前解決であることを確認する
接頭辞なしの識別子を使ってチャート内の列挙値を参照する場合は、各列挙名が固有の列挙データ型に属していることを確認します。
列挙値に一意の識別子を使用する
同じ識別子がデータ オブジェクトまたはバス フィールドとして列挙値で使用されると、チャートは識別子を正しく解決しません。たとえば、次の図は、チャートによる識別子 Colors.Red
の解決の各段階を示しています。
接頭辞付きの識別子を使用して列挙データの初期値を設定する
列挙データの初期値を設定する場合は、[プロパティ インスペクター] の [初期値] フィールドで接頭辞付きの識別子を使用しなければなりません。たとえば、BasicColors.Red
は有効な識別子ですが、Red
は有効ではありません。初期値は、有効な MATLAB 式にならなければなりません。
接頭辞付きの識別子を使用して生成コードの可読性を高める
生成コードの列挙名に接頭辞を追加すると、生成コードが読みやすくなり、グローバル シンボルとの名前の競合を避けることができます。詳細については、生成されたコードにおける列挙型データの使用 (Simulink Coder)を参照してください。
列挙データに関するガイドラインと制限
列挙データの最小値と最大値は入力しない
列挙データでは、[最小値] プロパティと [最大値] プロパティは空のままにします。チャートでは、これらのプロパティに入力する値はすべて無視されます。
[プロパティ インスペクター] にこれらのフィールドが表示されるかどうかは、列挙データの定義にどの [型] フィールド オプションを使用するかによって決まります。
[型] フィールド オプション | [最小値] フィールドと [最大値] フィールドの表示 |
---|---|
Enum: <class name> | 使用不可 |
<data type expression> または Inherit from Simulink | 使用可能 |
列挙値を定数データに代入しない
列挙値は定数であるため、列挙値を定数データに代入しても意味がありません。定数データへの列挙値の代入を試みると、エラーが表示されます。
列挙データへのアクセスに ml
名前空間演算子を使用しない
ml
演算子は列挙データをサポートしていません。