メインコンテンツ

If

if-else ステートメントに類似したロジックを使用してサブシステムの実行を選択する

  • If block

ライブラリ:
Simulink / Ports & Subsystems

説明

If ブロックは、Action Port ブロックを含む If Action Subsystem ブロックと同様に、if-else ロジックを実装してサブシステムの実行を制御します。If ブロックを使用する例については、選択サブシステムの実行を参照してください。

Model ex_if_block

制限

If ブロックには次の制限があります。

  • 調整可能なパラメーターをサポートしません。if 式または elseif 式の値は、通常モードまたはアクセラレータ モードでのシミュレーション中、または生成コードの実行時に調整することはできません。

    調整可能な if-else 式を実装するには、その式を If ブロックの外で調整するようにしてください。たとえば、Relational Operator ブロックを使用して If ブロックの外部で式を評価します。または、If ブロックへの入力として、調整可能なパラメーターを追加します。

  • カスタム ストレージ クラスをサポートしません。Struct ストレージ クラスを使用してパラメーター データを構造体に整理する (Embedded Coder)を参照してください。

  • if 式および elseif 式では、+-*/ などの特定の演算子は受け入れられません。

端子

入力

すべて展開する

入力 u1,u2,...,un は同じデータ型でなければなりません。入力は、列挙型のような、ユーザー定義のタイプにはできません。

If ブロックは、固定小数点データ型を直接的にはサポートしません。ただし、この制限を解決するために、Compare To Constant ブロックを使用することができます。選択サブシステムの実行の固定小数点データ型のサポートを参照してください。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean

出力

すべて展開する

ifelse および elseif 端子からの出力は If Action Subsystem ブロックに対するアクション信号です。

パラメーター

すべて展開する

1

1 つの入力端子を指定します。

整数

入力端子の数を指定します。ブロック端子には文字 'u' の後に番号 1,2,...,n が続くラベルが付けられます。n は、指定した入力数です。

プログラムでの使用

ブロック パラメーター: NumInputs
: 文字ベクトル
: '1' | 引用符で囲んだ整数
既定の設定: '1'

if 端子とすべての elseif 端子の式が false である場合、else 端子はアクション信号を送信し、接続された If Action Subsystem ブロックを実行します。

オン

else 端子を表示します。

オフ

else 端子を表示しません。

プログラムでの使用

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

ゼロクロッシング検出を制御します。

オン

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

オフ

ゼロクロッシングを検出しません。

プログラムでの使用

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

R2025a 以降

このパラメーターを選択すると、If ブロックから生成されるコードに必ず if-else ステートメントだけが含まれるようになります。

オン

生成コードに if-else ステートメントだけが含まれます。このオプションにより、switch-case ステートメントは生成コードに含まれなくなります。

オフ

このパラメーターがオフの場合、If ブロックから生成されるコードに switch-case ステートメントが含まれることがあります。このステートメントは If ブロックと同じ演算を実行します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

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

if 端子に接続された If Action Subsystem ブロックは、関連付けられた if 式が true になる場合に実行されます。

u1 > 0

入力 u10 より大きい場合に出力端子のアクション信号を送信することを指定します。

論理式

メモ

R2025a 以降、[if] の既定の式 (u1 > 0) の編集には [式] テーブルを使用します。入力と演算子が複数ある複雑な式の場合は、[if] の式を選択し、それを [式エディター] ボックスで編集します。

R2025a より前のバージョンでは、このパラメーターは [If expressions] としてブロック ダイアログ ボックスに表示されます。このパラメーターを使用して論理式を指定できます。

ただし、Simulink® のいずれのバージョンでも、if 出力端子に隣接する If ブロックにこの式が表示されます。

式に含めることができる演算子は <, <=, ==, ~=, >, >=, &, |, ~, () , unary-minus だけです。+, -, *, /^ などの演算子は許可されません。この式は、たとえば int8(6) などのデータ型式を含むことはできません。また、データ型が double または single 以外のいずれかであるワークスペース変数を参照することはできません。

プログラムでの使用

ブロック パラメーター: IfExpression
: 文字ベクトル
: 'u1 > 0' | 引用符で囲んだ論理式
既定の設定: 'u1 > 0'

elseif 端子に接続された If Action Subsystem ブロックは、関連付けられた elseif 式が true になり、他のすべての if 式と elseif 式が false の場合に実行されます。

論理式は指定されません。

論理式のリスト

メモ

R2025a 以降、[elseif] の式の追加や編集には [式] テーブルを使用します。式を追加、削除、移動するには、テーブルの左にあるアクション ボタンを使用します。テーブルでは、[elseif] の各式をコンマ区切りのリストとしてではなく個別に記述し、モデル化の要件に応じて式を整理できます。入力と演算子が複数ある複雑な式の場合は、[elseif] の式を含む行を選択し、それを [式エディター] ボックスで編集します。

R2025a より前のバージョンでは、このパラメーターは [Else expressions] としてブロック ダイアログ ボックスに表示されます。それらのバージョンでは、コンマで区切られた論理式のリストを指定します。

ただし、Simulink のいずれのバージョンでも、[else 条件の表示] チェック ボックスをオンにすると、If ブロックの if 端子の下および else 端子の上に式が表示されます。

式に含めることができる演算子は <, <=, ==, ~=, >, >=, &, |, ~, (), unary-minus だけです。+, -, *, /^ などの演算子は許可されません。この式は、たとえば int8(6) などのデータ型式を含むことはできません。また、データ型が double または single 以外のいずれかであるワークスペース変数を参照することはできません。

プログラムでの使用

ブロック パラメーター: ElseIfExpressions
: 文字ベクトル
: '' | 引用符で囲んだ論理式のコンマ区切りのリスト
既定の設定: ''

ブロックの特性

データ型

Boolean | double | integer | single

直達

はい

多次元信号

いいえ

可変サイズの信号

いいえ

ゼロクロッシング検出

はい

拡張機能

すべて展開する

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2006a より前に導入

すべて展開する