My company case is a plant with AGV system including an Input port, several Processors and Queues, an output port, stockers between different manufacturing processor. The following picture is how layout looks like. In this plant, the product has 3 manufacturing process. There are several Processors at these 3 manufacturing areas. After completing first station Processing, product will be transport to Stocker to wait for available Queue/Processor in station2 or directly go to Processor in next Processing area if available. Same for completing process2 products go to processing 3. To build this model step by step, so I send product to Outputport directly after completing Processing1. In model, there are not as many Queues, Processors and AGVs as real in situation.
The difficult place in this case is the Queues are used both for before going to Processor and exiting Processor. When no Processors available, product can be sent to Queue to temporary wait for next station Processor. And when product complete processing, it can also go to Queue to wait for next area if the stocker is fully loaded.
Since the product destination is unknown beforehand, so I have problem with how to set push to ItemList. There are 4 types of tasktype in this simplified model.
Inputport to Processor;
Inputport to Queue;
Queue to Processor;
Processor to outputport
As we don’t want Equipment waste capacity, we want AGV to do task that can fill Processors in advance. We'd like to let AGV load item to Processor first if available, then load item to Queue secondly. So we hope AGV can have preference when looking for task, the order 1~4 is:
1.Queue to Processor, and this kind of task is pushed to Itemlist1;
2.Inputport to Processor, and this kind of task is pushed to Itemlist2;
3.Processor to outputport, and this kind of task is pushed to Itemlist3
4.Inputport to Queue, and this kind of task is pushed to Itemlist4.
Problem:
Product doesn’t know it’s destination until it exits from original place. In my model, there are two possible output ports for product exit from Inputport, they should be pushed to itemList2 or itemList4. How could I push product from Inputport to itemList that is correspond to the status when product exits from Queue/Processor then loaded by AGV. How to sort the list by destination or partition to let AGV focus on certain flow items first? Is there a better way to do with my case?
If I could push product to different list, I’d like to let AGV executing by always pull from Itemlist1, prior to Itemlist2, prior to Itemlist3, prior to Itemlist4.