question

Jorge Manuel Garcia avatar image
0 Likes"
Jorge Manuel Garcia asked Shankar Narayan commented

Goods-to-man picking

Hi everyone:

I'm trying to simulate a goods to man picking process and I'm stuck with a problem. I give to versions of the question :)

Short question:

How can I tell a TaskExecuter to retrieve a pallet from a location? (ASRS vehicle to extract a specific pallet from a Rack and send it to the conveyor)

Long question: This is the general layout:

af3b6e7e-ea13-4a87-a4a0-5d4d435d6ff0.jpg

This process is as follows:

- We have 2 types of pallets:

- Pallets stored at the racks: picking pallets

- Pallets for the prepared orders: order pallets

- Each operator handles 3 orders at the same time (the order pallets are on the queues behind them)

- Each operator receives pallets coming from the racks (via the ASRS vehicle and the conveyors)

- Once the picking pallet is processed, it returns back to its location

My approach is the following:

- "Source1" creates pallets (order pallets) and delivers it from "Queue1" to "Order1_1" ... "Order4_3" queues. When the order is finished, the pallet from "OrderX_Y" will be sent to "Sink2" and a new pallet will enter the queue.

- When the queue "OrderX_Y" receives the new pallet, it should trigger the picking process for the new order. I've tried to send a message (with sendmessage() function from "OrderX_Y" to the Dispatcher (which can send the task sequence to the ASRSvehicles), but I receive the following error: "OrderX_Y is not a valid dispatcher, and the task sequence could not be dispatched".

How can I send a message from "OrderX_Y" to the Dispatcher to start the tasksequence?

Is there a more convenient approach than mine?

Thanks in advance :)

EDIT: I attach here (pfc18.fsm) the model

Some explanations:

- I connected Order1_1 to the Dispatcher. The other OrderX-Y queues were not connected (I just disconnected them to test the model)

- The Dispatcher only connects to the ASRSvehicle2 (it should connect the other one, too). I disconnected the other to test the model

- Pallets in the racks are objects of type "Part", with some labels defined (rack, bay, level, aisle, Workplace). The Workplace label is used to forward the pallet through the conveyor (at the decision points).

What I need to do is:

1) Order1_1 receives a new pallet and keeps it in the queue

2) The Dispatcher sends tasksequences to the ASRS vehicles to take out the pallets for that order and put them in the conveyor

3) Pallets arrive at the picking workplace (or workstation). They are processed and returned back to their original location in the racks

4) Once the order is finished, Order1_1 releases the pallet (it goes to the Sink2) and a new pallet arrives

EDIT2: (I'm not sure if I should open a new question)

In the modified model (pfc19.fsm) (thanks @Jeff Nordgren for your guidance) I'm trying to instruct the ASRS vehicle to store a pallet when it travels back to the position, not when it finishes its current tasksequence (this can easily be seen if you run the model in this new version). Which would be the easiest approach?

Thanks again :)

FlexSim 16.2.0
conveyorrackdispatcherasrspicking station
· 4
5 |100000

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

Jeff Nordgren avatar image Jeff Nordgren commented ·

@Jorge Manuel Garcia

Jorge,

From just a picture, it is impossible to know what is happening in your model or to tell you how to fix it. Is is possible that you can send us your model? That way we can look at it and see what is happening and suggest way(s) that can help fix it.

0 Likes 0 ·
Jorge Manuel Garcia avatar image Jorge Manuel Garcia Jeff Nordgren commented ·

I've just attached it, thanks :)

0 Likes 0 ·
Sam Stubbs avatar image Sam Stubbs ♦ commented ·

If it's general advice you're looking for, I would recommend using Process Flow to control the logic of placing the pallets and controlling the tasks of the ASRS vehicle rather than trying to send and receive messages to the Dispatcher to start tasks. If find it easier to control tasks directly with Process Flow. I would use an "event triggered source" / "wait for event" to listen for the pallets, and probably use lists to push the pallets as they are finished and a pull as the queues become available.

If you're looking for a more specific advice, it might be helpful for me to visualize what you're doing by seeing your model.

0 Likes 0 ·
Jorge Manuel Garcia avatar image Jorge Manuel Garcia Sam Stubbs ♦ commented ·

