lib/ramp_st.txt
changeset 0 fb772792efd1
child 276 1679f514f38a
equal deleted inserted replaced
-1:000000000000 0:fb772792efd1
       
     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