Dispositivo de 2 estados discreto (D2SD)
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 Dispositivo discreto de 2 estados (Discrete 2-State Device, D2SD) controla un dispositivo discreto que solo tiene dos posibles estados (como encendido/apagado o abierto/cerrado).
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
D2SD(D2SD_tag)
Operandos
Existen reglas de conversión de datos para utilizar tipos de datos mixtos en una instrucción. Consulte Conversiones de datos.
Texto estructurado
Operando | Tipo | Formato | Descripción |
D2SD tag | DISCRETE_2STATE | Estructura | Estructura de D2SD |
Consulte
Sintaxis de texto estructurado
para obtener más información sobre la sintaxis de las expresiones dentro de texto estructurado.Bloque de funciones
Operando | Tipo | Formato | Descripción |
D2SD tag | DISCRETE_2STATE | Estructura | Estructura de D2SD |
Estructura de DISCRETE_2STATE
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. |
ProgCommand | BOOL | Se utiliza para determinar el CommandStatus cuando el dispositivo está en el Control Programa. Si es verdadero, el dispositivo recibe la orden de entrar en el estado 1; cuando es falso, de entrar en el estado 0. El valor predeterminado es falso. |
Oper0Req | BOOL | Solicitud de estado 0 de operador. Establecido por la interfaz de operador para colocar el dispositivo en el estado 0 cuando está en el Control de operador. El valor predeterminado es falso. |
Oper1Req | BOOL | Solicitud de estado 1 de operador. Establecido por la interfaz de operador para colocar el dispositivo en el estado 1 cuando está en el Control de operador. El valor predeterminado es falso. |
State0Perm | BOOL | Estado 0 permitido. Salvo que esté activado el modo Mano o Anular, esta entrada se debe establecer para que el dispositivo pueda ponerse en el estado 0. Esta entrada no tiene ningún efecto para un dispositivo que ya esté en el estado 0. El valor predeterminado es verdadero. |
State1Perm | BOOL | Estado 1 permitido. Salvo que esté activado el modo Mano o Anular, esta entrada se debe establecer para que el dispositivo pueda ponerse en el estado 1. Esta entrada no tiene ningún efecto para un dispositivo que ya esté en el estado 1. El valor predeterminado es verdadero. |
FB0 | BOOL | La primera entrada de retroalimentación disponible para la instrucción D2SD. El valor predeterminado es falso. |
FB1 | BOOL | La segunda entrada de retroalimentación disponible para la instrucción D2SD. El valor predeterminado es falso. |
HandFB | BOOL | Entrada de retroalimentación de mano. Esta entrada es de una estación de mano/apagado/automática de campo y muestra el estado solicitado del dispositivo de campo. Si es verdadero, al dispositivo de campo se le solicita que entre en el estado 1; cuando es falso, que entre en el estado 0. El valor predeterminado es falso. |
FaultTime | REAL | Valor de tiempo de fallo. Configure el valor en segundos del tiempo que se permite el dispositivo para alcanzar un nuevo estado solicitado. Se establece FaultTime = 0 para deshabilitar el temporizador de fallo. Si este valor no es válido, la instrucción supone un valor cero y establece el bit correspondiente en Status. Válido = cualquier flotante 0,0Valor predeterminado = 0,0 |
FaultAlarmLatch | BOOL | Entrada de enclavamiento de alarma de fallo. Si es verdadero y FaultAlarm también es verdadero, enclava FaultAlarm. Para desenclavar FaultAlarm, se establece FaultAlmUnlatch como verdadero o se borra FaultAlarmLatch como falso. El valor predeterminado es falso. |
FaultAlmUnLatch | BOOL | Entrada de desbloqueo de alarma de fallo. Se establece FaultAlmUnLatch cuando FaultAlarmLatch se establece para desbloquear FaultAlarm. La instrucción borra la entrada a falsa. El valor predeterminado es falso. |
OverrideOnInit | BOOL | Solicitud de anulación de inicialización. Si este bit es verdadero, entonces durante el primer escaneado de la instrucción, el dispositivo de 2 estados se coloca en el Control de operador, el Override se establece en verdadero y Hand se borra a falso. Si ProgHandReq es verdadero, Override se borra a falso y Hand se establece en verdadero. El valor predeterminado es falso. |
OverrideOnFault | BOOL | Solicitud de anulación de fallo. Se establece OverrideOnFault como verdadero si el dispositivo debe pasar al modo Anular y ponga OverrideState en alarma de fallo. Después de eliminar la alarma de fallo, el dispositivo de 2 estados se coloca en el Control de operador. El valor predeterminado es falso. |
OutReverse | BOOL | Invertir el estado predeterminado de salida. El estado predeterminado de Out se borra a falso cuando recibe la orden de entrar en el estado 0 y se establece en verdadero con la orden de entrar en el estado 1. Cuando OutReverse es verdadero, Out se establece en verdadero cuando recibe la orden de entrar en el estado 0 y se borra a falso con la orden de entrar en el estado 1. El valor predeterminado es falso. |
OverrideState | BOOL | Entrada del estado en el modo Anular. Configure este valor para especificar el estado del dispositivo cuando éste está en el modo Anular. Si el valor es verdadero, indica que el dispositivo debe ir al estado 1; falso indica que el dispositivo debe ir al estado 0. El valor predeterminado es falso. |
FB0State0 | BOOL | Entrada de la Retroalimentación 0 en el estado 0. Configure el estado del FB0 cuando el dispositivo está en el estado 0. El valor predeterminado es falso. |
FB0State1 | BOOL | Entrada de la Retroalimentación 0 en el estado 1. Configure el estado del FB0 cuando el dispositivo está en el estado 1. El valor predeterminado es falso. |
FB1State0 | BOOL | Entrada de la Retroalimentación 1 en el estado 0. Configure el estado del FB1 cuando el dispositivo está en el estado 0. El valor predeterminado es falso. |
FB1State1 | BOOL | Entrada de la Retroalimentación 1 en el estado 1. Configure el estado del FB1 cuando el dispositivo está en el estado 1. El valor predeterminado es falso. |
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. Se ignora si ProgHandReq es verdadero. El valor predeterminado es falso. |
ProgHandReq | BOOL | Solicitud de Mano de programa. El programa de usuario lo establece en verdadero para solicitar al dispositivo que pase al modo 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 borran a falsas cada vez que se ejecuta 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. |
Out | BOOL | La salida de la instrucción de 2 estados. |
Device0State | BOOL | Salida del estado 0 del dispositivo. Se establece en verdadero cuando el dispositivo recibe la orden de pasar al estado 0 y las retroalimentaciones indican que el dispositivo está realmente en el estado 0. |
Device1State | BOOL | Salida del estado 1 del dispositivo. Se establece en verdadero cuando el dispositivo recibe la orden de pasar al estado 1 y las retroalimentaciones indican que el dispositivo está realmente en el estado 1. |
CommandStatus | BOOL | Salida del estado del comando. Se establece en verdadero cuando el dispositivo recibe la orden de pasar al estado 1 y en borrado cuando el dispositivo recibe la orden de pasar al estado 0. |
FaultAlarm | BOOL | Salida de alarma de fallo. Se establece en verdadero si el dispositivo recibe la orden de pasar a un nuevo estado y FaultTime ha expirado sin que las retroalimentaciones haya indicado que se ha alcanzado realmente el nuevo estado. También se establece en verdadero si, tras alcanzar el estado ordenado, las retroalimentaciones indican de repente que el dispositivo ya no está en dicho estado. |
ModeAlarm | BOOL | Salida de alarma de modo. Se establece en verdadero si el dispositivo está en el Control de operador y un comando de programa cambia a un estado que es diferente del estado ordenado actualmente por el operador. El objetivo de esta alarma es recordar que se dejó un dispositivo en Control de operador. |
ProgOper | BOOL | Indicador de control de programa/operador. Verdadero cuando está en modo Control de programa. Falso cuando está en modo Control de operador. |
Override | BOOL | Modo Anular. Es verdadero cuando el dispositivo está en modo Anular. |
Hand | BOOL | Modo Mano. Es verdadero cuando el dispositivo está en modo Mano. |
Status | 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. |
FaultTimeInv (Status.1) | BOOL | Valor de FaultTime no válido. La instrucción establece FaultTime = 0. |
OperReqInv (Status.2) | BOOL | Ambos bits de solicitud de estado de operador son verdaderos. |
Descripción
La instrucción D2SD controla un dispositivo discreto que solo tiene dos posibles estados (como encendido/apagado o abierto/cerrado). Los dispositivos discretos normales de esta naturaleza incluyen motores, bombas y válvulas de solenoide.
Monitorización de la instrucción D2SD
Hay una placa frontal de operador disponible para la instrucción D2SD.
Afecta a las marcas de estado matemáticas
No
Fallos mayores/menores
No es específico para esta instrucción. Consulte Atributos comunes para ver los fallos relacionados con el operando.
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 | Se establece ProgOper en el modo Operador. Se establece CommandStatus en falso. |
Primer escaneado de instrucción | Se establece EnableOut a verdadero. ModeAlarm y las entradas de solicitud de operador se borran a falso. Si ProgValueReset es verdadero, todas las entradas de solicitud de programa se borran a falsas. Cuando OverrideOnInit es verdadero, ProgOper se borra a falso (Control de operator). Si se borra ProgHandReq y se establece OverrideOnInit, se borra Manual y se establece Anular (modo Anular). Si ProgHandReq está establecido, se establece Manual y se borra Anular (modo Manual). |
Post-escaneado | Los bits EnableIn y EnableOut se establecen en falsos. |
Texto estructurado
En Texto estructurado, EnableIn siempre es verdadero durante un escaneado normal. Por tanto, si la instrucción se encuentra en la ruta de control activada por la lógica, se ejecutará.
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. |
Ejemplos
La instrucción SD se usa normalmente para controlar dispositivos de encendido-apagado o abierto-cerrado, como bombas o válvulas de solenoide. En este ejemplo, la instrucción D2SD controla una válvula de solenoide que añade jarabe de maíz a un tanque por lotes. Mientras la instrucción D2SD esté en Control de programa, la válvula se abre cuando se establece la entrada AddSyrup. El operador también puede establecer el Control de operador de la válvula para abrirla o cerrarla si fuera necesario. La válvula de solenoide en este ejemplo tiene interruptores de final de carrera que indican cuando la válvula está completamente cerrada o abierta. Estos interruptores están conectados a las entradas de retroalimentación FB0 y FB1. Esto permite que la instrucción D2SD genere una FaultAlarm si la válvula de solenoide no alcanza el estado ordenado dentro del FaultTime configurado.
Bloque de funciones

