Transfertable automation
Here is the winlok timetable that controls the
transfer table. The table automatically stops at each exit road and waits for a
pulse to start it moving to the next exit road. I have installed 2 relays (one
latching and one normal) the latching one controls the direction of the table
and the other provides the pulse to start it to move .
I.A:=0 TRACK NUMBER TO GOTO VAR
I.C:=0 GENRAL COUNTER
I.B:=1 CURRENT POSITION OF TABLE
inc(I.B)
GoTo('init') MOVES THE TABLE TO A KNOWN STARTING
POSITION
SetSwi(601,RED)
Label('readbutton') LOOKS FOR A MOVE COMMAND FOR THE TABLE (SWITCHS
501 -509 ARE USED TO TELL IT WHERE TO GO
for I.C:=509 downto 501 do if(GetSwi(I.C))= RED then I.A:=(I.C-500)
if I.A >0 then Goto('whichdir') else GoTo('readbutton')
Label('whichdir')
if I.A > I.B then GoTo('fdir')
if I.A < I.B then GoTo('backdir')
if I.A = I.B then GoTo('ok')
Label('fdir') MOVES THE TABLE FORWARD SWITCH 23 IS THE DIRECTION RELAY
SetSwi(23,red)
if I.A > I.B then GoTo('forward') else GoTo('whichdir')
Label('forward')
I.E:= I.B + 600
SetSwi(I.E,GREEN) SWITCHES 601-609 ARE USED TO REPORT THE TABLES POSITION
inc(I.B)
I.E:= I.B + 600
SetSwi(I.E,RED)
T.A:=CurTimeVal
SetSwi(24,red) SWITCH 24 IS THE PULSE RELAY TO MAKE THE TABLE START TO MOVE IN
THE DESIRED DIRECTION
GoSub('60') GO TO THE WAIT FOR THE TABLE TO GET THERE ROUTINE
GoTo('fdir')
Label('backdir') THE SAME AS ABOVE BUT IN THE REVERSE DIRECTION
SetSwi(23,green)
if I.A < I.B then Goto('back') else GoTo('whichdir')
Label('back')
I.E:= I.B + 600
SetSwi(I.E,GREEN)
dec(I.B)
I.E:= I.B + 600
SetSwi(I.E,RED)
T.A:=CurTimeVal
SetSwi(24,red)
GoSub('60')
Goto('backdir')
Label('ok') THIS RESETS THE SWITCHS 501-509 SO THE TABLE DOES NOT TRY TO MOVE
AGAIN ONCE ITS WHERE YOU HAVE SENT IT
for I.C :=509 downto 501 do SetSwi(I.C,GREEN)
I.A:=0
GoTo('readbutton')
Label('init')
SetSwi(23,green)
I.D:=9
Label('reset')
I.E := I.D + 600
SetSwi(I.E,GREEN)
dec(I.D)
T.A:=CurTimeVal
SetSwi(24,red)
T.B:=CurTimeVal
GoSub('60')
if I.D = 0 then Goto('readbutton')
GoTo('reset')
GoTo('readbutton')
Sub('60') THIS WAITS FOR 3 SECONDS TO PASS BEFORE SENDING THE NEXT COMMAND TO
THE TABLE ( THIS ALLOWS THE TABLE TO GET TO THE NEXT ROAD
Label('um')
if TimeDiff(T.B,T.A) > 3 then Return
T.B:= CurTimeVal
GoTo('um')
Back to main
page
back to
history 2
last updated 26/11/00