SUB
Resta Value2 de Value1 y almacena el resultado en Result.
Representación en Ladder
Estructura de bloques
| Tipo de variable | Nombre | Tipo de datos | Descripción |
|---|---|---|---|
| VAR_INPUT | EN | BOOL | Habilita el bloque. |
| VAR_INPUT | Value1 | BYTE USINT SINT WORD UINT INT DWORD UDINT DINT REAL | Minuendo de la operación. |
| VAR_INPUT | Value2 | BYTE USINT SINT WORD UINT INT DWORD UDINT DINT REAL | Sustraendo de la operación. |
| VAR_OUTPUT | Done | BOOL | Indica que la operación finalizó. |
| VAR_OUTPUT | Result | BYTE USINT SINT WORD UINT INT DWORD UDINT DINT REAL | Variable que almacena el resultado de la operación. |
Operación
Cuando EN es TRUE, el bloque escribe el resultado de la resta entre Value1 y Value2 en Result.
Si la operación se completa sin errores, se establece Done. Si se produce un error en la operación, Done permanece como FALSE y Result conserva su valor anterior.
Cuando EN es FALSE, Result permanece inalterado y Done permanece FALSE.
Diagrama de flujo de ejecución

Ejemplos
- Ejemplo en Diagrama Ladder
- Ejemplo en Texto estructurado
Este ejemplo resta VALUE2 de VALUE1 y almacena el resultado final en RESULT.
Este ejemplo resta VALUE2 de VALUE1 y almacena el resultado final en RESULT. El bloque acepta argumentos con signos diferentes.
Este ejemplo resta VALUE2 de VALUE1. El resultado final, 141, no puede almacenarse en RESULT porque queda fuera del rango aceptado para SINT. Por este motivo, RESULT permanece inalterado y la salida se deshabilita.
El siguiente código en Structured Text aplica la misma lógica mostrada en el ejemplo de Ladder.
VAR
VALUE1 : SINT := 52;
VALUE2 : SINT := -17;
RESULT : SINT;
END_VAR
RESULT := FB_SUB(
EN:=DI1,
Value1:=VALUE1,
Value2:=VALUE2,
Done=>DO1);