question

Lean van der Walt avatar image
2 Likes"
Lean van der Walt asked Lean van der Walt commented

Retrieving items out of storage

I have deliveries that are sourced and then stored in racks, this part of the model works relatively well.

On entry the items are pushed to a list (Item list). Then an order (another source that generates orders) comes into the warehouse at the items need to be taken from the racks, to a queue en then be sent (sink). Is there a way that this can easily be done?

Please assist

warehouse.fsm

FlexSim 16.1.1
warehouse
warehouse.fsm (63.5 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

Brandon Peterson avatar image
4 Likes"
Brandon Peterson answered Lean van der Walt commented

Lean,

Here is an example of how I would solve your model using some concepts from process flow. Please note that this could also be done in the standard objects, the process flow is just substituting as an easier way of writing some complex code. I based the example model off of the one that you posted.

Here is how the example model works:

  • Order Flow:
    • The order flow in the main ProcessFlow is responsible for creating orders.
    • The orders are assigned a label with the number of items that should be added to the order and a label to track the number of items that have been added to the order
    • The orders enter a small loop that adds items to the order one at a time.
      • Items are added to the order by attempting to pull them from the "In Storage" list with the itemtype required as the partition ID
    • The order then waits on the list "Waiting Orders" (as a back order) for all of the items to arrive in storage
    • Once all of the items arrive in storage the order pulls the items from the "Assigned 2 Order" list which allows them to have the 3D flowitems pulled from the racks.
    • The order then waits on the list "W84 Items" (as a back order) for all of the items to make it past the final queue.
  • FlowItem Flow:
    • The FlowItem Flow is responsible for getting the flowitem assigned to an order, releasing it from the rack, and synchronizing with it later in the model.
    • On Entry of the racks a token is created that represents the 3D flowitem.
    • The token gets the itemtype of the 3D flowitem assigned to a label and then waits to be assigned to an order by pushing to the "In Storage" list with the itemtype as the partition ID
    • Once assigned to an order the token informs the order that it has been assigned by pushing to the "Inform Order" list with the order token as the partition ID.
    • Next, the token waits for the order to be ready to have all the items pulled from the racks at once by pushing to the "W84 Pull from Rack" list with the order as the partition ID.
    • After being pulled from that list the order executes some custom code that pushes the 3D flowitem onto the global item list "Storage" that was already in your model. I used custom code because I did not know of another way to do this. I copied the code from the Send To Port trigger that you were already using in the racks. (I changed the code later as the portion that I copied was no longer necessary).
    • The tokens then wait for the 3D flowitems to exit the last queue in the model. They do this by pulling from the "Sync with 3D" list with the 3D flowitem as the partition ID. The 3D flowitem pushes to the list in the "3DSync" sub flow that is executed by the On Exit trigger of the last queue.
      • This step was not necessary but I figured that it would be the next question that you would probably ask on the Forum.
      • This approach would be a lot cleaner if you could have the 3D flowitem push directly to the list that the token is pulling from but I have ran in to a lot of problems attempting that. This is the cleanest approach I have been able to find.
    • Next the token informs the order that it has left the last queue by pushing to the "W84 Items" list with the order token as the partition ID

Here are some of the changes that I made to your model:

  • I added two process flows to you model. The main "ProcessFlow" is responsible for the flow of the FlowItems and the Orders. The sub flow "3DSync" is responsible for synchronizing the 3D Flowitem with the main process flow after the 3D Item has left the racks.
  • I diconnected the port connections from the racks to the last queue because they were not necessary.
  • I changed the Send To Port triggers on your racks so that they would wait as if the flowitems had been put on a list but without putting the flowitems on a list. The flowitems are put on the "Storage" list by the process flow.
  • I added pull logic the the last queue that would pull the items from the Global Item List "Storage" that was already in your model.

I hope this helps out,

Brandon


· 19
5 |100000

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