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

The ProductionJobStateMachineTypeis 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 ProductionStateMachineTypedefined in 8.4.8i.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 InterruptionConditionTypecan be sent to clarify the reason for the interruption. This is an option in addition to the Interruptedstate of the ProductionStateMachineType. It is possible that other interruptions occur while the state machine is in the Interruptedstate, 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, Eventsof InterruptionConditionTypemay be sent for each subsequent interruption. The transition InterruptedToRunningmay 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 Initializingstate. In this case, the same job can transition to Initializing. Another option, when the ProductionPlanis used statically, the job node can be overwritten with the new job being in the Initializingstate. Depending on the production context, the interruption of the old job might persist. When the ProductionPlanis used dynamically, a new job node can be created. Whether the interruption can persist is again depending on the production context.

The ProductionJobStateMachineTypeallows to send Eventsof ProductionJobTransitionEventTypewith every transition, as indicated in Table 48. This makes it possible to send all relevant information of the ProductionJobTypethe state machine instance belongs to with the TransitionEvent.

The state Abortedindicates that the job has been irreversibly stopped before finishing. If the job enters this state, the state machines of any ProductionProgramTypeand ProductionPartTypeinstances associated with it shall not remain in the state Running.

Endedis reached when the job has finished all its runs, so the value of RunsCompletedis the same as the one for RunsPlanned.

Initializingis 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.

InitializingToRunningis 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 ProductionJobTypeinstance being started.

RunningToEndedis triggered when the last run of a job finishes. The value of RunsCompletedin the affected ProductionJobTypeinstance 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.

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

RunningToRunningis triggered when a new run of the job starts. The RunsCompletedof the affected ProductionJobTypeinstance increases by one. The ProductionJobTransitionEventTypeshall send this increased value.

RunningToInterruptedis 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 InterruptionConditionEventTypewith the appropriate ConditionClassmay be sent. The components and properties (other than State) of the affected ProductionJobTypeinstance stay unchanged.

InterruptedToRunningis 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 RunningToInterruptedtransition. The components and properties (other than State) of the affected ProductionJobTypeinstance stay unchanged.

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

AbortedToInitializingis triggered if production is being re-initialized after an abort. This transition is only used if the nodes in the ProductionPlanare never added or deleted, but remain static in the address space. In this case, all values of the ProductionJobTypeinstance 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 Numberproperty of CurrentStateand LastTransitionshall 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 Attributeis 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