このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
MATLAB Function ブロックへの列挙型入力、出力およびパラメーターの追加
列挙型の入力、出力およびパラメーターを MATLAB Function ブロックに追加する場合は、次のガイドラインに従います。
入力の場合は、接続された Simulink® 信号の列挙型から型を継承するか、列挙型を明示的に指定します。
出力の場合、列挙型を明示的に指定します。
調整可能なパラメーターには、列挙型データを明示的に指定します。調整不可能なパラメーターのプロパティは、親 Simulink マスク サブシステム内の列挙パラメーターから派生させるか、MATLAB® ベース ワークスペース内で定義された列挙変数から派生させます。
MATLAB Function ブロックに列挙型データを以下のように追加します。
[シンボル] ペインで、[データの作成] ボタン をクリックします。[名前] フィールドで、列挙型データの名前を入力します。
パラメーターの場合、名前が列挙型マスク パラメーターまたはワークスペース変数名に一致しなければなりません。
プロパティ インスペクターの [タイプ] フィールドで列挙型を指定します。
明示的な列挙型の場合は、[タイプ] を
[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
を継承しますが、ledval
は Enum: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
が表示されます。