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