diff -r 000000000000 -r fb772792efd1 lib/ramp_st.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/ramp_st.txt Wed Jan 31 15:32:38 2007 +0100 @@ -0,0 +1,25 @@ + FUNCTION_BLOCK RAMP + VAR_INPUT + RUN : BOOL ; (* 0 - track X0, 1 - ramp to/track X1 *) + X0,X1 : REAL ; + TR : TIME ; (* Ramp duration *) + CYCLE : TIME ; (* Sampling period *) + END_VAR + VAR_OUTPUT + BUSY : BOOL ; (* BUSY = 1 during ramping period *) + XOUT : REAL := 0.0 ; + END_VAR + VAR XI : REAL ; (* Initial value *) + T : TIME := T#0s; (* Elapsed time of ramp *) + END_VAR + BUSY := RUN ; + IF RUN THEN + IF T >= TR THEN BUSY := 0 ; XOUT := X1 ; + ELSE XOUT := XI + (X1-XI) * TIME_TO_REAL(T) + / TIME_TO_REAL(TR) ; + T := T + CYCLE ; + END_IF ; + ELSE XOUT := X0 ; XI := X0 ; T := t#0s ; + END_IF ; + END_FUNCTION_BLOCK +