The ProductionType is used to structure information given in the MachineToolType. It groups the information about the production plan and the production statistics.

The ProductionType is formally defined in Table 26.

Table 26 – ProductionType Definition

Attribute

Value

BrowseName

ProductionType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the BaseObjectType defined in OPC 10000-5 i.e. inheriting the InstanceDeclarations of that Node.

0:HasComponent

Object

ProductionPlan

ProductionJobListType

O

0:HasComponent

Object

ActiveProgram

ProductionActiveProgramType

M

0:HasComponent

Object

Statistics

ProductionStatisticsType

O

ProductionPlan is a list of all job elements currently running and planned for execution.

If there is no job on the machine tool, there may be no ProductionJob object in the list.

In case the ProductionPlan is used as a dynamic list (i.e. ProductionJobType nodes are being added and deleted), the precondition for deleting any node is that all values of variables represent the final state of the job and are sent to all clients in active subscriptions.

ActiveProgram contains the program that is currently running on the machine tool. If the machine tool control discriminates between main and subprograms, this program shall be the main program. It is used in parallel to the ProductionPlan, so it allows for an access of the running program without browsing the jobs in the ProductionPlan.

Statistics is the object that contains statistics information related to production.

The ProductionJobListType is a type used for structuring objects of ProductionJobType in an ordered list structure.

The ProductionJobListType is formally defined in Table 27.

Table 27 – ProductionJobListType Definition

Attribute

Value

BrowseName

ProductionJobListType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the OrderedListType defined in OPC 10001-13 i.e. inheriting the InstanceDeclarations of that Node.

0:HasOrderedComponent

Object

0:<OrderedObject>

ProductionJobType

OP

0:<OrderedObject > is a placeholder for any number of ProductionJobType instances. To indicate the order of jobs on the machine tool, the NumberInList parameter of the ProductionJobType is used. This index shall be 0 for the first list element and increase by one for each subsequent list element. If jobs are deleted from the list or inserted into the list, the NumberInList has to be adjusted for all following ProductionJobType instances in the list, such that the NumberInList elements always form a sequential series of numbers. For the DisplayName of the <OrderedObject >, it is recommended to use the value of the Identifier Property of the respective ProductionJobType instance.

The NodeVersion and the GeneralModelChangeEventType inherited from the OrderedListType are intended to be used in the way defined in OPC 10000-3 and 7.3.

The ProductionJobType provides aggregated production data for running a sequence to produce several parts after one preparation mounting.

Examples for such a mounting are putting four raw parts on a pallet for a machining centre, setting up the fitting diameter bars in a turning centre bar feeder or loading a metal sheet from which hundreds of parts can be cut or punched. This sequence shall represent several parts which will usually (but not always) be several identical products. A job may be executed several times.

The ProductionJobType is formally defined in Table 28.

Table 28 – ProductionJobType Definition

Attribute

Value

BrowseName

ProductionJobType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the BaseObjectType defined in OPC 10000-5 i.e. inheriting the InstanceDeclarations of that Node

0:HasProperty

Variable

CustomerOrderIdentifier

0:String

0:PropertyType

O, RO

0:HasProperty

Variable

Identifier

0:String

0:PropertyType

M, RO

0:HasProperty

Variable

OrderIdentifier

0:String

0:PropertyType

O, RO

0:HasComponent

Object

PartSets

0:BaseObjectType

O

0:HasComponent

Object

ProductionPrograms

0:OrderedListType

M

0:HasComponent

Variable

RunsCompleted

0:UInt32

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

RunsPlanned

0:UInt32

0:BaseDataVariableType

M, RO

0:HasComponent

Object

State

ProductionJobStateMachineType

M

0:HasInterface

ObjectType

0:IOrderedObjectType

Applied from 0:IOrderedObjectType

0:HasProperty

Variable

0:NumberInList

0:UInt16

0:PropertyType

M, RO

The components of the ProductionJobType have additional references which are defined in Table 29.

Table 29 – ProductionJobType Additional Subcomponents

Source Path

References

NodeClass

BrowseName

DataType

TypeDefinition

Others

PartSets

0:HasComponent

Object

<PartSet>

ProductionPartSetType

MP

ProductionPrograms

0:HasOrderedComponent

Object

0:<OrderedObject>

ProductionProgramType

MP

RunsPlanned

0:HasProperty

Variable

IsValid

Boolean

PropertyType

