The MachineModuleProductionStateMachineType provides state information about the execution of a production order at a Machine Module.

The MachineModuleProductionStateMachineType is formally defined in the following table.

Table 113 – MachineModuleProductionStateMachineType Definition

Attribute

Value

BrowseName

MachineModuleProductionStateMachineType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the FiniteStateMachineType defined in OPC 10000-5 Annex B, i.e. inheriting the Instance Declarations of that Node.

0:HasComponent

Object

Aborted

0:StateType

0:HasComponent

Object

AbortedToComplete

0:TransitionType

0:HasComponent

Variable

AbortedToCompleteGuard

0:LocalizedText

BooleanGuardVariableType

M, RO

0:HasComponent

Object

Aborting

0:StateType

0:HasComponent

Object

AbortingToAborted

0:TransitionType

0:HasComponent

Variable

AbortingToAbortedGuard

0:LocalizedText

BooleanGuardVariableType

M, RO

0:HasComponent

Object

Assigned

0:StateType

0:HasComponent

Object

AssignedToComplete

0:TransitionType

0:HasComponent

Variable

AssignedToCompleteGuard

0:LocalizedText

BooleanGuardVariableType

M, RO

0:HasComponent

Object

AssignedToStarting

0:TransitionType

0:HasComponent

Variable

AssignedToStartingGuard

0:LocalizedText

BooleanGuardVariableType

M, RO

0:HasComponent

Object

Complete

0:InitialStateType

0:HasComponent

Object

CompleteToAssigned

0:TransitionType

0:HasComponent

Variable

CompleteToAssignedGuard

0:LocalizedText

BooleanGuardVariableType

M, RO

0:HasComponent

Object

Completing

0:StateType

0:HasComponent

Object

CompletingToAborting

0:TransitionType

0:HasComponent

Variable

CompletingToAbortingGuard

0:LocalizedText

BooleanGuardVariableType

M, RO

0:HasComponent

Object

CompletingToComplete

0:TransitionType

0:HasComponent

Variable

CompletingToCompleteGuard

0:LocalizedText

BooleanGuardVariableType

M, RO

0:HasComponent

Object

Execute

0:StateType

0:HasComponent

Object

ExecuteToAborting

0:TransitionType

0:HasComponent

Variable

ExecuteToAbortingGuard

0:LocalizedText

BooleanGuardVariableType

M, RO

0:HasComponent

Object

ExecuteToCompleting

0:TransitionType

0:HasComponent

Variable

ExecuteToCompletingGuard

0:LocalizedText

BooleanGuardVariableType

M, RO

0:HasComponent

Variable

LastTransition

0:LocalizedText

0:FiniteTransitionVariableType

M, RO

0:HasComponent

Object

Starting

0:StateType

0:HasComponent

Object

StartingToAborting

0:TransitionType

0:HasComponent

Variable

StartingToAbortingGuard

0:LocalizedText

BooleanGuardVariableType

M, RO

0:HasComponent

Object

StartingToExecute

0:TransitionType

0:HasComponent

Variable

StartingToExecuteGuard

0:LocalizedText

BooleanGuardVariableType

M, RO

0:GeneratesEvent

ObjectType

ProductionOrderTransitionLogType

Conformance Units

TMC Single PO Production

The components of the MachineModuleProductionStateMachineType are further described below.

BrowseName

Description

Assigned

When the CurrentState of the StateMachine is Assigned, the information for at least one production order to be started is available.

When the CurrentState of the StateMachine is Assigned and there is a production order in execution, i.e. ProductionOrder is not null, the state transitions to Starting.

The variable ProductionOrder is set in the following cases:

  • For infeed machine modules: the method StartProductionOrder method is executed successfully.
  • For non-infeed machine modules with more than one assigned production order: when AssignedProductionOrders[] contains more than one production order, the method StartProductionOrder method is executed successfully.
  • For non-infeed machine modules configured to start automatically: when the AssignedProductionOrders array contains one production order and the state of the upstream machine modules is Execute or Starting for the same production order.

When the CurrentState of the StateMachine is Assigned and there are no assigned production orders, i.e. no elements in the array AssignedProductionOrders, the CurrentState of the MachineModuleProductionStateMachineType transitions to Complete.

Starting

When the CurrentState of the StateMachine is Starting, the underlying system performs the preparation to process product or parts according to the started production order. The machine module can receive input product(s) or parts from the loading points specified by the production order according to its machine specific sequence.

For example, while the CurrentState of the StateMachine is Starting, the machine may be pre-filled, warmed up or cooled down according to the requirements of the production order.

When the underlying system completes such machine specific sequence and starts processing product, the CurrentState of the StateMachine transitions to Execute.

When the CurrentState of the StateMachine is Starting and the AbortProductionOrder method is successfully executed, the ProductionState state machine transitions to Aborting.

The machine module shall not receive product from an upstream machine module processing a different production order. To this goal, the machine module underlying system will set UpstreamHold to True for the MaterialLoadingPoints connected to (1) non-active upstream machine modules and (2) active upstream machine modules with a different ProductionOrder.

Execute

When the CurrentState of the StateMachine is Execute, the production order is processed and input product(s) or parts are received.

In order to further detail the processing phases, the StateMachine object within the object LiveStatus may be used. The states and transitions of the machine are defined according to the underlying system specifics.

