FUNCTION_BLOCK D_Trigger
VAR_INPUT
_S,_D,_C,_R:BOOL;
END_VAR
VAR_OUTPUT
Q,NOT_Q:BOOL;
END_VAR
VAR
C_old:BOOL;
END_VAR




IF _S=TRUE THEN
Q:=TRUE;
ELSIF _R=TRUE THEN
Q:=FALSE;
ELSIF C_old=FALSE AND _C=TRUE THEN
C_old:=_C;
Q:=_D;
ELSIF C_old=TRUE AND _C=FALSE THEN
C_old:=_C;
END_IF
NOT_Q:=NOT(Q);