diff -r 000000000000 -r fb772792efd1 AnnexF/transfer_st.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/AnnexF/transfer_st.txt Wed Jan 31 15:32:38 2007 +0100 @@ -0,0 +1,25 @@ +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 +