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

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

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

Switch

2 番目の入力の値に応じて、最初の入力と 3 番目の入力の出力を切り替える

ライブラリ

Signal Routing

説明

ブロック入力のタイプ

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

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

データ入力の制限

ブロックのダイアログ ボックスで [異なるデータの入力サイズを許可する] を選択すると、サイズが異なる 2 つのデータ入力を使用することができます。ただし、このブロックは可変サイズの入力信号をサポートしていません。したがって、シミュレーション時に各入力のサイズを変更させることはできません。

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

ブロック アイコンの外観

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

ブロックの向きに関する端子の順番の詳細は、Simulink® ドキュメンテーションの「ブロックの回転方法」を参照してください。

Boolean 制御入力のブロックの動作

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

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

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

  • u2 ~=0

それ以外の場合、Switch ブロックはしきい値を無視し、信号ルーティングに Boolean 入力を使用します。制御入力が 1 の場合、最初の入力が渡され、制御入力が 0 の場合は 3 番目の入力が渡されます。この場合、ブロック アイコンがコンパイル後に変化し、TF を使用して最初の入力と 3 番目の入力にそれぞれラベルを付けます。

サポートするデータ型

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

データ入力には、Simulink がサポートする任意のデータ型を使用できます。1 つのデータ入力が列挙型である場合は、その他の信号は、同じ列挙型でなければなりません。

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

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

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

[Switch ブロック] ダイアログ ボックスの [メイン] ペインは次のように表示されます。

[Switch ブロック] ダイアログ ボックスの [信号属性] ペインは、次のように表示されます。

1 番目の入力が通過する条件

ブロックが最初の入力を渡す条件を選択します。制御入力が [1 番目の入力が通過する条件] パラメーターで設定された条件に一致する場合は、最初の入力が渡されます。それ以外の場合は、3 番目の入力が渡されます。

設定

既定の設定: [u2 >= しきい値]

[u2 >= しきい値]

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

[u2 > しきい値]

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

[u2 ~=0]

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

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

ヒント

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

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

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

  • u2 ~=0

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

依存関係

[u2 ~=0] を選択すると [しきい値] パラメーターが無効になります。

コマンド ライン情報

ブロック固有のパラメーター」を参照してください。

しきい値

どの入力を出力に渡すかを決定する switch しきい値を指定します。

設定

既定の設定: 0

最小値: [出力の最小値] パラメーターの値

最大値: [出力の最大値] パラメーターの値

ヒント

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

  • [1 4 8 12]

  • [MyColors.Red, MyColors.Blue]

依存関係

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

コマンド ライン情報

ブロック固有のパラメーター」を参照してください。

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

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

設定

既定の設定: オン

オン

ゼロクロッシング検出を有効にします。

オフ

ゼロクロッシング検出を無効にします。

コマンド ライン情報

コマンド ライン情報は、「ブロック固有のパラメーター」を参照してください。

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

サンプル時間の離散間隔を入力します。あるいは、連続または継承などの他の適切なサンプル時間を指定します。

設定

既定の設定: -1

既定の設定では、ブロックはモデル内の前後関係に基づいてサンプル時間を継承します。他のサンプル時間を設定するには、「サンプル時間のタイプ」の表に基づいて有効なサンプル時間を入力します。

詳細は、オンライン ドキュメンテーションの「 サンプル時間の指定」を参照してください。

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

すべてのデータ端子入力が同じデータ型をもつ

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

設定

既定の設定: オフ

[オン]

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

[オフ]

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

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

固定小数点ツールによる変更に対して出力データ型の設定をロックする

固定小数点ツールや固定小数点アドバイザーによる変更を避けるために、このブロックの出力データ型の設定をロックします。

設定

既定の設定: オフ

オン

このブロックの出力データ型設定をロックします。

オフ

固定小数点ツールや固定小数点アドバイザーがこのブロックの出力データ型の設定を変更できます。

コマンド ライン情報

コマンド ライン情報は、「ブロック固有のパラメーター」を参照してください。

参考

詳細は、「[出力データ型の設定をロックする] の使用」を参照してください。

整数丸めモード

固定小数点演算の丸めモードを指定します。

設定

既定の設定: 負の方向 (Floor)

正方向の丸め

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

最も近い偶数方向の丸め

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

負の方向 (Floor)

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

最も近い整数方向の丸め

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

整数方向の丸め

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

シンプルな丸め

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

ゼロの方向 (Zero)

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

コマンド ライン情報

コマンド ライン情報は、「ブロック固有のパラメーター」を参照してください。

参考

詳細は、Fixed-Point Designer ドキュメンテーション「丸め」を参照してください。

整数オーバーフローで飽和

オーバーフローで飽和するかどうかを指定します。

設定

既定の設定: オフ

オン

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

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

オフ

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

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

ヒント

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

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

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

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

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

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

異なるデータの入力サイズを許可する

異なるサイズの入力信号を許可するには、このチェック ボックスをオンにします。

設定

既定の設定: オフ

[オン]

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

[オフ]

入力信号は同じサイズでなければなりません。

コマンド ライン情報

パラメーター: AllowDiffInputSize
タイプ: 文字列
値: 'on' | 'off'
既定の設定: 'off'

出力の最小値

ブロックが出力する最小値を指定します。

設定

既定の設定: []

既定値は [] (指定なし) です。

Simulink は、以下を行う際にこの値を使用します。

ヒント

この数値は有限の実数で double のスカラー値でなければなりません。

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

出力の最大値

ブロックが出力する最大値を指定します。

設定

既定の設定: []

既定値は [] (指定なし) です。

Simulink は、以下を行う際にこの値を使用します。

ヒント

