このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
Switch
2 番目の入力の値に基づいて 1 番目の入力と 3 番目の入力の間で出力を切り替え
ライブラリ:
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 番目の入力が渡されます。この場合、コンパイル時の後にブロック アイコンが変わり、それぞれ T
と F
を使用して 1 番目の入力と 3 番目の入力にラベルが付けられます。
サポートするデータ型
制御入力は、固定小数点型と列挙型を含む Simulink® がサポートする任意のデータ型にすることができます。制御入力を複素数にすることはできません。制御入力が列挙の場合、[しきい値] パラメーターは同じ列挙型の値でなければなりません。
データ入力は、Simulink がサポートする任意のデータ型にすることができます。一方のデータ入力が列挙型の場合、もう一方も同じ列挙型でなければなりません。
出力が列挙型の場合、どちらのデータ入力も出力と同じ列挙型を使用しなければなりません。
詳細については、Simulink でサポートされているデータ型を参照してください。
例
フォールトトレラント燃料制御システムのモデル化
この例では、Stateflow® を Simulink® と組み合わせてハイブリッド システムをモデル化する方法を示します。このタイプのモデル化は、離散イベントに基づいて多数の可能な動作モードをもつシステムに対して特に便利です。従来の信号の流れが Simulink で処理されるのに対して、制御設定の変更は Stateflow で実装されます。この例で説明するモデルでは、ガソリン エンジンの燃料制御システムを表します。このシステムは、個々のセンサーの故障が検出され、制御システムが連続稼働用に動的に再設定されるという点で堅牢です。
正確なゼロクロッシング検出
この例では、Simulink® でのゼロクロッシングが機能する方法を示します。このモデルでは、3 つのシフトした正弦波が Absolute Value ブロックと Saturation ブロックに与えられます。ちょうど t = 5 で、Switch ブロックの出力は Absolute Value ブロックから Saturation ブロックに変わります。Simulink では、Switch ブロックの出力が変わる厳密なタイミングがゼロクロッシングによって自動的に検出され、ソルバーは、イベントが起こる厳密な時間に進みます。このことは、スコープで出力を調べるとわかります。
端子
入力
Port_1 — 1 番目のデータ入力信号
スカラー | ベクトル
2 つのデータ入力のうち 1 番目。ブロックは、1 番目のデータ入力か 2 番目のデータ入力のいずれかを出力に伝播します。ブロックは、制御入力に基づいてどちらの入力を通過させるかを選択します。[1 番目の入力が通過する条件] パラメーターと [しきい値] パラメーターを使用して、制御入力が 1 番目の入力を通過させる条件を指定します。
データ型: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| image
Port_2 — 制御入力信号
スカラー | ベクトル
1 番目のデータ入力と 2 番目のデータ入力のどちらを出力に渡すかを決めるためにブロックが使用する制御信号。制御入力が [1 番目の入力が通過する条件] パラメーターで設定された条件に一致する場合は、ブロックは 1 番目のデータ入力を通過させます。そうでない場合、ブロックは 2 番目のデータ入力を通過させます。
データ型: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| image
Port_3 — 2 番目のデータ入力信号
スカラー | ベクトル
2 つのデータ入力のうちの 2 番目。ブロックは、1 番目のデータ入力か 2 番目のデータ入力のいずれかを出力に伝播します。ブロックは、制御入力に基づいてどちらの入力を通過させるかを選択します。[1 番目の入力が通過する条件] パラメーターと [しきい値] パラメーターを使用して、制御入力が 1 番目または 2 番目の入力を通過させる条件を指定します。
データ型: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| image
出力
Port_1 — 出力信号
スカラー | ベクトル
制御信号の値に基づいて、1 番目または 2 番目のいずれかの入力信号から伝播された出力信号。
データ型: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| image
パラメーター
メイン
1 番目の入力が通過する条件 — 1 番目のデータ入力を通過させる選択条件
[u2 > しきい値]
(既定値) | [u2 >= しきい値]
| u2 ~= 0
ブロックが 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' |
しきい値 — 条件で使用されるしきい値
0
(既定値) | scalar
ブロックがどちらの入力を出力に渡すかを決定する [1 番目の入力が通過する条件] で使用されるしきい値を割り当てます。[しきい値] は、[出力の最小値] より大きく、[出力の最大値] より小さくなければなりません。
非スカラーのしきい値を指定するには、大かっこを使用します。たとえば、有効なエントリは以下のようになります。
[1 4 8 12]
[MyColors.Red, MyColors.Blue]
依存関係
[1 番目の入力が通過する条件] を [u2 ~= 0]
に設定すると、このパラメーターは無効になります。
プログラムでの使用
ブロック パラメーター: Threshold |
型: 文字ベクトル |
値: スカラー |
既定の設定: '0'
|
ゼロクロッシング検出を有効にする — ゼロクロッシング検出を有効にする
on
(既定値) | off
ゼロクロッシング検出を有効にする場合は選択します。詳細については、ゼロクロッシング検出を参照してください。
プログラムでの使用
ブロック パラメーター: ZeroCross |
型: 文字ベクトル | string |
値: 'off' | 'on' |
既定の設定: 'on' |
信号属性
データ属性の設定には [データ型アシスタント] が役立ちます。[データ型アシスタント] を使用するには、 をクリックします。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。
すべてのデータ端子入力が同じデータ型をもつ — データ端子が同じデータ型をもつようにします。
off
(既定値) | on
すべてのデータ入力が同じデータ型をもつようにします。
プログラムでの使用
ブロック パラメーター: InputSameDT |
型: 文字ベクトル |
値: 'off' | 'on' |
既定の設定: 'off' |
出力の最小値 — 範囲チェックの最小出力値
[]
(既定値) | スカラー
Simulink がチェックする出力範囲の下限値。
Simulink は、最小値を使って以下を行います。
一部のブロックに対するパラメーター範囲のチェック (ブロック パラメーターの最小値と最大値の指定を参照)
シミュレーション範囲のチェック (信号範囲の指定およびシミュレーション範囲のチェックの有効化を参照)
固定小数点データ型の自動スケーリング
モデルから生成するコードの最適化。この最適化により、アルゴリズム コードが削除され、SIL やエクスターナル モードなどの一部のシミュレーション モードの結果に影響を与えることがあります。詳細については、Optimize using the specified minimum and maximum values (Embedded Coder)を参照してください。
メモ
[出力の最小値] により、実際の出力信号が飽和する (またはクリップされる) ことはありません。代わりに、Saturation ブロックを使用してください。
プログラムでの使用
ブロック パラメーター: OutMin |
型: 文字ベクトル |
値: '[ ]' | スカラー |
既定の設定: '[ ]' |
出力の最大値 — 範囲チェックの最大出力値
[]
(既定値) | スカラー
Simulink がチェックする出力範囲の上限値。
Simulink は、最大値を使って以下を行います。
一部のブロックに対するパラメーター範囲のチェック (ブロック パラメーターの最小値と最大値の指定を参照)
シミュレーション範囲のチェック (信号範囲の指定およびシミュレーション範囲のチェックの有効化を参照)
固定小数点データ型の自動スケーリング
モデルから生成するコードの最適化。この最適化により、アルゴリズム コードが削除され、SIL やエクスターナル モードなどの一部のシミュレーション モードの結果に影響を与えることがあります。詳細については、Optimize using the specified minimum and maximum values (Embedded Coder)を参照してください。
メモ
[出力の最大値] により、実際の出力信号が飽和する (またはクリップされる) ことはありません。代わりに、Saturation ブロックを使用してください。
プログラムでの使用
ブロック パラメーター: OutMax |
型: 文字ベクトル |
値: '[ ]' | スカラー |
既定の設定: '[ ]' |
出力データ型 — 出力データ型
継承: 内部ルールによる継承
(既定値) | 継承: 逆伝播による継承
| 継承: 1 番目の入力と同じ
| double
| single
| half
| int8
| uint8
| int16
| uint16
| int32
| uint32
| int64
| uint64
| fixdt(1,16)
| fixdt(1,16,0)
| fixdt(1,16,2^0,0)
| string
| Enum:<class name>
| <data type expression>
| Simulink.ImageType(480,640,3)
出力データ型を指定します。
-
継承: 内部ルールによる継承
出力データ型は次のルールを使用して決定されます。
最初の入力端子のデータ型 出力データ型 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' |
固定小数点ツールによる変更に対してデータ型の設定をロックする — 固定小数点ツールがデータ型をオーバーライドするのを防止
off
(既定値) | on
このパラメーターを選択して、このブロックについて指定したデータ型を固定小数点ツールがオーバーライドするのを防止します。詳細については、出力データ型設定のロック (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
(既定値) | on
オーバーフローで飽和するかラップするかを指定します。
off
— オーバーフローは、データ型によって表現される適切な値にラップされます。たとえば、数 130 は符号付き 8 ビット整数 1 つに収まりきらないので、-126 にラップされます。
on
— オーバーフローは、データ型が表現できる最小値または最大値のいずれかに飽和します。たとえば、符号付き 8 ビット整数に関連付けられたオーバーフローは、-128 または 127 に飽和することができます。
ヒント
モデルでオーバーフローが発生する可能性があり、生成コードに飽和保護を明示的に組み込む必要があるときには、このチェック ボックスをオンにすることを検討してください。
生成コードの効率を最適化する場合には、このチェック ボックスをオフにすることを検討してください。
このチェック ボックスをオフにすると、ブロックが範囲外の信号を処理する方法を指定しすぎないようにする点でも役立ちます。詳細については、信号範囲のエラーのトラブルシューティングを参照してください。
このチェック ボックスをオンにすると、飽和は出力や結果だけでなく、このブロックの内部演算すべてに適用されます。
通常、オーバーフローが可能ではない場合は、コード生成プロセスで検出されます。この場合、コード ジェネレーターでは飽和コードは生成されません。
プログラムでの使用
ブロック パラメーター: SaturateOnIntegerOverflow |
型: 文字ベクトル |
値: 'off' | 'on' |
既定の設定: 'off' |
異なるデータの入力サイズを許可する — 異なるデータの入力サイズを許可する
off
(既定値) | on
異なるサイズの入力信号を許可するには、このチェック ボックスをオンにします。ブロックは、入力信号サイズを出力信号に伝播します。2 つのデータ入力が可変サイズ信号の場合、信号の最大サイズは等しくても、異なってもかまいません。
プログラムでの使用
ブロック パラメーター: AllowDiffInputSizes
|
型: 文字ベクトル |
値: 'on' | 'off' |
既定の設定: 'off'
|
ブロックの特性
データ型 |
|
直達 |
|
多次元信号 |
|
可変サイズの信号 |
|
ゼロクロッシング検出 |
|
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
生成されたコードは、ある条件の下で、関数 memcpy
または関数 memset
(string.h) に依存します。
HDL コード生成
HDL Coder™ を使用して FPGA 設計および ASIC 設計のための VHDL、Verilog および SystemVerilog のコードを生成します。
HDL Coder™ には、HDL の実装および合成されたロジックに影響する追加のコンフィギュレーション オプションがあります。
このブロックには 1 つの既定の HDL アーキテクチャがあります。
ConstrainedOutputPipeline | 既存の遅延を設計内で移動することによって出力に配置するレジスタの数。分散型パイプラインではこれらのレジスタは再分散されません。既定の設定は |
InputPipeline | 生成されたコードに挿入する入力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
OutputPipeline | 生成されたコードに挿入する出力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
このブロックは、複素信号のコード生成をサポートしています。
PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。
固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)