Contenido principal

Switch

Alternar salidas entre la primera entrada y la tercera entrada según el valor de la segunda entrada

  • Switch block

Bibliotecas:
Simulink / Commonly Used Blocks
Simulink / Signal Routing
HDL Coder / Commonly Used Blocks
HDL Coder / Signal Routing

Descripción

Tipos de entradas de bloque

El bloque Switch pasa por la primera entrada o la tercera entrada según el valor de la segunda entrada. Las entradas primera y tercera se denominan entradas de datos. La segunda entrada se denomina entrada de control. Especifique la condición en la que el bloque pasa la primera entrada utilizando los parámetros Criteria for passing first input y Threshold.

Para retropropagar inmediatamente un tipo de datos de salida conocido al primer y tercer puerto de entrada, establezca el parámetro Output data type en Inherit: Inherit via internal rule y seleccione la casilla Require all data port inputs to have the same data type.

Sugerencia

Para retropropagar, Inherit: Inherit via internal rule, el parámetro Require all data port inputs to have the same data type debe estar seleccionado. De lo contrario, el bloque no realiza retropropagación automática del tipo de datos de salida al primer y tercer puerto de salida.

Limitaciones de las entradas de datos

Los tamaños de las dos entradas de datos pueden ser diferentes si selecciona Allow different data input sizes. Sin embargo, este bloque no admite señales de entrada de tamaño variable. Por lo tanto, el tamaño de cada entrada no puede cambiar durante la simulación.

Si las entradas de datos del bloque Switch son buses, los nombres de elemento de ambos buses deben ser iguales. Utilizar los mismos nombres de elemento garantiza que el bus de salida tenga los mismos nombres de elemento independientemente del bus de entrada que el bloque seleccione. Para garantizar que el modelo cumple este requisito, utilice un objeto bus para definir los buses y establezca el diagnóstico Element name mismatch en error. Para obtener más información, consulte Model Configuration Parameters: Connectivity Diagnostics.

Aspecto del icono de bloque

El icono de bloque ayuda a identificar Criteria for passing first input y Threshold sin necesidad de abrir el cuadro de diálogo del bloque.

Para más información sobre el orden de los puertos para varias orientaciones de bloque, consulte Identify Port Location on Rotated or Flipped Block.

Comportamiento del bloque para entradas de control booleanas

Cuando la entrada de control sea una señal Boolean, utilice una de estas combinaciones de criterios y este valor umbral:

  • u2 >= Threshold, donde el valor umbral es igual a 1

  • u2 > Threshold, donde el valor umbral es igual a 0

  • u2 ~=0

De lo contrario, el bloque Switch ignora el umbral y usa la entrada booleana para el enrutamiento de la señal. Para una entrada de control de 1, el bloque pasa la primera entrada y, para una entrada de control de 0, el bloque pasa la tercera entrada. En este caso, el icono de bloque cambia después del tiempo de compilación y usa T y F para etiquetar la primera y segunda entrada, respectivamente.

Soporte para tipo de datos

La entrada de control puede ser de cualquier tipo de datos que Simulink® admita, incluidos los tipos de punto fijo y enumerados. La entrada de control no puede ser compleja. Si la entrada de control es enumerada, el parámetro Threshold debe ser un valor del mismo tipo enumerado.

Las entradas de datos pueden ser de cualquier tipo de datos que Simulink admita. Si cualquier entrada de datos es de un tipo enumerado, la otra debe ser del mismo tipo enumerado.

Cuando la salida es de tipo enumerado, ambas entradas de datos deben usar el mismo tipo enumerado como salida.

Para obtener más información, consulte Data Types Supported by Simulink.

Ejemplos

Puertos

Entrada

expandir todo

Primera de dos entradas de datos. El bloque propaga la primera o la segunda entrada de datos a la salida. El bloque selecciona qué entrada pasar en función de la entrada de control. Especifique la condición para que la entrada de control pase la primera entrada utilizando los parámetros Criteria for passing first input y Threshold.

Tipos de datos: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image

Señal de control que usa el bloque para determinar si pasar la primera o segunda entrada de datos a la salida. Si la entrada de control cumple la condición establecida en el parámetro Criteria for passing first input, el bloque pasa la primera entrada de datos. De lo contrario, el bloque pasa la segunda entrada de datos.

Tipos de datos: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image

Segunda de dos entradas de datos. El bloque propaga la primera o la segunda entrada de datos a la salida. El bloque selecciona qué entrada pasar en función de la entrada de control. Especifique la condición para que la entrada de control pase la primera o segunda entrada utilizando los parámetros Criteria for passing first input y Threshold.

Tipos de datos: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image

Salida

expandir todo

Señal de salida propagada desde la primera o la segunda señal de entrada, en función del valor de la señal de control.

Tipos de datos: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image

Parámetros

expandir todo

Principal

Seleccione la condición en la que el bloque pasa la primera entrada de datos. Si la entrada de control cumple la condición establecida en el parámetro Criteria for passing first input, el bloque pasa la primera entrada. De lo contrario, el bloque pasa la señal de la segunda entrada de datos del Port_3 de entrada.

