equal
deleted
inserted
replaced
|
1 FUNCTION_BLOCK LAG1 |
|
2 VAR_INPUT |
|
3 RUN : BOOL ; (* 1 = run, 0 = reset *) |
|
4 XIN : REAL ; (* Input variable *) |
|
5 TAU : TIME ; (* Filter time constant *) |
|
6 CYCLE : TIME ; (* Sampling time interval *) |
|
7 END_VAR |
|
8 VAR_OUTPUT XOUT : REAL ; END_VAR (* Filtered output *) |
|
9 VAR K : REAL ; (* Smoothing constant, 0.0<=K<1.0 *) |
|
10 END_VAR |
|
11 IF RUN THEN XOUT := XOUT + K * (XIN - XOUT) ; |
|
12 ELSE XOUT := XIN ; |
|
13 K := TIME_TO_REAL(CYCLE) / TIME_TO_REAL(CYCLE + TAU) ; |
|
14 END_IF ; |
|
15 END_FUNCTION_BLOCK |
|
16 |