Selección mejorada (ESEL)
Esta información corresponde a los controladores
CompactLogix
5370, ControlLogix
5570, Compact GuardLogix
5370, GuardLogix
5570, Compact GuardLogix
5380, CompactLogix
5380, ControlLogix
5580, GuardLogix
5580 y ControlLogix 5590.La instrucción Selección mejorada (Enhanced Select, ESEL) permite seleccionar una de hasta seis entradas. Las opciones de selección son:
- Selección manual (mediante operador o programa)
- Selección alta
- Selección baja
- Selección media
- Selección promedia (promediado)
Idiomas disponibles
Diagrama de lógica de escalera
Esta instrucción no está disponible en la lógica de diagrama de escalera.
Bloque de funciones

Texto estructurado
ESEL(ESEL_tag);
Operandos
Bloque de funciones
Operando | Tipo | Formato | Descripción |
Etiqueta ESEL | SELECT_ENHANCED | Estructura | Estructura ESEL |
Estructura de SELECT_ENHANCED
Parámetro de entrada | Tipo de datos | Descripción |
EnableIn | BOOL | Habilita la entrada. Si no está en falso, la instrucción no se ejecuta y las salidas no se actualizan. El valor predeterminado es verdadero. |
In1 | REAL | La primera entrada de señal analógica a la instrucción. Válido = cualquier punto flotante Valor predeterminado = 0,0 |
In2 | REAL | La segunda entrada de señal analógica a la instrucción. Válido = cualquier punto flotante Valor predeterminado = 0,0 |
In3 | REAL | La tercera entrada de señal analógica a la instrucción. Válido = cualquier punto flotante Valor predeterminado = 0,0 |
In4 | REAL | La cuarta entrada de señal analógica a la instrucción. Válido = cualquier punto flotante Valor predeterminado = 0,0 |
In5 | REAL | La quinta entrada de señal analógica a la instrucción. Válido = cualquier punto flotante Valor predeterminado = 0,0 |
In6 | REAL | La sexta entrada de señal analógica a la instrucción. Válido = cualquier punto flotante Valor predeterminado = 0,0 |
In1Fault | BOOL | Indicador de estado incorrecto de In1. Si In1 se lee desde una entrada analógica, In1Fault normalmente se controla mediante el estado de fallo en la entrada analógica. Si todas las entradas de InnFault son verdaderas, la instrucción establece el bit correspondiente en Status, el algoritmo de control no se ejecuta y Out no se actualiza. Valor predeterminado = falso |
In2Fault | BOOL | Indicador de estado incorrecto de In2. Si In2 se lee desde una entrada analógica, In2Fault normalmente se controla mediante el estado de fallo en la entrada analógica. Si todas las entradas de InnFault son verdaderas, la instrucción establece el bit correspondiente en Status, el algoritmo de control no se ejecuta y Out no se actualiza. Valor predeterminado = falso |
In3Fault | BOOL | Indicador de estado incorrecto de In3. Si In3 se lee desde una entrada analógica, In3Fault normalmente se controla mediante el estado de fallo en la entrada analógica. Si todas las entradas de InnFault son verdaderas, la instrucción establece el bit correspondiente en Status, el algoritmo de control no se ejecuta y Out no se actualiza. Valor predeterminado = falso |
In4Fault | BOOL | Indicador de estado incorrecto de In4. Si In4 se lee desde una entrada analógica, In4Fault normalmente se controla mediante el estado de fallo en la entrada analógica. Si todas las entradas de InnFault son verdaderas, la instrucción establece el bit correspondiente en Status, el algoritmo de control no se ejecuta y Out no se actualiza. Valor predeterminado = falso |
In5Fault | BOOL | Indicador de estado incorrecto de In5. Si In5 se lee desde una entrada analógica, In5Fault normalmente se controla mediante el estado de fallo en la entrada analógica. Si todas las entradas de InnFault son verdaderas, la instrucción establece el bit correspondiente en Status, el algoritmo de control no se ejecuta y Out no se actualiza. Valor predeterminado = falso |
In6Fault | BOOL | Indicador de estado incorrecto de In6. Si In6 se lee desde una entrada analógica, In6Fault normalmente se controla mediante el estado de fallo en la entrada analógica. Si todas las entradas de InnFault son verdaderas, la instrucción establece el bit correspondiente en Status, el algoritmo de control no se ejecuta y Out no se actualiza. Valor predeterminado = falso |
InsUsed | DINT | Número de entradas utilizadas. Define el número de entradas que utiliza la instrucción. La instrucción solo considera In1 mediante In InsUsed en los modos selección alta, selección baja, selección media y selección promedia. Si este valor no es válido, la instrucción establece el bit correspondiente en Status. La instrucción no actualiza Out si InsUsed no es válido, si la instrucción no se encuentra en modo de selección manual y si Override está borrado.Válido = de 1 a 6 Valor predeterminado = 1 |
Selector Mode | DINT | Entrada del modo de selector. Este valor determina la acción de la instrucción. 0 = Selección manual 1 = Selección alta 2 = Selección baja 3 = Selección media 4 = Selección promedia Si este valor no es válido, la instrucción establece el bit correspondiente en Status y no actualiza Out. Válido = de 0 a 4 Valor predeterminado = 0 |
ProgSelector | DINT | Entrada del selector de programa. Cuando el modo del selector es manual y la instrucción se encuentra en Control de programa, ProgSelector determina cuál es la entrada (In1-In6) que debe moverse a Out. Si ProgSelector = 0, la instrucción no actualiza Out. Si ProgSelector no es válido, la instrucción establece el bit correspondiente en Status. Si no es válido y si la instrucción se encuentra en control del programa, si el modo del selector es selección manual o si Override está establecido, la instrucción no realiza la actualización. Out. Válido = de 0 a 6 Valor predeterminado = 0 |
OperSelector | DINT | Entrada del selector de operador. Cuando el modo del selector es manual y la instrucción se encuentra en Control de operador, OperSelector determina cuál es la entrada (In1-In6) que debe moverse a Out. Si OperSelector = 0, la instrucción no actualiza Out. Si OperSelector no es válido, la instrucción establece el bit correspondiente en Status. Si no es válido y si la instrucción se encuentra en control del operador, si el modo del selector es selección manual o si Override está establecido, la instrucción no actualiza Out. Válido = de 0 a 6 Valor predeterminado = 0 |
ProgProgReq | BOOL | Solicitud de programa del programa. El programa de usuario lo establece en verdadero para solicitar Control de programa. Se ignora si ProgOperReq es verdadero. Si se mantiene en verdadero y ProgOperReq en falso, se bloquea la instrucción al control de programa. El valor predeterminado es falso. |
ProgOperReq | BOOL | Solicitud de operador del programa. El programa de usuario lo establece en verdadero para solicitar Control de operador. Si se mantiene este valor en verdadero, se bloquea la instrucción al control de operador. El valor predeterminado es falso. |
ProgOverrideReq | BOOL | Solicitud de anulación de programa. El programa de usuario lo establece en verdadero para solicitar al dispositivo que pase al modo Anular. En modo Override, la instrucción actuará como una selección manual. El valor predeterminado es falso. |
OperProgReq | BOOL | Solicitud de programa del operador. La interfaz de operador lo establece en verdadero para solicitar el Control de programa. La instrucción borra la entrada a falsa. El valor predeterminado es falso. |
OperOperReq | BOOL | Solicitud de operador del operador. La interfaz de operador lo establece en verdadero para solicitar el Control de operador. La instrucción borra la entrada a falsa. El valor predeterminado es falso. |
ProgValueReset | BOOL | Restablecer los valores de control del programa. Cuando es verdadero, todas las entradas de solicitud del programa se desactivan en falso en cada ejecución de la instrucción. El valor predeterminado es falso. |
Parámetro de salida | Tipo de datos | Descripción |
EnableOut | BOOL | Indica si la instrucción está habilitada. Se establece en falso si Out produce un desbordamiento. |
Salida | REAL | La salida calculada del algoritmo. |
SelectedIn | DINT | Número de entrada seleccionada. La instrucción utiliza este valor para mostrar el número de la entrada que se está colocando actualmente en la salida. Si el modo de selector es selección promedia, la instrucción establece SelectedIn = 0. |
ProgOper | BOOL | Indicador de control de programa/operador. Se establece en verdadero al estar en el Control de programa. Se borra a falso cuando se encuentra en Operatorcontrol. |
Anulación | BOOL | Modo Anular. Se establece en verdadero cuando la instrucción se encuentra en modo Anular. |
Estado | DINT | Estado del bloque de funciones. |
InstructFault (Status.0) | BOOL | La instrucción detectó uno de los siguientes errores de ejecución. No se trata de un error mayor o menor del controlador. Se comprueban los bits de estado restantes para determinar lo que ha ocurrido. |
InsFaulted (Status.1) | BOOL | Las entradas InnFault para todas las entradas Inn utilizadas son verdaderas. |
InsUsedInv (Status.2) | BOOL | Valor de InsUsed no válido. |
SelectorModeInv (Status.3) | BOOL | Valor de SelectorMode no válido. |
ProgSelectorInv (Status.4) | BOOL | Valor de ProgSelector no válido. |
OperSelectorInv (Status.5) | BOOL | Valor de OperSelector no válido. |
Texto estructurado
Operando | Tipo | Formato | Descripción |
Etiqueta ESEL | SELECT_ENHANCED | estructura | Estructura ESEL |
Consulte Sintaxis de texto estructurado para obtener más información sobre la sintaxis de las expresiones dentro de texto estructurado.
Descripción
La instrucción ESEL funciona de la forma siguiente:
Condición | Action |
SelectorMode = 0 (selección manual) o Override es verdadero, ProgOper es falso y OperSelector no es igual a 0 | Out = In[OperSelector] SelectedIn = OperSelector |
SelectorMode = 0 (selección manual) o Override es verdadero, ProgOper es verdadero y ProgSelector no es igual a 0 | Out = In[ProgSelector] SelectedIn = ProgSelector |
SelectorMode = 1 (selección alta) y Override es falso | Out = máximo de In[InsUsed] SelectedIn = índice al valor de entrada máximo |
SelectorMode = 2 (selección baja) y Override es falso | Out = mínimo de In[InsUsed] SelectedIn = índice al valor de entrada mínimo |
SelectorMode = 3 (selección media) y Override es falso | Out = mediana de In[InsUsed] SelectedIn = índice al valor de entrada medio |
SelectorMode = 4 (selección promedio) y Override es falso | Out = promedio de In[InsUsed] SelectedIn = 0 |
Para SelectorMode de 1 a 4, una indicación de estado incorrecto para cualquiera de las entradas provoca que la entrada incorrecta se ignore en la selección. Por ejemplo, si SelectorMode = 1 (selección alta) y si In6 tenía el valor más alto pero un estado incorrecto, la siguiente entrada más alta con estado correcto se mueve a la salida.
Para el modo de selección alto o bajo, si dos entradas son iguales y son altas o bajas, la instrucción envía la primera entrada encontrada. Para el modo de selección media, el valor medio siempre representa un valor seleccionado de las entradas disponibles. Si hay más de un valor que puede ser medio, la instrucción envía la primera entrada encontrada.
Cambiar entre Control de programa y Control de operador
En el siguiente diagrama se muestra cómo cambia la instrucción ESEL entre Control de programa y Control de operador.

