The MachineToolType represents the entire machine tool interface of the information model. It is the entry point to the OPC UA interface of a machine tool. It gives a basic structure to the interface. An instance of this type aggregates all information related to one machine tool.

All instances of MachineToolType have to be referenced from the 3:Machines node defined in OPC 40001-1. At least one MachineToolType instance shall be present to qualify for any profile of OPC UA for Machine Tools.

The MachineToolType is formally defined in Table 9.

Table 9 – MachineToolType Definition

Attribute

Value

BrowseName

MachineToolType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

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

0:HasAddIn

Object

3:Components

3:MachineComponentsType

O

0:HasComponent

Object

Equipment

EquipmentType

M

0:HasAddIn

Object

2:Identification

MachineToolIdentificationType

M

0:HasComponent

Object

3:MachineryBuildingBlocks

0:FolderType

O

0:HasComponent

Object

Monitoring

MonitoringType

M

0:HasComponent

Object

Notification

NotificationType

M

0:HasComponent

Object

Production

ProductionType

M

Conformance Units

MachineTool MachineToolType Mandatory Nodes

MachineTool Components

Equipment (see 8.5), Identification (see 8.2), Monitoring (see 8.3), Notification (see 8.6) and Production (see 8.4) are instances of the respective types. They are used to structure the information in the MachineToolType topically. Components and MachineryBuildingBlocks are used as described in OPC 40001-1. To differentiate between Components and Equipment, Components should contain elements that are an inseparable part of the machine and Equipment should contain removable elements (e.g. tools).

Table 10 – MachineToolType Additional References

SourceBrowsePath

ReferenceType

Is Forward

TargetBrowsePath

3:MachineryBuildingBlocks

0:HasAddIn

True

Monitoring

MachineTool

3:MachineryItemState

3:MachineryBuildingBlocks

0:HasAddIn

True

Monitoring

MachineTool

3:MachineryOperationMode

The MachineToolIdentificationType of the Machine Tools information model holds static data which shall uniquely identify a machine tool among a pool of the machine tool operating entity. It is a subtype of the MachineIdentificationType defined in OPC 40001-1, so it inherits all InstanceDeclarations specified there.

The MachineToolIdentificationType is formally defined in Table 11.

Table 11 – MachineToolIdentificationType Definition

Attribute

Value

BrowseName

MachineToolIdentificationType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the 3:MachineIdentificationType defined in OPC 40001-1 i.e. inheriting the InstanceDeclarations of that Node.

0:HasComponent

Object

SoftwareIdentification

0:BaseObjectType

O

Conformance Units

MachineTool Identification SoftwareInformation

MachineTool Identification Machinery additional

SoftwareIdentification contains a list of instances of the SoftwareIdentificationType (see Table 13). This list contains the machine tool’s software identification information. It allows to add multiple software items, e.g. one for each of PLC, NC and HMI.

SoftwareRevision inherited from the MachineIdentificationType shall contain an overall software patch level of the machine tool. Individual software revision numbers may be given using SoftwareIdentification.

For the DeviceClass inherited from the MachineIdentificationType, the values in Table 12 shall be used. The most appropriate value, based on the main machine tool technology shall be chosen.

Additive manufacturing machines are not defined in the source mentioned. They include every additive technology currently available.

Table 12 – DeviceClasses for Machine Tools

DeviceClasses for Machine Tools

Additive manufacturing machine

Forming machine

Mill-turn machining centre

Shaping machine

Additive manufacturing hybrid machine

Gear cutting machine

Nibbling machine

Shearing machine

Beading machine

Grinding machine

Other

Slotting machine

Bending machine

Hammer machine

Planer

Straightening machine

Broaching machine

Hardening machine

Planing machine

Testing machine

Copy milling machine

Honing machine

Plasma cutting machine

Thermal deburring machine (TEM)

Curling machine

Lapping machine

Polishing machine

Transfer machine

Deburring machine

Laser ablation machine

Press

Trimming machine

Drawing machine

Laser cutting machine

Profiling machine

Turn-mill machining centre

Drilling / Boring machine

Laser drilling machine

Punch laser machine

Turning machine

Electrical discharge machine (EDM)

Laser texturing machine

Punching machine

Water jet cutting machine

Electro chemical machine (ECM)

Laser welding machine

Riveting machine

Finishing machine

Machining centre

Rolling machine

Flanging machine

Machining centre (other)

Rotary transfer machine

Folding machine

Measuring machine

Sawing machine

Forging machine

Milling machine

Seaming machine

All other properties of the MachineToolIdentificationType are defined in OPC 40001-1 and are intended to be used as indicated there.

Table 13 – MachineToolIdentificationType Additional Subcomponents

BrowsePath

References

NodeClass

BrowseName

DataType

TypeDefinition

Others

SoftwareIdentification

0:HasComponent

Object

<SoftwareItem>

SoftwareIdentificationType

MP

image018.png

Figure 13 – Example Instance of SoftwareIdentification in a Machine Tools Server

The SoftwareIdentificationType holds information about the specific software in operation in the machine tool. Almost all modern machine tools operate on several software system components, this shall enable presentation of software components (NC Kernel, HMI base system, etc.). Figure 13 shows an example instance of the application of this type within the Identification component of the MachineToolType.

The SoftwareIdentificationType is formally defined in Table 14.

Table 14 – SoftwareIdentificationType Definition

Attribute

Value

BrowseName

SoftwareIdentificationType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

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

0:HasProperty

Variable

2:SoftwareRevision

0:String

0:PropertyType

M, RO

0:HasProperty

Variable

Identifier

0:String

0:PropertyType

M, RO

0:HasProperty

Variable

2:Manufacturer

0:LocalizedText

0:PropertyType

O, RO

Conformance Units

MachineTool Identification SoftwareInformation

In most cases, machine tools consist of several software components. SoftwareComponent can be an individual application, or plugin of an application involved in controlling the machine tool.

SoftwareRevision provides a string representation of the version or revision level of the software component, the software/firmware of a hardware component. Examples are: “PLL01 1.10.0.3”, “V05.01.01.15”, “3.1 R1293”, “70.0.1”.

The Identifier Property provides an identifier to distinguish the software component.

Manufacturer refers to the manufacturer/producer of the software.

The MonitoringType is used to structure information given in the MachineToolType. It contains the monitoring information of the machine tool and its subsystems.

The MonitoringType is formally defined in Table 15.

Table 15 – MonitoringType Definition

Attribute

Value

BrowseName

MonitoringType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

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

0:HasComponent

Object

<MonitoredElement>

ElementMonitoringType

OP

0:HasComponent

Object

MachineTool

MachineOperationMonitoringType

M

0:HasComponent

Object

Stacklight

4:BasicStacklightType

O

Conformance Units

MachineTool Monitoring Basic - Stacklight

MachineTool Monitoring Basic - PowerOnDuration

MachineTool Monitoring Basic - Channels

<MonitoredElement > is an optional Placeholder for ElementMonitoringType instances. This allows for any number of such instances as a component of the MonitoringType. For the DisplayName, it is recommended to use the value of the Name Property of the respective ElementMonitoringType instance.

MachineTool provides overall monitoring information of the machine tool.

Stacklight contains the information about a stacklight’s composition and status. It is an object of BasicStacklightType, defined in OPC 10000-200. If the machine tool has a stacklight available, the Stacklight shall be present.