M, RO

The Identifier is the identifier of the job. This Identifier is used to reference the job in other places of the AddressSpace, e.g. in the ProductionPartTransitionEventType. For this reason, the Identifier shall be unique.

The CustomerOrderIdentifier is used to reference the customer order this job belongs to. This information often originates from an external system handling production organisation (e.g. MES).

The OrderIdentifier is used to reference a company internal order the job belongs to. This information often originates from an external system handling production organisation (e.g. MES).

PartSets contains a list of ProductionPartSetType nodes related to the job. It is a list of the part sets, which contain the parts produced in the current run of the job. For the DisplayName of the <PartSet >, it is recommended to use the value of the Name Property of the respective ProductionPartSetType instance.

ProductionPrograms contains a list of ProductionProgramType nodes representing the programs used in the job. This list is made out of at least one instance of ProductionProgramType. The ordering of the programs is displayed using the HasOrderedComponent Reference and the NumberInList component of the ProductionProgramType instance applied from the IOrderedObjectType. The underlying ordering is the call sequence of the programs. The program called first shall have the number 0 and appear first along the OrderedComponents. For the DisplayName of the <OrderedObject >, it is recommended to use the value of the Name Property of the respective ProductionProgramType instance.

The ProductionPrograms may include one single ProductionProgramType instance. If it contains more than one ProductionProgramType instance, the call hierarchy of the programs is not shown in this list. Neither is the relation of programs and channels modelled in the ProductionProgramType. Which programs to include in the list can be chosen by the integrator of the information model (e.g. main program only, subprograms included, …). The list shall include programs relevant to the job and manufacturing of the job, macros and cycles for general purpose tasks are usually not included.

RunsCompleted is a counter that increases after each completed run of the job. This means, the run was not aborted and finished regularly. This counter does not give any indication about the part quality.

RunsPlanned indicates how many times a job should be executed. RunsPlanned has a Property called IsValid, which indicates if the planned number of job runs is known to the machine tool (True) or not (False). The number of planned job runs not being known occurs in continuous production, that is if the machine tool is started with the respective job and job runs are repeated endlessly. The production process only ends when the machine tool is stopped by an external measure (operator or system).

State is an instance representation of the ProductionJobStateMachineType. It indicates the current state the job is in and the transition used to get into this state.

NumberInList is used to enumerate ProductionJobType instances used as list elements. This index shall be 0 for the first list element and increase by one for each subsequent list element. If nodes are deleted from the list or inserted into the list, the NumberInList has to be adjusted for all following nodes in the list, such that the NumberInList elements always form a sequential series of numbers.

The ProductionProgramType is the representation of a program. A program is a list of operations that the controller performs in sequence. It's usually a machine-readable file which is needed for the controller to fulfil the job.

The ProductionProgramType is formally defined in Table 30.

Table 30 – ProductionProgramType Definition

Attribute

Value

BrowseName

ProductionProgramType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the BaseObjectType defined in OPC 10000-5 i.e. inheriting the InstanceDeclarations of that Node

0:HasSubtype

ObjectType

ProductionActiveProgramType

Defined in 8.4.5

0:HasProperty

Variable

Name

0:String

0:PropertyType

M, RO

0:HasComponent

Object

State

ProductionProgramStateMachineType

O

0:HasInterface

ObjectType

0:IOrderedObjectType

Applied from 0:IOrderedObjectType

0:HasProperty

Variable

0:NumberInList

0:UInt16

0:PropertyType

M, RO

The Name is used to distinguish and identify programs on a machine tool.

State is an instance representation of the ProductionProgramStateMachineType. It indicates the current state the part is in and the transition used to get into this state.

NumberInList is used to enumerate ProductionProgramType instances used as list elements. This index shall be 0 for the first list element and increase by one for each subsequent list element. If nodes are deleted from the list or inserted into the list, the NumberInList has to be adjusted for all following nodes in the list, such that the NumberInList elements always form a sequential series of numbers.

The ProductionActiveProgramType is used to represent programs that are currently running within the machine tool.

The ProductionActiveProgramType is formally defined in Table 31.

Table 31 – ProductionActiveProgramType Definition

Attribute

Value

BrowseName

ProductionActiveProgramType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the ProductionProgramType defined in 8.4.4 i.e. inheriting the InstanceDeclarations of that Node.

0:HasComponent

Variable

JobNodeId

0:NodeId

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

