question

Roberto Z avatar image
0 Likes"
Roberto Z asked Jason Lightfoot answered

Task sequence with multiple queues and one combiner

Hello!

I would like to pull flow items from the queue to the combiner in the following order:

Queue name: Destination:

BACKPNL -> Combiner1 (Flow item type Tote)

RTSPNL -> Combiner1 (Flow item type Box)

FASCIA -> Combiner1 (Flow item type Box)

LTSPNL -> Combiner1 (Flow item type Box)

TKROLLUP -> Combiner1 (Flow item type Box)

Also limit the the max content of the queues to 30 using process flow

Thanks!

Kitchen_Base_Current_State_Flow.fsm

FlexSim 20.2.0
processflowcombinerflexsim 20.2.0
5 |100000

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

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

I'm sorry, I didn't understand this part "BACKPNL is connected to input port one of the combiner. If you use Process Flow and you haven’t any input port numbers one and more, you drag a queue in your model and connect the combiner twice with object connections" Can you explain that again? perhaps there's a piece of information that I ignore to comprehend it all.

It seems that when creating the task sequence I don't find a way to make the operator collect all different items and I think it's because I don't know how to make references to all different flow items. Can you explain that in more detail?

Also I would like limit the the max content of the queues to "X" amount using process flow. How can I achieve this?



capture.jpg (30.9 KiB)
· 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.

Joerg Vogel avatar image Joerg Vogel commented ·

It seems you learnt something. The max content of a queue doesn’t exist as a parameter in process flow. It exists only in 3D object logic. In process flow you have take care yourself for a capacity limit by deciding how many items are moved into a queue. This means an On Entry event is too late for such a decision. The activity, that is responsible to move an item into a queue, must check the capacity and the content of a queue. It is a principle of “if this then that”. And on the other hand you learnt, that your question wasn’t asked at the right time. You found out that you must know how to reference items waiting for release in objects. “Thumb up” :-).
Ok, there are tutorials which shows how to use the data of requesting an operator for transport in process flow. Then this is a good start to do them and ask questions which are more related to combine activities rather then asking how to do your job and attach a working model. You find this maybe a bit harsh of me to point this out, but I think that was exactly what you have asked for here.

Back to your original description of this question and “if this then that”. I assume you don’t need to check if the right items are available in the queues anymore. They have been stored already. Then you know the recipe - or in words of FlexSim developers-you know the components list for the combiner. There are two different options to discuss:

1. The combiner counts items from different ports or 2. he counts items from second port only. Both options lead to the same result. You combine an amount of X items. Nobody has said something of different attributes or features of the counted items, because it is totally irrelevant to a combiner. And nobody of FlexSim development tells you that fact. You can read that there is a hidden or involved mechanism to combine items of different attributes through ports, but that is not true. You collect just an amount of items through input ports. The objects at the input ports may hold and release items of a special class to the combiner but the combiner doesn’t care. He just counts items received through input ports. And this leads us to the fact you need at least physical present in your model two input port connections into combiner even if you choose to build a logic upon process flow.

If you are an experienced developer and you know the hidden hooks to notify the combiner that a pulled item entered the combiner through a special parameter of a command by a defined input port even if it doesn’t exists then you don’t need to have input ports present in your model anymore. But that is something for developers and not for users building models. You are better off with a queue near the combiner with input connections into the combiner. A combiner must have at least two input connections.

“ if this then that“: The combiner counts items. One item from input port number one. That is fundamental and you can’t change it. It is always only one item from input port number one. And it is always the first item entering a combiner. This item can change by an property in the On Entry trigger of the combiner the components list and through this mechanism the amount of items to be combined. I hope you still remember the combiner counts only items entering through input ports no more no less. He just counts. And how many, this is defined in the components list.

Your duty is to put the items in the right order into to the queue or queues connected at the input port of the combiner. If you connected the queues RTSPNL, FASCIA, LTSPNL, TKROLLUP to the combiner you can get the involved data by the mechanism of the mentioned tutorial. If you haven’t got such connections and you placed instead a queue in front of the combiner with input connections then you load items from the queues holding the items into an operator and you unload them into this queue in front of the combiner. A load activity can manage only one item at a time. This means you need to repeat load activities as often as you want to load items into the operator. How you repeat this type of activity is up to you. You can hard code this. Place the amount of load activities in a column. Or you repeat one activity by a loop. A loop can be hard coded by a process flow connector and a decide activity or by calling a sub flow through a so called activity.

Then you unload the items in a similar approach as described before.

Here some hints to cope with the data (Input port number, item reference, destination, loading station, and so on). You can assign data to different tokens into labels, then you must keep the tokens together for example by batching activities. Or you assign the data into arrays in a single token into labels.
Arrays are a bit tricky. This is mentioned in the manual. If you copy the data by simple an equal sign then both arrays point to the same address scheme in RAM. What you do to one of them you do it to both of them. If you need to assign only the values of one array to a different array then you have to clone the information.

0 Likes 0 ·
Jason Lightfoot avatar image
1 Like"
Jason Lightfoot answered

Here's a solution with your model simplified.

kitchen-base-current-state-flow_jl.fsm


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
0 Likes"
Joerg Vogel answered

There still exists an over estimated idea a combiner is a clever object. That is absolutely not true. A combiner counts items from input ports, which rank or number is greater than one. If you want to get an order or a special combination that exceeds a simple count, then you must send the items in this combination to the combiner.

BACKPNL is connected to input port one of the combiner. If you use Process Flow and you haven’t any input port numbers one and more, you drag a queue in your model and connect the combiner twice with object connections. Then you have all needed input ports. Your Process Flow must organize the right order of entering items into this queue. The tote has a label which tells the combiner which global table column must used to updated the component list to get a right total number of items placed into the tote. There exists a trigger property to achieve this On Entry.

The Process Flow will organize the entry into the queue if you use move object in the order RTSPNL, FASCIA, LTSPNL, TKROLLUP. If you use an operator and he collects all items first, then the order must be reversed TKROLLUP, LTSPNL, FASCIA,RTSPNL.

5 |100000

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