u2 >= Threshold

Comprueba si la entrada de control es mayor que o igual al valor umbral.

u2 > Threshold

Comprueba si la entrada de control es mayor que el valor umbral.

u2 ~= 0

Comprueba si la entrada de control es distinta de cero.

Nota

El bloque Switch no admite el modo u2 ~= 0 para tipos de datos enumerados.

Sugerencia

Cuando la entrada de control sea una señal booleana, utilice una de estas combinaciones de condiciones y este valor umbral:

  • u2 >= Threshold, donde el valor umbral es igual a 1

  • u2 > Threshold, donde el valor umbral es igual a 0

  • u2 ~= 0

De lo contrario, el bloque Switch ignora los valores umbral y usa el valor booleano para el enrutamiento de la señal. Para un valor de 1, el bloque pasa la primera entrada y, para un valor de 0, el bloque pasa la tercera entrada. También aparece un mensaje de advertencia que describe este comportamiento en la ventana de comandos de MATLAB®.

Uso programático

Parámetro de bloque: Criteria
Tipo: vector de caracteres
Valor: 'u2 >= Threshold' | 'u2 > Threshold' | 'u2 ~= 0'
Predeterminado: 'u2 > Threshold'

Asigne el umbral usado en Criteria for passing first input que determina qué entrada pasa el bloque a la salida. Threshold debe ser mayor que Output minimum y menor que Output maximum.

Para especificar un umbral no escalar, utilice corchetes. Por ejemplo, las siguientes entradas son válidas:

  • [1 4 8 12]

  • [MyColors.Red, MyColors.Blue]

Dependencias

Si establece Criteria for passing first input en u2 ~= 0, este parámetro se desactiva.

Uso programático

Parámetro de bloque: Threshold
Tipo: vector de caracteres
Valor: escalar
Predeterminado: '0'

Seleccione esta opción para activar la detección de cruces por cero. Para obtener más información, consulte Zero-Crossing Detection.

Uso programático

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

Signal Attributes

Data Type Assistant ayuda a establecer los atributos de los datos. Para usar Data Type Assistant, haga clic en the Show data type assistant button. Para obtener más información, consulte Specify Data Types Using Data Type Assistant.

Requiere que todas las entradas de datos tengan el mismo tipo de datos.

Uso programático

Parámetro de bloque: InputSameDT
Tipo: vector de caracteres
Valor: 'off' | 'on'
Predeterminado: 'off'

Valor inferior del rango de salida que comprueba el software.

El software usa el mínimo para realizar lo siguiente:

Sugerencias

Output minimum no satura ni recorta la señal de salida real. Use el bloque Saturation en su lugar.

Uso programático

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

Parámetro: OutMin
Valores: '[]' (predeterminado) | scalar in quotes

Valor superior del rango de salida que comprueba el software.

El software usa el valor máximo para realizar lo siguiente:

Sugerencias

Output maximum no satura ni recorta la señal de salida real. Use el bloque Saturation en su lugar.

Uso programático

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

Parámetro: OutMax
Valores: '[]' (predeterminado) | scalar in quotes

Especifique el tipo de datos de salida.

Inherit: Inherit via internal rule

Usa las siguientes reglas para determinar el tipo de datos de salida.

Tipo de datos del primer puerto de entradaTipo de datos de salida
Tiene un intervalo positivo mayor que el tercer puerto de entradaHeredado del primer puerto de entrada
Tiene el mismo rango positivo que el tercer puerto de entradaHeredado del tercer puerto de entrada
Tiene un intervalo positivo más pequeño que el tercer puerto de entrada
Es un valor booleano y el tercer puerto de entrada es uint8
Es uint8 y el tercer puerto de entrada es un valor booleano
Es un valor booleano y el otro es int8Establecido en un valor booleano
Es uint8 y el otro es un valor booleano
Tipo de datos de dos puertos de entradaTipo de datos de salida
Tiene un tipo de entrada como un valor booleano y el otro como uint8Establecido en el tipo de datos del tercer puerto de datos
Tiene una entrada como un valor booleano y la otra como int8Establecido en un valor booleano
Inherit: Inherit via back propagation

Adopta el tipo de datos del bloque de salida.

Inherit: Inherit same as first input

Usa el tipo de datos del primer puerto de entrada de datos.

double

Especifica que el tipo de datos de salida es double.

single

Especifica que el tipo de datos de salida es single.

half

Especifica que el tipo de datos de salida es half.

int8

Especifica que el tipo de datos de salida es int8.

uint8

Especifica que el tipo de datos de salida es uint8.

int16

Especifica que el tipo de datos de salida es int16.

uint16

Especifica que el tipo de datos de salida es uint16.

int32

Especifica que el tipo de datos de salida es int32.

uint32

Especifica que el tipo de datos de salida es uint32.

int64

Especifica que el tipo de datos de salida es int64.

uint64

Especifica que el tipo de datos de salida es uint64.

fixdt(1,16,0)

Especifica que el tipo de datos de salida es de punto fijo fixdt(1,16,0).