JobIdentifier

0:String

0:BaseDataVariableType

O, RO

0:HasComponent

Object

State

ProductionProgramStateMachineType

M

JobNodeId contains the NodeId of the ProductionJobType instance this program is used in.

JobIdentifier holds the same content as the Identifier Property of the ProductionJobType instance this program is used in.

State is inherited from the ProductionProgramType and overridden to be mandatory.

The ProductionPartSetType is used to group parts within a production job. It also contains information about the parts in the group.

It is formally defined in Table 32. Its additional subcomponents are defined in Table 33.

Table 32 – ProductionPartSetType Definition

Attribute

Value

BrowseName

ProductionPartSetType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the BaseObjectType defined in OPC 10000-5 i.e. inheriting the InstanceDeclarations of that Node

0:HasProperty

Variable

Name

0:String

0:PropertyType

O, RO

0:HasComponent

Variable

PartsPlannedPerRun

0:UInt32

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

PartsCompletedPerRun

0:UInt32

0:BaseDataVariableType

M, RO

0:HasComponent

Object

PartsPerRun

0:BaseObjectType

O

0:HasProperty

Variable

ContainsMixedParts

0:Boolean

0:PropertyType

M, RO

Table 33 – ProductionPartSetType Additional Subcomponents

Source Path

References

NodeClass

BrowseName

DataType

TypeDefinition

Others

PartsPerRun

0:HasComponent

Object

<Part>

ProductionPartType

MP

Name is used to specify the type of parts in a group.

PartsPlannedPerRun indicates how many of the parts in this group are intended to be produced in one run of a job.

PartsCompletedPerRun indicates how many parts of this group have been completed in the current run of the job. This counter does not give any indication about the part quality.

PartsPerRun contains a list of the parts in the current run of the job. This list is made out of at least one <Part > instance of ProductionPartType. In each new run of the job, all variables in the part nodes are reset to their initial values. For the DisplayName of the <Part >, it is recommended to use the value of the Name Property of the respective ProductionPartType instance.

ContainsMixedParts indicates if the parts in a ProductionPartSetType may be different from each other (True) or if they are parts of the same type (False).

The ProductionPartType represents a part. A part is the workpiece of the machine tool which is treated in the purpose of the machine tool.

This may be for the purpose of machining, measuring or others, depending on the type of machine tool.

The ProductionPartType is formally defined in Table 34.

Table 34 – ProductionPartType Definition

Attribute

Value

BrowseName

ProductionPartType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the BaseObjectType defined in OPC 10000-5 i.e. inheriting the InstanceDeclarations of that Node

0:HasProperty

Variable

CustomerOrderIdentifier

0:String

0:PropertyType

O, RO

0:HasProperty

Variable

Name

0:String

0:PropertyType

M, RO

0:HasProperty

Variable

Identifier

0:String

0:PropertyType

O, RO

0:HasComponent

Variable

PartQuality

PartQuality

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

ProcessIrregularity

ProcessIrregularity

0:BaseDataVariableType

M, RO

0:HasComponent

Object

State

ProductionPartStateMachineType

O

The Name is used to name a part in production in a machine tool. This name can be specific to the part (e.g. “MBL30/PartNo32001”) or to the type of part (e.g. “M8x10 Bolt Type 15”).

The CustomerOrderIdentifier is used to reference the customer order this job belongs to. This information often originates from an external system handling production organisation (e.g. MES).

The Identifier is used to distinguish and identify an individual part in production in a machine tool. It shall be unique.

PartQuality indicates the part quality. The PartQuality DataType is defined in 12.6.

ProcessIrregularity is used to tell if a process irregularity has been detected. A process irregularity might for example be the breakage of a tool, or exceeding a temperature limit on coolant. The ProcessIrregularity DataType is defined in 12.7.

State is an instance representation of the ProductionPartStateMachineType. It indicates the current state in manufacturing the part is in and the transition used to get into this state.

The ProductionStateMachineType shows the states an element in production can be in and the possible transitions between those states. The states and transitions are depicted in Figure 14. Their representation in the OPC UA address space is given in Table 35. The name of each transition consists of the names of the states it connects: [FromState]To[ToState]. Their References are specified in Table 38.

image019.png

Figure 14 – The States and Transitions of the ProductionStateMachineType

The ProductionStateMachineType is formally defined in Table 35.

Table 35 – ProductionStateMachineType Definition