The optional 4:StackLevelType and 4:StackRunningType of the 4:BasicStacklightType shall not be used, only a segmented light shall be shown. Thus, the 4:StacklightMode of each stacklight has to be “Segmented” (0).

As 4:<StackElement>, only elements of 4:StackElementLightType shall be used. For these, the 4:SignalOn, 4:SignalColor and 4:SignalMode shall be used, not the 4:ControlChannelType (see Table 16).

Table 16 – MonitoringType Additional Subcomponents

BrowsePath

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Stacklight

0:HasOrderedComponent

Object

0:<OrderedObject>

4:StackElementLightType

MP

Stacklight

0:<OrderedObject>

0:HasProperty

Variable

4:SignalOn

0:Boolean

0:PropertyType

M, RO

Stacklight

0:<OrderedObject>

0:HasComponent

Variable

4:SignalColor

4:SignalColor

0:BaseDataVariableType

M, RO

Stacklight

0:<OrderedObject>

0:HasComponent

Variable

4:SignalMode

4:SignalModeLight

0:BaseDataVariableType

M, RO

The ElementMonitoringType is intended to be a supertype for all monitoring information that is specific to a particular element within the machine tool. An element doesn’t have to be a physical component. Examples for such elements are NC channels or spindles. It is an abstract type, meaning it is not instantiated, only the subtypes are.

The ElementMonitoringType is formally defined in Table 17.

Table 17 – ElementMonitoringType Definition

Attribute

Value

BrowseName

ElementMonitoringType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Other

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

0:HasProperty

Variable

Name

0:String

0:PropertyType

M, RO

Conformance Units

The Name property refers to a name of the element.

The WorkingUnitMonitoringType is a supertype used to group monitoring information of machine tool elements that are a direct and active part of the machining process. It is an abstract type, meaning it is not instantiated, only the subtypes are.

The WorkingUnitMonitoringType is formally defined in Table 18.

Table 18 – WorkingUnitMonitoringType Definition

Attribute

Value

BrowseName

WorkingUnitMonitoringType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the ElementMonitoringType defined in 8.3.2 i.e. inheriting the InstanceDeclarations of that Node.

Conformance Units

MachineTool Monitoring WorkingUnit

The WorkingUnitMonitoringType has no other explicitly defined References.

The LaserMonitoringType provides basic monitoring information of a laser device used in the machining process, i.e. a beam source for a laser beam used as a tool.

The LaserMonitoringType is formally defined in Table 19.

Table 19 – LaserMonitoringType Definition

Attribute

Value

BrowseName

LaserMonitoringType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the WorkingUnitMonitoringType defined in 8.3.3 i.e. inheriting the InstanceDeclarations of that Node.

0:HasComponent

Variable

ControllerIsOn

0:Boolean

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

LaserState

LaserState

0:BaseDataVariableType

M, RO

Conformance Units

MachineTool Monitoring WorkingUnit

ControllerIsOn being True indicates that the controller of the laser device is running. This gives no indication whether laser light is currently emitted.

LaserState indicates the current state of a laser device. It is defined in 12.4.

The EDMGeneratorMonitoringType is a collection of information about the EDM spark generator

The EDMGeneratorMonitoringType is formally defined in Table 20

Table 20 – EDMGeneratorMonitoringType Definition

Attribute

Value

BrowseName

EDMGeneratorMonitoringType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the WorkingUnitMonitoringType defined in 8.3.3 i.e. inheriting the InstanceDeclarations of that Node.

0:HasComponent

Variable

IsOn

0:Boolean

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

EDMGeneratorState

EDMGeneratorState

0:BaseDataVariableType

M, RO

Conformance Units

MachineTool Monitoring WorkingUnit

IsOn being True indicates that the EDM spark generator has a valid set of technology parameters, meets all safety conditions required and is switched on.

EDMGeneratorState indicates the current state of the EDM spark generator. It is defined in 12.3.

The SpindleMonitoringType is a collection of information about the rotary process axis.

Depending on the actual context of the machine tool, this may for example be a tool-holding milling spindle or a workpiece-holding turning spindle.

The SpindleMonitoringType is formally defined in Table 21.

Table 21 – SpindleMonitoringType Definition

Attribute

Value

BrowseName

SpindleMonitoringType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the WorkingUnitMonitoringType defined in 8.3.3 i.e. inheriting the InstanceDeclarations of that Node.

0:HasComponent

Variable

IsRotating

0:Boolean

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

Override

0:Double

0:AnalogUnitRangeType

O, RO

0:HasComponent

Variable

IsUsedAsAxis

0:Boolean

0:BaseDataVariableType

O, RO

Conformance Units

MachineTool Monitoring WorkingUnit

IsRotating being True indicates if the spindle is rotating and has a valid commanded rotation speed.

Override is representing the current value of the spindle override.

IsUsedAsAxis being True indicates if the monitored element is used as an axis or, if False, as a spindle. If IsUsedAsAxis is True, the values of IsRotating and Override shall not be used by a client.

The ChannelMonitoringType provides the monitoring information about one NC channel.

The ChannelMonitoringType is formally defined in Table 22.

Table 22 – ChannelMonitoringType Definition

Attribute

Value

BrowseName

ChannelMonitoringType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the ElementMonitoringType defined in 8.3.2 i.e. inheriting the InstanceDeclarations of that Node.

0:HasComponent

Variable

ChannelState

ChannelState

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

ChannelMode

ChannelMode

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

FeedOverride

0:Double

0:AnalogUnitRangeType

M, RO

0:HasComponent

Variable

RapidOverride

0:Double

0:AnalogUnitRangeType

O, RO

0:HasComponent

Object

ChannelModifiers

ChannelModifierType

O

Conformance Units

MachineTool Monitoring Basic - Channels

ChannelState is representing the current status of the NC channel and is defined in 12.1.

ChannelMode is representing the current mode the NC channel operates in. It is defined in 12.2.

FeedOverride is representing the current value of the feed override of the NC channel.

RapidOverride is representing the current value of the rapid override of the NC channel.

ChannelModifiers is representing additional program modifiers usually used during special operations of the machine tool, e.g. preparation of production (see 8.3.10).

The CombinedChannelMonitoringType is a subtype of the ChannelMonitoringType and inherits all its InstanceDeclarations. Using this type instead of a ChannelMonitoringType provides an aggregated representation of the channels in a machine tool. The rules for aggregation are given in Table 23. Sometimes it is not necessary to provide one representation per individual channel, e.g. if one channel is of primary interest, the status of the remaining channels is irrelevant for the machine tool status. It could be used together with the separate channels. Typical applications are multi-spindle machines in which a large number of channels are used for interlinked work steps.

Table 23 – Rules for Aggregation of the CombinedChannelMonitoringType

Component of the CombinedChannelMonitoringType

Rule for Aggregation

ChannelState

Mode of the channel not in “active”, otherwise “active”

- if all channels active --> active

- if >0 channel reset --> reset

- else interrupted

ChannelMode

Mode of the channel not in “automatic”, otherwise “automatic”

If one or more channel of the combined channels is not in “automatic” the machine tool is not producing (except if the channel is not currently in use). If for example the operator is in JogManual and moving one axis, the whole machine tool is not producing in automatic and the combined channel can be viewed as in JogManual

FeedOverride

selection from HMI mirrored

On most multi spindle machines there is one HMI which controls the whole machine tool, so most of the input is applied to all combined channels

RapidOverride

selection from HMI mirrored

