question

David Seo avatar image
0 Likes"
David Seo asked Joerg Vogel commented

how to separate the items according to the rack slot space

I want to know how to separate the sub-items from the separater according to the slot space of the rack.

The status picture and my issue model is followed.

how-to-separate.png

PickingItems_StorableSlots.fsm

The slot assignment strategy is Bay, Level, SlotID with space. So I customed a little like picture.

But the separator unpacking quantity should be changed according to the rack slot space to be storable.

I found using setvarnum(...splitquantity...) command in Separator not valid. How can I do it?

Using Process Flow? if so how to do? or another method?

The container with remaining contents should be separated to the queue(port #1).

Thanks.

FlexSim 21.2.4
slot spacehow to separate partial items according to the slot space
· 2
5 |100000

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

Joerg Vogel avatar image Joerg Vogel commented ·

Separator and Combiner are numb objects. They collect or divert items by number. That’s there only purpose. It seems they are more intelligent to consider attributes but they are not. If you want to act on conditions you have to get to a decision on entry of items. It is like a forecast.
This said you have to query slots on entry of your separator. The number of available slots or current amount of packed items set a label at your separator, which gets evaluated in unpack quantity. You assign queried slots on entry right away, because on process finish circumstances might have changed. The result of your query is an array. You can use methods pop or shift to return a slot from your array to assign a slot to an storage item in a loop structure.

0 Likes 0 ·
David Seo avatar image David Seo Joerg Vogel commented ·

Hi. Joerg. Thank you.

I customed on Entry of separator as followed;

Object current = ownerobject(c);

Object item = param(1);

int port = param(2);

{ // ************* PickOption Start ************* //


Storage.Object StorageObject = Model.find("Rack1");

Storage.Item StorageItem = Storage.Item(item);


Variant bayID = item.Type;

Variant levelID = item.LevelID;

Variant slotID = item.SlotID;

Storage.Slot slot = StorageObject.getSlot(bayID, levelID, slotID);

current.Quantity = slot.slotItems.length; // unpacking Quantity


// setvarnum(current, )


But the unpacking 'Quantity' ('splitquantity') can't changed.

Other method need?


Modified model :PickingItems_StorableSlots.fsm

0 Likes 0 ·

1 Answer

Joerg Vogel avatar image
0 Likes"
Joerg Vogel answered Joerg Vogel commented

Hello @David Seo, I call assign slot strategy in on Entry of separator. Previously I added another return statement in this function to identify an unassigned slot. By calling this nodefunction on each item in the tote I get a number of items to unpack. I store this number in a label aand read the value to unpack items.

Array parts = item.subnodes.toArray();
int elm = parts.length;
for (elm; elm > 0;elm--)
{
  if(nodefunction(Model.find("/Rack1>variables/slotAssignment"),parts[elm])){
    elm++;
    break;
  }
}
current.unpacQty = parts.length-elm;

storageableSlotsForecast.fsm


· 2
5 |100000

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

David Seo avatar image David Seo commented ·

Thanks very much. I do not know 'nodefunction' command.

0 Likes 0 ·
Joerg Vogel avatar image Joerg Vogel David Seo commented ·
You could copy the code from a node and execute it. nodefunction replaces only some coding, that is all.
0 Likes 0 ·