Code:
FUNCTION_BLOCK FB 3
TITLE =
VERSION : 0.1
VAR_INPUT
Pnt_QB3 : BYTE ;
CmdByte : BYTE ;
END_VAR
VAR_OUTPUT
Ackd : BOOL ;
FaultBit : BOOL ;
END_VAR
VAR
Faulted : SFB 4;
END_VAR
VAR_TEMP
temp : BOOL ;
NotAckd : BOOL ;
DWPntr : DWORD ;
END_VAR
BEGIN
NETWORK
TITLE =
L #Pnt_QB3; //Load command byte
T #DWPntr; //tranfer to outptu byte
SLD 3;
L #CmdByte;
T QB [#DWPntr];
L IB [#DWPntr]; //load ack inputs
L QB [#DWPntr];
==I ; //if equal
= #Ackd; // set OUT ack bit
AN #Ackd; //if not ack'd
= #NotAckd; //set temp for tmr IN
CALL #Faulted (//run SFB4
IN := #NotAckd,
PT := T#2S,// after 2 seconds
Q := #FaultBit);// turn on OUT fault bit
AN #temp; //temp bit not on
SAVE ; // save - set br
END_FUNCTION_BLOCK