--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/AnnexF/delay_st.txt Wed Jan 31 15:32:38 2007 +0100
@@ -0,0 +1,18 @@
+FUNCTION_BLOCK DELAY (* N-sample delay *)
+ VAR_INPUT
+ RUN : BOOL ; (* 1 = run, 0 = reset *)
+ XIN : REAL ;
+ N : INT (* 0 <= N < 128 or manufacturer- *)
+ END_VAR (* specified maximum value *)
+ VAR_OUTPUT XOUT : REAL; END_VAR (* Delayed output *)
+ VAR X : ARRAY [0..127] (* N-Element queue *)
+ OF REAL; (* with FIFO discipline *)
+ I, IXIN, IXOUT : INT := 0;
+ END_VAR
+ IF RUN THEN IXIN := MOD(IXIN + 1, 128) ; X[IXIN] := XIN ;
+ IXOUT := MOD(IXOUT + 1, 128) ; XOUT := X[IXOUT];
+ ELSE XOUT := XIN ; IXIN := N ; IXOUT := 0;
+ FOR I := 0 TO N DO X[I] := XIN; END_FOR;
+ END_IF ;
+END_FUNCTION_BLOCK
+