Attribute

Value

BrowseName

ProductionStateMachineType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the FiniteStateMachineType defined in OPC 10000-5 i.e. inheriting the InstanceDeclarations of that Node.

0:HasComponent

Object

Aborted

0:StateType

No ModellingRule

0:HasComponent

Object

AbortedToInitializing

0:TransitionType

No ModellingRule

0:HasComponent

Variable

0:CurrentState

0:LocalizedText

0:FiniteStateVariableType

M, RO

0:HasComponent

Object

Ended

0:StateType

No ModellingRule

0:HasComponent

Object

EndedToInitializing

0:TransitionType

No ModellingRule

0:HasComponent

Object

Initializing

0:InitialStateType

No ModellingRule

0:HasComponent

Object

InitializingToAborted

0:TransitionType

No ModellingRule

0:HasComponent

Object

InitializingToRunning

0:TransitionType

No ModellingRule

0:HasComponent

Object

Interrupted

0:StateType

No ModellingRule

0:HasComponent

Object

InterruptedToAborted

0:TransitionType

No ModellingRule

0:HasComponent

Object

InterruptedToRunning

0:TransitionType

No ModellingRule

0:HasComponent

Variable

0:LastTransition

0:LocalizedText

0:FiniteTransitionVariableType

O, RO

0:HasComponent

Object

Running

0:StateType

No ModellingRule

0:HasComponent

Object

RunningToAborted

0:TransitionType

No ModellingRule

0:HasComponent

Object

RunningToEnded

0:TransitionType

No ModellingRule

0:HasComponent

Object

RunningToInterrupted

0:TransitionType

No ModellingRule

0:HasComponent

Object

RunningToRunning

0:TransitionType

No ModellingRule

0: Has Subtype

Object Type

ProductionJobStateMachineType

Defined in 8.4.9

0: Has Subtype

Object Type

ProductionPartStateMachineType

Defined in 8.4.10

0: Has Subtype

Object Type

ProductionProgramStateMachineType

Defined in 8.4.11

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

The components CurrentState and LastTransition of the ProductionStateMachineType have their optional property Number changed to be mandatory, as defined in Table 36.

Table 36 – ProductionStateMachineType Additional Subcomponents

Source Path

References

NodeClass

BrowseName

DataType

TypeDefinition

Others

0:CurrentState

0:HasProperty

Variable

0:Number

0:UInt32

0:PropertyType

M, RO

0:LastTransition

0:HasProperty

Variable

0:Number

0:UInt32

0:PropertyType

M, RO

The state Aborted indicates that the operation of or on an element in production has been irreversibly stopped before finishing.

Ended is reached when the operation of or on an element in production has finished.

Initializing is the state in which the element in production is being prepared. During this state, the machine tool doesn’t have to be ready for production, although it has to be as soon as the transition InitializingToRunning is used. The production is not yet started.

Interrupted indicates that the execution of or on the element in production has been reversibly halted. This is usually due to an error or an intervention by the operating personnel. It is possible to restart operation of or on the element in production after it was in the interrupted state.

Running indicates that the operation of or on an element in production has been started or re-started and is currently running.

Table 37 – ProductionStateMachineType Attribute values for child Nodes

Source Path

Value Attribute

Description Attribute

State Numbers

Initializing

0:StateNumber

0

Running

0:StateNumber

1

Ended

0:StateNumber

2

Interrupted

0:StateNumber

3

Aborted

0:StateNumber

4

Transition Numbers

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.

InitializingToRunning is triggered when the operation of or on an element in production starts.

RunningToEnded is triggered when the operation of or on an element in production finishes.

EndedToInitializing is triggered when re-initialization of the operation of or on an element in production starts.

RunningToRunning is triggered when another consecutive run of the operation of or on an element in production in direct succession starts.

RunningToInterrupted is triggered when the operation of or on an element in production is interrupted.

InterruptedToRunning is triggered when an interruption ends and the operation of or on an element in production continues running.

RunningToAborted is triggered when the operation of or on an element in production is aborted while in the Running state.

InterruptedToAborted is triggered when the operation of or on an element in production is aborted while in the Interrupted state.

AbortedToInitializing is triggered if the operation of or on an element in production is being re-initialized after an abort.

InitializingToAborted is triggered when the operation of or on an element in production is aborted while in the Initializing state.

Table 38 – ProductionStateMachineType Additional References

Source Path

