 F45_BSUB
F45_BSUB4-digit BCD subtraction
Subtracts the 4-digit BCD equivalent constant or 16-bit area for 4-digit BCD data specified by s from the 16-bit area for 4-digit BCD data specified by d if the trigger EN is in the ON-state. The result is stored in d.

Input
Subtrahend, 16-bit area for 4-digit BCD data or equivalent constant
Output
Minuend and result, 16-bit area for 4-digit BCD data
Instead of using this F instruction, we recommend using the corresponding FP7 instruction: FP_SUB_BCD
if the calculated result is 0.
if the result exceeds the range of 4-digit BCD data (overflow).

All input and output variables used for programming this function have been declared in the POU header. The same POU header is used for all programming languages.

	VAR
		start: BOOL:=FALSE;
			(*activates the function*)
		subtrahend: WORD:=16#0011;
			(*this value will be subtracted
from the output_value*)
		output_value: WORD:=16#2111;
			(*result after 0->1 leading
edge from start: 16#2100*)
	END_VAR
When the variable start changes from FALSE to TRUE, the function is carried out.

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
B(B_CONTACT,,start,3,1,5,3,R);
B(B_VARIN,,subtrahend,10,2,12,4,);
B(B_VAROUT,,output_value,18,2,20,4,);
B(B_F,F45_BSUB!,Instance,12,0,18,4,,?DEN?D@'s'?AENO?Cd);
L(1,2,3,2);
L(5,2,12,2);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY
IF DF(start) then
    F45_BSUB(subtrahend, output_value);
END_IF;