fixdt(1,16,2^0,0)

Especifica que el tipo de datos de salida es de punto fijo fixdt(1,16,2^0,0).

Enum: <class name>

Usa un tipo de datos enumerado, por ejemplo, Enum: BasicColors.

Simulink.ImageType(480,640,3)

Usa un objeto Simulink.ImageType (Computer Vision Toolbox) si tiene Computer Vision Toolbox™.

string

Especifica que el tipo de datos de salida es una cadena.

<data type expression>

Usa un objeto de tipo de datos, por ejemplo, Simulink.NumericType.

Sugerencia

Cuando la salida es de tipo enumerado, ambas entradas de datos deben usar el mismo tipo enumerado como salida.

Uso programático

Parámetro de bloque: OutDataTypeStr
Tipo: vector de caracteres
Valores: '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>'
Predeterminado: 'Inherit: Inherit via internal rule'

Seleccione este parámetro para evitar que las herramientas de punto fijo anulen los tipos de datos que se especifican en este bloque. Para obtener más información, consulte Lock the Output Data Type Setting (Fixed-Point Designer).

Uso programático

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

Elija uno de estos modos de redondeo.

Ceiling

Redondea tanto números positivos como negativos hacia infinito positivo. Equivalente a la función ceil de MATLAB.

Convergent

Redondea el número al valor representable más cercano. Si se produce un empate, redondea al entero par más cercano. Equivalente a la función convergent de Fixed-Point Designer™.

Floor

Redondea tanto números positivos como negativos hacia infinito negativo. Equivalente a la función floor de MATLAB.

Nearest

Redondea el número al valor representable más cercano. Si se produce un empate, redondea hacia infinito positivo. Equivalente a la función nearest de Fixed-Point Designer.

Round

Redondea el número al valor representable más cercano. Si se produce un empate, redondea los números positivos al infinito positivo y redondea los números negativos hacia infinito negativo. Equivalente a la función round de Fixed-Point Designer.

Simplest

Elige automáticamente entre el redondeo hacia abajo y el redondeo hacia cero para generar código de redondeo que sea lo más eficiente posible.

Zero

Redondea el número hacia cero. Equivalente a la función fix de MATLAB.

Uso programático

Parámetro de bloque: RndMeth
Tipo: vector de caracteres
Valores: 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'
Predeterminado: 'Floor'

Consulte también

Para obtener más información, consulte Rounding Modes (Fixed-Point Designer).

Especifique si los desbordamientos saturan o ajustan valores.

  • on: los desbordamientos saturan al valor mínimo o máximo que el tipo de datos puede representar.

  • off: los desbordamientos se ajustan al valor adecuado que el tipo de datos puede representar.

Por ejemplo, el valor máximo que el entero de 8 bits int8 con signo puede representar es 127. Cualquier resultado de la operación del bloque mayor que este valor máximo provocará el desbordamiento del entero de 8 bits.

  • Con el parámetro seleccionado, la salida del bloque satura a 127. De forma similar, la salida del bloque satura a un valor de salida mínimo de -128.

  • Con este parámetro desactivado, el software interpreta que el valor que genera el desbordamiento es int8, que puede provocar un resultado no intencionado. Por ejemplo, un resultado del bloque de 130 (binario 1000 0010) expresado como int8, es -126.

Sugerencias

  • Considere la posibilidad de seleccionar este parámetro cuando su modelo tenga un desbordamiento posible y desee una protección explícita de saturación en el código generado.

  • Considere la posibilidad de desactivar este parámetro cuando desee optimizar la eficiencia del código generado. Desactivar este parámetro también ayuda a evitar especificar cómo trata un bloque las señales fuera de rango. Para obtener más información, consulte Troubleshoot Signal Range Errors.

  • Cuando se selecciona este parámetro, la saturación se aplica a cada operación interna del bloque, no solo a la salida o al resultado.

  • Por lo general, el proceso de generación de código puede detectar cuándo el desbordamiento no es posible. En este caso, el generador de código no produce código de saturación.

Uso programático

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

Parámetro: SaturateOnIntegerOverflow
Valores: 'off' (predeterminado) | 'on'

Seleccione esta casilla para permitir señales de entrada con tamaños diferentes. El bloque propaga el tamaño de la señal de entrada a la señal de salida. Si las dos entradas de datos son señales de tamaño variable, el tamaño máximo de las señales puede ser igual o diferente.

Uso programático

Parámetro de bloque: AllowDiffInputSizes
Tipo: vector de caracteres
Valor: 'on' | 'off'
Predeterminado: 'off'

Características del bloque

Tipos de datos

Boolean | bus | double | enumerated | fixed point | half | integer | single | string

Paso directo

Señales multidimensionales

Señales de tamaño variable

Detección de cruce por cero

Capacidades ampliadas

expandir todo

Generación de código PLC
Genere código de texto estructurado mediante Simulink® PLC Coder™.

Conversión de punto fijo
Diseñe y simule sistemas en punto fijo mediante Fixed-Point Designer™.

Historial de versiones

Introducido antes de R2006a

Consulte también

|