AnnexF/average_st.txt
changeset 0 fb772792efd1
equal deleted inserted replaced
-1:000000000000 0:fb772792efd1
       
     1  FUNCTION_BLOCK AVERAGE
       
     2    VAR_INPUT
       
     3      RUN : BOOL ;      (* 1 = run, 0 = reset *)
       
     4      XIN : REAL ;     (* Input variable *)
       
     5      N   : INT ;      (* 0 <= N < 128 or manufacturer- *)
       
     6    END_VAR            (*      specified maximum value  *)
       
     7    VAR_OUTPUT XOUT : REAL ; END_VAR (* Averaged output *)
       
     8    VAR SUM  : REAL := 0.0; (* Running sum *)
       
     9        FIFO : DELAY ;      (* N-Element FIFO *)
       
    10    END_VAR
       
    11    SUM := SUM - FIFO.XOUT ;
       
    12    FIFO (RUN := RUN , XIN := XIN, N := N) ;
       
    13    SUM := SUM + FIFO.XOUT ;
       
    14    IF RUN THEN XOUT := SUM/N ;
       
    15    ELSE SUM := N*XIN ; XOUT := XIN ;
       
    16    END_IF ;
       
    17  END_FUNCTION_BLOCK
       
    18