question

Adil M avatar image
0 Likes"
Adil M asked Felix Möhlmann commented

Improving conveyor unload logic to expand model

Hi, here is a model built mimicking a sort center where packages are going down a conveyor belt and and being picked and placed on the correct "pallet"(queue) based on the "item" number of the package- which is linked to a global table. While the current method is effective, it involves considerable manual effort. Especially, if I want to expand this system by adding say, three additional conveyors alongside the existing one, with each side accommodating 60 pallets for package placement. Building this out manually would be a time-consuming task. Is there a better way for me to create a logic for the packages to be unloaded on a specific pallet.Medium Packages 60.fsm

FlexSim 23.2.2
conveyorssortingpackages
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

·
Felix Möhlmann avatar image
0 Likes"
Felix Möhlmann answered Felix Möhlmann commented

Adjust the model so that all references in the Process Flow are accessed through a single object which you can easily copy. For example:

- Move the conveyors and all queues, the source and sink into a plane. This plane will be your general reference object for the Process Flow. (If you want, you can change from a general PF to an Object PF, though that is not mandatory.)

- Connect the operators to the plane with a centerport-connection, so you can know which plane they belong to in the PF. (While you can move them into the plane, FlexSim will move any Task Executer back into the 'model' layer automatically.)

- Have the first conveyor push the items onto a partition that is identified by the plane.

capture1.png

- Set the Pull from List activity to pull items from the partition that the operators are connected to.

capture2.png

- Refer to the queues when determining the unload as subnodes of the plane instead of group members. (Either by name ("P + string.fromNum(itemType)") or by rank (just itemType) if you ordered them correctly in the tree. itemType is a placeholder since the exact expression varies at different points in the PF.)

- Adjust the code that determines the pick position for the fact that the conveyors are now placed inside a plane and the operators are not. (Project the conveyors location to model coordinates, like the item coordinates already are.)

After you are done you should be able to just make of copy of the plane, complete with conveyors and queues, connect new operators to it and have it work like the original setup.

medium-packages-60-fm.fsm


capture1.png (2.3 KiB)
capture2.png (2.8 KiB)
· 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.

Adil M avatar image Adil M commented ·

Thanks Felix-this is helpful for duplicating the operation over multiple conveyors. However what if the I want to expand the operation, meaning what if I want all the packages to come from one source and then at a certain point for the packages to be diverted to firstly, the correct conveyor, and secondly to the correct pallet location(Attached a picture of what it might possibly look like) . If the pallet names remain the same wouldn't that mean that the package could divert to multiple locations? Anyway I can create more lanes without having to manually change the name of each pallet location. 1705955959938.png

0 Likes 0 ·
1705955959938.png (188.8 KiB)
Felix Möhlmann avatar image Felix Möhlmann Adil M commented ·
The destination of an item would be identified by both the conveyor and then the rank of the queue. For example, if the item types are simply numbered 1-N, and one conveyor leads to 120 queues, then the conveyor number would be the "Math.ceil(item.type/120)". The remainder of that operator would be the number of the queue ("(item.type-1)%120 + 1").

The copied queues should also all be part of the original group. So you could loop through the group once and adjust all the names to be in ascending order.

for(int i = 1; i <= Group(groupName); i++)
{
    Group(groupName)[i].name = "P" + string.fromNum(i);
}
Lastly, I'd put the queues on both sides of the conveyor into the same plane, so all the conveyor and all its queues are placed in the same object.
0 Likes 0 ·

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

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