AnnexF/average_st.txt
author Laurent Bessard
Tue, 11 Sep 2012 01:05:24 +0200
changeset 628 fe0d516fe291
parent 0 fb772792efd1
permissions -rwxr-xr-x
Fix bug in SFC generated code. Action state was declared in the list of variables to debug, but wasn't stored using structure with flags. This error had side effects that makes Beremiz debug crash.
 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