equal
deleted
inserted
replaced
|
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 |