ReferenceType

Is Forward

Target Path

AbortedToInitializing

0:FromState

True

Aborted

0:ToState

True

Initializing

EndedToInitializing

0:FromState

True

Ended

0:ToState

True

Initializing

InitializingToAborted

0:FromState

True

Initializing

0:ToState

True

Aborted

InitializingToRunning

0:FromState

True

Initializing

0:ToState

True

Running

InterruptedToAborted

0:FromState

True

Interrupted

0:ToState

True

Aborted

InterruptedToRunning

0:FromState

True

Interrupted

0:ToState

True

Running

RunningToAborted

0:FromState

True

Running

0:ToState

True

Aborted

RunningToEnded

0:FromState

True

Running

0:ToState

True

Ended

RunningToInterrupted

0:FromState

True

Running

0:ToState

True

Interrupted

RunningToRunning

0:FromState

True

Running

0:ToState

True

Running

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

Table 39 – 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

AbortedToInitializing

0:TransitionType

No ModellingRule

0:HasComponent

Object

EndedToInitializing

0:TransitionType

No ModellingRule

0:HasComponent

Object

InitializingToAborted

0:TransitionType

No ModellingRule

0:HasComponent

Object

InitializingToRunning

0:TransitionType

No ModellingRule

0:HasComponent

Object

InterruptedToAborted

0:TransitionType

No ModellingRule

0:HasComponent

Object

InterruptedToRunning

0:TransitionType

No ModellingRule

0:HasComponent

Object

RunningToAborted

0:TransitionType

No ModellingRule

0:HasComponent

Object

RunningToEnded

0:TransitionType

No ModellingRule

0:HasComponent

Object

RunningToInterrupted

0:TransitionType

No ModellingRule

0:HasComponent

Object

RunningToRunning

0:TransitionType

No ModellingRule

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 40. 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 tool 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.

Table 40 – ProductionJobStateMachineType Additional References

Source Path

ReferenceType

Is Forward

Target Path

AbortedToInitializing

0:FromState

True

ProductionStateMachineType

Aborted

0:ToState

True

ProductionStateMachineType

Initializing

0:HasEffect

True

ProductionJobTransitionEventType

EndedToInitializing

0:FromState

True

ProductionStateMachineType

Ended

0:ToState

True

ProductionStateMachineType

Initializing

0:HasEffect

True

ProductionJobTransitionEventType

InitializingToAborted

0:FromState

True

ProductionStateMachineType

Initializing

0:ToState

True

ProductionStateMachineType

Aborted

0:HasEffect

True

ProductionJobTransitionEventType

InitializingToRunning

0:FromState

True

ProductionStateMachineType

Initializing

0:ToState

True

ProductionStateMachineType

Running

0:HasEffect

True

ProductionJobTransitionEventType

InterruptedToAborted

0:FromState

True

ProductionStateMachineType

Interrupted

0:ToState

True

ProductionStateMachineType

Aborted

0:HasEffect

True

ProductionJobTransitionEventType

InterruptedToRunning

0:FromState

True

ProductionStateMachineType

Interrupted

0:ToState

True

ProductionStateMachineType

Running

0:HasEffect

True

ProductionJobTransitionEventType

RunningToAborted

0:FromState

True

ProductionStateMachineType

Running

0:ToState

True

ProductionStateMachineType

Aborted

0:HasEffect

True

ProductionJobTransitionEventType

RunningToEnded

0:FromState

True

ProductionStateMachineType

Running

0:ToState

True

ProductionStateMachineType

Ended

0:HasEffect

True

ProductionJobTransitionEventType

RunningToInterrupted

0:FromState

True

ProductionStateMachineType

Running

0:ToState

True

ProductionStateMachineType

Interrupted

0:HasEffect

True

ProductionJobTransitionEventType

RunningToRunning

0:FromState

True

ProductionStateMachineType

Running

0:ToState

True

ProductionStateMachineType

Running

0:HasEffect

True

ProductionJobTransitionEventType

The ProductionProgramStateMachineType shows the states a program can be in and the possible transitions between those states. Their representation in the OPC UA address space is given in Table 42. The name of each transition consists of the names of the states it connects: [FromState]To[ToState].

The ProductionProgramStateMachineType is formally defined in. Table 41.

Table 41 – ProductionProgramStateMachineType Definition

Attribute

Value

BrowseName

ProductionProgramStateMachineType

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:HasComponent

