equal
deleted
inserted
replaced
|
1 FUNCTION_BLOCK AVERAGE |
|
2 VAR_INPUT |
|
3 RUN : BOOL ; (* 1 = run, 0 = reset *) |
|
4 XIN : REAL ; (* Input variable *) |
|
5 N : INT ; (* 0 <= N < 128 or manufacturer- *) |
|
6 END_VAR (* specified maximum value *) |
|
7 VAR_OUTPUT XOUT : REAL ; END_VAR (* Averaged output *) |
|
8 VAR SUM : REAL := 0.0; (* Running sum *) |
|
9 FIFO : DELAY ; (* N-Element FIFO *) |
|
10 END_VAR |
|
11 SUM := SUM - FIFO.XOUT ; |
|
12 FIFO (RUN := RUN , XIN := XIN, N := N) ; |
|
13 SUM := SUM + FIFO.XOUT ; |
|
14 IF RUN THEN XOUT := SUM/N ; |
|
15 ELSE SUM := N*XIN ; XOUT := XIN ; |
|
16 END_IF ; |
|
17 END_FUNCTION_BLOCK |
|
18 |