Main Content

Switch

2 番目の入力の値に基づいて 1 番目の入力と 3 番目の入力の間で出力を切り替え

  • Switch block

ライブラリ:
Simulink / Commonly Used Blocks
Simulink / Signal Routing
HDL Coder / Commonly Used Blocks
HDL Coder / Signal Routing

説明

ブロック入力の型

Switch ブロックは、2 番目の入力の値に応じて、1 番目の入力または 3 番目の入力を通過させます。1 番目の入力と 3 番目の入力は "データ入力" と呼ばれます。2 番目の入力は "制御入力" と呼ばれます。[1 番目の入力が通過する条件] パラメーターと [しきい値] パラメーターを使って、ブロックが最初の入力を通過させる条件を指定します。

既知の出力データ型を 1 番目の入力端子と 3 番目の入力端子に直ちに逆伝播するには、[出力データ型] パラメーターを [継承: 内部ルールによる継承] に設定し、[すべてのデータ端子入力が同じデータ型をもつ] チェック ボックスをオンにします。

データ入力に関する制限

[異なるデータの入力サイズを許可する] を選択している場合は、2 つのデータ入力のサイズが異なっていてもかまいません。ただし、このブロックでは可変サイズの入力信号はサポートされません。そのため、各入力のサイズがシミュレーション中に変わることはありません。

Switch ブロックへのデータ入力が共にバスの場合、両方のバスの要素名は同じでなければなりません。同じ要素名を使用することで、いずれの入力バスが選択されたかにかかわらず、出力バスが同じ要素名をもつようにすることができます。ユーザー モデルがこの要件を満たすようにするには、バス オブジェクトを使用してバスを定義し、[要素名の不一致] 診断に エラー を設定します。詳細については、モデル コンフィギュレーション パラメーター: 接続性の診断を参照してください。

ブロック アイコンの外観

ブロックのダイアログ ボックスを開かなくても、ブロック アイコンで [1 番目の入力が通過する条件][しきい値] を確認できます。

ブロックの向きに関する端子の順番の詳細については、回転または反転したブロックの端子の位置の特定を参照してください。

Boolean 制御入力に対するブロックの動作

制御入力が Boolean 信号の場合、次の条件としきい値の組み合わせのいずれかを使用してください。

  • u2 >= しきい値1 に等しいしきい値

  • u2 > しきい値0 に等しいしきい値

  • u2 ~= 0

それ以外の場合、Switch ブロックはしきい値を無視し、信号の経路指定に Boolean 入力を使用します。制御入力が 1 の場合は 1 番目の入力が渡され、制御入力が 0 の場合は 3 番目の入力が渡されます。この場合、コンパイル時の後にブロック アイコンが変わり、それぞれ TF を使用して 1 番目の入力と 3 番目の入力にラベルが付けられます。

サポートするデータ型

制御入力は、固定小数点型と列挙型を含む Simulink® がサポートする任意のデータ型にすることができます。制御入力を複素数にすることはできません。制御入力が列挙の場合、[しきい値] パラメーターは同じ列挙型の値でなければなりません。

データ入力は、Simulink がサポートする任意のデータ型にすることができます。一方のデータ入力が列挙型の場合、もう一方も同じ列挙型でなければなりません。

出力が列挙型の場合、どちらのデータ入力も出力と同じ列挙型を使用しなければなりません。

詳細については、Simulink でサポートされているデータ型を参照してください。

端子

入力

すべて展開する

2 つのデータ入力のうち 1 番目。ブロックは、1 番目のデータ入力か 2 番目のデータ入力のいずれかを出力に伝播します。ブロックは、制御入力に基づいてどちらの入力を通過させるかを選択します。[1 番目の入力が通過する条件] パラメーターと [しきい値] パラメーターを使用して、制御入力が 1 番目の入力を通過させる条件を指定します。

データ型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image

1 番目のデータ入力と 2 番目のデータ入力のどちらを出力に渡すかを決めるためにブロックが使用する制御信号。制御入力が [1 番目の入力が通過する条件] パラメーターで設定された条件に一致する場合は、ブロックは 1 番目のデータ入力を通過させます。そうでない場合、ブロックは 2 番目のデータ入力を通過させます。

データ型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image

2 つのデータ入力のうちの 2 番目。ブロックは、1 番目のデータ入力か 2 番目のデータ入力のいずれかを出力に伝播します。ブロックは、制御入力に基づいてどちらの入力を通過させるかを選択します。[1 番目の入力が通過する条件] パラメーターと [しきい値] パラメーターを使用して、制御入力が 1 番目または 2 番目の入力を通過させる条件を指定します。

データ型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image

出力

すべて展開する

制御信号の値に基づいて、1 番目または 2 番目のいずれかの入力信号から伝播された出力信号。

データ型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image

パラメーター

すべて展開する

メイン

ブロックが 1 番目のデータ入力を通過させる条件を選択します。制御入力が [1 番目の入力が通過する条件] パラメーターで設定された条件に一致する場合は、最初の入力が渡されます。そうでない場合、ブロックは入力 Port_3 からの 2 番目のデータ入力信号を通過させます。

