Picking modelling

Picking modelling

andrea_f
Not applicable
34 Views
8 Replies
Message 1 of 9

Picking modelling

andrea_f
Not applicable

[ FlexSim 19.1.2 ]

Hi everyone,

I am having difficulties to find a solution to his problem. My major issues are:

- i do not know how to send the transporter to pick a particular item from racks coming from the list that i have created. In this list all the items are pushed by racks.

- I have difficulties to model the picking of the operator of a single item from the deposit pallet and then build the order according to the orderstable

- I also do not know how to model this activity: the transporter if have to retrieve a pallet stacked in the middle, have to firstly remove the pallet on top, deposit them on the floor, pick the pallet and then put back the pallet on floor.

I attach my model here hope i was clear and i am asking for help in this

Sarner Holz Final Floor_1.fsm

0 Likes
Accepted solutions (1)
35 Views
8 Replies
Replies (8)
Message 2 of 9

joerg_vogel_HsH
Mentor
Mentor
Accepted solution

It is a problem of subnodes hierarchy. I call pallets of items in a rack “containers”. The items in a container I call “products”. I do this declaration, because both are items in the scope of FlexSim.

Racks in FlexSim 19.1.2 are Fixed Resources and not part of a warehouse. All your racks store just containers.

You better transfer any product data into labels at the container. You can interrogate any data of any object in your Modell, but it is a bit difficult to build all relative paths to those objects and items. It is easier to store relevant data at the container and update the data there if any change happens.

if you need any products out of the rack you can transfer the container or the product. The transporter needs only the reference to the object to carry.

You get an order request for an attribute specified product. If you have all needed data reside inside the container, you can query your rack subnodes for this data. The result will not be the product but a container in your rack. You have to identify the cell by level and bay

rackgetlevelofitem

https://docs.flexsim.com/en/19.1/Reference/CodingInFlexSim/CommandReference/CommandGroups.html#rackg...

rackgetbayofitem

https://docs.flexsim.com/en/19.1/Reference/CodingInFlexSim/CommandReference/CommandGroups.html#rackg...

If you want to load only a product and not the whole container, you have to address the product inside the container. Typically you remove the last product of the hierarchy of subnodes from the container.
It is structured in code literally:

  • reference of container point last subnode
Object product = container.last;

Other references to products are first or subnodes[num rank]. num rank is any valid order number of all products in your container. The number 1 is equal to first.

stacked containers are also a hierarchy of rack cell items. Once you have identified a container, in fact you queried a item in the rack, you know the level and bay of the cell. Then you need the rank of the container and the total content of containers in the cell.

rank of container in cell

https://docs.flexsim.com/en/19.1/Reference/CodingInFlexSim/CommandReference/CommandGroups.html#rackg...

total content of containers

https://docs.flexsim.com/en/19.1/Reference/CodingInFlexSim/CommandReference/CommandGroups.html#rackg...

you can create a reference or pointer to each container by bay, level and rank

https://docs.flexsim.com/en/19.1/Reference/CodingInFlexSim/CommandReference/CommandGroups.html#rackg...

As you said, if the container of ordered products is not last then you have to address in consecutive order any above container and transfer them until you can load the desired container.

0 Likes
Message 3 of 9

andrea_f
Not applicable
Thanks Joerg for the answer. I have already given labels to the containers and items in my model. For the first i gave pallet and the last item. I gave those labels when i first created the list for the palletization so before they were stacked in racks. Then racks push them to another list for the picking. Do i have do assign labels directly in the racks´tab?

Another problem is that i am working with floor storage so levels are intended as y-axis but i created a custom code to store them in z-axis. How can i get the level of the item or the container if rackgetitemlevel gets only the y-axis and not the z - axis?

Are you able to give an example of your logic please even in my model that i posted ?

Thank you

0 Likes
Message 4 of 9

joerg_vogel_HsH
Mentor
Mentor
Before I look into your model, stacking is a result of content in a rack cell. You know only a rank of a container and content of a cell. This means a container is n-th item out of n in a cell.
Message 5 of 9

andrea_f
Not applicable

Sarner Holz Final Floor_1.fsm

So from what i understood i have to update the "Take Pallet from Rack" process especially the destination in "Travel to Rack" activity with a custom code getting the z-position through rackgetlevelofitem and the y-position through rackgetbayofitem . But How can i process this through both racks in order that the transporter travel to the rack where the item is stored?

Then in the "Compose Order by Operator" process i apply the Object product = container.last; logic in the "Load Panel activity"
0 Likes
Message 6 of 9

joerg_vogel_HsH
Mentor
Mentor

@Andrea F, you find attached an approach with a new example model. There are two process flow sheets. A first process flow fills a rack. A second carries an item from the rack.

store_and_retrieve_pallets_floor_storage.fsm

Message 7 of 9

andrea_f
Not applicable

Hi Joerg thank you for the response. I am currently having difficulties in implementing your logic. If you run my model it get stacked at the pull from list activity in the "Take Pallet from Rack" quadrant. I do not understand why cause it seems to me that all labels are adressed in the correct way and the data are interrogated with correct query. Do you know why the model does not pull any token from the list?

Sarner Holz Final Floor_1.fsm


0 Likes
Message 8 of 9

joerg_vogel_HsH
Mentor
Mentor

@Andrea F, I did a deeper look into this problem. Someway the data is corrupted in token labels "ProductType" and list field "PalletType". I convert the data from string to number data. Additionally I replace in a Query clause of Pull from List activity token by puller and ProductType by a new assigned number label productTyp.

The destination "freestack" is now a queue inside the model, because I could not identify how a Vec3 class item is possibly qualified as a treenode or object to be a destination for a travel task.

sarner-holz-final-floor-1_JV.fsm

Message 9 of 9

andrea_f
Not applicable
Thank you so much @Joerg Vogel for the answer and the effort in understanding the problem
0 Likes