question

Felipe P2 avatar image
0 Likes"
Felipe P2 asked Felipe P2 commented

How to unload to queue and then to processor?

answer-4-prueba.fsm

I have this model and I added a queue for unloading the flowitems before entering the processor "Chipera" (before this change they were going straight from the task executer to Chipera). I made a few changes on the process flow setup to make this, but I can´t get the flowitems being unloaded to the queue.

Can someone help me on this?

Regards,

Felipe

FlexSim 19.1.0
queueprocessoragv network
answer-4-prueba.fsm (83.9 KiB)
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

1 Answer

Benjamin W2 avatar image
0 Likes"
Benjamin W2 answered Felipe P2 commented

Hi @Felipe P2,

If you are moving all of the items into a queue, you will not need to run a sub-flow. Simply use a Move Object activity instead that will move all of the boxes assigned to token.boxes into the Queue.

chiperawithqueue.fsm


· 9
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

Felipe P2 avatar image Felipe P2 commented ·

Hi Benjamin, thank you very much for your time.

I tried to work with the model you attached, but for a reason i don´t know, the queue is accepting more than 100 flowitems (which is weird because i limited the maximum content on the queue to 100). I set this because I would like the task executer to unload flowitems on Chipera is the queue is empty (Chipera is available) or keep traveling and unload flowitems on Logyard if Chipera is busy. Would you help me on fixing this?

Regards,

Felipe

0 Likes 0 ·
Benjamin W2 avatar image Benjamin W2 Felipe P2 commented ·

Hey @Felipe P2,

Process flow will overide any of the 3D settings. I adjusted the process flow so the model would exhibit similar behavior. I did this using 2 things:

  1. A Run Sub Flow that only generates as many tokens as there is room in Queue1.
  2. A Decide that will tell the AGV to travel to the Logyard if it still has items left in it.

chiperawithqueuemax.fsm

0 Likes 0 ·
Felipe P2 avatar image Felipe P2 Benjamin W2 commented ·

Hi Benjamin, I see what you changed in the model. Maybe i forgot to comment a few things. The task executer should unload all its flowitems in the same destination (or Chipera or Logyard). As of now, i see that in some cases the task executers unloads part of the items on queue 1 and goes back to the source with part of the flowitems not being unloaded.

I will explain the original problem a bit better so maybe you can help me out a little bit:

The model is simulating a process for unloading wooden logs from a barge (Barcaza) using a crane (Grúa) and delivering the logs in two possible places (Chipera and Logayrd). Each box simbolizes a ton of wooden logs. The task executer is simbolizing a trailer (there are 3 trailers in the operation), and my interest in putting the queue before Chipera is because the system actually works this way: wooden logs are unloaded from the barge into a plattform, the trailer (task executer) hooks to the plattform and carry the plattform to the destination, for the flowitems to be unloaded, but the trailer can leave the plattform alone on destination for unloading tasks. Processors simbolize the cranes for unloading items on destination. Plattforms are unlimited in the operation so it has no relevance to represent them with elements in the model.

So in the model i attached early today i tried to put a queue before Chipera, and made a few changes to achieve that, but the model was not working. I guess that two conditions should be set: the queue capacity should be 100 and the task executer should still visualize if Chipera is available or not. If it is available it should unload all the items in the queue for the processor to process them, and if not, it should go to Logyard. I think another queue should be put before Logyard, but with no limited capacity, given that the unloading process at Logyard can always be done (regardless it is processing flowitems or not).

I would appreciate if you could help me adjust the model so it can work like I described above.

Thank you very much for your time and effort.

Kind reagrds,

Felipe

0 Likes 0 ·
Benjamin W2 avatar image Benjamin W2 Felipe P2 commented ·

@Felipe P2, thank you for the clarification. Do you want the AGVs to dump all of their load at once onto the Queues or would you like them to unload sequentially?

0 Likes 0 ·
Felipe P2 avatar image Felipe P2 Felipe P2 commented ·

Benjamin, I would like the AGVs to unload the flowitems at once in the queue, and then the processor should take flowitems from the queue with the rate that is set on the Process time (for both Chipera and Logyard). Was i clear?

Thanks,

Felipe

0 Likes 0 ·
Benjamin W2 avatar image Benjamin W2 Felipe P2 commented ·

@Felipe P2, Yes, thank you. This model uses a Decide activity to check to see if Queue1 the boxes in Queue1 plus the boxes in the AGV would exceed 100. The actual syntax is:

(Model.find("Queue1").subnodes.length + token.AGV.subnodes.length) <= 100

Let me know if you have further questions.

chipera2queues.fsm

0 Likes 0 ·
chipera2queues.fsm (80.3 KiB)
Felipe P2 avatar image Felipe P2 Felipe P2 commented ·

Hi Benjamin, thank you very much. This model is almost perfect for the behaviuor that i´m looking for. I think i made a couple of mistakes before, so I will tell you a few things that apply for the model:

1- There should be one minute of unload time (time for the whole batch of 100 flowitems to get from the task executer to the queue), in both queues (Chipera and Logyard).

2- The queue that you introduced before Logyard should work exactly as the queue that we put before Chipera (Queue 1), but with a little difference. When the task executer sees that Chipera is busy it should go to Logyard, and if Logyard is busy as well, it should still go Logyard and wait until Queue 2 is empty for unloading flowitems into Queue 2. Then, once flowitems are unloaded, task executer should go back to start.

Do you think we could apply this changed to the model you attached?

Once more, thank you very much for your time and effort.

Kind regards,

Felipe

0 Likes 0 ·
Joseph Gillespie avatar image Joseph Gillespie Felipe P2 commented ·

@Felipe P2

Unfortunately Ben is out of the office right now, but I'll help you out again with this one!

1. Adding a minute of unload time can be easily done by making each AGV go through a 1 minute delay before unloading like so:

2. This was also done fairly easily by adding a "Wait for Event" activity so that the token would wait for Queue2 to be empty before unloading:

This activity fires when the queue reaches 0 items. The "Fire If Initial Value Meets Rule" part ensures that if the queue is already empty when the AGV arrives it may immediately unload.

Here's the updated model: chipera2queuesanswer.fsm

0 Likes 0 ·
capture.png (2.5 KiB)
capture2.png (7.9 KiB)
Felipe P2 avatar image Felipe P2 Felipe P2 commented ·

Hi Joseph, than you so much!!

This model is perfect. It works exactly as i was looking for so far.

Once more, thank you for your time and effort.

Kind regards,

Felipe

0 Likes 0 ·