Contenido principal

If

Seleccione la ejecución del subsistema usando una lógica similar a la instrucción if-else

  • If block

Bibliotecas:
Simulink / Ports & Subsystems

Descripción

El bloque If, junto con los bloques If Action Subsystem que contienen un bloque Action Port, implementa la lógica if-else para controlar la ejecución de un subsistema. Para ver un ejemplo que usa el bloque If, consulte Select Subsystem Execution.

Model ex_if_block

Ejemplos

Limitaciones

El bloque If tiene las siguientes limitaciones:

  • No admite parámetros ajustables. Los valores para una expresión if o elseif no pueden ajustarse durante una simulación en modo normal, modo Accelerator, o mientras se ejecuta código generado.

    Para implementar expresiones ajustables if-else, ajuste la expresión fuera del bloque If. Por ejemplo, use el bloque Relational Operator para evaluar la expresión fuera del bloque If o añada los parámetros ajustables como una entrada al bloque If.

  • No se admiten clases de almacenamiento personalizadas. Consulte Organize Parameter Data into a Structure by Using Struct Storage Class (Embedded Coder).

  • Las expresiones if y elseif no aceptan los operadores +, -, * y /.

Puertos

Entrada

expandir todo

Las entradas u1,u2,...,un deben tener el mismo tipo de datos. Las entradas no pueden ser de cualquier tipo de usuario definido, como un tipo enumerado.

El bloque If no admite tipos de datos de punto fijo directamente. Sin embargo, puede utilizar el bloque Compare To Constant para resolver esta limitación. Consulte Soporte para tipo de datos de punto fijo en Select Subsystem Execution.

Tipos de datos: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean

Salida

expandir todo

Las salidas de los puertos if, else y elseif son señales de acción para los bloques If Action Subsystem.

Parámetros

expandir todo

1

Especifique un puerto de entrada.

entero

Especifique el número de puertos de entrada. Los puertos de bloques están etiquetados con un carácter 'u' seguido de un número, 1,2,...,n, donde n es igual al número de entradas que especifique.

Uso programático

Parámetro de bloque: NumInputs
Tipo: vector de caracteres
Valores: '1' | entero entre comillas
Predeterminado: '1'

Cuando el puerto if y todas las expresiones de puerto elseif son false, el puerto else envía una señal de acción para ejecutar el bloque adjunto If Action Subsystem.

activado

Muestra el puerto else.

desactivado

Oculta el puerto else.

Uso programático

Parámetro de bloque: ShowElse
Tipo: vector de caracteres
Valores: 'on' | 'off'
Predeterminado: 'on'

Control de detección de cruces por cero.

activado

Detecta cruces por cero.

desactivado

No detecta cruces por cero.

Uso programático

Parámetro de bloque: ZeroCross
Tipo: vector de caracteres
Valores: 'on' | 'off'
Predeterminado: 'on'

Desde R2025a

Seleccione este parámetro para garantizar que solo las instrucciones if-else se incluyan en el código generado a partir de un bloque If .

activado

Solo las instrucciones if-else se incluyen en el código generado. Esta opción evita que se incluyan instrucciones switch-case en el código generado.

desactivado

Cuando este parámetro está desactivado, el código generado a partir de un bloque If puede contener instrucciones switch-case, que realizan las mismas operaciones que el bloque If.

Uso programático

Para establecer el valor del parámetro de bloque de forma programática, use la función set_param.

Parámetro de bloque: EnsureIfElseCode
Tipo: vector de caracteres
Valores: 'on' | 'off'
Predeterminado: 'off'

El bloque If Action Subsystem adjunto al puerto if se ejecuta cuando la expresión if asociada se evalúa como true.

u1 > 0

Especifíquela enviando una señal de acción en el puerto de salida cuando la entrada u1 sea mayor que 0.

expresión lógica

Nota

A partir de la versión R2025a, utilice la tabla Expressions para evitar la expresión if predeterminada (u1 > 0). Para obtener una expresión compleja con múltiples entradas y operadores, seleccione la expresión if y edítela en el cuadro Expression editor.

Para versiones anteriores a R2025a, este parámetro aparece como If expressions en el cuadro de diálogo del bloque. Puede especificar expresiones lógicas con este parámetro.

No obstante, en todas las versiones de Simulink®, esta expresión aparece en el bloque If adyacente al puerto de salida if.

La expresión solo puede incluir los operadores <, <=, ==, ~=, >, >=, &, |, ~, () y unary-minus. Los operadores +, -, *, / o ^ no están permitidos. La expresión no puede contener expresiones de tipo de datos, como int8(6), y no debe hacer referencia a variables de áreas de trabajo cuyo tipo de datos es distinto de double o single.

Uso programático

Parámetro de bloque: IfExpression
Tipo: vector de caracteres
Valores: 'u1 > 0' | expresión lógica entre comillas
Predeterminado: 'u1 > 0'

El bloque If Action Subsystem adjunto a un puerto elseif se ejecuta cuando la expresión elseif asociada se evalúa como true y el resto de expresiones if y elseif son falsas.

vacío

Expresiones lógicas no especificadas.

lista de expresiones lógicas

Nota

A partir de la versión R2025a, para añadir y editar expresiones elseif, utilice la tabla Expressions. Use los botones de acción a la izquierda de la tabla para añadir, eliminar y mover las expresiones. La tabla permite escribir cada expresión elseif por separado en lugar de en una lista separada por comas y organizar las expresiones según los requisitos de modelado. Para obtener una expresión compleja con múltiples entradas y operadores, seleccione la fila que contiene esa expresión elseif y edítela en el cuadro Expression editor.

Para versiones anteriores a R2025a, este parámetro aparece como Else expressions en el cuadro de diálogo del bloque. En esas versiones, especifique una lista de expresiones lógicas separadas por comas.

No obstante, en todas las versiones de Simulink, las expresiones aparecen en el bloque If debajo del puerto if y por encima del puerto else cuando selecciona la casilla Show else condition.

Las expresiones solo pueden incluir los operadores <, <=, ==, ~=, >, >=, &, |, ~, () y unary-minus. Los operadores +, -, *, / o ^ no están permitidos. Las expresiones no deben contener expresiones de tipo de datos, como int8(6), y no deben hacer referencia a variables de áreas de trabajo cuyo tipo de datos es distinto de double o single.

Uso programático

Parámetro de bloque: ElseIfExpressions
Tipo: vector de caracteres
Valores: '' | lista de expresiones lógicas separadas por comas entre comillas
Predeterminado: ''

Características del bloque

Tipos de datos

Boolean | double | integer | single

Paso directo

Señales multidimensionales

no

Señales de tamaño variable

no

Detección de cruce por cero

Capacidades ampliadas

expandir todo

Generación de código C/C++
Genere código C y C++ mediante Simulink® Coder™.

Historial de versiones

Introducido antes de R2006a

expandir todo