Main Content

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

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 expression y Elseif expressions no aceptan algunos de los operadores, como +, -, * o /.

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.

El bloque If no admite un tipo de datos booleanos. Si desea introducir una señal booleana en un bloque If, convierta la señal en un tipo entero con el bloque Data Type Conversion.

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

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' | '<integer>'
Predeterminado: '1'

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

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

Especifique una expresión lógica. Esta expresión aparece en el bloque If adyacente al puerto de salida if.

La expresión solo puede incluir los operadores <, <=, ==, ~=, >, >=, &, |, ~, (), 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' | '<logical expression>'
Predeterminado: 'u1 > 0'

El bloque If Action Subsystem adjunto a un puerto elseif se ejecuta cuando su expresión se evalúa como true y todas las expresiones if y elseif son falsas.

vacío

Expresiones lógicas no especificadas.

lista de expresiones lógicas

Especifique una lista de expresiones lógicas delimitadas por comas. Las expresiones aparecen en el bloque If debajo del puerto if y por encima del puerto else cuando selecciona la casilla Show else condition (Mostrar condición else).

Las expresiones solo pueden incluir los operadores <, <=, ==, ~=, >, >=, &, |, ~, (), 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: '' | '<list of logical expressions>'
Predeterminado: ''

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.

on

Muestra el puerto else.

off

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.

on

Detecta cruces por cero.

off

No detecta cruces por cero.

Uso programático

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

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

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

Historial de versiones

Introducido antes de R2006a