Object

AbortedToInitializing

0:TransitionType

No ModellingRule

0:HasComponent

Object

EndedToInitializing

0:TransitionType

No ModellingRule

0:HasComponent

Object

InitializingToAborted

0:TransitionType

No ModellingRule

0:HasComponent

Object

InitializingToRunning

0:TransitionType

No ModellingRule

0:HasComponent

Object

InterruptedToAborted

0:TransitionType

No ModellingRule

0:HasComponent

Object

InterruptedToRunning

0:TransitionType

No ModellingRule

0:HasComponent

Object

RunningToAborted

0:TransitionType

No ModellingRule

0:HasComponent

Object

RunningToEnded

0:TransitionType

No ModellingRule

0:HasComponent

Object

RunningToInterrupted

0:TransitionType

No ModellingRule

0:HasComponent

Object

RunningToRunning

0:TransitionType

No ModellingRule

The ProductionProgramStateMachineType allows to send Events of ProductionProgramTransitionEventType with every transition, as indicated in Table 42. This makes it possible to send all relevant information of the ProductionProgramType the state machine instance belongs to with the TransitionEvent.

Initializing is the state in which the program is not yet started.

Interrupted indicates that the execution of the program has been paused and can be continued. This might be due to waiting for the execution of a subprogram or until a certain condition is met, e.g. the doors of the machine tool are closed.

EndedToInitializing is only used if the nodes in the ProductionPlan are never added or deleted, but remain static in the address space. The Transition is triggered when a new program is loaded. In this case, all values of the ProductionProgramType instance the state machine belongs to are changed to represent a different program. The values of this new job are sent with the ProductionProgramTransitionEventType.

Table 42 – ProductionProgramStateMachineType Additional References

Source Path

ReferenceType

Is Forward

Target Path

AbortedToInitializing

0:FromState

True

ProductionStateMachineType

Aborted

0:ToState

True

ProductionStateMachineType

Initializing

0:HasEffect

True

ProductionProgramTransitionEventType

EndedToInitializing

0:FromState

True

ProductionStateMachineType

Ended

0:ToState

True

ProductionStateMachineType

Initializing

0:HasEffect

True

ProductionProgramTransitionEventType

InitializingToAborted

0:FromState

True

ProductionStateMachineType

Initializing

0:ToState

True

ProductionStateMachineType

Aborted

0:HasEffect

True

ProductionProgramTransitionEventType

InitializingToRunning

0:FromState

True

ProductionStateMachineType

Initializing

0:ToState

True

ProductionStateMachineType

Running

0:HasEffect

True

ProductionProgramTransitionEventType

InterruptedToAborted

0:FromState

True

ProductionStateMachineType

Interrupted

0:ToState

True

ProductionStateMachineType

Aborted

0:HasEffect

True

ProductionProgramTransitionEventType

InterruptedToRunning

0:FromState

True

ProductionStateMachineType

Interrupted

0:ToState

True

ProductionStateMachineType

Running

0:HasEffect

True

ProductionProgramTransitionEventType

RunningToAborted

0:FromState

True

ProductionStateMachineType

Running

0:ToState

True

ProductionStateMachineType

Aborted

0:HasEffect

True

ProductionProgramTransitionEventType

RunningToEnded

0:FromState

True

ProductionStateMachineType

Running

0:ToState

True

ProductionStateMachineType

Ended

0:HasEffect

True

ProductionProgramTransitionEventType

RunningToInterrupted

0:FromState

True

ProductionStateMachineType

Running

0:ToState

True

ProductionStateMachineType

Interrupted

0:HasEffect

True

ProductionProgramTransitionEventType

RunningToRunning

0:FromState

True

ProductionStateMachineType

Running

0:ToState

True

ProductionStateMachineType

Running

0:HasEffect

True

ProductionProgramTransitionEventType

The ProductionPartStateMachineType shows the states a part can be in and the possible transitions between those states. Their representation in the OPC UA address space is given in Table 44. The name of each transition consists of the names of the states it connects: [FromState]To[ToState].

The ProductionPartStateMachineType is formally defined in Table 43.

Table 43 – ProductionPartStateMachineType Definition

Attribute

Value

BrowseName

ProductionPartStateMachineType

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:HasComponent

Object

AbortedToInitializing

0:TransitionType

No ModellingRule

0:HasComponent

Object

EndedToInitializing