On most multi spindle machines there is one HMI which controls the whole machine tool, so most of the input is applied to all combined channels

ChannelModifiers

If an element of ChannelModifiers is True in any channel, it has to be True in the combined channel.

The CombinedChannelMonitoringType is formally defined in Table 24.

Table 24 – CombinedChannelMonitoringType Definition

Attribute

Value

BrowseName

CombinedChannelMonitoringType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the ChannelMonitoringType defined in 8.3.7 i.e. inheriting the InstanceDeclarations of that Node.

Conformance Units

MachineTool Monitoring Basic - Channels

The CombinedChannelMonitoringType contains no further References than the ones inherited.

The MachineOperationMonitoringType provides overall monitoring information of the machine tool.

The MachineOperationMonitoringType is formally defined in Table 25.

Table 25 – MachineOperationMonitoringType Definition

Attribute

Value

BrowseName

MachineOperationMonitoringType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

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

0:HasComponent

Variable

FeedOverride

0:Double

0:AnalogUnitRangeType

O, RO

0:HasComponent

Variable

IsWarmUp

0:Boolean

0:BaseDataVariableType

O, RO

0:HasAddIn

Object

3:MachineryItemState

3:MachineryItemState_StateMachineType

O

0:HasAddIn

Object

3:MachineryOperationMode

MachineOperationModeStateMachineType

O

0:HasComponent

Object

Obligation

ObligationType

O

0:HasComponent

Variable

OperationMode

MachineOperationMode

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

PowerOnDuration

0:UInt32

0:BaseDataVariableType

O, RO

Conformance Units

MachineTool MachineToolType Mandatory Nodes

MachineTool Monitoring Obligation

FeedOverride is the combined actual feed override value that is effective for the manufacturing program of the machine tool.

IsWarmUp being True indicates if the machine tool is performing a warmup task. A warmup is not used for production, it is the mode used to reach a stable operating point for the machine tool. An example is reaching the optimal operating temperature. This might be indicated by a hardware switch on the machine tool, a special control command, a special production program (referenced by program name) or otherwise. In combination with the MachineryItemState and the MachineryOperationMode, the following behaviour is expected: If IsWarmUp is True, the MachineryItemState is in State Executing and the MachineryOperationMode is in State Setup.

MachineryItemState is used as defined in OPC 40001-1. Shall also be referenced as AddIn in the MachineryBuildingBlocks Folder.

MachineryOperationMode is used as defined in OPC 40001-1. Shall also be referenced as AddIn in the MachineryBuildingBlocks Folder.

MaintenanceMode, as a SubStateMachine of the MachineryOperationMode (see Table 26), is only valid if the CurrentState of MachineryOperationMode is Maintenance.

Obligation indicates the instance responsible for the current activities of the machine.

OperationMode contains a MachineOperationMode value as defined in 12.5. The values of the MachineOperationMode enum are derived from the MO modes of machinery functional safety standards. For a machine adhering to such a standard, the OperationMode shall show the respective mode. For a machine not adhering to such a standard, the OperationMode shall be filled with the appropriate mode available from the MachineOperationMode Enum. The OperationMode is only a representation of the machine mode, it shall not be used in a safety relevant manner.

PowerOnDuration is the duration the machine has been powered, meaning all systems have line voltage. It is counted in full hours. This value only increases during the lifetime of the machine and is not reset when the machine is power cycled.

For this specification, the MachineryOperationStateMachineType defined in OPC 40001-1 is extended by a SubState for Maintenance. An overview is shown in Figure 14.

image019.png

Figure 14 – The States and Transitions of the MachineOperationModeStateMachineType with Maintenance SubStates

Table 26 – MachineOperationModeStateMachineType Definition

Attribute

Value

BrowseName

MachineOperationModeStateMachineType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the 3:MachineryOperationModeStateMachineType defined in OPC 40001-1 i.e. inheriting the InstanceDeclarations of that Node.

0:HasProperty

Variable

0:DefaultInstanceBrowseName

0:QualifiedName

0:PropertyType

None

0:HasComponent

Object

3:None

0:StateType

None

0:HasComponent

Object

3:Maintenance

0:StateType

None

0:HasComponent

Object

3:Processing

0:StateType

None

0:HasComponent

Object

3:Setup

0:StateType

None

0:HasComponent

Object

MaintenanceMode

MaintenanceModeStateMachineType

O

0:HasComponent

Object

3:FromNoneToMaintenance

0:TransitionType

None

0:HasComponent

Object

3:FromNoneToSetup

0:TransitionType

None

0:HasComponent

Object

3:FromNoneToProcessing

0:TransitionType

None

0:HasComponent

Object

3:FromNoneToNone

0:TransitionType

None

0:HasComponent

Object

3:FromMaintenanceToNone

0:TransitionType

None

0:HasComponent

Object

3:FromMaintenanceToSetup

0:TransitionType

None

0:HasComponent

Object

3:FromMaintenanceToProcessing

0:TransitionType

None

0:HasComponent

Object

3:FromMaintenanceToMaintenance

0:TransitionType

None

0:HasComponent

Object

3:FromSetupToNone

0:TransitionType

None

0:HasComponent

Object

3:FromSetupToMaintenance

0:TransitionType

None

0:HasComponent

Object

3:FromSetupToProcessing

0:TransitionType

None

0:HasComponent

Object

3:FromSetupToSetup

0:TransitionType

None

0:HasComponent

Object

3:FromProcessingToNone

0:TransitionType

None

0:HasComponent

Object

3:FromProcessingToMaintenance

0:TransitionType

None

0:HasComponent

Object

3:FromProcessingToSetup

0:TransitionType

None

0:HasComponent

Object

3:FromProcessingToProcessing

0:TransitionType

None

Conformance Units

MachineTool Monitoring MaintenanceMode

3:Machinery Operation Mode

The state Maintenance is overridden in the MachineOperationStateMachineType. The additional references are defined in Table 28. The remaining contents of the state machine are left unchanged, as defined in OPC 40001-1.

Table 27 – MachineOperationModeStateMachineType Attribute Values for Child Nodes

BrowsePath

Value Attribute

Description Attribute

State Numbers

0:DefaultInstanceBrowseName

3:MachineryOperationMode

The default BrowseName for instances of the type

3:None

-

There is currently no operation mode available

3:Maintenance

-

MachineryItem is set into maintenance mode with the intention to carry out maintenance or servicing activities

3:Setup

-

MachineryItem is set into setup mode with the intention to carry out setup, preparation or postprocessing activities of a production process

3:Processing

-

MachineryItem is set into processing mode with the intention to carry out the value adding activities

3:FromNoneToMaintenance

-

Transition from state None to state Maintenance

3:FromNoneToSetup

-

Transition from state None to state Setup

3:FromNoneToProcessing

-

Transition from state None to state Processing

3:FromNoneToNone

-

Transition from state None to state None

3:FromMaintenanceToNone

-

Transition from state Maintenance to state None

3:FromMaintenanceToSetup

-

Transition from state Maintenance to state Setup

3:FromMaintenanceToProcessing

-

Transition from state Maintenance to state Processing

3:FromMaintenanceToMaintenance

-

Transition from state Maintenance to state Maintenance

3:FromSetupToNone

-

Transition from state Setup to state None

3:FromSetupToMaintenance

-

Transition from state Setup to state Maintenance

3:FromSetupToProcessing

-

Transition from state Setup to state Processing

