8 OPC UA ObjectTypes ToC Previous Next

8.4 Production ToC Previous Next

8.4.9 ProductionJobStateMachineType ToC Previous Next index

The ProductionJobStateMachineType shows the states a production job can be in and the possible transitions between those states.

The ProductionJobStateMachineType is formally defined in Table 46.

Table 46 – ProductionJobStateMachineType Definition

Attribute Value        
BrowseName ProductionJobStateMachineType        
IsAbstract False        
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the ProductionStateMachineType defined in 8.4.8 i.e. inheriting the InstanceDeclarations of that Node.          
0:GeneratesEvent ObjectType InterruptionConditionType      
0:HasComponent Object Aborted   0:StateType None
0:HasComponent Object AbortedToInitializing   0:TransitionType None
0:HasComponent Object Ended   0:StateType None
0:HasComponent Object EndedToInitializing   0:TransitionType None
0:HasComponent Object Initializing   0:InitialStateType None
0:HasComponent Object InitializingToAborted   0:TransitionType None
0:HasComponent Object InitializingToRunning   0:TransitionType None
0:HasComponent Object Interrupted   0:StateType None
0:HasComponent Object InterruptedToAborted   0:TransitionType None
0:HasComponent Object InterruptedToRunning   0:TransitionType None
0:HasComponent Object Running   0:StateType None
0:HasComponent Object RunningToAborted   0:TransitionType None
0:HasComponent Object RunningToEnded   0:TransitionType None
0:HasComponent Object RunningToInterrupted   0:TransitionType None
0:HasComponent Object RunningToRunning   0:TransitionType None
Conformance Units          
MachineTool Production ProductionJobStateMachineType          
MachineTool Production InterruptionConditionType          

When a new interruption occurs in the production job, an event of InterruptionConditionType can be sent to clarify the reason for the interruption. This is an option in addition to the Interrupted state of the ProductionStateMachineType. It is possible that other interruptions occur while the state machine is in the Interrupted state, e.g. the first interruption being due to a missing part and while the part is still missing, a utility change becomes necessary. In such a case, Events of InterruptionConditionType may be sent for each subsequent interruption. The transition InterruptedToRunning may only be used if no interruption is active. If the interrupted job is aborted (via InterruptedToAborted), the interruption may persist. If a job is then re-initialized via AbortedToInitializing, there are multiple possible cases. In one case the interruption is solved before the job enters the Initializing state. In this case, the same job can transition to Initializing. Another option, when the ProductionPlan is used statically, the job node can be overwritten with the new job being in the Initializing state. Depending on the production context, the interruption of the old job might persist. When the ProductionPlan is used dynamically, a new job node can be created. Whether the interruption can persist is again depending on the production context.

The ProductionJobStateMachineType allows to send Events of ProductionJobTransitionEventType with every transition, as indicated in Table 48. This makes it possible to send all relevant information of the ProductionJobType the state machine instance belongs to with the TransitionEvent.

The state Aborted indicates that the job has been irreversibly stopped before finishing. If the job enters this state, the state machines of any ProductionProgramType and ProductionPartType instances associated with it shall not remain in the state Running.

Ended is reached when the job has finished all its runs, so the value of RunsCompleted is the same as the one for RunsPlanned.

Initializing is the state in which the job is being prepared. That implies the job being scheduled for production in the near future. In this state, actions like e.g. loading and configuring programs, inserting tools and utilities and mounting workpieces may be conducted.

InitializingToRunning is triggered when the job starts. This can only be triggered if all preconditions to start the job are met. A job is usually started by starting a related control routine. This does not result in changes to the components and properties (other than State) of the ProductionJobType instance being started.

RunningToEnded is triggered when the last run of a job finishes. The value of RunsCompleted in the affected ProductionJobType instance is increased by one (and equal to the value of RunsPlanned) due to this transition. In the ProductionJobTransitionEventType, this increased value is sent. This transition also implies that all parts and programs related to the job will no longer change, so e.g. the quality information for each part is finally set.

