ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

LED 表示を制御するための列挙型の使用

この例では、MATLAB Function ブロックで列挙型を使用する方法を示します。この例では、MATLAB Function ブロックが他の Simulink® ブロックと列挙型データを交換する方法を示します。

emldemo_led_switch モデルは、列挙型を使って LED 表示の色を制御するデバイスのモードを表します。MATLAB Function ブロックは、モードを表す列挙型入力信号を受信します。列挙型出力信号は、LED に表示される色を表します。

Simulink モデル

このモデルを開くには、コマンド プロンプトで次を入力します。

emldemo_led_switch

モデルには、次の表に示されるブロックが含まれます。

Simulink ブロック説明

Step

オン/オフ信号のソースを提供します。初期値 0 (オフ) を出力し、10 秒で 1 (オン) に切り替わります。

Data Type Conversion (double から int32 へ)

Step 信号を double から int32 に変換します。

Data Type Conversion (int32 から列挙型 switchmode へ)

int32 型の値を列挙型の switchmode に変換します。

Data Type Conversion ブロックのパラメーターの設定は次のようになります。

  • 出力の最小値: []

  • 出力の最大値: []

  • 出力データ型: Enum:switchmode

MATLAB Function ブロック checkState

列挙型入力 state を評価して、列挙型出力 ledval の値を確認します。state は Simulink ステップ信号からその列挙型 switchmode を継承します。ledvalEnum:led 型をもちます。

Display

ledval の値を表示します。

列挙型クラス定義

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

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

led 列挙型は、checkstate ブロックが出力できる色を表します。

classdef led < Simulink.IntEnumType
    enumeration
        GREEN(1),
        RED(8)
    end
end
どちらの列挙型クラスも組み込み型 Simulink.IntEnumType から継承し、MATLAB® パス上にあります。

MATLAB Function ブロック関数

関数 checkState は LED 表示を有効にするためにデバイスの状態に基づく列挙型を使用します。オン状態を示すために緑色の LED 表示を点灯します。また、OFF の状態を示すために赤色の LED 表示を点灯します。

function ledval = checkState(state)
%#codegen

if state == switchmode.ON
    ledval = led.GREEN;
else
    ledval = led.RED;
end

シミュレーション

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

関連するトピック