0:TransitionType

No ModellingRule

0:HasComponent

Object

InitializingToAborted

0:TransitionType

No ModellingRule

0:HasComponent

Object

InitializingToRunning

0:TransitionType

No ModellingRule

0:HasComponent

Object

InterruptedToAborted

0:TransitionType

No ModellingRule

0:HasComponent

Object

InterruptedToRunning

0:TransitionType

No ModellingRule

0:HasComponent

Object

RunningToAborted

0:TransitionType

No ModellingRule

0:HasComponent

Object

RunningToEnded

0:TransitionType

No ModellingRule

0:HasComponent

Object

RunningToInterrupted

0:TransitionType

No ModellingRule

0:HasComponent

Object

RunningToRunning

0:TransitionType

No ModellingRule

The ProductionPartStateMachineType allows to send Events of ProductionPartTransitionEventType with every transition, as indicated in Table 44. This makes it possible to send all relevant information of the ProductionPartType the state machine instance belongs to with the TransitionEvent.

Ended is reached when the production on the part has finished. The PartQuality may be changed while in this state, implying that the part is measured after the production process. The part does not have to be mounted inside the machine tool while in this state.

Initializing implies the part is scheduled for production, but the machining process on the part has not yet started. The part does not have to be mounted inside the machine tool while in this state.

Running indicates that the processing of the part within the machine tool has been started or re-started and is currently running.

InitializingToRunning is triggered when the processing of the part starts. This Transition requires the part to be mounted within the machine tool.

RunningToEnded is triggered when the processing of the part finishes. This Transition does not require an update of the PartQuality.

Table 44 – ProductionPartStateMachineType Additional References

Source Path

ReferenceType

Is Forward

Target Path

AbortedToInitializing

0:FromState

True

ProductionStateMachineType

Aborted

0:ToState

True

ProductionStateMachineType

Initializing

0:HasEffect

True

ProductionPartTransitionEventType

EndedToInitializing

0:FromState

True

ProductionStateMachineType

Ended

0:ToState

True

ProductionStateMachineType

Initializing

0:HasEffect

True

ProductionPartTransitionEventType

InitializingToAborted

0:FromState

True

ProductionStateMachineType

Initializing

0:ToState

True

ProductionStateMachineType

Aborted

0:HasEffect

True

ProductionPartTransitionEventType

InitializingToRunning

0:FromState

True

ProductionStateMachineType

Initializing

0:ToState

True

ProductionStateMachineType

Running

0:HasEffect

True

ProductionPartTransitionEventType

InterruptedToAborted

0:FromState

True

ProductionStateMachineType

Interrupted

0:ToState

True

ProductionStateMachineType

Aborted

0:HasEffect

True

ProductionPartTransitionEventType

InterruptedToRunning

0:FromState

True

ProductionStateMachineType

Interrupted

0:ToState

True

ProductionStateMachineType

Running

0:HasEffect

True

ProductionPartTransitionEventType

RunningToAborted

0:FromState

True

ProductionStateMachineType

Running

0:ToState

True

ProductionStateMachineType

Aborted

0:HasEffect

True

ProductionPartTransitionEventType

RunningToEnded

0:FromState

True

ProductionStateMachineType

Running

0:ToState

True

ProductionStateMachineType

Ended

0:HasEffect

True

ProductionPartTransitionEventType

RunningToInterrupted

0:FromState

True

ProductionStateMachineType

Running

0:ToState

True

ProductionStateMachineType

Interrupted

0:HasEffect

True

ProductionPartTransitionEventType

RunningToRunning

0:FromState

True

ProductionStateMachineType

Running

0:ToState

True

ProductionStateMachineType

Running

0:HasEffect

True

ProductionPartTransitionEventType

The ProductionStatisticsType aggregates statistics information related to production on the machine tool.

The ProductionStatisticsType is formally defined in Table 45.

Table 45 – ProductionStatisticsType Definition

Attribute

Value

BrowseName

ProductionStatisticsType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the BaseObjectType defined in OPC 10000-5 i.e. inheriting the InstanceDeclarations of that Node.

0:HasComponent

Variable

PartsProducedInLifetime

0:UInt32

BaseDataVariableType

O, RO

PartsProducedInLifetime is the counter for the total number of produced parts during the machine tool’s lifetime. The exact way this number is acquired may differ between different machine tools. No quality information of PartsProducedInLifetime can be given.