ドキュメンテーション センター

  • 評価版
  • 製品アップデート

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

Switch Case

C ライクな switch 制御フロー文の実現

ライブラリ

Ports & Subsystems

説明

Switch Case ブロックは 1 つの入力を受け取ります。各出力端子は、Switch Case Action Subsystem に接続されています。データ出力は、Action Port ブロックとサブシステムを使って作成された Switch Case Action サブシステムへのアクション信号です。

Switch Case ブロックは入力値を使用して実行するサブシステムを判定するケース条件を選択します。これらのケースは、最初のケースから始めて上から下に評価されます。かっこ内のケース値が入力の値に対応する場合、その Switch Case Action Subsystem が実行されます。

default のケースが存在し、その他のケースが実行されない場合は、そのケースが実行されます。他のケース条件が考えられるすべての値を使い果たした場合でも、default のケースは必ずしも提供する必要はありません。下図は、完成した Simulink® switch 制御フロー ステートメントを示しています。

Switch Case Action サブシステムが実行された後、Switch Case ブロックのケースは暗黙のブレークを含みます。そのため、標準 C の switch 文で見られるように、Simulink switch 制御フロー文で不完全な動作が発生することはありません。次の疑似コードは、上記の switch 制御例によって生成されたコードを表しています。

switch (u1) {
	case [u1=1]:
		body_1;
		break;
	case [u1=2 or u1=3]:
		body_23;
		break;
	default:
		body_default;
}

上記の例に示した Simulink switch 制御フロー文を作成するには、以下に従います。

  1. Switch Case ブロックを現在のシステムに配置し、評価中のデータ ソースに u1 というラベルが付いた入力端子を追加します。

  2. [Switch Case ブロック] ダイアログ ボックスを開き、パラメーターを更新します。

    1. 個々のケースを [Case 条件] フィールドに入力します。

    2. 既定のケースを表示するには、[既定の case を表示] チェック ボックスを選択します。

  3. Switch Case ブロックに追加した case 端子ごとに、Switch Case Action Subsystem を作成します。

    これらのサブシステムは、内部に Action Port ブロックを含むサブシステムで構成されています。サブシステム内に Action Port ブロックを配置すると、サブシステムは「アクション」というラベルが付いた入力端子をもつ Atomic Subsystem になります。

  4. Switch Case ブロックの各ケース出力端子と既定の出力端子を Action サブシステムの Action 端子に接続します。

    接続された各サブシステムはケース ボディになります。これは、 Switch Case Action Subsystem ブロックのラベルの変更と内部の Action Port ブロックが名前 case{} に変わることで示されます。

    switch 制御フロー文のシミュレーションの間、Switch Case ブロックから各 Switch Case Action Subsystem への Action 信号はハイフンなしからダッシュ付きに変わります。

  5. Switch Case Action Subsystem で、Simulink が処理するケースに適したロジックを入力します。Switch Case Action Subsystem 内のすべてのブロックは、駆動 Switch Case ブロックと同じレートで実行しなければなりません。各ブロックのサンプル時間パラメーターを「継承」 (-1) または Switch Case ブロックのサンプル時間と同じ値に設定することによって達成できます。

Switch Case ブロックの列挙型

Switch Case ブロックは、入力信号とケース条件の列挙型データをサポートします。列挙型の場合は、以下の例のように、[Case 条件] フィールドで列挙値のセル配列として指定します。

{BasicColors.Red, [BasicColors.Yellow, BasicColors.Blue]}

Switch Case ブロック アイコンには、以下の例のように、ケース条件に対応する列挙名が表示されます。

関数 enumeration を使用して、列挙型の各値に対するケースを含んだケース条件を指定できます。Switch Case ブロックで列挙型データを使用する場合は、以下のルールに従います。

  • 入力 u1 が列挙型である場合、すべてのケース条件の値はその同じ列挙型でなければなりません。

  • ケース条件の値が列挙型である場合、入力 u1 およびその他のすべてのケース条件の値が、その同じ列挙型でなければなりません。

  • ケース条件の値が列挙型である場合、ケース条件として表示される各値は異なる整数値をもっていなければなりません。

Simulink 内の列挙型データの詳細は、「Simulink モデルでの列挙型データの使用」を参照してください。列挙型データを使用する Switch Case ブロック用に生成されたコードは、個々の整数値でなく、指定されたケース条件の列挙型を使用します。

サポートするデータ型

Switch Case ブロックの u1 というラベルの付いた端子への入力は以下のいずれかになります。

  • Simulink がサポートする組み込みデータ型のスカラー値。ブロックは、Boolean または固定小数点データ型をサポートせず、数値入力を打ち切って 32 ビット符号付き整数にします。

  • Switch Case ブロックの列挙型」で説明されている列挙型データのスカラー値。

詳細は、Simulink ドキュメンテーションの「 Simulink でサポートされているデータ型」を参照してください。

パラメーターとダイアログ ボックス

Case 条件

ケース条件の指定には MATLAB®の セル表記法を使用します。たとえば、{1,[7,9,4]} を入力して、入力値が 1 のときに出力端子 case[1] が実行されることと、入力値が 79、または4 のときに出力端子 case[7 9 4] が実行されることを指定しています。

コロン表記法を使って、整数のケース条件の範囲を指定できます。たとえば、「{[1:5]}」と入力すると、入力値が 1234、または 5 のときに出力端子 case[1 2 3 4 5] が実行されます。

ブロックのサイズに応じて、条件の長いリストを含むケースは、終了反復記号 (...) を使って Switch Case ブロックで短縮された形式で表示されます。

関数 enumeration を使用して、列挙型の各値に対するケースを含んだケース条件を指定できます。

default ケースを表示

このチェック ボックスをオンにすると、既定の出力端子は Switch Case ブロックの最後のケースとして表示され、既定のケースを指定できます。このケースは、入力値が [Case 条件] フィールドで指定されたケース値と一致しない場合に実行されます。[既定の Case の表示] が選択されている場合は、前述のケースが入力値として考えられるすべての値を使い果たした場合でも、既定の出力端子が常に表示されます。

ゼロクロッシング検出を有効にする

ゼロクロッシング検出を有効にする場合は選択します。詳細は、Simulink ドキュメンテーションの「ゼロクロッシング検出」

サンプル時間 (継承は -1)

サンプルの時間間隔を指定します。サンプル時間を継承するには、このパラメーターを -1 に設定します。詳細は、「 サンプル時間の指定」を参照してください。

特性

直接フィードスルー

あり

サンプル時間

駆動ブロックから継承

スカラー拡張

なし

離散化

なし

ゼロクロッシング検出

有効な場合、あり

この情報は役に立ちましたか?