question

Adam C avatar image
0 Likes"
Adam C asked Jason Lightfoot edited

Rack Pull to Slot by Label

I have items that can go to racks or floor storage by mutually exclusive labels (WH, RL). The value of the label dictates which rack or floor storage each item should be routed to. Routing to floor storage is working, but there are some exceptions with the racks.

The racks pull using SQL IN with the list of all rack labels on the rack. I would prefer not to need to include this, but currently it prevents the racks from pulling items they cannot slot (which triggers exceptions).

The pull requirement is 'items successfully assigned to slots,' and the slot assignment strategy is 'matching labels.' This works until the slot is full, at which time it seems the rack pulls the item anyway and then throws an error because no slot can be assigned.

See attached concept model. I want the racks to only pull items when there is a matching slot with capacity, and not otherwise error out. If it is possible to not need to list the slot label values in the query, that would be ideal (there are many more slots/labels in the real model).

WHRLConcept.fsm

FlexSim 23.0.11
racksslot labelspullfromlistslot assignmentrack pull
whrlconcept.fsm (42.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

Jason Lightfoot avatar image
0 Likes"
Jason Lightfoot answered Jason Lightfoot edited

At the moment the slot assignment strategy, and therefore the checking against the remaining space of a slot, is done after the pull from port code has chosen an item from the list. The slot assignment strategy is actually fired when the item's placement needs to be determined which is either when it enters the rack or when the offset travel of a task executer needs to know the location to which it should travel for the unload. The pull requirement you have entered is never fired - it should really be grayed out.

To get around this we need to try and assign a slot to the item (value) as part of the query:

WHERE WH = puller.WH AND puller.as(Storage.Object).assignSlot(value)<>0

For your second point - instead of entering the array in a query you can instead refer to an array label on the puller/rack that has the values you need, which will further standardize the query.

5 |100000

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