diff -r 000000000000 -r fb772792efd1 AnnexF/average_st.txt --- /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 +