Main Content

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

列挙型

列挙データ型を生成するには、MATLAB® ファイルで列挙クラスを定義します。その後、列挙クラスをモデル内の信号、ブロック パラメーター、および状態のデータ型として使用します。

C コンストラクター

typedef enum {
  Choice1 = 0,
  Choice2
} myEnumType;

手順

現在のフォルダーで、MATLAB ファイル ex_myEnumType.m を作成します。このファイルは列挙クラス ex_myEnumType を定義します。

classdef ex_myEnumType < Simulink.IntEnumType
    
    enumeration
        Choice1(0)
        Choice2(1)
    end %enumeration
    
    methods (Static)
        function retVal = getHeaderFile()
            retVal = 'myEnumHdr.h';
        end %function
        
        function retVal = getDataScope()
            retVal = 'Exported';
        end %function
    end %methods
    
end %classdef

1. Enumerated Constant ブロックと Multiport Switch ブロックを含むモデル ex_pattern_enum を開きます。

2. モデル データ エディターで、[パラメーター] タブを選択します。

3. モデルで Enumerated Constant ブロックをクリックします。

4. モデル データ エディターで、[値] 列を使用して定数値を myChoice に設定します。myChoice の横にあるアクション ボタン (3 つの縦向きのドット) をクリックし、[作成] を選択します。

5. [新規データの作成] ダイアログ ボックスで、[値]Simulink.Parameter(ex_myEnumType.Choice1) に設定して [作成] をクリックします。myChoice という名前の Simulink.Parameter オブジェクトがベース ワークスペースに表示されます。このオブジェクトは、ex_myEnumType 型の列挙値 Choice1 を保存します。

6. [コード生成] タブで、[ストレージ クラス]ExportedGlobal に設定します。この設定により、オブジェクトはグローバル変数として生成されたコードに表示されます。

7. モデル データ エディターで、[信号] タブを選択します。

8. モデルで、Enumerated Constant ブロックの出力信号を選択します。

9. モデル データ エディターで [データ型] 列を使用して、信号のデータ型を Enum: ex_myEnumType に設定します。

10. Multiport Switch ブロックを選択します。

11.プロパティ インスペクターで、次のように設定します。

  • [データ端子の順序][Specify indices]

  • [データ端子インデックス]enumeration('ex_myEnumType')。この式は ex_myEnumType のすべての列挙メンバーを返します。

12.モデル コンフィギュレーション パラメーター [ファイル パッケージ化形式][Modular] に設定します。この設定により、生成されたコードで、ex_myEnumType の定義を指定したヘッダー ファイル myEnumHdr.h に表示できます。

13.モデルをビルドしてコードを生成するには、Ctrl+B を押します。

結果

生成されたヘッダー ファイル myEnumHdr.h を表示します。このファイルは列挙データ型を定義します。

typedef enum {
  Choice1 = 0,                         /* Default value */
  Choice2
} ex_myEnumType;

ソース ファイル ex_pattern_enum.c を表示します。このファイルは変数 myChoice を定義します。関数 step のアルゴリズムは、myChoice を使用して、入力信号の 1 つを出力信号に送ります。

ex_myEnumType myChoice = Choice1;      /* Variable: myChoice

/* Model step function */
void ex_pattern_enum_step(void)
{
  /* MultiPortSwitch: '<Root>/Multiport Switch' incorporates:
   *  Constant: '<S1>/Constant'
   */
  if (myChoice == Choice1) {
    /* Outport: '<Root>/Data Out' incorporates:
     *  Inport: '<Root>/Data In 1'
     */
    rtY.DataOut = rtU.DataIn1;
  } else {
    /* Outport: '<Root>/Data Out' incorporates:
     *  Inport: '<Root>/Data In 2'
     */
    rtY.DataOut = rtU.DataIn2;
  }

  /* End of MultiPortSwitch: '<Root>/Multiport Switch' */
}

参考

関連するトピック