question

Yazan T avatar image
0 Likes"
Yazan T asked Yazan T commented

How to make combiner combine even if target quantity not reached?

Hello, I have a system which is multiple trucks loading then unloading at a warehouse.

I have a source which generates multiple item types based on percentages taken from a global table.

I also have a combiner which combines each item type with a pallet.

My question is; how can I make the combiner combine, even if the target quantity isn't reached?
So, my source is generating multiple items based on percentages and this will change each time a truck loads.
If I set the target quantity in the combiner to be 5 for example, but only 4 of this item type is generated, then the combiner stops.

How can I make the combiner combine even if the target quantity isn't reached(since the source generated less of this item type).

I hope I explained it well!
Attached is a simple example of when the combiner stops and does nothing.

Thank you a lot in advance!
combinerproblem.fsm

FlexSim 19.0.0
combiner
combinerproblem.fsm (19.4 KiB)
· 6
5 |100000

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

Yazan T avatar image Yazan T commented ·

Another addition to my question.

Sometimes 9 of the item type is generated, and the target quantity in the combiner is set to 5, so first, it combines the 5 items, then 4 are left, so it stops and does nothing since the target quantity of 5 isn't reached, even though there is no items at all left from this item type.

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

@Yazan T

What you should know is the combiner to use "componentlist" table and "targetcomponentsum" variable in itself for organizing the sub components and summing them, and the also using "currentcomponentsum" variable for current collected quantity.

A way to solve your issue is to use 'sendmessage' command from the upstream object Queue to the combiner though not target quantity when the last item to be sent to the combiner.

And then OnMessage trigger of the combiner, it change the target quantity to a current quantity like the current collected '4'.

And then OnExit trigger when the palette exits, change again the target quantity to the original target quantity of '5'.

For the purpose of it, the upstream object Queue should check whether sending the last item so it can send the message to the combiner of downstream object.

You can find how to use 'componentlist', 'targetcomponentsum' and 'currentcomponentsum' variables in the OnEntry trigger of the combiner object.

0 Likes 0 ·
Yazan T avatar image Yazan T David Seo commented ·

@Seung Yong Seo

Thank you for your reply.

I am quite new to FlexSim, I understood the triggers part you wrote but did not get this part "A way to solve your issue is to use 'sendmessage' command"

Also, if I get it correctly, what you suggested will only work in the case of when the items left are 4.

Is there something to do, simply to tell the combiner, combine the items with the pallets when there are no items left to be fed to the combiner, even if the target quantity not reached?

Thank you very much in advance!

0 Likes 0 ·
David Seo avatar image David Seo Yazan T commented ·

@Yazan T

The object sending the sub-items, the queue in this case, should make the combiner find the last item to be sent. Or the queue should change the combiner's target quantity as a new target quantity you want before the last item enters in the combiner.

Of course the combiner itself can change the self target quantity in itself before the last sub-item will enter in itself. But the combiner do not find when the last item will be sent to itself, it will be not easy. So the upstream object make the combiner know it when the last item is sent to. The way to make it know is to use 'sendmessage' command or 'senddelayedmessage' one before the last item do not enter to the combiner, ie when the item exit from the queue.

The new target quantity will be any quantity not 4. It will be able to to any quantity above 1 like 10 or 3 or 2 including 4. So the new quantity will be the 'currentcomponentsum' on the last item enters.

So you should make the queue to know if the entering item is 'last'. And then the queue can use 'sendmessage' command. If the new changed target quantity should be fixed as '4', the queue should count the sent item quantity. Or if the quantity 5 and 4 will be changed to turn-around as fixed, you can change the target quantity as 5 or 4 whenever the palette exit.

1 Like 1 ·
Show more comments

1 Answer

zacharyh avatar image
0 Likes"
zacharyh answered Yazan T commented

@Yazan T

You can create an on entry trigger that looks to see if there are any more items in the queue before the combiner. If there are not any items left in the queue you can change the Target Quantity of the Combiner using code to be whatever the current quantity already in the combiner is.

changing-combiners-target-quantity-from-input-port.fsm


· 1
5 |100000

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

Yazan T avatar image Yazan T commented ·

@zachary.h @Seung Yong Seo @Jörg Vogel

I thank you all very much for your time and effort!

0 Likes 0 ·