AnnexF/delay_st.txt
changeset 0 fb772792efd1
equal deleted inserted replaced
-1:000000000000 0:fb772792efd1
       
     1 FUNCTION_BLOCK DELAY    (* N-sample delay *)
       
     2   VAR_INPUT
       
     3     RUN : BOOL ;     (* 1 = run, 0 = reset *)
       
     4     XIN : REAL ;
       
     5     N   : INT        (* 0 <= N < 128 or manufacturer- *)
       
     6   END_VAR            (*      specified maximum value  *)
       
     7   VAR_OUTPUT XOUT : REAL; END_VAR   (* Delayed output *)
       
     8   VAR X : ARRAY [0..127]     (* N-Element queue *)
       
     9                OF REAL;      (* with FIFO discipline *)
       
    10       I, IXIN, IXOUT : INT := 0;
       
    11   END_VAR
       
    12   IF RUN THEN IXIN := MOD(IXIN + 1, 128) ; X[IXIN] := XIN ;
       
    13               IXOUT := MOD(IXOUT + 1, 128) ; XOUT := X[IXOUT];
       
    14   ELSE XOUT := XIN ; IXIN := N ; IXOUT := 0;
       
    15        FOR I := 0 TO N DO X[I] := XIN; END_FOR;
       
    16   END_IF ;
       
    17 END_FUNCTION_BLOCK
       
    18