AnnexF/transfer_st.txt
author Edouard Tisserant
Fri, 19 Oct 2012 12:10:32 +0200
changeset 634 736b36a83548
parent 0 fb772792efd1
permissions -rwxr-xr-x
Added double curly braces for pragma (kept single curly braces for compatibility). Added macro def and undef surrounding pragma to simplify user code. Moved useless comment from generated code back to code generator.
FUNCTION_BLOCK TRANSFER
 VAR_INPUT
   AUTO : BOOL ;     (* 1 - track X0, 0 - ramp or hold *)
   XIN : REAL ;      (* Typically from PID Function Block *)
   FAST_RATE, SLOW_RATE : REAL ; (* Up/down ramp slopes *)
   FAST_UP, SLOW_UP, (* Typically pushbuttons *)
   FAST_DOWN, SLOW_DOWN : BOOL;
   CYCLE : TIME ;    (* Sampling period *)
 END_VAR
 VAR_OUTPUT XOUT : REAL ; END_VAR
 VAR XFER_RAMP : INTEGRAL ;
     RAMP_RATE : REAL ;
 END_VAR
 RAMP_RATE := 0.0 ;
 IF NOT AUTO THEN
  IF FAST_UP THEN RAMP_RATE := FAST_RATE; END_IF;
  IF SLOW_UP THEN RAMP_RATE := RAMP_RATE + SLOW_RATE; END_IF;
  IF FAST_DOWN THEN RAMP_RATE := RAMP_RATE - FAST_RATE; END_IF;
  IF SLOW_DOWN THEN RAMP_RATE := RAMP_RATE - SLOW_RATE; END_IF;
 END_IF ;
 XFER_RAMP (RUN := 1, CYCLE := CYCLE, R1 := AUTO,
            XIN := RAMP_RATE, X0 := XIN) ;
 XOUT := XFER_RAMP.XOUT;
END_FUNCTION_BLOCK