AnnexF/delay_st.txt
changeset 0 fb772792efd1
--- /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
+