equal
deleted
inserted
replaced
|
1 FUNCTION_BLOCK DERIVATIVE |
|
2 VAR_INPUT |
|
3 RUN : BOOL ; (* 0 = reset *) |
|
4 XIN : REAL ; (* Input to be differentiated *) |
|
5 CYCLE : TIME ; (* Sampling period *) |
|
6 END_VAR |
|
7 VAR_OUTPUT |
|
8 XOUT : REAL ; (* Differentiated output *) |
|
9 END_VAR |
|
10 VAR X1, X2, X3 : REAL ; END_VAR |
|
11 IF RUN THEN |
|
12 XOUT := (3.0 * (XIN - X3) + X1 - X2) |
|
13 / (10.0 * TIME_TO_REAL(CYCLE)) ; |
|
14 X3 := X2 ; X2 := X1 ; X1 := XIN ; |
|
15 ELSE XOUT := 0.0; X1 := XIN ; X2 := XIN ; X3 := XIN ; |
|
16 END_IF ; |
|
17 END_FUNCTION_BLOCK |
|
18 |