AnnexF/transfer_st.txt
changeset 0 fb772792efd1
equal deleted inserted replaced
-1:000000000000 0:fb772792efd1
       
     1 FUNCTION_BLOCK TRANSFER
       
     2  VAR_INPUT
       
     3    AUTO : BOOL ;     (* 1 - track X0, 0 - ramp or hold *)
       
     4    XIN : REAL ;      (* Typically from PID Function Block *)
       
     5    FAST_RATE, SLOW_RATE : REAL ; (* Up/down ramp slopes *)
       
     6    FAST_UP, SLOW_UP, (* Typically pushbuttons *)
       
     7    FAST_DOWN, SLOW_DOWN : BOOL;
       
     8    CYCLE : TIME ;    (* Sampling period *)
       
     9  END_VAR
       
    10  VAR_OUTPUT XOUT : REAL ; END_VAR
       
    11  VAR XFER_RAMP : INTEGRAL ;
       
    12      RAMP_RATE : REAL ;
       
    13  END_VAR
       
    14  RAMP_RATE := 0.0 ;
       
    15  IF NOT AUTO THEN
       
    16   IF FAST_UP THEN RAMP_RATE := FAST_RATE; END_IF;
       
    17   IF SLOW_UP THEN RAMP_RATE := RAMP_RATE + SLOW_RATE; END_IF;
       
    18   IF FAST_DOWN THEN RAMP_RATE := RAMP_RATE - FAST_RATE; END_IF;
       
    19   IF SLOW_DOWN THEN RAMP_RATE := RAMP_RATE - SLOW_RATE; END_IF;
       
    20  END_IF ;
       
    21  XFER_RAMP (RUN := 1, CYCLE := CYCLE, R1 := AUTO,
       
    22             XIN := RAMP_RATE, X0 := XIN) ;
       
    23  XOUT := XFER_RAMP.XOUT;
       
    24 END_FUNCTION_BLOCK
       
    25