lib/ramp_st.txt
changeset 0 fb772792efd1
child 276 1679f514f38a
--- /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
+