diff -r 000000000000 -r fb772792efd1 AnnexF/delay_st.txt --- /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 +