--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/AnnexF/average_st.txt Wed Jan 31 15:32:38 2007 +0100
@@ -0,0 +1,18 @@
+ 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
+