Texto estructurado
SyrupController.ProgCommand := AddSyrup;
SyrupController.FB0 := SyrupValveClosedLimitSwitch;
SyrupController.FB1 := SyrupValveOpenedLimitSwitch;
D2SD(SyrupController);
SyrupValve := SyrupController.Out;
Cambiar entre Control de programa y Control de operador
En el siguiente diagrama se muestra cómo cambia la instrucción D2SD entre Control de programa y Control de operador.

(1) Si ProgOperReq es verdadero, la instrucción permanece en el modo Control de operador.
Estado ordenado en Control de programa
En el siguiente diagrama se muestra cómo funciona la instrucción D2SD en Control de programa.

Estado ordenado en Control de operador
En el siguiente diagrama se muestra cómo funciona la instrucción D2SD en Control de operador.

Si ambos Oper0Req y Oper1Req son verdaderos:
- La instrucción establece el bit correspondiente en Status como verdadero.
- Si Override y Hand son falsos, la instrucción mantiene el estado anterior.
Después de cada ejecución de instrucción, la instrucción:
- Borra todas las entradas de solicitud de operador a falsas.
- Si ProgValueReset es verdadero, borra todas las entradas de solicitud de programa a falsas.
Modo Mano o Anular
En la siguiente tabla se describe cómo determina la instrucción D2SD si se debe funcionar en el modo Mano o Anular.
ProgHandReq | ProgOverrideReq | FaultAlarm y OverrideOnFault | Descripción |
|---|---|---|---|
verdadero | verdadero o falso | verdadero o falso | Modo Manual Manual se establece en verdadero Anular se borra a falso |
falso | verdadero | verdadero o falso | Modo Anular Manual se borra a falso Anular se establece en verdadero |
falso | verdadero o falso | verdadero | Modo Anular Manual se borra a falso Anular se establece en verdadero |
Cuando la instrucción está en el modo Anular, CommandStatus = OverrideState.
Cuando la instrucción está en el modo Mano, CommandStatus = HandFB.
Estado de la salida
El estado de salida D2SD se basa en el estado del estado de comando.
CommandStatus | Estado de la salida |
|---|---|
falso | Si OutReverse es falso, Out se borra a falso Si OutReverse es verdadero, Out se establece en verdadero |
verdadero | Si OutReverse es falso, Out se establece en falso Si OutReverse es verdadero, Out se borra y se establece en falso |
falso y FB0 = FB0State0 y FB1 = FB1State0 | El temporizador de fallo se detiene y se borra a 0 Device0State se establece en verdadero |
verdadero y FB0 = FB0State1 y FB1 = FB1State1 | El temporizador de fallo se detiene y se borra a 0 Device1State se establece en verdadero |
Condiciones de alarma de fallo
La instrucción D2SD comprueba estas condiciones de alarma de fallo.
Condición de alarma de fallo resultante de | Reglas |
|---|---|
El estado del dispositivo recibió la orden de cambiarse, pero la retroalimentación no indicó que se alcanzase el estado deseado durante FaultTime | Inicia el temporizador de fallo cuando CommandStatus n CommandStatusn-1 Se establece FaultAlarm cuando finalice el temporizador de fallo y FaultTime> 0,0 |
El dispositivo dejó un estado de forma imprevista (según la retroalimentación) sin que recibiese la orden | Establecer FaultAlarm en verdadero cuando el temporizador de fallo no esté contando el tiempo y se cumpla una de las siguientes condiciones: CommandStatus es falso y Device0State es falso CommandStatus es verdadero y Device1State es falso |
FaultAlarm se borra a falso si se cumple una de las condiciones siguientes:
- CommandStatus es falso y Device0State es verdadero
- CommandStatus es verdadero y Device1State es verdadero
- FaultTime
0
FaultAlarm no se puede borrar a falso si FaultAlarmLatch es verdadero, salvo que FaultAlmUnlatch sea verdadero y no haya presente ningún fallo.
Condiciones de alarma de modo
La alarma de modo recuerda al operador que se ha dejado un dispositivo en Control de operador. La alarma de modo solo se activa cuando estando en el modo Control de operador, el programa intenta cambiar el estado del dispositivo desde el estado ordenado del operador. La alarma no se activa si un operador activa el modo Control de operador para un dispositivo y cambia el estado. La instrucción D2SD comprueba las condiciones de alarma de modo utilizando estas reglas.
ModeAlarm | Cuando |
|---|---|
Verdadera | ProgCommand n ProgCommandn-1 yProgCommand n CommandStatus |
Falsa | ProgCommand = CommandStatus o el dispositivo está en el modo de control Anular, Manual o Programa |
Entregue su opinión
0,0
CommandStatus