3:FromSetupToSetup

-

Transition from state Setup to state Setup

3:FromProcessingToNone

-

Transition from state Processing to state None

3:FromProcessingToMaintenance

-

Transition from state Processing to state Maintenance

3:FromProcessingToSetup

-

Transition from state Processing to state Setup

3:FromProcessingToProcessing

-

Transition from state Processing to state Processing

3:None

0:StateNumber

0

-

3:Maintenance

0:StateNumber

1

-

3:Setup

0:StateNumber

2

-

3:Processing

0:StateNumber

3

-

3:FromNoneToMaintenance

0:TransitionNumber

0

3:FromNoneToProcessing

0:TransitionNumber

1

3:FromNoneToSetup

0:TransitionNumber

2

3:FromMaintenanceToNone

0:TransitionNumber

3

3:FromMaintenanceToProcessing

0:TransitionNumber

4

-

3:FromMaintenanceToSetup

0:TransitionNumber

5

-

3:FromProcessingToNone

0:TransitionNumber

6

-

3:FromProcessingToMaintenance

0:TransitionNumber

7

-

3:FromProcessingToSetup

0:TransitionNumber

8

-

3:FromSetupToNone

0:TransitionNumber

9

-

3:FromSetupToMaintenance

0:TransitionNumber

10

-

3:FromSetupToProcessing

0:TransitionNumber

11

-

3:FromNoneToNone

0:TransitionNumber

12

-

3:FromMaintenanceToMaintenance

0:TransitionNumber

13

-

3:FromProcessingToProcessing

0:TransitionNumber

14

-

3:FromSetupToSetup

0:TransitionNumber

15

-

Table 28 – MachineOperationModeStateMachineType Additional References

SourceBrowsePath

ReferenceType

Is Forward

TargetBrowsePath

3:Maintenance

0:HasSubStateMachine

True

MaintenanceMode

3:FromNoneToMaintenance

0:FromState

True

3:None

0:ToState

True

3:Maintenance

3:FromNoneToProcessing

0:FromState

True

3:None

0:ToState

True

3:Processing

3:FromNoneToSetup

0:FromState

True

3:None

0:ToState

True

3:Setup

3:FromMaintenanceToNone

0:FromState

True

3:Maintenance

0:ToState

True

3:None

3:FromMaintenanceToProcessing

0:FromState

True

3:Maintenance

0:ToState

True

3:Processing

3:FromMaintenanceToSetup

0:FromState

True

3:Maintenance

0:ToState

True

3:Setup

3:FromProcessingToNone

0:FromState

True

3:Processing

0:ToState

True

3:None

3:FromProcessingToMaintenance

0:FromState

True

3:Processing

0:ToState

True

3:Maintenance

3:FromProcessingToSetup

0:FromState

True

3:Processing

0:ToState

True

3:Setup

3:FromSetupToNone

0:FromState

True

3:Setup

0:ToState

True

3:None

3:FromSetupToMaintenance

0:FromState

True

3:Setup

0:ToState

True

3:Maintenance

3:FromSetupToProcessing

0:FromState

True

3:Setup

0:ToState

True

3:Processing

3:FromNoneToNone

0:FromState

True

3:None

0:ToState

True

3:None

3:FromMaintenanceToMaintenance

0:FromState

True

3:Maintenance

0:ToState

True

3:Maintenance

3:FromProcessingToProcessing

0:FromState

True

3:Processing

0:ToState

True

3:Processing

3:FromSetupToSetup

0:FromState

True

3:Setup

0:ToState

True

3:Setup

The MaintenanceModeStateMachineType defines the different modes of maintenance being perfomed on a machine. It is used as a SubStateMachine. If the parent State is not active, the CurrentState Variable of the MaintenanceModeStateMachineType shall have a status equal to Bad_StateNotActive.

The MaintenanceModeStateMachineType is formally defined in Table 29.

Table 29 – MaintenanceModeStateMachineType Definition

Attribute

Value

BrowseName

MaintenanceModeStateMachineType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

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

0:HasComponent

Object

Service

0:StateType

None

0:HasComponent

Object

Inspection

0:StateType

None

0:HasComponent

Object

Repair

0:StateType

None

0:HasComponent

Object

Upgrade

0:StateType

None

0:HasComponent

Object

Other

0:StateType

None

Conformance Units

MachineTool Monitoring MaintenanceMode

The MaintenanceModeStateMachineType does not define an initial State.

The Service State indicates that measures to maintain or increase availability and duration of life are implemented. For example, linear guides are replaced, the bearings are lubricated, or the working area is cleaned.

The Inspection State indicates that the status is evaluated. For example, the lubrication is checked, the expendable parts are examined for wear and tear or the functionality of a workpiece holder is checked.

The Repair State indicates that the functionality of the unit is restored. For example, errors are fixed, or components are replaced.

The Upgrade State indicates that the performance, functionality, etc. of the unit are improved. For example, software upgrades, retrofitting of more powerful modules or modules with a longer duration of life.

The Other State is used if none of the other states apply.

The InstanceDeclarations of the MaintenanceModeStateMachineType have additional Attribute values defined in Table 30.

Table 30 – MaintenanceModeStateMachineType Attribute Values for Child Nodes

BrowsePath

Value Attribute

Service

0:StateNumber

0

Inspection

0:StateNumber

1

Repair

0:StateNumber

2

Upgrade

0:StateNumber

3

Other

0:StateNumber

4

The ChannelModifierType allows to show which modifiers are used while the machine is performing pre-production tests and similar tasks.

The ChannelModifierType is formally defined in Table 31.

Table 31 – ChannelModifierType Definition

Attribute

Value

BrowseName

ChannelModifierType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

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

0:HasComponent

Variable

BlockSkip

0:Boolean

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

DryRun

0:Boolean

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

OptionalStop

0:Boolean

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

TestMode

0:Boolean

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

SingleStep

0:Boolean

0:BaseDataVariableType

M, RO

Conformance Units

MachineTool Monitoring Basic - Channels

BlockSkip being True indicates that specially marked NC program blocks are skipped.

DryRun being True indicates that a test run using with a dedicated axis feed is being performed.

OptionalStop being True indicates that the execution will stop at special machine commands.

TestMode being True indicates a test mode which enables execution of a program without physical axis movement. The machining process may be simulated during program execution.

SingleStep being True indicates if the NC channel operates in single block/single step mode.

The ObligationType is used to indicate the entity responsible for the current activities of the machine. This value is needed for certain KPI standards.

The ObligationType is formally defined in Table 32.

Table 32 – ObligationType Definition

Attribute

Value

BrowseName

ObligationType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

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

0:HasComponent

Variable

EndUserObligated

0:Boolean

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

MachineBuilderObligated

0:Boolean

0:BaseDataVariableType

M, RO

Conformance Units

MachineTool Monitoring Obligation

EndUserObligated being True indicates that the machine‘s activity is the responsibility of the end user/operator.

MachineBuilderObligated being True indicates that the machine’s activity is the responsibility of the machine builder.

Typically, only one of EndUserObligated or MachineBuilderObligated is True, indicating the respective entity as responsible. Both being False indicates the obligation being unclear (e.g. unknown, third entity responsible). Both variables being True should not be used. It is foreseen that further obligation entities may be added in later versions; this way of representation allows for extension.

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

Table 33 – ProductionType Definition

Attribute

Value

BrowseName

ProductionType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0: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

Conformance Units

