equal
deleted
inserted
replaced
|
1 FUNCTION_BLOCK RAMP |
|
2 VAR_INPUT |
|
3 RUN : BOOL ; (* 0 - track X0, 1 - ramp to/track X1 *) |
|
4 X0,X1 : REAL ; |
|
5 TR : TIME ; (* Ramp duration *) |
|
6 CYCLE : TIME ; (* Sampling period *) |
|
7 END_VAR |
|
8 VAR_OUTPUT |
|
9 BUSY : BOOL ; (* BUSY = 1 during ramping period *) |
|
10 XOUT : REAL := 0.0 ; |
|
11 END_VAR |
|
12 VAR XI : REAL ; (* Initial value *) |
|
13 T : TIME := T#0s; (* Elapsed time of ramp *) |
|
14 END_VAR |
|
15 BUSY := RUN ; |
|
16 IF RUN THEN |
|
17 IF T >= TR THEN BUSY := 0 ; XOUT := X1 ; |
|
18 ELSE XOUT := XI + (X1-XI) * TIME_TO_REAL(T) |
|
19 / TIME_TO_REAL(TR) ; |
|
20 T := T + CYCLE ; |
|
21 END_IF ; |
|
22 ELSE XOUT := X0 ; XI := X0 ; T := t#0s ; |
|
23 END_IF ; |
|
24 END_FUNCTION_BLOCK |
|
25 |