In the above example I am assuming that the 3D world isn't being used in the model. Its only purpose is to collect state info. Because the 3D model is not in use, I'm not fighting with the default states of the object. I use the setstate command to tell it exactly which state I want it to be in. If the 3D model is in use, you won't be able to use the same method without taking care to not utilize the machine for any other purpose that would interrupt its state. For example, if the processors received an item during this period they would update their state using the default state profile of a processor. You are always fighting their desire to set their own state if they are interacted with in any way.
If you want to make sure that the state you desire is not interrupted you need to make that object (process, operator, etc) unavailable during the desired period. You can do this in one of two ways (off the top of my head).
1) The preferred method of placing a TE into a state for a specific amount of time is through the use of the TS Delay. However, this only works if you know the exact time of the delay.

2) If the delay is open ended you will want to use the custom task activity and select "Utilize" from the list of tasks. You get to specify a state for the duration of the delay.

A Utilize task requires the use of the freeoperators(,) command to exit the specified state.
2) Similar to the utilize method , stopobject and resume object commands can also be used. The stop object command freezes the object and places it into the specified state. The object is not available until the resumeobject command is fired on it. You get to specify a state.
stopobject("MyObject",STATE_BREAKDOWN);
resumeobject("MyObject");
I spoke about these options on the phone with you but I thought I'd post it so other may learn from our conversation as well!