MachineTool MachineToolType Mandatory Nodes

MachineTool Production Basic

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

If there is no job on the machine, 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. If the machine 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 34.

Table 34 – ProductionJobListType Definition

Attribute

Value

BrowseName

ProductionJobListType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

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

0:HasOrderedComponent

Object

0:<OrderedObject>

ProductionJobType

OP

Conformance Units

MachineTool Production Job

MachineTool Production Dynamic Job List

MachineTool Production Job Available

0:<OrderedObject > is a placeholder for any number of ProductionJobType instances. To indicate the order of jobs on the machine, 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 35.

Table 35 – ProductionJobType Definition

Attribute

Value

BrowseName

ProductionJobType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0: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

Variable

PartsCompleted

0:UInt32

0:BaseDataVariableType

O, RO

0:HasComponent

Object

PartSets

0:BaseObjectType

O

0:HasComponent

Variable

PartsGood

0:UInt32

0:BaseDataVariableType

O, RO

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

Conformance Units

MachineTool Production Job

MachineTool Production Dynamic Job List

MachineTool Production Job Available

MachineTool Production Simple Parts Monitoring

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

Table 36 – ProductionJobType Additional Subcomponents

BrowsePath

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

PartsCompleted indicates how many parts have been completed in the current job including all runs. This counter does not give any indication about the part quality. If PartSets are used, this counter shall be in sync with the respective PartsCompletedPerRun counter.

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.

PartsGood indicates how many good parts have been completed in the current job including all runs. A part is counted as long as there is no contradicting evidence. Note that such evidence may arise in subsequent processing steps (on different machines), even if a part was counted as good. In this case, the data on the OPC UA Server are not changed retrospectively. If individual Parts are modelled, this counter shall be identical to the number of PartType instances with PartQuality set to Good, CapabilityUnavailable or WillNotBeMeasured.

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 (True) or not (False). The number of planned job runs not being known occurs in continuous production, that is if the machine is started with the respective job and job runs are repeated endlessly. The production process only ends when the machine 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 37.

Table 37 – ProductionProgramType Definition

Attribute

Value

BrowseName

ProductionProgramType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

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

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

Conformance Units

MachineTool MachineToolType Mandatory Nodes

MachineTool Production Basic

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

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.

The ProductionActiveProgramType is formally defined in Table 38.

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

Conformance Units

MachineTool MachineToolType Mandatory Nodes

MachineTool Production Basic

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 39. Its additional subcomponents are defined in Table 40.

Table 39 – ProductionPartSetType Definition

Attribute

Value

BrowseName

ProductionPartSetType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0: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

Conformance Units

MachineTool Production Job

MachineTool Production Dynamic Job List

MachineTool Production Job Available

Table 40 – ProductionPartSetType Additional Subcomponents

BrowsePath

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 which is treated in the purpose of the machine.

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

The ProductionPartType is formally defined in Table 41.

Table 41 – ProductionPartType Definition

Attribute

Value

BrowseName

ProductionPartType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0: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

Conformance Units

MachineTool Production Job

MachineTool Production Dynamic Job List

MachineTool Production Job Available

The Name is used to name a part in production in a machine. 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. 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 15. 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]. Their References are specified in Table 45.

image020.png

Figure 15 – The States and Transitions of the ProductionStateMachineType

The ProductionStateMachineType is formally defined in Table 42.

Table 42 – ProductionStateMachineType Definition

Attribute

Value

BrowseName

ProductionStateMachineType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

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

0:HasComponent

Object

Aborted

0:StateType

None

0:HasComponent

Object

AbortedToInitializing

0:TransitionType

None

0:HasComponent

Variable

0:CurrentState

0:LocalizedText

0:FiniteStateVariableType

M, RO

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

Variable

0:LastTransition

0:LocalizedText

0:FiniteTransitionVariableType

O, RO

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 LastTransition

The states and transitions shall have the numbers indicated in Table 44. 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 43.

Table 43 – ProductionStateMachineType Additional Subcomponents

BrowsePath

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 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 44 – ProductionStateMachineType 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.

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 45 – ProductionStateMachineType Additional References

SourceBrowsePath

ReferenceType

Is Forward

TargetBrowsePath

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

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 51. The name of each transition consists of the names of the states it connects: [FromState]To[ToState].

The ProductionProgramStateMachineType is formally defined in. Table 49.

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

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 ProductionProgramStateMachineType

The ProductionProgramStateMachineType allows to send Events of ProductionProgramTransitionEventType with every transition, as indicated in Table 51. 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 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.

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

Table 50 - ProductionProgramStateMachineType 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 51 – ProductionProgramStateMachineType Additional References

SourceBrowsePath

ReferenceType

Is Forward

TargetBrowsePath

AbortedToInitializing

0:FromState

True

Aborted

0:ToState

True

Initializing

0:HasEffect

True

ProductionProgramTransitionEventType

EndedToInitializing

0:FromState

True

Ended

0:ToState

True

Initializing

0:HasEffect

True

ProductionProgramTransitionEventType

InitializingToAborted

0:FromState

True

Initializing

0:ToState

True

Aborted

0:HasEffect

True

ProductionProgramTransitionEventType

InitializingToRunning

0:FromState

True

Initializing

0:ToState

True

Running

0:HasEffect

True

ProductionProgramTransitionEventType

InterruptedToAborted

0:FromState

True

Interrupted

0:ToState

True

Aborted

0:HasEffect

True

ProductionProgramTransitionEventType

InterruptedToRunning

0:FromState

True

Interrupted

0:ToState

True

Running

0:HasEffect

True

ProductionProgramTransitionEventType

RunningToAborted

0:FromState

True

Running

0:ToState

True

Aborted

0:HasEffect

True

ProductionProgramTransitionEventType

RunningToEnded

0:FromState

True

Running

0:ToState

True

Ended

0:HasEffect

True

ProductionProgramTransitionEventType

RunningToInterrupted

0:FromState

True

Running

0:ToState

True

Interrupted

0:HasEffect

True

ProductionProgramTransitionEventType

RunningToRunning

0:FromState

True

Running

0:ToState

True

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 54. The name of each transition consists of the names of the states it connects: [FromState]To[ToState].

The ProductionPartStateMachineType is formally defined in Table 52.

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

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 ProductionPartStateMachineType

The ProductionPartStateMachineType allows to send Events of ProductionPartTransitionEventType with every transition, as indicated in Table 54. 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 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 while in this state.

Running indicates that the processing of the part within the machine 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 .

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

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

Table 53 - ProductionPartStateMachineType 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 54 – ProductionPartStateMachineType Additional References

SourceBrowsePath

ReferenceType

Is Forward

TargetBrowsePath

AbortedToInitializing

0:FromState

True

Aborted

0:ToState

True

Initializing

0:HasEffect

True

ProductionPartTransitionEventType

EndedToInitializing

0:FromState

True

Ended

0:ToState

True

Initializing

0:HasEffect

True

ProductionPartTransitionEventType

InitializingToAborted

0:FromState

True

Initializing

0:ToState

True

Aborted

0:HasEffect

True

ProductionPartTransitionEventType

InitializingToRunning

0:FromState

True

Initializing

0:ToState

True

Running

0:HasEffect

True

ProductionPartTransitionEventType

InterruptedToAborted

0:FromState

True

Interrupted

0:ToState

True

Aborted

0:HasEffect

True

ProductionPartTransitionEventType

