Main Content

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

MATLAB Function ブロックへの列挙型入力、出力およびパラメーターの追加

列挙型の入力、出力およびパラメーターを MATLAB Function ブロックに追加する場合は、次のガイドラインに従います。

  • 入力の場合は、接続された Simulink® 信号の列挙型から型を継承するか、列挙型を明示的に指定します。

  • 出力の場合、列挙型を明示的に指定します。

  • 調整可能なパラメーターには、列挙型データを明示的に指定します。調整不可能なパラメーターのプロパティは、親 Simulink マスク サブシステム内の列挙パラメーターから派生させるか、MATLAB® ベース ワークスペース内で定義された列挙変数から派生させます。

MATLAB Function ブロックに列挙型データを以下のように追加します。

  1. [シンボル] ペインで、[データの作成] ボタン をクリックします。[名前] フィールドで、列挙型データの名前を入力します。

    パラメーターの場合、名前が列挙型マスク パラメーターまたはワークスペース変数名に一致しなければなりません。

  2. プロパティ インスペクターの [タイプ] フィールドで列挙型を指定します。

    • 明示的な列挙型の場合は、[タイプ][Enum: <class name>] に設定します。<class name> を MATLAB パス上にある MATLAB ファイル内に定義した列挙データ型の名前で置き換えます。

      列挙データ型は複素数値をサポートしないため、[実数/複素数] フィールドは表示されません。

    • 入力について、接続されている Simulink 信号から列挙型を継承するには、[タイプ][継承: Simulink と同じ] に設定します。

MATLAB Function ブロック内での列挙型

この例では、MATLAB Function ブロックが他の Simulink ブロックと列挙データを交換する方法を示します。モデルは、列挙型を使って LED 表示の色を制御するデバイスのモードを表します。MATLAB Function ブロックは、モードを表す列挙型入力信号を受信します。列挙型出力信号は、LED に表示される色を表します。

このモデルでは、Step ブロックがオン/オフ信号のソースを提供します。このブロックは初期値 0 (オフ) を出力し、10 秒後に 1 (オン) にステップアップします。ペアの Data Type Conversion ブロックにより、この信号が double 型から int32 型に、続いて int32 から列挙型の switchmode に変換されます。2 番目の Data Type Conversion ブロックのパラメーターは次のように設定されています。

  • 出力の最小値: []

  • 出力の最大値: []

  • 出力データ型: Enum:switchmode

MATLAB Function ブロックは、列挙入力 state を評価して、列挙出力 ledval の値を決定します。state は入力される Simulink 信号からその列挙型の switchmode を継承しますが、ledvalEnum:led 型をもちます。最後に、Display ブロックにより ledval の値が表示されます。

列挙クラス定義の表示

switchmode 列挙は、MATLAB Function ブロックへの入力で許可されるモードを表します。

classdef switchmode < Simulink.IntEnumType
    enumeration
        OFF(0),
        ON(1),
    end
end

led 列挙は、MATLAB Function ブロックが出力する色を表します。

classdef led < Simulink.IntEnumType
    enumeration
        GREEN(1),
        RED(8),
    end
end

どちらの列挙クラスも組み込み型 Simulink.IntEnumType から継承し、MATLAB パス上にあります。

MATLAB Function ブロックの検証

MATLAB Function ブロックを開きます。関数 checkState は LED 表示を有効にするためにデバイスの状態に基づく列挙を使用します。関数は ON の状態を示すために緑色の LED 表示を点灯し、OFF の状態を示すために赤色の LED 表示を点灯します。

function ledval = checkState(state)
    if state == switchmode.ON
     ledval = led.GREEN;
else
     ledval = led.RED;
end

[関数] タブで [データの編集] をクリックして、MATLAB Function ブロックで指定された列挙の入力と出力を確認します。[シンボル] ペインに入力 state と出力 ledval が表示されます。

出力に列挙を使用する場合、変数の [タイプ] プロパティで列挙クラス定義を明示的に参照しなければなりません。いずれかの変数の名前をクリックして、プロパティ インスペクターでプロパティを確認します。この例では、state[タイプ] プロパティは Inherit: Same as Simulink です。ledval[タイプ] プロパティは Enum: led です。

モデルのシミュレーション

モデルをシミュレートすると、Display ブロックに LED 表示の状態が表示されます。モデルのシミュレーションが 10 秒未満の場合、状態は OFF で、Display ブロックに RED が表示されます。モデルのシミュレーションが 10 秒を超えると、状態は ON になり、Display ブロックに GREEN が表示されます。

参考

関連するトピック