Added double curly braces for pragma (kept single curly braces for compatibility). Added macro def and undef surrounding pragma to simplify user code. Moved useless comment from generated code back to code generator.
FUNCTION_BLOCK AVERAGE
VAR_INPUT
RUN : BOOL ; (* 1 = run, 0 = reset *)
XIN : REAL ; (* Input variable *)
N : INT ; (* 0 <= N < 128 or manufacturer- *)
END_VAR (* specified maximum value *)
VAR_OUTPUT XOUT : REAL ; END_VAR (* Averaged output *)
VAR SUM : REAL := 0.0; (* Running sum *)
FIFO : DELAY ; (* N-Element FIFO *)
END_VAR
SUM := SUM - FIFO.XOUT ;
FIFO (RUN := RUN , XIN := XIN, N := N) ;
SUM := SUM + FIFO.XOUT ;
IF RUN THEN XOUT := SUM/N ;
ELSE SUM := N*XIN ; XOUT := XIN ;
END_IF ;
END_FUNCTION_BLOCK