ATTENTIONThis FlexSim Community Forum is read-only. Please post any new questions, ideas, or discussions to our new community (we call it Answers) at https://answers.flexsim.com/. Our new Question & Answer site brings a modern, mobile-friendly interface and more focus on getting answers quickly. There are a few differences between how our new Q&A community works vs. a classic, threaded-conversation-style forum like the one below, so be sure to read our Answers Best Practices. |
flexsim.com |
#1
|
|||
|
|||
Box Picking from a pallet in a rack
Hi,
I would like to do the following: Items(textured Couloured Boxes) have been stacked on a pallet and the pallet has been stored in a rack. A(picking) operator walks along the rack, picks items from the pallets in the racks and stores them on his trolley(queue). The operator would store 16 items on his trolley and transport them to a sink. Then he would start at the last position again and collect items due to his picking list. If a pallet is emptied, it shall be transported to another sink. Did someone realize this process already or does someone have an idea how to solve this? In order to receive a simulation result, I would use labels, a global table load/unload times. But in addition I would like to have the visual effect that the item vanishes from the stored pallet and appears on the trolley of the operator. From my point of view the biggest problem is to take the item from the pallet in the rack instead of taking the full pallet from the rack, destroy one item and store the pallet in the rack again. Thanks in advance Best regards Michael Hartlieb |
The Following 2 Users Say Thank You to Michael Hartlieb For This Useful Post: | ||
Jörg Vogel (12-09-2008) |
#2
|
||||
|
||||
Hello Michael,
first of all, the model you allowed Tom David to post is magnificent. Now to your own question. The pallets are the items of your rack. they are also containers. The boxes are the content of the items. You can create a referrence to the boxes by using rank(item,5) for the fifth box on the pallet, first(item) to the first (or rank(item,1)), or last(item) to the last box. To pick them write a tasksequence for your own. You can modify the Task Sequence Sample 1 of the rack under the tab Flow and then in the field Request Transport From and change only the pointer from item to a referrence described above. It is just the start. Still you need a logic that releases more than the amount of items in the rack. The easiest place for that may be the on message trigger. There you can create tasksequences too. I think you will be able to cope with your task. Jörg |
The Following 2 Users Say Thank You to Jörg Vogel For This Useful Post: | ||
Tom David (12-08-2008) |
#3
|
|||
|
|||
Hi Jörg,
thanks for your fast answer. I started to learn, how a Tasksequence works. And your tipp works good with an operator. But how I can do this with a Transporter? I want to do the following: 1.) A Transporter travels to a queue to load a pallet. 2.) The same Transporter (with the loaded pallet) travels to a rack. This rack contains pallets (used as containers) with Boxes(FLowItems) stacked inside the pallet. 3.) The Transporter loads a box from the pallet inside the Rack onto the pallet of the Transporter 4.) The Transporter shall not take or move the pallet in the rack. With picking the Box the pickingprocess is finished and the Transporter should move/Travel to another Bay of the Rack and pick there another Box. This should be done for maybe 16 times. 5.) After picking and loading 16 boxes from the rack onto the pallet on the Transporter, travel to another queue and unload the pallet with the boxes on it into the queue and start the next picking sequence. Using your hint I can take a box from pallet in the Rack (using rank). After that I tried with the Tasktype_Moveobject to load the box onto the Transporter pallet, but the only effect was, that the picked box was loaded inside the Transporter (in the Transporter tree). The Transporter travels to the queue, unloads the pallet from the rack (what I don't want) and unload the first pallet. Maybe someone can tell me, how to solve this problem? Thanks, Michael |
#4
|
||||
|
||||
Hello Michael,
before I find suitable solution an explanation what the model's problem is. At the time the tasksequence is dispatched for the product from the rack, the transporter hasn't loaded a pallet. Therefore no reference or pointer exists. The solution is to call subtasks. Look for the funktion or tasktype callsubtasks in the forum and of course, first in the manual. Jörg Last edited by Jörg Vogel; 12-11-2008 at 09:17 AM. |
The Following User Says Thank You to Jörg Vogel For This Useful Post: | ||
Michael Hartlieb (12-11-2008) |
#5
|
||||
|
||||
Hi Michael,
let me (hopefully) help you with some comments. I try to get your model fixed today evening: The challenge of you model is, that the transport hasn´t loaded the pallet before the rack creates the TS. That means, the rack doesn´t know at that point of time, where to move the boxes to. I would try it this way: 1. create a tasksequence on the pallet queue: - call transporter - load pallet - travel to rack - call a subtasksequence (TASKTYPE_CALLSUBTASKS) 2. create a tasksequence on the OnMessage trigger of the rack(called from the callsubtaskstask in TS 1. - move the boxes you want to move to the pallet on the transporter - travel to the unloading queue - unload the pallet to the unloading queue When the transporter reaches the rack, he has loaded the pallet and the sub task sequence will know where to load the boxes on. Have a look into the task sequence user manual for a better understanding please. That should do the job. I try to make it more clear in an example model. 3. Your model contains a user command which uses variable types fsnode* . This variable type has been replaced in FLexsim 4.x with "treenode". You can still use fsnode* instead, but it doesn´t make sence because you have to compile the model then. Good luck Ralf aka ralle Last edited by RalfGruber; 12-11-2008 at 09:14 AM. |
The Following User Says Thank You to RalfGruber For This Useful Post: | ||
Michael Hartlieb (12-11-2008) |
#6
|
|||
|
|||
Hi Ralf, hi Jörg,
thanks for the answers. I hope, that I understand everything correct. I will try it tommorow. We saw the tasktype callsubtask before and thougt, that we can use it... but we doesn't knew how. The using of fsnode* at the usercommand comes from the manual. I wanted to know, what it makes. Michael |
#7
|
||||
|
||||
Hello Michael,
the second for-loop isn't necessary. Just use your frunloadtask. Then you have built a quick and dirty methode to accomplish your task. But your transporter doesn't deliver the pallet (your rack item). It moves the pallet simply and instantly at the unloadtask from the rack to the queue with all the stacked boxes. (quick and dirty). If you want it realistic then you have to call a second time a subtask to unload all your boxes from your pallet. To identify your second call use one of the var2 - var4 parameters. Probably you have used var1 to transfer the reference of each box, which you have wanted to move, as a number. But remember, the original pallet (rack item) is still in the rack. Jörg |
The Following User Says Thank You to Jörg Vogel For This Useful Post: | ||
Michael Hartlieb (12-11-2008) |
#8
|
|||
|
|||
Hi Jörg,
that is one of my problems with this model. I know that the original pallet is already in the rack. But at first I wanted to solve the problem with the boxes and then solve the problem with the pallet in the rack. If this is realized my ambition is to use a global table with maybe three columns. One for a racknumber, one for a baynumber and on for the level. But I think, step-by-step Michael |
#9
|
||||
|
||||
Hi,
fsnode* is pointer declaration. We have used it instead of treenode. you find this declaration in the precompiled functions in flexsim. Jörg |
The Following User Says Thank You to Jörg Vogel For This Useful Post: | ||
Michael Hartlieb (12-13-2008) |
#10
|
||||
|
||||
Michael,
here you find a small example model. Look at these points: 1. RequestTransportfrom field of queue - standard tasksequence with just the call subtasks task added, which causes OnMessage of the rack to fire 2. OnMessage of rack - case 1 creates the subtasksequence and checks, if the pallet gets empty after removing one more item I forgot to mention: Set the minimum dwell time trigger of the rack to "-1". This causes the rack not to release anything before you explicitly call "releaseitem()", which is done in case 1 OnMessage. Hope that helps a bit. Ralf aka ralle @ tomtheatom: I know that this model is not as you want it to be! Last edited by RalfGruber; 12-11-2008 at 11:04 AM. |
The Following 8 Users Say Thank You to RalfGruber For This Useful Post: | ||
Vadim Fooks (08-20-2012) |
Thread | Thread Starter | Forum | Replies | Last Post |
Pallet jack/Hand jack | Ron Lavoie | Q&A | 13 | 02-19-2016 04:13 PM |
Picking process | Simon Farsah | Q&A | 9 | 03-23-2015 06:55 AM |
help! order picking process with global tables | Charmaine Ng | Q&A | 3 | 11-06-2008 11:24 AM |
ASRS Picking | Gavin Douglas | Q&A | 1 | 09-09-2008 09:21 AM |
Fluid "Pallet" Flowitems | Maurits Brandt | Q&A | 4 | 11-12-2007 12:37 PM |