The machine module shall not receive product from an upstream machine module processing a different production order. To this end, the machine module will set UpstreamHold to True of the MaterialLoadingPoints connected to (1) non-active upstream machine modules and (2) active upstream machine modules with a different ProductionOrder.

For machine modules with AutoComplete false, when the CurrentState of the StateMachine is Execute, the successful execution of the method CompleteProductionOrder causes the state transition to Completing.

For machine modules with AutoComplete true, when the CurrentState of the StateMachine is Execute and the active upstream machine modules are in state Complete the CurrentState of the StateMachine transitions to Completing.

The described logic implements production order propagation in a standardized and transparent way.

Completing

When the CurrentState of the StateMachine is Completing, the underlying system performs the preparation to complete the production order which is complete in the active upstream machine modules.

When the underlying system completes such machine specific sequence, including checking that no more product(s) or parts are being received and that no more product(s) or parts that can be processed are in the machine module, and the active upstream machine modules’ state is Complete, the CurrentState of the StateMachine transitions to Complete and the ProductionOrder is nulled. Likewise, when the CurrentState of the StateMachine is Execute and the active upstream machine modules are in state Assigned or Execute for a different production order.

The machine module shall not receive product from an upstream machine module processing a different production order. To this end, the machine module will set UpstreamHold to True of the MaterialLoadingPoints connected to (1) non-active upstream machine modules and (2) active upstream machine modules with a different ProductionOrder.

Aborting

When the CurrentState of the StateMachine is Aborting, the machine module stops receiving additional product or parts from the active upstream machine modules in an orderly way.

When the stopping sequence is complete the CurrentState of the StateMachine transitions to Aborted.

Aborted

When the CurrentState of the StateMachine is Aborted, the product(s) or parts present in the machine module are discharged from the machine, either through machine specific automatic sequences or manually by the operators.

When the CurrentState of the StateMachine is Aborted and the ClearProductionOrder method is successfully executed, the state transitions to Complete.

Complete

When the CurrentState of the StateMachine is Complete, the machine module does not accept any more input product(s) or parts, the ProductionOrder is nulled and the machine is ready to execute a new production order.

When the CurrentState of the StateMachine is Complete and there is at least one production order in the AssignedProductionOrders array, the CurrentState of the StateMachine transitions to Assigned.

Each transition has a guard of type BooleanGuardVariableType which has one or more Condition components. Each Condition component is necessary to trigger the transition. When all the Condition components are True, the transition is triggered (sufficient).

The components of the MachineModuleProductionStateMachineType have additional references which are defined in the following table.

Table 114 – MachineModuleProductionStateMachineType Additional References

SourceBrowsePath

Reference Type

Is Forward

TargetBrowsePath

AbortedToComplete

0:FromState

True

Aborted

0:HasGuard

True

AbortedToCompleteGuard

0:ToState

True

Complete

0:HasEffect

True

ProductionOrderTransitionLogType

AbortingToAborted

0:FromState

True

Aborting

0:HasGuard

True

AbortingToAbortedGuard

0:ToState

True

Aborted

0:HasEffect

True

ProductionOrderTransitionLogType

AssignedToComplete

0:FromState

True

Assigned

0:HasGuard

True

AssignedToCompleteGuard

0:ToState

True

Complete

0:HasEffect

True

ProductionOrderTransitionLogType

AssignedToStarting

0:FromState

True

Assigned

0:HasGuard

True

AssignedToStartingGuard

0:ToState

True

Starting

0:HasEffect

True

ProductionOrderTransitionLogType

CompleteToAssigned

0:FromState

True

Complete

0:HasGuard

True

CompleteToAssignedGuard

0:ToState

True

Assigned

0:HasEffect

True

ProductionOrderTransitionLogType

CompletingToAborting

0:FromState

True

Completing

0:HasGuard

True

CompletingToAbortingGuard

0:ToState

True

Aborting

0:HasEffect

True

ProductionOrderTransitionLogType

CompletingToComplete

0:FromState

True

Completing

0:HasGuard

True

CompletingToCompleteGuard

0:ToState

True

Complete

0:HasEffect

True

ProductionOrderTransitionLogType

ExecuteToAborting

0:FromState

True

Execute

0:HasGuard

True

ExecuteToAbortingGuard

0:ToState

True

Aborting

0:HasEffect

True

ProductionOrderTransitionLogType

ExecuteToCompleting

0:FromState

True

Execute

0:HasGuard

True

ExecuteToCompletingGuard

0:ToState

True

Completing

0:HasEffect

True

ProductionOrderTransitionLogType

StartingToAborting

0:FromState

True

Starting

0:HasGuard

True

StartingToAbortingGuard

0:ToState

True

Aborting

0:HasEffect

True

ProductionOrderTransitionLogType

StartingToExecute

0:FromState

True

Starting

0:HasGuard

True

StartingToExecuteGuard

0:ToState

True

Execute

0:HasEffect

True

ProductionOrderTransitionLogType

The component Variables of the MachineModuleProductionStateMachineType have additional Attributes defined in the following table.

Table 115 – MachineModuleProductionStateMachineType Attribute values for child Nodes

BrowsePath

Attribute Value

Aborted

0:StateNumber

1

Aborting

0:StateNumber

2

Assigned

0:StateNumber

3

Complete

0:StateNumber

4

Completing

0:StateNumber

5

Execute

0:StateNumber

6

Starting

0:StateNumber

7