この数値は有限の実数で double のスカラー値でなければなりません。

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

出力データ型

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

設定

既定の設定: [継承: 内部ルールによる継承

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

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

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

[継承: 逆伝播による継承]

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

[double]

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

[single]

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

[int8]

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

[uint8]

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

[int16]

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

[uint16]

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

[int32]

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

[uint32]

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

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

ヒント

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

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

参考

詳細は、「ブロックの出力データ型の指定」を参照してください。

モード

指定するデータのカテゴリを選択します。

設定

既定の設定: [継承]

[継承]

データ型の継承規則を指定します。[継承] を選択すると、値のリストが有効になります。

  • Inherit via internal rule (既定)

  • Inherit via back propagation

組み込み

組み込みデータ型を指定します。[組み込み] を選択すると、値のリストが有効になります。

  • double (既定の設定)

  • single

  • int8

  • uint8

  • int16

  • uint16

  • int32

  • uint32

[固定小数点]

固定小数点データ型を指定します。

[列挙型]

列挙型データを指定します。[列挙型] を選択すると、クラス名を入力できます。

[式]

データ型を評価する式を指定します。[] を選択すると、式を入力できます。

依存関係

[データ型アシスタントを表示] ボタンをクリックすると、このパラメーターが有効になります。

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

参考

「データ型アシスタントを利用したデータ型の指定」を参照してください。

データ型のオーバーライド

この信号のデータ型オーバーライド モードを指定します。

設定

既定の設定: [継承]

[継承]

コンテキストからデータ型オーバーライド設定を継承します。コンテキストとはブロックのことで、信号を使用している Simulink の Simulink.Signal オブジェクトまたは Stateflow® チャートです。

[オフ]

コンテキストのデータ型オーバーライド設定を無視し、信号に対して指定された固定小数点データ型を使用します。

ヒント

個々のデータ型に対してデータ型オーバーライドをオフにする機能により、データ型オーバーライドを適用する際に、モデル内のデータ型をさらに効果的に制御できます。たとえば、このオプションを使用すると、データ型オーバーライド設定にかかわらず、データ型が下流ブロックの要件を満たすことを確認できます。

依存関係

このパラメーターは、[モード][組み込み] または [固定小数点] の場合にのみ表示されます。

符号付き/なし

固定小数点データを符号付きにするか、符号なしにするかを指定します。

設定

既定の設定: [符号付き]

[符号付き]

符号付き固定小数点データを指定します。

[符号なし]

符号なし固定小数点データを指定します。

依存関係

[モード][固定小数点] を選択すると、このパラメーターが有効になります。

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

参考

「固定小数点データ型の指定」を参照してください。

語長

量子化された整数をもつ語のビット サイズを指定します。

設定

既定の設定: 16

最小値: 0

最大値: 32

長い語長は短い語長に比べてよい精度で大きな値を表します。

依存関係

[モード][固定小数点] を選択すると、このパラメーターが有効になります。

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

スケーリング

オーバーフローを避け、量子化エラーを最小限に抑えるための固定小数点データのスケーリング方法を指定します。

設定

既定の設定: [最高精度]

[2 進小数点]

2 進小数点の位置を指定します。

[勾配とバイアス]

勾配とバイアスを入力します。

[最高精度]

最高精度値を指定します。

依存関係

[モード][固定小数点] を選択すると、このパラメーターが有効になります。

[2 進小数点] を選択すると、以下が有効になります。

  • [小数部の長さ]

  • [最高精度のスケーリングを計算]

[勾配とバイアス] を選択すると、以下が有効になります。

  • [勾配]

  • [バイアス]

  • [最高精度のスケーリングを計算]

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

小数部の長さ

固定小数点データ型の小数部の長さを指定します。

設定

既定の設定: 0

2 進小数点は正または負の整数になります。

依存関係

[スケーリング][2 進小数点] を選択すると、このパラメーターが有効になります。

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

勾配

固定小数点データ型の勾配を指定します。

設定

既定の設定: 2^0

任意の正の実数を指定します。

依存関係

[スケーリング][勾配とバイアス] を選択すると、このパラメーターが有効になります。

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

バイアス

固定小数点データ型のバイアスを指定します。

設定

既定の設定: 0

任意の実数を指定します。

依存関係

[スケーリング][勾配とバイアス] を選択すると、このパラメーターが有効になります。

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

バス サポート

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

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

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

個々の信号またはバスの中のすべての信号のサンプル時間の変更に Rate Transition ブロックを使用できます。詳細は、「合成信号」「バス対応ブロック」を参照してください。

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

制御端子への Boolean 入力の使用

sldemo_fuelsyssldemo_fuelsys モデルでは、fuel_rate_control/airflow_calc サブシステムは Switch ブロックを使用します。

Switch ブロックの制御端子の値は、フィードバックの修正が行われるかどうかを判定します。制御端子の値は、Logical Operator ブロックの出力により異なります。

Logical Operator ブロックの出力Switch ブロックの制御端子フィードバック端子
TRUE1発生する
FALSE0発生しない

制御端子へのシミュレーション時間の使用

sldemo_zeroxingsldemo_zeroxing モデルは、Switch ブロックを使用します。

Switch ブロックの制御端子の値は、出力が最初の入力から 3 番目の入力に変化するタイミングを決定します。

シミュレーション時間Switch ブロックの出力
5 以下Abs ブロックからの最初の入力
5 より大きいSaturation ブロックからの 3 番目の入力

特性

バス機能

あり、制約付き

直接フィードスルー

あり

サンプル時間

[サンプル時間] パラメーターで指定

スカラー拡張

あり

離散化

あり

多次元化

あり

ゼロクロッシング検出

有効な場合、あり

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