Main Content

列挙型データを使用する場合のベスト プラクティス

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

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

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

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

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

列挙データ型の定義に関するガイドライン

各列挙型に一意の名前を使用する

名前の競合を避けるため、列挙データ型の名前として次に該当するものの名前は使用できません。

  • 別のデータ型

  • Stateflow チャートのデータ オブジェクト

  • MATLAB® ベース ワークスペース内の変数

列挙型とクラス定義ファイルに同じ名前を使用する

Simulink モデルの列挙データ型を解決できるよう、型定義を含む MATLAB ファイルの名前はデータ型の名前と一致しなければなりません。

列挙型定義の変更を適用する

開いているモデルの列挙データ型定義を更新しても、その変更がすぐに有効になるわけではありません。データ型定義の更新の効果を見るには、以下の手順に従います。

  1. モデルを保存して閉じます。

  2. MATLAB ベース ワークスペースからデータ型のすべてのインスタンスを削除します。これらのインスタンスを検索するには、コマンド プロンプトで「whos」と入力します。

  3. モデルを開いてシミュレーションを開始するか、Simulink Coder™ を使用してコードを生成します。

列挙型データの参照に関するガイドライン

接頭辞なしの識別子について、一意の名前解決であることを確認する

接頭辞なしの識別子を使ってチャート内の列挙値を参照する場合は、各列挙名が固有の列挙データ型に属していることを確認します。

列挙値に一意の識別子を使用する

同じ識別子がデータ オブジェクトまたはバス フィールドとして列挙値で使用されると、チャートは識別子を正しく解決しません。たとえば、次の図は、チャートによる識別子 Colors.Red の解決の各段階を示しています。

接頭辞付きの識別子を使用して列挙型データの初期値を設定する

列挙型データの初期値を設定する場合は、プロパティ インスペクターの [初期値] フィールドで接頭辞付きの識別子を使用しなければなりません。たとえば、BasicColors.Red は有効な識別子ですが、Red は有効ではありません。初期値は、有効な MATLAB 式として評価されなければなりません。

接頭辞付きの識別子を使用して生成コードの可読性を高める

生成コードの列挙名に接頭辞を追加すると、生成コードが読みやすくなり、グローバル シンボルとの名前の競合を避けることができます。詳細については、Use Enumerated Data in Generated Code (Simulink Coder)を参照してください。

列挙型データに関するガイドラインと制限

列挙型データの最小値と最大値は入力しない

列挙型データでは、プロパティ インスペクターの [最小値] フィールドと [最大値] フィールドは空のままにします。チャートでは、これらのフィールドに入力する値はすべて無視されます。

プロパティ インスペクターにこれらのフィールドが表示されるかどうかは、列挙型データの定義にどの [データ型] フィールド オプション使用するかによって決まります。

[データ型] フィールド オプション[最小値] フィールドと [最大値] フィールドの表示
Enum: <class name>使用不可
<data type expression> または Inherit from Simulink使用可能

列挙値を定数データに代入しない

列挙値は定数であるため、列挙値を定数データに代入しても意味がありません。定数データへの列挙値の代入を試みると、エラーが表示されます。

列挙型データへのアクセスに ml 名前空間演算子を使用しない

ml 演算子は列挙型データをサポートしていません。

マシン レベルの階層で列挙型データを定義しない

マシンを親とするデータは、列挙型ではサポートされていません。

関連するトピック