[u2 >= しきい値]

制御入力がしきい値以上であるかどうかをチェックします。

[u2 > しきい値]

制御入力がしきい値よりも大きいかどうかをチェックします。

u2 ~= 0

制御入力がゼロ以外かどうかをチェックします。

メモ

Switch ブロックは、列挙データ型で [u2 ~= 0] モードをサポートしていません。

ヒント

制御入力が Boolean 信号の場合、次の条件としきい値の組み合わせのいずれかを使用してください。

  • u2 >= しきい値、1 に等しいしきい値

  • u2 > しきい値、0 に等しいしきい値

  • u2 ~= 0

それ以外の場合、Switch ブロックはしきい値を無視し、信号の経路指定にブール値を使用します。値が 1 の場合、最初の入力が渡され、0 の場合は 3 番目の入力が渡されます。この動作について説明した警告メッセージも MATLAB® コマンド ウィンドウに表示されます。

プログラムでの使用

ブロック パラメーター: Criteria
型: 文字ベクトル
値: 'u2 >= Threshold' | 'u2 > Threshold' | 'u2 ~= 0'
既定の設定: 'u2 > Threshold'

ブロックがどちらの入力を出力に渡すかを決定する [1 番目の入力が通過する条件] で使用されるしきい値を割り当てます。[しきい値] は、[出力の最小値] より大きく、[出力の最大値] より小さくなければなりません。

非スカラーのしきい値を指定するには、大かっこを使用します。たとえば、有効なエントリは以下のようになります。

  • [1 4 8 12]

  • [MyColors.Red, MyColors.Blue]

依存関係

[1 番目の入力が通過する条件][u2 ~= 0] に設定すると、このパラメーターは無効になります。

プログラムでの使用

ブロック パラメーター: Threshold
型: 文字ベクトル
値: スカラー
既定の設定: '0'

ゼロクロッシング検出を有効にする場合は選択します。詳細については、ゼロクロッシング検出を参照してください。

プログラムでの使用

ブロック パラメーター: ZeroCross
: 文字ベクトル | string
: 'off' | 'on'
既定の設定: 'on'

信号属性

データ属性の設定には [データ型アシスタント] が役立ちます。[データ型アシスタント] を使用するには、the Show data type assistant button をクリックします。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。

すべてのデータ入力が同じデータ型をもつようにします。

プログラムでの使用

ブロック パラメーター: InputSameDT
型: 文字ベクトル
値: 'off' | 'on'
既定の設定: 'off'

Simulink がチェックする出力範囲の下限値。

Simulink は、最小値を使って以下を行います。

メモ

[出力の最小値] により、実際の出力信号が飽和する (またはクリップされる) ことはありません。代わりに、Saturation ブロックを使用してください。

プログラムでの使用

ブロック パラメーター: OutMin
: 文字ベクトル
: '[ ]'| スカラー
既定の設定: '[ ]'

Simulink がチェックする出力範囲の上限値。

Simulink は、最大値を使って以下を行います。

メモ

[出力の最大値] により、実際の出力信号が飽和する (またはクリップされる) ことはありません。代わりに、Saturation ブロックを使用してください。

プログラムでの使用

ブロック パラメーター: OutMax
: 文字ベクトル
: '[ ]'| スカラー
既定の設定: '[ ]'

出力データ型を指定します。

継承: 内部ルールによる継承

出力データ型は次のルールを使用して決定されます。

最初の入力端子のデータ型出力データ型
3 つ目の入力端子より大きい正の範囲をもつ最初の入力端子から継承します
3 つ目の入力端子と同じ正の範囲をもつ3 つ目の入力端子から継承します
3 つ目の入力端子より小さい正の範囲をもつ
ブール値であり、3 つ目の入力端子が uint8 である
uint8 であり、3 つ目の入力端子がブール値である
ブール値であり、他は int8 であるブール値に設定されます
uint8 であり、他はブール値である
2 つの入力端子のデータ型出力データ型
一方の入力の型がブール値で、もう一方が uint8 である3 つ目のデータ端子のデータ型に設定されます
一方の入力がブール値で、もう一方が int8 であるブール値に設定されます
継承: 逆伝播による継承

駆動ブロックのデータ型を使用します。

継承: 1 番目の入力と同じ

1 番目のデータ入力端子のデータ型を使用します。

double

出力データ型が double になるように指定します。

single

出力データ型が single になるように指定します。

half

出力データ型が half になるように指定します。

int8

出力データ型が int8 になるように指定します。

uint8

出力データ型が uint8 になるように指定します。

int16

出力データ型が int16 になるように指定します。

uint16

出力データ型が uint16 になるように指定します。

int32

出力データ型が int32 になるように指定します。

uint32

出力データ型が uint32 になるように指定します。

int64

出力データ型が int64 になるように指定します。

uint64

出力データ型が uint64 になるように指定します。

fixdt(1,16,0)

