Remi A2 avatar image
Remi A2 asked Remi A2 commented

How can i create different sequences with processor ?

Hello, How can I make my processor 1 only do item A till being out of stock no matter what's his order of arrival and then processes product C,then B,then D.I also want processor 2 to do 3B then 2C and ends with 4D. How is this possible ? Thank you .


processortask sequence
test1.fsm (40.8 KiB)
5 |100000 characters needed characters left characters exceeded

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

1 Answer

· Write an Answer
Felix Möhlmann avatar image
1 Like"
Felix Möhlmann answered Remi A2 commented

A relatively easy way to do this, is to use a list.

Delete the connections from the floor storage to the processors. Create a new global list (of type ItemList - this only adds some default fields to the list as far as i know).

In the "Send to Port" option of the floor storage, select "Push to Itemlist" and choose the list you just created.

To make querying for the correct item in processor1 easier, I'd suggest to add a new label to the items that can be used to order them by priority. In the attached model I do this in the entry trigger of the floor storage by looking up the correct values in "GlobalTable1".

Also add a "Label" field with this name to the list in its properties.


Now, activate the "Pull" option in the input tab of processor1's properties. In the "Pull Strategy", select "Pull from ItemList" and add a query to order the items by the added priority label.


That's all for processor1.

Add two labels to processor2 - one array label and one number label. Enter the order in which you want to process the types in the array label ([2,2,2,3,3,4,4,4,4] <- 3B, 2C, 4D). The number label will serve as index to know which entry in the array defines the next item type. Set its value to 1. Activate the "Automatically Reset" option to reset the number label between runs.


Before setting up the "Pull Strategy" for processor2, add another field to the list - the pre-defined "meetsPullRequirement" (already done in screenshot above).

Now add the "Pull Strategy" as before and choose to filter by this field (delete the "< 10" bit, that gets added). This means, only items can fulfill the pull requirement can be pulled. (Normally, it is ignored when pulling from a list)


Set the pull requirement up, so that the "Label" label on the item has to match the array value.


("fmod" returns the remainder of the division "current.cnt/9", so the order will be reapeated when the count value rises above 9)

Finally, add an entry trigger to processor2 to increment the "cnt" label, each time an item enters the processor.



1634207695880.png (9.5 KiB)
1634207731287.png (23.5 KiB)
1634207945987.png (6.6 KiB)
1634208465844.png (7.1 KiB)
1634208626238.png (4.8 KiB)
1634208911591.png (9.9 KiB)
test1-fm.fsm (137.2 KiB)
· 3
5 |100000 characters needed characters left characters exceeded

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

Thank you, you really did answer my question but I still can't understand the functioning of itemlist and the differents cases in it can you plese explain it to me ?


0 Likes 0 ·
screen.png (30.8 KiB)

Any of the defined fields can be used as part of an sql query when pulling things from the list. Mostly to filter for certain criteria or order them, like in your example. All the fields up to (including) "queueSize" are automatically added if you choose to create an "item"-list.

They mostly assume that the item is waiting in a queue (or other storage object).

"Type" is an often used, default label name.

"age" is the timeframe for which the item has been part of the list. (One might want to pull the item with the longest wait time.)

"distance" evaluates the physical distance between the item and the pulling object. (Allows pulling items from storage objects close by if they are transported by a task exectuer.)

"queueSize" is the total number of items in the storage object the item is in. (Enables stock balancing by pulling from the queue with most stock.)

As mentioned above, all of these are just default values and serve no purpose in the attached model. Only "Prio_Processor1" and "meetsPullRequirement" are used.

More information can be found in the documentation on lists:

0 Likes 0 ·
Remi A2 avatar image Remi A2 Felix Möhlmann ·
Thanks a lot
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.