question

Joseph L4 avatar image
0 Likes"
Joseph L4 asked Eric M commented

Process Flow Stops when I Change combiner Process Time to a non-Constant

Looking at the "Setup" process flow, which refers to the 3 queue/ combiner systems that is outside of the main process flow. I want to change the combiners process time to "Different Time for the nth Item". However, when I input what N value I want and the times associated, the process flow performs once and then stops at the "Move Object" object in "Setup". This error occurs for any process flow time on the combiner that isn't a constant. Let me know what you think.hundegger-0.fsm

FlexSim 21.1.4
process flowcombinerflexsim 21.1.4process time
hundegger-0.fsm (133.8 KiB)
· 3
5 |100000

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

Benjamin W2 avatar image Benjamin W2 commented ·
Hi @Joseph L4,

It looks like you are trying to reference an object that doesn't exist in your "Move Object" activity. Somehow that object gets deleted earlier in your "Transport Type 1" subflow. Can you share a little more about what you are trying to do with this separator? There may be a more robust way.

0 Likes 0 ·
Joseph L4 avatar image Joseph L4 Benjamin W2 commented ·
Ok, so the main system is the separator; however, I first had to make something that needed to be separated, which is what the "Setup" process flow is aiming to do. The "Setup" process flow is both acting as the time setup required for the separator, but also I wanted to use this to illustrate the time required to gather the materials every 10 or so pieces, which is about 10 minutes. So to accomplish this I thought to use "Different time for the nth Item" feature on the combiners process time. When using a constant process time on the combiner instead, the entire process flow, both the combiner and separator, work perfectly. The separators purpose is to illustrate the function of a saw, which in a very elementary way is inputting 1 object and getting out more than one because cuts were made. For what the model is specifically illustrating, I wanted to assigned average cut time to separators process time and then setup time to the combiners process time. If you are looking for something more specific let me know.
0 Likes 0 ·
Eric M avatar image Eric M commented ·

Hi @Joseph L4, was Felix Möhlmann's answer helpful? If so, please click the red "Accept" button at the bottom of their answer. Or if you still have questions, add a comment and we'll continue the conversation.

If we haven't heard back from you within 3 business days we'll auto-accept an answer, but you can always unaccept and comment back to reopen your question.

0 Likes 0 ·

1 Answer

Felix Möhlmann avatar image
0 Likes"
Felix Möhlmann answered Felix Möhlmann edited

I am afraid you are using the combiner kind of "wrong". It is supposed to have at least two input connections. It will then take one item through the first port and a predefined number of items through the rest before it starts its processing time. See the manual for more information:
https://docs.flexsim.com/en/21.1/Reference/3DObjects/FixedResources/Combiner/

In your model it does not have any connections going in, so what happens is the following:
As soon as an item is placed into the combiner the process time starts, because the number of components it waits to collect defaults to zero. When the process time elapses, all items currently in the combiner are merged into one, because it is set to "join".

Furthermore, apparently the getProperty command currently does not function correctly, when the property in question is not a strict value but defined through code, such as the "Different for Nth Item" option. This results in the delay of the process flow always being zero seconds. To get the correct value (only if the item is already in the combiner) you can use the following for now.

 Model.find("Combiner1>variables/cycletime").as(treenode).evaluate();

What happens in your model is:
When the first item enters the combiner, the process time starts. The operator finishes packing the pallets into the combiner before that time has elapsed and the stack of pallets is moved into the queue by the process flow. The first green pallet was not yet merged into the first red one and remains in the combiner.
When the process time has elapsed, a new red pallet was already loaded into the combiner and is now merged into the old green one, thus destroying the red pallet. Some time later, the process flow tries to move the red pallet, but can't because it doesn't exist anymore and the token gets stuck.


I adjusted your model by doing the following:

- Adding two queues (Queue4 and Queue5) that lead into the combiner. The first red pallet is unloaded into Queue4 that connects to the first input port of the combiner, the first green pallet is put into Queue5. This way, the process time of the combiner only starts when the green pallet has been unloaded.

- Replacing the delay in the process flow with a "Wait for Event" activity that listens to the "OnProcessFinish" event of the combiner. The token is only send to this activity if the combiner is still processing when all pallets have been loaded (Check for state "Processing" in the "Decide" activity)
A zero-time delay "Breathe" after the Wait for Event makes sure the process has been properly finished before the pallets are moved into the queue.

- Also fixed another error message: In one of the columns of the statistics collector, the "Add Value" field contained the actual text "None" instead of the placeholder "None". (Which, I agree, is confusing and counterintuitive)

hundegger-0_1.fsm


hundegger-0-1.fsm (130.1 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.