ドキュメンテーション

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

Switch

複数の信号を単一の信号に結合

  • ライブラリ:
  • Simulink / Commonly Used Blocks

    Simulink / Signal Routing

    HDL Coder / Commonly Used Blocks

    HDL Coder / Signal Routing

説明

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

バス サポート

Switch ブロックは、バス対応ブロックです。データ入力はバーチャルまたは非バーチャルなバス信号で以下の制約があります。

  • すべてのバスは等価である (すべての要素について同じ階層で、同名および同じ属性をもつ) 必要があります。

  • Switch ブロックの非バーチャル バス入力のすべての信号で同じサンプル時間を使用する必要があります。この必要条件は、関連したバス オブジェクトで継承サンプル時間が指定されていても保持されます。

Rate Transition ブロックを使って個々の信号のサンプル時間、またはバス内のすべての信号のサンプル時間を変更することができます。詳細については、バス信号サンプル時間の指定およびバス対応ブロックを参照してください。

バス配列を Switch ブロックの入力信号として使用できます。バス配列の定義と使用方法の詳細は、バス配列へのバスの統合を参照してください。バス配列を使用する場合は、[しきい値] パラメーターにスカラー値を設定します。

制限

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

端子

入力

すべて展開する

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

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

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

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

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

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

出力

すべて展開する

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

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

パラメーター

すべて展開する

メイン

ブロックが 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
型: 文字ベクトル
値: 'off' | 'on'
既定の設定: 'off'

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

プログラムでの使用

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

Signal Attributes

[データ型アシスタントを表示] ボタン をクリックして、データ型の属性の設定に役立つ [データ型アシスタント] を表示します。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。

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

プログラムでの使用

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

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

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

メモ

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

プログラムでの使用

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

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

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

メモ

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

プログラムでの使用

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

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

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

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

最初の入力端子のデータ型出力データ型
3 つ目の入力端子より大きい正の範囲をもつ最初の入力端子から継承します
3 つ目の入力端子と同じ正の範囲をもつ3 つ目の入力端子から継承します
3 つ目の入力端子より小さい正の範囲をもつ
継承: 逆伝播による継承

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

double

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

single

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

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 などです。

<data type expression>

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

ヒント

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

プログラムでの使用

ブロック パラメーター: OutDataTypeStr
: 文字ベクトル
: 'Inherit: Inherit via internal rule | 'Inherit: Inherit via back propagation' | 'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16''int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | Enum: <class name> | '<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 | integer | single | string

直接フィードスルー

はい

多次元信号

はい

可変サイズの信号

はい

ゼロクロッシング検出

はい

拡張機能

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

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

R2006a より前に導入