Machine waiting operator already utilized

Machine waiting operator already utilized

Mad2411
Not applicable
551 Views
15 Replies
Message 1 of 16

Machine waiting operator already utilized

Mad2411
Not applicable

[ FlexSim 23.1.2 ]

Hello everyone,

When I run my simulation with >= 7 units, my deflash machine is waiting for the opdfsh2 who has only one task : to do the process of deflash machine.

I don't get it why my machine is waiting for the operator who is utilized by her.

Here it is my simulation if anybody has an answer :

Projet2023.fsm


Thank you very much !

Accepted solutions (1)
552 Views
15 Replies
Replies (15)
Message 2 of 16

clair_augsburgerZGWRZ
Collaborator
Collaborator

In the deflash properties, you don't call any operator neither for setup or process times:

1689772408319.png

Is it on purpose ?

0 Likes
Message 3 of 16

moehlmann_fe
Advocate
Advocate
Accepted solution

The short answer is: The Use Operator function is does not properly when the maximum capacity of the processor is larger than 1. This is also stated in the first warning box in the documentation.

This situation happens because when an item enters the processor and it currently has enough operators 'utilizing' it, it will not call new operators for that item. When the item that originally called the operator finishes processing, the operator is released and becomes idle. Any items that entered the processor in the meantime will keep processing. When a new item now enters the processor it will call the operator again. However, the next time any item finishes, the code that releases the operator will be executed, but possibly with the wrong item reference. The wrong reference causes the operator to stay utilized, but the processor thinks that it was released and will call the operator again for the next item that enters. Because the operator is still busy, this leads to the locking state you mention.

As a workaround, you can use the Task Sequence Example option for the operator reference. This by default implements the same logic as the default behaviour. In the attached model I edited it to prevent the processor from locking and to keep the operator state synced with the processor's. It works by creating a new task sequence right away when the operator is released and there are still other items on the processor.

workaround-fm.fsm

Message 4 of 16

Mad2411
Not applicable
No sorry I forgot to check it for the process Time.


0 Likes
Message 5 of 16

Mad2411
Not applicable

Hi Thank you for your answer. I tried to apply your advice :

projet2023_v2.fsm

It still have the same problem. Maybe I did something wrong and couldn't found out.

0 Likes
Message 6 of 16

moehlmann_fe
Advocate
Advocate

You added the Task Sequence Example pick option but didn't edit the code therein to include the workaround. I guess the wording in the final paragraph of my answer could have been more clear on this.

projet2023-v2_1.fsm

0 Likes
Message 7 of 16

Mad2411
Not applicable
Oh okay sorry, thank you very much.

I tried, it works.

My problem is solved :)
0 Likes
Message 8 of 16

Mad2411
Not applicable

Hi I am back. I have the same problem on my form machine with the opform also, I tried to apply the same parameters on it. But it seems to not work.

Can you help me again please ?

Here it is :projet2023_v3.fsm

Thank you

0 Likes
Message 9 of 16

moehlmann_fe
Advocate
Advocate

Timing was an issue when multiple items finished processing at the same time. (Actually surprising that this wasn't a problem with the other processor). I adjusted the code to try to account for this. No new task sequence is created for items that finish processing in the same moment. For this, the finishing time is written to a label on the item in the processing time field.

projet2023-v3-fm.fsm

0 Likes
Message 10 of 16

Mad2411
Not applicable

Yes I find this also very strange. I tried to do what you did on my deflash machine because it has again the same problem when I want to not repeat my table from my source and put 200 output.

project2023.fsm

Can you help me again please


0 Likes
Message 11 of 16

moehlmann_fe
Advocate
Advocate
Just copy the code from the Operator field of the Form processor to the Deflash processor.
0 Likes
Message 12 of 16

natalie_white
Not applicable

Hi @mad2411, was Felix Möhlmann's answer helpful? If so, please click the "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 comment back to reopen your question.

Message 13 of 16

adrian_moraZLCQV
Contributor
Contributor

Can I see the logic implemented in the Task Sequence Example which is to prevent the processor from locking and to keep the operator state synced with the processor's.


I have version 23.0.2 and unfortunately cannot see the code in the attached models.


Thank you,

0 Likes
Message 14 of 16

moehlmann_fe
Advocate
Advocate

Here's the same model in 23.0.

workaround-fm-23_0.fsm

0 Likes
Message 15 of 16

jon_abbott
Not applicable

Hi @Felix Möhlmann, I tried this with a dispatcher between the processor and operator, but it gave an invalid down cast error. Do you have an example that works with dispatchers as well? Thanks!

0 Likes
Message 16 of 16

moehlmann_fe
Advocate
Advocate

Here's a possible version. It identifies which operator is currently working at the processor and keeps it utilized as long as there are items on the processor.

workaround-fm-dispatcher-23-0.fsm

Using a dispatcher suggests that the number of operators is probably not equal to the number of processors, so there are other possible scenarios of how switching between processors could be handled.

Though to implement a more sophisticated logic I would recommend to switch to Process Flow for controlling the assignation of operators.

0 Likes