(1) Puede bloquear la instrucción en Control de operador dejando ProgOperReq en verdadero.
(2) Puede bloquear la instrucción en Control de programa dejando ProgProgReq en verdadero mientras ProgOperReq es falso.
Afecta a las marcas de estado matemáticas
No
Fallos mayores/menores
Si la función está habilitada y se detecta un desbordamiento, se producirá un fallo menor (Tipo de fallo: 4, Código de fallo: 4).
Ejecución
Bloque de funciones
Condición/estado | Acción realizada |
Pre-escaneado | Los bits EnableIn y EnableOut se establecen en falsos. |
Tag.EnableIn es falso | Los bits EnableIn y EnableOut se establecen en falsos. |
Tag.EnableIn es verdadero | Los bits EnableIn y EnableOut se establecen en verdaderos. La instrucción se ejecuta |
Primera ejecución de instrucción | La instrucción está establecida en Control de operador. |
Primer escaneado de instrucción | N/A |
Post-escaneado | Los bits EnableIn y EnableOut se establecen en falsos. |
Texto estructurado
Condición/estado | Acción realizada |
Pre-escaneado | Consulte Pre-escaneado en la tabla Bloque de funciones. |
Ejecución normal | Consultar Tag.EnableIn es verdadero en la tabla Bloque de funciones. |
Post-escaneado | Consulte Post-escaneado en la tabla Bloque de funciones. |
Ejemplo
Esta instrucción ESEL selecciona In1, In2 o In3 en función de SelectorMode. En este ejemplo, SelectorMode = 1, que significa selección alta. La instrucción determina cuál es el valor de entrada más grande y establece Out = In mayor.
Bloque de funciones

Texto estructurado
ESEL_01.In1 := analog_input1;
ESEL_01.In2 := analog_input2;
ESEL_01.In3 := analog_input3;
ESEL_01.SelectorMode := 1;
ESEL(ESEL_01);
selected_value := ESEL_01.Out;
Entregue su opinión