I've just attached it, thanks :)

0 Likes 0 ·

1 Answer

Jeff Nordgren avatar image
2 Likes"
Jeff Nordgren answered Shankar Narayan commented

@Jorge Manuel Garcia

Jorge,

Attached is your model with the changes that I've made. I'm not quite sure why you are trying to send a message to the dispatcher to create a TS. By dispatching a created TS, that would send it to the dispatcher (or other TE specified in the TS). So I took your code out of the dispatcher and put it in the OnEntry trigger of the Order1_1 queue rather than sending a message. When you were trying to create the TE in the dispatcher, you were creating a TS on the centerobject of current, which is the dispatcher itself, which of course is not a valid reference and is probably why you were getting errors.

It's best to just create a TS with the specified TE in the TS itself and then just dispatching it. No need to try and send a message to that dispatcher or TE.

I don't think I addressed all of your concerns but maybe after look at the model, you can then let me know what else needs to be done.

pfc18-jn1.fsm


pfc18-jn1.fsm (79.1 KiB)
· 7
5 |100000

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

Jorge Manuel Garcia avatar image Jorge Manuel Garcia commented ·

Thanks Jeff! That was really kind of you! :) I'm going step by step (since this is the first time I create a model like this) I'll edit the main post with the new issue I'm trying to solve... (I'd like to instruct the ASRS vehicle to store a pallet when it travels back to the position, not when it finishes its current tasksequence)

0 Likes 0 ·
Jeff Nordgren avatar image Jeff Nordgren commented ·

@Jorge Manuel Garcia

Jorge,

Attached is your model with the changes that I've made.

To put away the pallets you don't need to create a manual TS in the DP on the conveyor. I just connected the conveyor to Rack3 and Rack4. Then in ExitTransfer20 in the Send To Port field, I send it to output port 1 or port 2 based on the Rack label on the pallet. The Racks already have the necessary code to know where to place the pallet.

Take a look at the model and see if this is what you were looking for.

pfc19-1-jn1.fsm

0 Likes 0 ·
pfc19-1-jn1.fsm (80.2 KiB)
Jorge Manuel Garcia avatar image Jorge Manuel Garcia Jeff Nordgren commented ·

Thanks Jeff, but that's not exactly what I thought. I'd like the ASRS vehicle to do the following:

1) It picks a pallet and puts it on the conveyor

2) If there are any palles waiting to be stored, take 1 pallet from the input conveyor and store it.

(repeat 1 and 2 ...)

In that way the ASRS vehicle does picking and storing at the same time (which is what actual systems do).

Could it be possible?

Maybe, should I use the "OnUnload" Trigger from the ASRS, pausing the TS and checking if I'm at the header and can take a pallet to store it?

Thanks :)

0 Likes 0 ·
Jeff Nordgren avatar image Jeff Nordgren Jorge Manuel Garcia commented ·

@Jorge Manuel Garcia

Jorge,

I believe that I've figured out a way to have the pallets picked up and put away in a more orderly fashion as you describe, alternating between the two.

I added a queue at the end of the put away conveyor. I have a label on that queue that gets set in the OnEntry trigger and gets reset in the OnMessage trigger. The "trick" to getting it to work was to send a delayed message in the OnEntry trigger that wold give the ASRS a chance to put away a pallet and receive the TS to pick another pallet up before the message is sent to put another pallet away.

Take a look at the attached model and see if this is more what you are looking for. I also changed the process time on Processor1 to zero so that the logic would be tested better.

pfc19-1-jn3.fsm

1 Like 1 ·
pfc19-1-jn3.fsm (82.0 KiB)
Show more comments
Jorge Manuel Garcia avatar image Jorge Manuel Garcia Jeff Nordgren commented ·

Thanks Jeff for your last version! It was really helpful :) I'm working now at the other parts of the model. As soon as I get it finished, I'll post it here, if it's helpful for anyone. I hope there are no new questions :D

0 Likes 0 ·
Shankar Narayan avatar image Shankar Narayan commented ·

Hello @Jorge Manuel Garcia

Did you get a chance to complete your other parts of this Goods to Man picking model that you can share with others? I am also looking for solving similar situation but with totes instead of pallets.

Thanks in advance.

0 Likes 0 ·