EndedToInitializing is triggered when initialization of a new job starts. This transition is only used if the nodes in the ProductionPlan are never added or deleted, but remain static in the address space. In this case, all values of the ProductionJobType instance the state machine belongs to are changed to represent a different job. The values of this new job are sent with the ProductionJobTransitionEventType.

RunningToRunning is triggered when a new run of the job starts. The RunsCompleted of the affected ProductionJobType instance increases by one. The ProductionJobTransitionEventType shall send this increased value.

RunningToInterrupted is triggered when the job is interrupted. The point in time the interruption starts shall be when the machine gets the command to interrupt the job process. To indicate the reason for the interruption, an InterruptionConditionEventType with the appropriate ConditionClass may be sent. The components and properties (other than State) of the affected ProductionJobType instance stay unchanged.

InterruptedToRunning is triggered when an interruption ends and production continues running. This transition requires that no interruption is active, regardless of what interruption initially led to the RunningToInterrupted transition. The components and properties (other than State) of the affected ProductionJobType instance stay unchanged.

InterruptedToAborted is triggered when the job is aborted while in the Interrupted state. This transition does not require the reason for the interruption to be solved. The components and properties (other than State) of the affected ProductionJobType instance stay unchanged.

AbortedToInitializing is triggered if production is being re-initialized after an abort. This transition is only used if the nodes in the ProductionPlan are never added or deleted, but remain static in the address space. In this case, all values of the ProductionJobType instance the state machine belongs to are changed to represent a different job. The values of this new job are sent with the ProductionJobTransitionEventType.

The states and transitions shall have the numbers indicated in Table 47. The Number property of CurrentState and LastTransition shall use those same numbers for the respective state/transition.

Table 47 – ProductionJobStateMachineType Attribute values for child Nodes

BrowsePath Value Attribute
   Initializing
   0:StateNumber
0
   Running
   0:StateNumber
1
   Ended
   0:StateNumber
2
   Interrupted
   0:StateNumber
3
   Aborted
   0:StateNumber
4
   InitializingToRunning
   0:TransitionNumber
0
   RunningToEnded
   0:TransitionNumber
1
   EndedToInitializing
   0:TransitionNumber
2
   RunningToRunning
   0:TransitionNumber
3
   RunningToInterrupted
   0:TransitionNumber
4
   InterruptedToRunning
   0:TransitionNumber
5
   RunningToAborted
   0:TransitionNumber
6
   InterruptedToAborted
   0:TransitionNumber
7
   AbortedToInitializing
   0:TransitionNumber
8
   InitializingToAborted
   0:TransitionNumber
9

Fields may be empty which means this Attribute is not defined.

Table 48 – ProductionJobStateMachineType Additional References

SourceBrowsePath ReferenceType Is Forward TargetBrowsePath
AbortedToInitializing 0:FromState True Aborted
  0:ToState True Initializing
  0:HasEffect True ProductionJobTransitionEventType
EndedToInitializing 0:FromState True Ended
  0:ToState True Initializing
  0:HasEffect True ProductionJobTransitionEventType
InitializingToAborted 0:FromState True Initializing
  0:ToState True Aborted
  0:HasEffect True ProductionJobTransitionEventType
InitializingToRunning 0:FromState True Initializing
  0:ToState True Running
  0:HasEffect True ProductionJobTransitionEventType
InterruptedToAborted 0:FromState True Interrupted
  0:ToState True Aborted
  0:HasEffect True ProductionJobTransitionEventType
InterruptedToRunning 0:FromState True Interrupted
  0:ToState True Running
  0:HasEffect True ProductionJobTransitionEventType
RunningToAborted 0:FromState True Running
  0:ToState True Aborted
  0:HasEffect True ProductionJobTransitionEventType
RunningToEnded 0:FromState True Running
  0:ToState True Ended
  0:HasEffect True ProductionJobTransitionEventType
RunningToInterrupted 0:FromState True Running
  0:ToState True Interrupted
  0:HasEffect True ProductionJobTransitionEventType
RunningToRunning 0:FromState True Running
  0:ToState True Running
  0:HasEffect True ProductionJobTransitionEventType

Previous Next