AnnexF/average_st.txt
changeset 0 fb772792efd1
--- /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
+