InterruptedToRunning

0:FromState

True

Interrupted

0:ToState

True

Running

0:HasEffect

True

ProductionPartTransitionEventType

RunningToAborted

0:FromState

True

Running

0:ToState

True

Aborted

0:HasEffect

True

ProductionPartTransitionEventType

RunningToEnded

0:FromState

True

Running

0:ToState

True

Ended

0:HasEffect

True

ProductionPartTransitionEventType

RunningToInterrupted

0:FromState

True

Running

0:ToState

True

Interrupted

0:HasEffect

True

ProductionPartTransitionEventType

RunningToRunning

0:FromState

True

Running

0:ToState

True

Running

0:HasEffect

True

ProductionPartTransitionEventType

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

The ProductionStatisticsType is formally defined in Table 55.

Table 55 – ProductionStatisticsType Definition

Attribute

Value

BrowseName

ProductionStatisticsType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

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

0:HasComponent

Variable

PartsProducedInLifetime

0:UInt32

0:BaseDataVariableType

O, RO

Conformance Units

MachineTool Production Job

MachineTool Production PartsProducedInLifetime

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

The EquipmentType is used to structure elements for machine equipment.

The EquipmentType is formally defined in Table 56.

Table 56 – EquipmentType Definition

Attribute

Value

BrowseName

EquipmentType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

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

0:HasComponent

Object

Tools

ToolListType

O

Conformance Units

MachineTool MachineToolType Mandatory Nodes

MachineTool Equipment ToolIdentification

Tools is the entry point to the list of BaseToolType subtype instances in the machine. The list of tools provided here shall contain the tools that are present in the machine and the magazines the machine has automated access to.

The ToolListType is a list of tools, where a tool may be a single tool or a multitool.

The ToolListType is formally defined in Table 57.

Table 57 – ToolListType Definition

Attribute

Value

BrowseName

ToolListType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

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

0:HasComponent

Object

<Tool>

BaseToolType

OP

0:HasProperty

Variable

0:NodeVersion

0:String

0:PropertyType

O, RO

0:GeneratesEvent

ObjectType

0:GeneralModelChangeEventType

Conformance Units

MachineTool Equipment ToolIdentification

MachineTool Equipment Dynamic Tool List

<Tool > is an OptionalPlaceholder for nodes of BaseToolType. The tool list can thus contain any number of tools, including none. For the DisplayName of the <Tool >, it is recommended to use the value of the Name Property of the respective BaseToolType instance.

The contents of the ToolListType instance can change during the Server runtime (e.g. if tools are inserted into the machine or removed from it). A change in the list can be indicated using the NodeVersion Property and the GeneralModelChangeEventType. The NodeVersion and the GeneralModelChangeEventType are intended to be used in the way defined in OPC 10000-3 and 7.3.

The BaseToolType serves as a supertype to the ToolType and the MultiToolType. It is an abstract type, meaning it is not instantiated, only the subtypes are.

The BaseToolType is formally defined in Table 58.

Table 58 – BaseToolType Definition

Attribute

Value

BrowseName

BaseToolType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Other

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

0:HasProperty

Variable

Identifier

0:String

0:PropertyType

O, RO

0:HasComponent

Object

Location

0:BaseObjectType

O

0:HasProperty

Variable

Name

0:String

0:PropertyType

O, RO

Conformance Units

MachineTool Equipment ToolIdentification

MachineTool Equipment Dynamic Tool List

Table 59 – BaseToolType Additional Subcomponents

BrowsePath

References

NodeClass

BrowseName

DataType

TypeDefinition

Others

Location

0:HasProperty

Variable

Name

0:String

0:PropertyType

M, RO

Location

0:HasProperty

Variable

PlaceNumber

0:UInt16

0:PropertyType

M, RO

Identifier is a unique identifier for a tool. The Identifier can be used to provide a unique ID given by a superordinated management system. This ID can’t be generated on the machine, it has to be transferred to the machine by a global tool management system.

The Location indicates where the tool is located, represented by Name, a name for the tool’s location (e.g. the tool magazine) and PlaceNumber, the place number at this location (refer to Table 59). If there is a shared magazine for multiple machines, a tool will be shown in the tool list (see 8.5.1 and 8.5.2) of all machines for which the tool is available.

The Name is used to name a tool to ease recognition. This name can be specific to the tool (e.g. “special_formpress_part294”), to the type of tool (e.g. “8mm drill”) or to the program (e.g. “T3”).

The ToolType is the representation of a tool. Tools are exchangeable components used in a machine to execute the production process and may for example be drills, ball milling heads, cutting inserts, pinching tools and so forth. It may also be a non-contact tool, for example a processing laser.

The ToolType is formally defined in Table 60.

Table 60 – ToolType Definition

Attribute

Value

BrowseName

ToolType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the BaseToolType defined in 8.5.3 i.e. inheriting the InstanceDeclarations of that Node.

0:HasComponent

Variable

ControlIdentifier1

0:UInt32

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

ControlIdentifier2

0:UInt32

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

ControlIdentifierInterpretation

ToolManagement

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

LastUsage

0:UtcTime

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

Locked

0:Boolean

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

PlannedForOperating

0:Boolean

0:BaseDataVariableType

O, RO

0:HasComponent

Object

ToolLife

0:BaseObjectType

O

Conformance Units

MachineTool Equipment ToolIdentification

MachineTool Equipment Dynamic Tool List

MachineTool Equipment ToolLife

The components of the ToolType have additional references which are defined in Table 61.

Table 61 – ToolType Additional Subcomponents

BrowsePath

References

NodeClass

BrowseName

DataType

TypeDefinition

Others

Locked

0:HasProperty

Variable

ReasonForLocking

ToolLocked

0:PropertyType

M, RO

ToolLife

0:HasComponent

Variable

<ToolLifeEntry>

0:Number

ToolLifeType

MP, RO

The two components ControlIdentifier1, ControlIdentifier2 are to be interpreted depending on ControlIdentifierInterpretation (refer to 12.10). This reflects the main methods which CNC-based tool management approaches use. In a ToolNumberBased approach, only ControlIdentifier1 is provided and sufficient to identify the tool. In a system with a ToolGroupBasedManagemet, tools are identified by a group and an indexing number inside this group, which are provided as ControlIdentifier1 and ControlIdentifier2 respectively. Should yet another approach be present in a given system, this is indicated by the ControlIdentifierInterpretation being reported as custom. It shall be noted that this identification data is used to identify the tool in the reference frame of the tool management system inside the machine. In many applications the machine control system uses these identifiers to handle multiple tools which are equivalent and present in the machine as spares. For an identification of the tool inside the NC program or globally, independent of the machine management view, the properties Name and Identifier are provided by the BaseToolType.

LastUsage is the time, were the specific tool was the active tool on a tool carrier for the last time, while the machine was operating in an automatic mode (e.g. for CNC controllers: in Mdi- or Automatic-mode).

The property Locked represents whether the tool was locked from use in processing. If True, the tool was locked. It has an additional property as seen in Table 61, ReasonForLocking. ReasonForLocking is defined in 12.9.

The component PlannedForOperating marks tools which the machine control can already mark as being needed for the running NC program or process when being True.

The ToolLife reports on how the tool use and tool life is being currently managed and how far the use of the tool has progressed. If more than one measurement is provided as <ToolLifeEntry >, they shall show the same value as if only one entry was provided, so they shall not be accumulated by a Client.

