equal
deleted
inserted
replaced
|
1 FUNCTION_BLOCK TRANSFER |
|
2 VAR_INPUT |
|
3 AUTO : BOOL ; (* 1 - track X0, 0 - ramp or hold *) |
|
4 XIN : REAL ; (* Typically from PID Function Block *) |
|
5 FAST_RATE, SLOW_RATE : REAL ; (* Up/down ramp slopes *) |
|
6 FAST_UP, SLOW_UP, (* Typically pushbuttons *) |
|
7 FAST_DOWN, SLOW_DOWN : BOOL; |
|
8 CYCLE : TIME ; (* Sampling period *) |
|
9 END_VAR |
|
10 VAR_OUTPUT XOUT : REAL ; END_VAR |
|
11 VAR XFER_RAMP : INTEGRAL ; |
|
12 RAMP_RATE : REAL ; |
|
13 END_VAR |
|
14 RAMP_RATE := 0.0 ; |
|
15 IF NOT AUTO THEN |
|
16 IF FAST_UP THEN RAMP_RATE := FAST_RATE; END_IF; |
|
17 IF SLOW_UP THEN RAMP_RATE := RAMP_RATE + SLOW_RATE; END_IF; |
|
18 IF FAST_DOWN THEN RAMP_RATE := RAMP_RATE - FAST_RATE; END_IF; |
|
19 IF SLOW_DOWN THEN RAMP_RATE := RAMP_RATE - SLOW_RATE; END_IF; |
|
20 END_IF ; |
|
21 XFER_RAMP (RUN := 1, CYCLE := CYCLE, R1 := AUTO, |
|
22 XIN := RAMP_RATE, X0 := XIN) ; |
|
23 XOUT := XFER_RAMP.XOUT; |
|
24 END_FUNCTION_BLOCK |
|
25 |