--- /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
+