image021.png

Figure 16 – Instance Example of a MultiToolType Object

The MultiToolType represents a unit of different tools, usually used in order to have several tools available in-process without requiring explicit tool-changes. Multitools carry several tools on one tool magazine socket or one revolver index position and will be mounted into the machine as one prepared unit.

Typical applications are in turning, when one indexed position of the tool revolver holds several outer-diameter cutting inserts and boring tools, such that a tool change process can quickly complete by merely readjusting the CNC setpoint position tool compensation.

An instance example on how to instantiate the MultiToolType is shown in Figure 16.

The MultiToolType is formally defined in Table 62.

Table 62 – MultiToolType Definition

Attribute

Value

BrowseName

MultiToolType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the BaseToolType defined in 8.5.3 i.e. inheriting the InstanceDeclarations of that Node.

0:HasComponent

Object

<Tool>

ToolType

OP

Conformance Units

MachineTool Equipment ToolIdentification

MachineTool Equipment Dynamic Tool List

<Tool > is a placeholder for instances of ToolType. Using this placeholder, the individual ToolType instances making up the MultiTool can be represented in the information model. For individual tools within the MultiTool, use of the Location object is not recommended.

The NotificationType is used to structure information given in the MachineToolType. It groups the messages and alerts of the machine and contains the prognoses for the machining operation.

The NotificationType is formally defined in Table 63.

Table 63 – NotificationType Definition

Attribute

Value

BrowseName

NotificationType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

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

0:HasComponent

Object

Messages

MessagesType

O

0:HasComponent

Object

Prognoses

PrognosisListType

O

Conformance Units

MachineTool Notification – Errors and Alerts

MachineTool PrognosisType

MachineTool Prognoses Dynamic List

Messages is the node sending events, which are used for errors, warnings and messages. The respective references are formally defined in Table 64.

Prognoses contains a list of the current prognoses for machine operation. Reliability for any prognosis in the list will rely on the specific case and cannot be guaranteed to be precise.

The MessagesType is used to define the object sending events. These events are used for errors, warnings and messages.

The MessagesType is formally defined in Table 64.

Table 64 – MessagesType Definition

Attribute

Value

BrowseName

MessagesType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

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

0:GeneratesEvent

ObjectType

AlertType

0:GeneratesEvent

ObjectType

NotificationEventType

Conformance Units

MachineTool Notification – Errors and Alerts

To differentiate between errors, warnings and messages on the interface, the following convention shall be used, with regard to the recommendations in OPC 10000-5:

Errors have a high Severity between 667 and 1000 and are using an AlertType.

Warnings have a medium Severity between 334 and 666 and are using an AlertType.

Messages have a low Severity lower or equal to 333 and are using a NotificationEventType.

The PrognosisListType is a structuring node to collect predictions about future times when certain interaction with the machine may be necessary.

The PrognosisListType is formally defined in Table 65.

Table 65 – PrognosisListType Definition

Attribute

Value

BrowseName

PrognosisListType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

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

0:HasComponent

Object

<Prognosis>

PrognosisType

OP

0:HasProperty

Variable

0:NodeVersion

String

0:PropertyType

O, RO

0:GeneratesEvent

ObjectType

0:GeneralModelChangeEventType

Conformance Units

MachineTool PrognosisType

MachineTool Prognoses Dynamic List

<Prognosis > is an optional placeholder for PrognosisType nodes. Thus, the PrognosisListType can have any number of prognoses as components, including none. If the number of prognoses in this list changes during the runtime of the OPC UA server, the NodeVersion and GeneralModelChangeEventType can be used to indicate those changes. The NodeVersion and the GeneralModelChangeEventType are intended to be used in the way defined in OPC 10000-3 and 7.3.

The PrognosisType is the most basic prognosis type and the supertype to more specific prognosis types. It is an abstract type, meaning it is not instantiated, only the subtypes are.

The PrognosisType is formally defined in Table 66.

Table 66 – PrognosisType Definition

Attribute

Value

BrowseName

PrognosisType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Other

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

0:HasProperty

Variable

PredictedTime

0:UtcTime

0:PropertyType

M, RO

Conformance Units

MachineTool PrognosisType

PredictedTime is used to indicate the point in time the predicted user interaction will become necessary.

The MaintenancePrognosisType is a prognosis indicating at which time in the future a specific maintenance action may become necessary. The MaintenancePrognosisType is also used if an upcoming maintenance is scheduled for the machine.

Examples may be oil changes, filter mat replacements or regular checks.

The MaintenancePrognosisType is formally defined in Table 67.

Table 67 – MaintenancePrognosisType Definition

Attribute

Value

BrowseName

MaintenancePrognosisType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the PrognosisType defined in 8.6.4 i.e. inheriting the InstanceDeclarations of that Node.

0:HasComponent

Variable

Activity

0:LocalizedText

0:BaseDataVariableType

M, RO

Conformance Units

MachineTool PrognosisType

MachineTool Prognoses Dynamic List

Activity indicates the specific maintenance task to perform.

The ManualActivityPrognosisType is a prognosis indicating at which time in the future a manual intervention may become necessary.

An example for a manual intervention is a measurement or control activity, which needs to be carried out during the run of the program.

The ManualActivityPrognosisType is formally defined in Table 68.

Table 68 – ManualActivityPrognosisType Definition

Attribute

Value

BrowseName

ManualActivityPrognosisType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the PrognosisType defined in 8.6.4 i.e. inheriting the InstanceDeclarations of that Node.

0:HasComponent

Variable

Activity

0:LocalizedText

0:BaseDataVariableType

M, RO

Conformance Units

MachineTool PrognosisType

MachineTool Prognoses Dynamic List

Activity indicates the specific maintenance task to perform.

The PartLoadPrognosisType is a prognosis indicating at which time in the future a part needs to be loaded into the machine in order to be processed further.

The PartLoadPrognosisType is formally defined in Table 69.

Table 69 – PartLoadPrognosisType Definition

Attribute

Value

BrowseName

PartLoadPrognosisType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the PrognosisType defined in 8.6.4 i.e. inheriting the InstanceDeclarations of that Node.

0:HasComponent

Variable

Location

0:LocalizedText

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

PartIdentifier

0:String

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

PartName

0:String

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

PartNodeId

0:NodeId

0:BaseDataVariableType

O, RO

Conformance Units

MachineTool PrognosisType

MachineTool Prognoses Dynamic List

Location is the place where the part to load will be located within the machine. This may for example be the indication and number of the working area.

PartIdentifier shall be identical to the Identifier property of the ProductionPartType instance the prognosis relates to.

PartName shall be identical to the Name property of the ProductionPartType instance the prognosis relates to if the part is modelled in the AddressSpace. Otherwise it is filled with the most appropriate value as a name of the part.

PartNodeId shall reference the ProductionPartType instance the prognosis relates to.

The PartUnloadPrognosisType is a prognosis indicating at which time in the future a part unload may become necessary.

The PartUnloadPrognosisType is formally defined in Table 70.

Table 70 – PartUnloadPrognosisType Definition

Attribute

Value

BrowseName

PartUnloadPrognosisType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the PrognosisType defined in 8.6.4 i.e. inheriting the InstanceDeclarations of that Node.

0:HasComponent

Variable

Location

0:LocalizedText

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

PartIdentifier

0:String

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

PartName

0:String

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

PartNodeId

0:NodeId

0:BaseDataVariableType

O, RO