出力データ型が固定小数点 fixdt(1,16,0) になるように指定します。

fixdt(1,16,2^0,0)

出力データ型が固定小数点 fixdt(1,16,2^0,0) になるように指定します。

Enum:<class name>

列挙データ型を使用します。たとえば、Enum: BasicColors などです。

Simulink.ImageType(480,640,3)

Computer Vision Toolbox™ がある場合は Simulink.ImageType (Computer Vision Toolbox) オブジェクトを使用します。

string

出力データ型が string になるように指定します。

<data type expression>

データ型オブジェクトを使用します。たとえば、Simulink.NumericType などです。

ヒント

出力が列挙型の場合、どちらのデータ入力も出力と同じ列挙型を使用しなければなりません。

プログラムでの使用

ブロック パラメーター: OutDataTypeStr
: 文字ベクトル
: 'Inherit: Inherit via internal rule | 'Inherit: Inherit via back propagation' | 'Inherit: Same as first input' | 'double' | 'single' | 'half' | 'int8' | 'uint8' | 'int16' | 'uint16', 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | Enum: <class name> | Simulink.ImageType(480,640,3) | 'string' | '<data type expression>'
既定の設定: 'Inherit: Inherit via internal rule'

このパラメーターを選択して、このブロックについて指定したデータ型を固定小数点ツールがオーバーライドするのを防止します。詳細については、出力データ型設定のロック (Fixed-Point Designer)を参照してください。

プログラムでの使用

ブロック パラメーター: LockScale
型: 文字ベクトル
値: 'off' | 'on'
既定の設定: 'off'

次のいずれかの丸めモードを選択します。

正方向

正の無限大方向に正負の値を丸めます。MATLAB 関数 ceil と等価です。

最も近い偶数方向

最も近い表現可能な値に数値を丸めます。同順位が発生した場合は、最も近い偶数の整数に丸めます。Fixed-Point Designer™ 関数 convergent と等価です。

負方向

負の無限大方向に正負の値を丸めます。MATLAB 関数 floor と等価です。

最も近い正の整数方向

最も近い表現可能な値に数値を丸めます。同順位が発生した場合は、正の無限大方向に丸めます。Fixed-Point Designer 関数 nearest と等価です。

最も近い整数方向

最も近い表現可能な値に数値を丸めます。同順位が発生した場合は、正の数値を正の無限大方向、負の数値を負の無限大方向に丸めます。Fixed-Point Designer 関数 round と等価です。

最も簡潔

下限値への丸めとゼロへの丸めのいずれかを自動的に選択し、できるだけ効率の高い丸めコードを生成します。

ゼロ方向

ゼロ方向に数値を丸めます。MATLAB 関数 fix と等価です。

プログラムでの使用

ブロック パラメーター: RndMeth
: 文字ベクトル
: 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'
既定の設定: 'Floor'

参考

詳細については、丸め (Fixed-Point Designer)を参照してください。

オーバーフローで飽和するかラップするかを指定します。

  • off — オーバーフローは、データ型によって表現される適切な値にラップされます。

    たとえば、数 130 は符号付き 8 ビット整数 1 つに収まりきらないので、-126 にラップされます。

  • on — オーバーフローは、データ型が表現できる最小値または最大値のいずれかに飽和します。

    たとえば、符号付き 8 ビット整数に関連付けられたオーバーフローは、-128 または 127 に飽和することができます。

ヒント

  • モデルでオーバーフローが発生する可能性があり、生成コードに飽和保護を明示的に組み込む必要があるときには、このチェック ボックスをオンにすることを検討してください。

  • 生成コードの効率を最適化する場合には、このチェック ボックスをオフにすることを検討してください。

    このチェック ボックスをオフにすると、ブロックが範囲外の信号を処理する方法を指定しすぎないようにする点でも役立ちます。詳細については、信号範囲のエラーのトラブルシューティングを参照してください。

  • このチェック ボックスをオンにすると、飽和は出力や結果だけでなく、このブロックの内部演算すべてに適用されます。

  • 通常、オーバーフローが可能ではない場合は、コード生成プロセスで検出されます。この場合、コード ジェネレーターでは飽和コードは生成されません。

プログラムでの使用

ブロック パラメーター: SaturateOnIntegerOverflow
型: 文字ベクトル
値: 'off' | 'on'
既定の設定: 'off'

異なるサイズの入力信号を許可するには、このチェック ボックスをオンにします。ブロックは、入力信号サイズを出力信号に伝播します。2 つのデータ入力が可変サイズ信号の場合、信号の最大サイズは等しくても、異なってもかまいません。

プログラムでの使用

ブロック パラメーター: AllowDiffInputSizes
型: 文字ベクトル
値: 'on' | 'off'
既定の設定: 'off'

ブロックの特性

データ型

Boolean | bus | double | enumerated | fixed point | half | integer | single | string

直達

はい

多次元信号

はい

可変サイズの信号

はい

ゼロクロッシング検出

はい

拡張機能

PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。

固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。

バージョン履歴

R2006a より前に導入