Main Content

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

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

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

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

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

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

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

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

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

  • 別のデータ型

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Flow chart that shows the steps for resolving the identifier Colors.Red.

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

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

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

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

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

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

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

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

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

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

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

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

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

関連するトピック