Very good. This will keep up with where each unit is located.This means when a load blocks a PE its destination is moved into a register. When the load UNblocks that same PE its destination is moved the next (sequential) register and so on.
That would take care of which units get released. Now how do we decide which new entering units go to which workstations without blocking the path of exiting units?For a system like this I'd just use the workstation number as the destination and set up the divert logic accordingly. Outbound loads could be given almost any code other than 1-18. As far as the release side, I'd set up an integer pointer sequencer to check for loads available to release - ie.
The goal is to maximize the number of units going to EXIT, so we need to exit and enter as fast as possible. I think the exisitng program logic is set up to only allow ONE unit to exit, then ONE unit to enter, and it is 512 rungs, so integrating new rungs onto that is a major task.
It may be easier to just make a list of the available Inputs and Outputs and start from scratch. This morning, I tried matching up the I/O to the program addresses, but my old worn-out brain got a bad headache so I had to put that on hold. A editible copy of the Layhout drawing is needed to show all the Input addresses and the Ouput addresses. I managed to import part of it into AutoCAD, but that is as far as I got.