Conformance Units

MachineTool PrognosisType

MachineTool Prognoses Dynamic List

Location is the place where the part to unload is located within the machine. This may for example be the indication and number of the working area.

PartIdentifier shall be identical to the Identifier property of the ProductionPartType instance the prognosis relates to.

PartName shall be identical to the Name property of the ProductionPartType instance the prognosis relates to if the part is modelled in the AddressSpace. Otherwise, it is filled with the most appropriate value as a name of the part.

PartNodeId shall reference the ProductionPartType instance the prognosis relates to.

The ProcessChangeoverPrognosisType is a prognosis indicating at which time in the future the machine has to be prepared for its next manufacturing process. This might e.g. be the change of a fixture within the machine. It can also be used to group different manual steps like tool changes and loading new parts when done between processes, usually given as setup instruction.

The ProcessChangeoverPrognosisType is formally defined in Table 71.

Table 71 – ProcessChangeoverPrognosisType Definition

Attribute

Value

BrowseName

ProcessChangeoverPrognosisType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the PrognosisType defined in 8.6.4 i.e. inheriting the InstanceDeclarations of that Node.

0:HasComponent

Variable

Activity

0:LocalizedText

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

Location

0:LocalizedText

0:BaseDataVariableType

M, RO

Conformance Units

MachineTool PrognosisType

MachineTool Prognoses Dynamic List

Activity indicates the specific task(s) to perform or the indication of the setup instruction.

Location is the place where the activity for the process changeover is located within the machine. This may for example be the indication and number of the working area.

The ProductionJobEndPrognosisType is the estimated point in time of the end of the current Job.

The ProductionJobEndPrognosisType is formally defined in Table 72.

Table 72 – ProductionJobEndPrognosisType Definition

Attribute

Value

BrowseName

ProductionJobEndPrognosisType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the PrognosisType defined in 8.6.4 i.e. inheriting the InstanceDeclarations of that Node.

0:HasComponent

Variable

SourceIdentifier

0:String

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

JobNodeId

0:NodeId

0:BaseDataVariableType

O, RO

Conformance Units

MachineTool PrognosisType

MachineTool Prognoses Dynamic List

The SourceIdentifier Variable shall be identical to the Identifier property belonging to the ProductionJobType the prognosis refers to if modelled in the AddressSpace. Otherwise it shall contain the identifier of the job.

The JobNodeId shall reference the NodeId of the ProductionJobType instance the prognosis refers to.

The ToolChangePrognosisType is a prognosis indicating at which time in the future a tool within the machine or a magazine shall be exchanged with a similar tool (usually due to wear).

The ToolChangePrognosisType is formally defined in Table 73.

Table 73 – ToolChangePrognosisType Definition

Attribute

Value

BrowseName

ToolChangePrognosisType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the PrognosisType defined in 8.6.4 i.e. inheriting the InstanceDeclarations of that Node.

0:HasComponent

Variable

Location

0:LocalizedText

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

ToolIdentifier

0:String

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

ToolName

0:String

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

ToolNodeId

0:NodeId

0:BaseDataVariableType

O, RO

Conformance Units

MachineTool PrognosisType

MachineTool Prognoses Dynamic List

Location refers to the place the tool shall be removed from within the machine’s system boundary, e.g. a tool magazine or the workspace of the machine.

ToolIdentifier is identical to the Identifier property of the tool to change, if applicable. If the tool is not modelled in the AddressSpace of the OPC UA Server, this component shall be filled accordingly.

ToolName contains the name of the tool to change, as described for the BaseToolType in 8.5.3. If the tool is not available in the AddressSpace, the ToolName shall be given in a similar manner.

ToolNodeId is the NodeId of the BaseToolType subtype instance this prognosis refers to.

The ToolLoadPrognosisType is a prognosis indicating at which time in the future a tool will be loaded into the machine. This prognosis indicates loading a tool within the machine’s workspace or a tool magazine the machine has access to. The ToolLoadPrognosisType shall also be used for prognoses to load tools larger than standard tools (which might imply different work routines).

If a tool that already is in the machine is intended to be exchanged with a similar tool, the ToolChangePrognosisType shall be used.

The ToolLoadPrognosisType is formally defined in Table 74.

Table 74 – ToolLoadPrognosisType Definition

Attribute

Value

BrowseName

ToolLoadPrognosisType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the PrognosisType defined in 8.6.4 i.e. inheriting the InstanceDeclarations of that Node.

0:HasComponent

Variable

Location

0:LocalizedText

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

ToolIdentifier

0:String

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

ToolName

0:String

0:BaseDataVariableType

O, RO

Conformance Units

MachineTool PrognosisType

MachineTool Prognoses Dynamic List

Location refers to the place the tool shall be put within the machine’s system boundary, e.g. a tool magazine or the workspace of the machine.

ToolIdentifier contains the unique identifier of the tool. This value shall be the same as for the Identifier Property of the BaseToolType. If the tool is not available in the AddressSpace, the ToolIdentifier shall be given in a similar manner. The ToolIdentifier of ToolLoadPrognosisType and ToolUnloadPrognosisType shall match exactly for the same tool.

ToolName contains the name of the tool, as described for the BaseToolType in 8.5.3. If the tool is not available in the AddressSpace, the ToolName shall be given in a similar manner.

The ToolUnloadPrognosisType is a prognosis indicating at which time in the future a tool will be loaded out of the machine or a tool magazine.

The ToolUnloadPrognosisType is formally defined in Table 75.

Table 75 – ToolUnloadPrognosisType Definition

Attribute

Value

BrowseName

ToolUnloadPrognosisType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the PrognosisType defined in 8.6.4 i.e. inheriting the InstanceDeclarations of that Node.

0:HasComponent

Variable

Location

0:LocalizedText

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

ToolIdentifier

0:String

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

ToolName

0:String

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

ToolNodeId

0:NodeId

0:BaseDataVariableType

O, RO

Conformance Units

MachineTool PrognosisType

MachineTool Prognoses Dynamic List

Location refers to the place the tool shall be removed from within the machine’s system boundary, e.g. a tool magazine or the workspace of the machine.

ToolIdentifier contains the unique identifier of the tool. This value shall be the same as for the Identifier Property of the BaseToolType. If the tool is not available in the AddressSpace, the ToolIdentifier shall be given in a similar manner. The ToolIdentifier of ToolLoadPrognosisType and ToolUnloadPrognosisType shall match exactly for the same tool.

ToolName contains the name of the tool, as described for the BaseToolType in 8.5.3. If the tool is not available in the AddressSpace, the ToolName shall be given in a similar manner.

ToolNodeId contains the NodeId of the appropriate BaseToolType subtype instance.

The UtilityChangePrognosisType is the estimated point in time at which a utility needs to be refilled or changed. Utilities are for example coolants, filters or scrap material storages.

The UtilityChangePrognosisType is formally defined in Table 76.

Table 76 – UtilityChangePrognosisType Definition

Attribute

Value

BrowseName

UtilityChangePrognosisType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the PrognosisType defined in 8.6.4 i.e. inheriting the InstanceDeclarations of that Node.

0:HasComponent

Variable

UtilityName

0:String

0:BaseDataVariableType

M, RO

Conformance Units

MachineTool PrognosisType

MachineTool Prognoses Dynamic List

UtilityName provides an identifier of the utility to be changed inside the machine. This variable can for example be used by human personnel to prepare the right material for the utility change.