All instances of WwMachineType in a Server shall be referenced from the 3:Machines Object as defined in OPC 40001-1. This provides the capability to easily find all woodworking machines managed in a Server. The 3:Machines Object may contain other Nodes than instances of WwMachineType.

Each <Machine> Object represents an instance of a machine. In the simplest case, there is only one machine. The BrowseName of <Machine> should be unique within the Server. For woodworking machines it could be the 2:ProductInstanceUri of the 2:Identification Object of the 2:IVendorNameplateType.

The WwMachineType represents a woodworking machine and is formally defined in Table 15. There may be non-woodworking machines with different types below the 3:Machines instance, too.

Table 15 – WwMachineType Definiton

Attribute

Value

BrowseName

WwMachineType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the BaseObjectType defined in OPC 10000-5

Properties of the OPC UA for Machinery.

0:HasAddIn

Object

2:Identification

3:MachineIdentificationType

M

0:HasComponent

Object

3:MachineryBuildingBlocks

0:FolderType

O

0:HasAddIn

Object

5:JobManagement

5:JobManagementType

O

Woodworking Properties

0:HasComponent

Object

State

0:BaseObjectType

M

0:HasComponent

Object

Events

WwEventsDispatcherType

O

0:HasComponent

Object

ManufacturerSpecific

0:FolderType

O

Conformance Units

Woodworking WwMachineType Mandatory Nodes

Woodworking Machine Identification Writeable

Woodworking JobManagement

The 2:Identification Object provides identification information of the machine. It is specified in OPC 10000-100 and OPC 40001-1 (see chapter 2 Normative references).

The State Object provides information about the states of the machine.

The Events Object provides events.

The JobManagement Object provides functionality to add and control job orders. It also provides information about all job orders currently managed by the machine.

The ManufacturerSpecific Object provides manufacturer specific functionality.

The 3:MachineryBuildingBlocks Object contains all machinery building blocks. See Table 16 and Table 17 for more information.

Table 16 – WwMachineType Additional References

SourceBrowsePath

Reference Type

Is Forward

TargetBrowsePath

3:MachineryBuildingBlocks

0:HasAddIn

True

2:Identification

3:MachineryBuildingBlocks

0:HasAddIn

True

5:JobManagement

The components of the WwMachineType have additional subcomponents which are defined in Table 17.

Table 17 – WwMachineType Additional Subcomponents

Source Path

Reference

NodeClass

BrowseName

DataType

TypeDefinition

Others

State

0:HasInterface

ObjectType

IWwStateType

Additional Properties for 2:Identification

2:Identification

0:HasProperty

Variable

LocationPlant

0:String

0:PropertyType

O, RO

2:Identification

0:HasProperty

Variable

LocationGPS

0:String

0:PropertyType

O, RO

2:Identification

0:HasProperty

Variable

CustomerCompanyName

0:LocalizedText

0:PropertyType

O, RO

Properties from 3:MachineIdentificationType and overwritten Mandatory Flags

2:Identification

0:HasProperty

Variable

2:ProductInstanceUri

0:String

0:PropertyType

M, RO

2:Identification

0:HasProperty

Variable

2:Manufacturer

0:LocalizedText

0:PropertyType

M, RO

2:Identification

0:HasProperty

Variable

2:ManufacturerUri

0:String

0:PropertyType

O, RO

2:Identification

0:HasProperty

Variable

2:Model

0:LocalizedText

0:PropertyType

M, RO

2:Identification

0:HasProperty

Variable

2:ProductCode

0:String

0:PropertyType

O, RO

2:Identification

0:HasProperty

Variable

2:HardwareRevision

0:String

0:PropertyType

O, RO

2:Identification

0:HasProperty

Variable

2:SoftwareRevision

0:String

0:PropertyType

O, RO

2:Identification

0:HasProperty

Variable

2:DeviceClass

0:String

0:PropertyType

M, RO

2:Identification

0:HasProperty

Variable

2:SerialNumber

0:String

0:PropertyType

M, RO

2:Identification

0:HasProperty

Variable

3:YearOfConstruction

0:UInt16

0:PropertyType

M, RO

2:Identification

0:HasProperty

Variable

3:MonthOfConstruction

0:Byte

0:PropertyType

O, RO

2:Identification

0:HasProperty

Variable

3:InitialOperationDate

0:DateTime

0:PropertyType

O, RO

2:Identification

0:HasProperty

Variable

2:AssetId

0:String

0:PropertyType

O, RW

2:Identification

0:HasProperty

Variable

2:ComponentName

0:LocalizedText

0:PropertyType

O, RW

2:Identification

0:HasProperty

Variable

3:Location

0:String

0:PropertyType

O, RW

Properties from folder 3:MachineryBuildingBlocks

3:MachineryBuildingBlocks

0:HasAddIn

Object

3:MachineryItemState

3:MachineryItemState_StateMachineType

O

3:MachineryBuildingBlocks

0:HasAddIn

Object

3:MachineryOperationMode

3:MachineryOperationModeStateMachineType

O

The properties of the 3:MachineIdentificationType are listed here, too. The mandatory changes are marked bold.

The DeviceClass provides the classification of the machine. So far it is defined as follows for Woodworking:

  • “Other”
  • “SawingMachine”
  • “ProfilingMachine”
  • “EdgebandingMachine”
  • “BoringMachine”
  • “SandingMachine”
  • “MachiningCenter”
  • “Press”
  • “HandlingMachine”

The customer can set the following properties through the manufacturer HMI. Therefore, on the OPC UA interface they may be readable only.

The LocationPlant provides the location of the plant. This is the city where the machine is located, e.g. "Frankfurt".

The LocationGPS provides the location of the plant in GPS coordinates. The format is decimal degrees with north and east coordinates. For example, Hannover Messe has "52.3235858255059, 9.804918108600956".

Southern latitudes have a negative value, western longitudes as well. For example, Quito has the coordinates "-0.21975073282167099, -78.51255572531042".

The CustomerCompanyName provides the customer’s name of the Woodworking manufacturer.

image012.png

Figure 7 – Overview IWwStateType

The IWwStateType provides the machine state and is formally defined in Table 18.

Table 18 – IWwStateType Definiton

Attribute

Value

BrowseName

IWwStateType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the BaseInterfaceType defined in OPC 10000-5

0:HasComponent

Object

Machine

0:BaseObjectType

M

0:HasComponent

Object

SubUnits

0:BaseObjectType

O

Conformance Units

Woodworking SubUnits Monitoring

Woodworking Unit State

Each instance of an IWwStateType represents an instance of a machine state. In the simplest case, there is only the Machine Object. The SubUnits Object is used when a machine has multiple states. For example, a CNC machine can have several places where independent jobs are produced.

The Machine state does not summarize the SubUnits states. It does not have to be based on the SubUnits states. It is a decision of the machine manufacturer.

The KPI calculation has to be done individually based on the special machine instance and its states.

The units of the IWwStateType have additional subunits which are defined in Table 19.

Table 19 – IWwStateType Additional SubUnits

Source Path

Reference

NodeClass

BrowseName

DataType

TypeDefinition

Others

Machine

0:HasInterface

ObjectType

IWwBaseStateType

SubUnits

0:HasInterface

ObjectType

IWwSubUnitsType

The IWwSubUnitsType provides a list of SubUnits and is formally defined in Table 20.

Table 20 – IWwSubUnitsType Definiton

Attribute

Value

BrowseName

IWwSubUnitsType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the BaseInterfaceType defined in OPC 10000-5

0:HasComponent

Object

<SubUnit>

0:BaseObjectType

MP

Conformance Units

Woodworking SubUnits Monitoring

Each <SubUnit> object with Interface IWwBaseStateType shall be put into this object. It represents an instance of a state. For example, a CNC machine can have two places where independent jobs are produced. Then there are two <SubUnit> Objects. They may be named “Place_1” and “Place_2”.

The components of the IWwSubUnitsType have additional subunits which are defined in Table 21.

Table 21 – IWwSubUnitsType Additional Subcomponents

Source Path

Reference

Node Class

BrowseName

DataType

TypeDefinition

Others

<SubUnit>

0:HasInterface

ObjectType

IWwBaseStateType

image013.png

Figure 8 – Overview of IWwBaseStateType

The IWwBaseStateType represents the state of a unit and is formally defined in Table 22. A unit can be a machine or part of a machine.

Table 22 – IWwBaseStateType Definiton

Attribute

Value

BrowseName

IWwBaseStateType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the BaseInterfaceType defined in OPC 10000-5

0:HasComponent

Object

Overview

0:BaseObjectType

M

0:HasComponent

Object

Flags

0:BaseObjectType

O

0:HasComponent

Object

Values

0:BaseObjectType

O

Conformance Units

Woodworking Machine Monitoring

Woodworking SubUnits Monitoring

Woodworking Unit State

The Overview Object provides a general overview of the unit.

The Flags Object provides the flags of the unit.

The Values Object provides the counters and values of the unit.

The components of the IWwBaseStateType have additional subcomponents which are defined in Table 23.

Table 23 – IWwBaseStateType Additional Subcomponents

Source Path

Reference

NodeClass

BrowseName

DataType

TypeDefinition

Others

Overview

0:HasInterface

ObjectType

IWwUnitOverviewType

Flags

0:HasInterface

ObjectType

IWwUnitFlagsType

Values

0:HasInterface

ObjectType

IWwUnitValuesType

The IWwUnitOverviewType represents the generalized overview of a unit and is formally defined in Table 24.

Table 24 – IWwUnitOverviewType Definiton

Attribute

Value

BrowseName

IWwUnitOverviewType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the BaseInterfaceType defined in OPC 10000-5

0:HasComponent

Variable

CurrentState

WwUnitStateEnumeration

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

CurrentMode

WwUnitModeEnumeration

0:BaseDataVariableType

M, RO

Conformance Units

Woodworking Unit State

The CurrentState Variable provides the generalized state of the unit.

The CurrentMode Variable provides the generalized mode of the unit.

This enumeration WwUnitStateEnumeration represents the generalized state of a unit. The enumeration is defined in Table 25.

Table 25 – WwUnitStateEnumeration Items

Name

Value

Description

OFFLINE

0

The unit is offline.

STANDBY

1

The unit is in standby.

READY

2

The unit is ready to start working.

WORKING

3

The unit is working.

ERROR

4

The unit is not able to work. The cause can be an alarm or error or user intervention.

A unit state depends on the unit flags (see 7.9). Even if the unit flags are not provided in the AddressSpace they exist internally in the machine. If the device does not support EnergySaving, it is assumed that the variable value is False. Therefore, they are always the basis for the state:

!MachineOn

MachineOn && (!MachineInitialized || EnergySaving || (!Error && !Calibrated))

MachineOn && MachineInitialized && !EnergySaving && !Error && Calibrated && !RecipeInRun

MachineOn && MachineInitialized && !EnergySaving && !Error && Calibrated && RecipeInRun

MachineOn && MachineInitialized && !EnergySaving && Error

This is the state diagram of the UnitState:

Note: Since the unit state is an enumeration do not rely on the transitions. Only the logic of the unit flags counts.

image014.png

Figure 9 – State Machine of the unit state

Its representation in the AddressSpace is defined in Table 26.

Table 26 – WwUnitStateEnumeration Definiton

Attribute

Value

BrowseName

WwUnitStateEnumeration

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the Enumeration type defined in OPC 10000-5

0:HasProperty

Variable

0:EnumValues

0:EnumValueType[]

0:PropertyType

Conformance Units

Woodworking Unit State

This enumeration WwUnitModeEnumeration represents the generalized mode of a unit. The enumeration is defined in Table 27.

Table 27 – WwUnitModeEnumeration Items

Name

Value

Description

OTHER

0

This state is used if none of the other states below applies.

AUTOMATIC

1

The unit is in automatic mode.

SEMIAUTOMATIC

2

The unit is in semi-automatic mode.

MANUAL

3

The unit is in manual mode.

SETUP

4

The unit is in setup mode.

SLEEP

5

The unit is in sleep mode. Unit is still switched on, energy consumption reduced by e.g. reducing heating, switching drives off. Production is not possible.

Its representation in the AddressSpace is defined in Table 28.

Table 28 – WwUnitModeEnumeration Definiton

Attribute

Value

BrowseName

WwUnitModeEnumeration

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the Enumeration type defined in OPC 10000-5

0:HasProperty

Variable

0:EnumValues

0:EnumValueType[]

0:PropertyType

Conformance Units

Woodworking Unit State

The IWwUnitFlagsType provides the flags of a unit and is formally defined in Table 29.

Table 29 – IWwUnitFlagsType Definiton

Attribute

Value

BrowseName

IWwUnitFlagsType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the BaseInterfaceType defined in OPC 10000-5

0:HasComponent

Variable

MachineOn

0:Boolean

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

MachineInitialized

0:Boolean

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

PowerPresent

0:Boolean

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

AirPresent

0:Boolean

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

DustChipSuction

0:Boolean

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

Emergency

0:Boolean

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

Safety

0:Boolean

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

Calibrated

0:Boolean

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

Remote

0:Boolean

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

WorkpiecePresent

0:Boolean

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

Moving

0:Boolean

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

Error

0:Boolean

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

Alarm

0:Boolean

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

Warning

0:Boolean

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

Hold

0:Boolean

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

RecipeInRun

0:Boolean

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

RecipeInSetup

0:Boolean

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

RecipeInHold

0:Boolean

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

ManualActivityRequired

0:Boolean

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

LoadingEnabled

0:Boolean

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

WaitUnload

0:Boolean

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

WaitLoad

0:Boolean

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

EnergySaving

0:Boolean

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

ExternalEmergency

0:Boolean

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

MaintenanceRequired

0:Boolean

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

FeedRuns

0:Boolean

0:BaseDataVariableType

O, RO

Conformance Units

Woodworking Machine Monitoring

Woodworking SubUnits Monitoring

Woodworking Unit State

The MachineOn Variable is True if the machine is switched on. If the OPC UA Server runs on the machine this value is always True.

The MachineInitialized Variable is True if the MachineOn is True, the PLC and the control processes are running. The machine is ready for usage for the operator.

The PowerPresent Variable is True if the power supply is present (the drives are ready to move).

The AirPresent Variable is True if the air pressure is present in the machine.

The DustChipSuction Variable is True if the dust and chip suction is ready.

The Emergency Variable is True if at least one emergency button is pressed.

The Safety Variable is True if at least one safety device (light curtain, safety mat, …) has intervened.

The Calibrated Variable is True if all components of the machine that need to be calibrated are calibrated.

The Remote Variable is True if the machine is working with programs sent by the supervisor or other external application.

The WorkpiecePresent Variable is True if at least one piece is inside the machine.

The Moving Variable is True if at least one axis is moving.

The Error Variable is True if at least one reason exists which prevents the machine from working.

The Alarm Variable is True if at least one alarm exists.

The Warning Variable is True if at least one warning exists.

The Hold Variable is True if the movements are paused by the operator.

The RecipeInRun Variable is True if the machine runs its program. However, if the machine is paused by the program, the machine is considered to still be running its program, i.e. while the RecipeInHold Variable is True, the RecipeInRun cannot be False.

The RecipeInSetup Variable is True if the RecipeInRun is True and the machine is in the setup phase (example: automatic tool change).

The RecipeInHold Variable is True if the machine is paused by the program. This is only possible if the RecipeInRun Variable is also True.

The ManualActivityRequired Variable is True if a manual activity by the operator is required. The RecipeInRun is not affected.

The LoadingEnabled Variable is True if the unit is ready to get the next new part. If this is False no part can get into the unit.

The WaitUnload Variable is True if the machine is waiting to unload pieces.

The WaitLoad Variable is True if the machine is waiting for pieces.

The EnergySaving Variable is True if energy saving is activated on the machine.

The ExternalEmergency Variable is True if there is an emergency from the line controllercontroller.

The MaintenanceRequired Variable is True if maintenance is required.

The FeedRuns Variable is True if the feed is running on a throughfeed machine.

The IwwUnitValuesType represents the values of a unit and is formally defined in Table 30.

Table 30 – IWwUnitValuesType Definiton

Attribute

Value

BrowseName

IWwUnitValuesType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the BaseInterfaceType defined in OPC 10000-5

0:HasComponent

Variable

AxisOverride

0:UInt32

0:BaseAnalogType

O, RO

0:HasComponent

Variable

SpindleOverride

0:UInt32

0:BaseAnalogType

O, RO

0:HasComponent

Variable

FeedSpeed

0:Double

0:BaseAnalogType

O, RO

0:HasComponent

Variable

ActualCycle

0:Double

0:BaseAnalogType

O, RO

0:HasComponent

Variable

AbsoluteMachineOffTime

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

AbsoluteStandbyTime

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

RelativeStandbyTime

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

AbsoluteReadyTime

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

RelativeReadyTime

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

AbsoluteWorkingTime

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

RelativeWorkingTime

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

AbsoluteErrorTime

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

RelativeErrorTime

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

AbsoluteMachineOnTime

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

RelativeMachineOnTime

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

AbsolutePowerPresentTime

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

RelativePowerPresentTime

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

AbsoluteProductionTime

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

RelativeProductionTime

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

AbsoluteProductionWithoutWorkpieceTime

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

RelativeProductionWithoutWorkpieceTime

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

AbsoluteProductionWaitWorkpieceTime

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

RelativeProductionWaitWorkpieceTime

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

AbsoluteRunsGood

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

RelativeRunsGood

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

AbsoluteRunsTotal

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

RelativeRunsTotal

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

AbsoluteRunsAborted

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

RelativeRunsAborted

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

AbsoluteLength

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

RelativeLength

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

AbsolutePiecesIn

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

RelativePiecesIn

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

AbsolutePiecesOut

0:UInt64

0:BaseAnalogType

O, RO

0:HasComponent

Variable

RelativePiecesOut

0:UInt64

0:BaseAnalogType

O, RO

Conformance Units

Woodworking Machine Monitoring

Woodworking SubUnits Monitoring

Woodworking Unit State

Note: For OEE or KPI calculations the absolute and relative values might not be good enough. The term “Absolute” depends on the manufacturer. It may be reset on the machine or the InitialOperationDate is used for the start. The reset function can usually only be done by the service or the manufacturer. Therefore, it cannot be done by the OPC UA Client. Maybe one manufacturer has this feature.

The AxisOverride Variable provides the override for the axis in percent.

The SpindleOverride Variable provides the override for the spindle in percent.

The FeedSpeed Variable provides the feed speed in m/min for throughfeed machines. The values can be negative.

The ActualCycle Variable provides the parts per minutes.

The AbsoluteMachineOffTime can be calculated by the machine. The shutdown time and the starting time have to be stored on the machine.

The AbsoluteStandbyTime Variable provides the absolute time of the STANDBY state in msec.

The RelativeStandbyTime Variable provides the relative time since startup of the STANDBY state in msec.

The AbsoluteReadyTime Variable provides the absolute time of the READY state in msec.

The RelativeReadyTime Variable provides the relative time since startup of the READY state in msec.

The AbsoluteWorkingTime Variable provides the absolute time of the WORKING state in msec.

The RelativeWorkingTime Variable provides the relative time since startup of the WORKING state in msec.

The AbsoluteErrorTime Variable provides the absolute time of the ERROR state in msec.

The RelativeErrorTime Variable provides the relative time since startup of the ERROR state in msec.

The AbsoluteMachineOnTime Variable provides the absolute time in msec the machine is turned on based on the MachineOn state.

The RelativeMachineOnTime Variable provides the relative time in msec since startup the machine is turned on based on the MachineOn state.

The AbsolutePowerPresentTime Variable provides the absolute time in msec the machine has power on based on the PowerPresent state.

The RelativePowerPresentTime Variable provides the relative time in msec since startup the machine has power on based on the PowerPresent state.

The AbsoluteProductionTime Variable provides the absolute time in msec of the machine is working at least with one workpiece based on the RecipeInRun and WorkpiecePresent state.

The RelativeProductionTime Variable provides the relative time in msec since startup of the machine is working at least with one workpiece based on the RecipeInRun and WorkpiecePresent state.

The AbsoluteProductionWithoutWorkpieceTime Variable provides the absolute time in msec of the machine is working but without workpieces inside based on the RecipeInRun state and the negated WorkpiecePresent state.

The RelativeProductionWithoutWorkpieceTime Variable provides the relative time in msec since startup of the machine is working but without workpieces inside based on the RecipeInRun state and the negated WorkpiecePresent state.

The AbsoluteProductionWaitWorkpieceTime Variable provides the absolute time in msec of the machine is in working mode, bring the consent out to insert workpiece but no workpiece incoming from the previous machine based on the ReceipeInRun and WaitLoad state.

The RelativeProductionWaitWorkpieceTime Variable provides the relative time in msec waiting for workpieces since startup of the machine is in working mode, bring the consent out to insert workpiece but no workpiece incoming from the previous machine based on the ReceipeInRun and WaitLoad state.

The AbsoluteRunsGood Variable provides the absolute count of finished runs.

The RelativeRunsGood Variable provides the relative count of finished runs since the machine was last switched on.

The AbsoluteRunsTotal Variable provides the absolute count of total runs.

The RelativeRunsTotal Variable provides the relative count of total runs since the machine was last switched on.

The AbsoluteRunsAborted Variable provides the absolute count of aborted runs.

The RelativeRunsAborted Variable provides the relative count of aborted runs since the machine was last switched on.

The AbsoluteLength Variable provides the absolute produced length in mm.

The RelativeLength Variable provides the relative produced length in mm since the machine was last switched on.

The AbsolutePiecesIn Variable provides the absolute count of pieces which came into the machine.

The RelativePiecesIn Variable provides the relative count of pieces which came into the machine since the machine was last switched on.

The AbsolutePiecesOut Variable provides the absolute count of pieces which came out of the machine.

The RelativePiecesOut Variable provides the relative count of pieces which came out of the machine since the machine was last switched on.

The IWwEventMessageType provides the common extensions for all events and conditions and is formally defined in Table 31. Each instance definition that includes this interface with a 0:HasInterface reference defines the predefined extensions.

Table 31 – IWwEventMessageType Definiton

Attribute

Value

BrowseName

IWwEventMessageType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:BaseInterfaceType defined in OPC 10000-5

0:HasProperty

Variable

EventCategory

WwEventCategoryEnumeration

0:PropertyType

M, RO

0:HasProperty

Variable

MessageId

0:String

0:PropertyType

M, RO

0:HasProperty

Variable

MessageName

0:String

0:PropertyType

O, RO

0:HasProperty

Variable

PathParts

0:String[]

0:PropertyType

M, RO

0:HasProperty

Variable

Group

0:String

0:PropertyType

O, RO

0:HasProperty

Variable

LocalizedMessages

0:LocalizedText[]

0:PropertyType

O, RO

0:HasProperty

Variable

Arguments

WwMessageArgumentDataType[]

0:PropertyType

O, RO

Conformance Units

Woodworking Event Messages

The EventCategory Variable provides the category of the event.

The MessageId Variable is a unique Identifier like a number or name of the message in the cause path (PathParts) determined Module. Example: “A4711” or “1”.

The MessageName Variable is a short name like a number or title to reference a translation of the general message text. Example: “ID_MSG_EmergencyAlarm”.

The PathParts Variable is an array of Path information strings based on a Server independent hierarchical structure of modules or an application specific expansion of that. It is an additional location information beside the SourceName. Example:

image015.png

Key

1 = Machine with feed direction2 = Top pressure beam3 = Chain beam4 = Control5 = Sizing with Milling 1 and Milling 2 inside6 = Addition operation zone7 = Integrated enclosure8 = Fixed side9 = Movable side

“Machine”

“FixedSide”

“Sizing”

“Milling1”

Figure 10 – PathParts

The Group Variable specifies the class or group of the Message. The contents are set by the machine manufacturer. Examples are “safety”, “emergency”, “consumable”.

The LocalizedMessages Variable contains an array of localized messages corresponding to the installed Server languages. The 0:Message property contains the content of the LocalizedMessages entry, which corresponds to the currently set language of the session. There are no placeholders in the messages. The 0:Message property and the LocalizedMessages are all resolved.

The Arguments Variable is an argument that can be used to parameterize the message. The number of the indexing in the array corresponds to the placeholder number in the message text. This ensures that the formatting functions of the implementations enable the localized message texts to be created. If a Client wants to use this feature, it has to use the MessageId. With this Id the raw message can be taken from a repository of the woodworking manufacturer. Then the placeholders can be resolved using the Arguments. The format of the raw message is up to the manufacturer.

This enumeration WwEventCategoryEnumeration represents the category of an event. The enumeration is defined in Table 32.

Table 32 – WwEventCategoryEnumeration Items

Name

Value

Description

OTHER

0

No other event category applies or it is unknown.

DIAGNOSTIC

1

This category is used for messages for debugging and diagnostic purposes.

They can be ignored by Clients (Diagnostic messages to operator, e.g. "system is ready")

INFORMATION

2

Messages of this category do not require a Client to read them for normal operation.

The woodworking system can safely continue normal operation even if this message is ignored.

(Help messages to operator, e.g. "select Auto mode and press Start")

WARNING

3

This category describes messages that in general could have moderate importance. Missing or ignoring such a message has no serious consequences.

The woodworking system could request acknowledgement or acknowledgement and confirmation if needed.

(Warning message to operator, e.g. “tool life will soon be reached”)

ALARM

4

The goal of an alarm is to inform operators about conditions in a timely manner and allow the operator to take some action before some consequences occur. The consequences may be economic (product is not usable and must be discarded), may be physical (overheating), may be related to safety (fire or destruction could occur) or any of a number of other possibilities. Typically, if no action is taken related to an alarm for some period of time the process will cross some threshold at which point consequences will start to occur, likely causing an Error condition.

According to this definition an alarm message usually requires an acknowledgement and it may be decided that also a confirmation is needed.

ERROR

5

This category is used for error messages associated with problems that need human interaction.

An Error occurs if the situation has critical consequences for the machine process. For example, the protection of human life, of the environment, or of the machine itself, through safety mechanisms that block the process to prevent any harmful situation.

This kind of situation cannot be solved automatically and confirmation by an operator is mandatory.

This specification does not intend to determine in which manner acknowledgement and confirmation are given by operators: this could be done directly on a machine (e.g. through a SCADA or HMI) or/and by an OPC UA Client through OPC UA Alarms and Conditions mechanisms, if available.

Its representation in the AddressSpace is defined in Table 33.

Table 33 – WwEventCategoryEnumeration Definiton

Attribute

Value

BrowseName

WwEventCategoryEnumeration

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the Enumeration type defined in OPC 10000-5

0:HasProperty

Variable

0:EnumValues

0:EnumValueType[]

0:PropertyType

Conformance Units

Woodworking Event Messages

This structure definition extends the argument structure with an argument value. The structure is defined in Table 34.

Table 34 – WwMessageArgumentDataType Structure

Name

Type

Description

WwMessageArgumentDataType

structure

Subtype of the 0:Argument defined in OPC UA Part 3

Value

WwMessageArgumentValueDataType

The variable contains the value of the argument.

Its representation in the AddressSpace is defined in Table 35.

Table 35 – WwMessageArgumentDataType Definiton

Attribute

Value

BrowseName

WwMessageArgumentDataType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:Argument defined in OPC UA Part 3

Conformance Units

Woodworking Event Messages

This union defines the possible types of an argument value. The structure is defined in Table 36.

Table 36 – WwMessageArgumentValueDataType Structure

Name

Type

Description

WwMessageArgumentValueDataType

structure

Subtype of the 0:Union defined in OPC UA Part 3

Array

WwMessageArgumentValueDataType[]

The content of the value as an array of the own type

Boolean

Boolean

The content of the value as a boolean

Int16

Int16

The content of the value as a 16 bit integer

Int32

Int32

The content of the value as a 32 bit integer

Int64

Int64

The content of the value as a 64 bit integer

SByte

SByte

The content of the value as a 8 bit integer

UInt16

UInt16

The content of the value as a 16 bit unsigned integer

UInt32

UInt32

The content of the value as a 32 bit unsigned integer

UInt64

UInt64

The content of the value as a 64 bit unsigned integer

Byte

Byte

The content of the value as a 8 bit unsigned integer

DateTime

DateTime

The content of the value as a datetime

Guid

Guid

The content of the value as a GUID

LocalizedText

LocalizedText

The content of the value as a localized text

Double

Double

The content of the value as a double

Float

Float

The content of the value as a float

String

String

The content of the value as a string

Other

String

The content of the value has no standard format and is instantiated as a string

Its representation in the AddressSpace is defined in Table 37.

Table 37 – WwMessageArgumentValueDataType Definiton

Attribute

Value

BrowseName

WwMessageArgumentValueDataType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:Union defined in OPC UA Part 3

Conformance Units

Woodworking Event Messages

The WwBaseEventType represents a message event from a module and is formally defined in Table 38.

Table 38 – WwBaseEventType Definiton

Attribute

Value

BrowseName

WwBaseEventType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:BaseEventType defined in OPC UA Part 5

0:HasInterface

ObjectType

IWwEventMessageType

Applied from IWwEventMessageType

0:HasProperty

Variable

EventCategory

WwEventCategoryEnumeration

0:PropertyType

M, RO

0:HasProperty

Variable

MessageId

0:String

0:PropertyType

M, RO

0:HasProperty

Variable

MessageName

0:String

0:PropertyType

O, RO

0:HasProperty

Variable

PathParts

0:String[]

0:PropertyType

M, RO

0:HasProperty

Variable

Group

0:String

0:PropertyType

O, RO

0:HasProperty

Variable

LocalizedMessages

0:LocalizedText[]

0:PropertyType

O, RO

0:HasProperty

Variable

Arguments

WwMessageArgumentDataType[]

0:PropertyType

O, RO

Conformance Units

Woodworking Event Messages

IWwEventMessageType and its members are described in 7.11.

The WwConditionType represents a stateful message event from a module and is formally defined in Table 39. It is used to classify conditions to recognize event messages with the extensions of the interface IWwEventMessageType. The 0:EnabledState of the linked condition is used to map the state of an event message. The behavior corresponds to the description of the 0:ConditionType defined in OPC UA Part 9.

Table 39 – WwConditionType Definiton

Attribute

Value

BrowseName

WwConditionType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:ConditionType defined in OPC UA Part 9

0:HasInterface

ObjectType

IWwEventMessageType

Applied from IWwEventMessageType

0:HasProperty

Variable

EventCategory

WwEventCategoryEnumeration

0:PropertyType

M, RO

0:HasProperty

Variable

MessageId

0:String

0:PropertyType

M, RO

0:HasProperty

Variable

MessageName

0:String

0:PropertyType

O, RO

0:HasProperty

Variable

PathParts

0:String[]

0:PropertyType

M, RO

0:HasProperty

Variable

Group

0:String

0:PropertyType

O, RO

0:HasProperty

Variable

LocalizedMessages

0:LocalizedText[]

0:PropertyType

O, RO

0:HasProperty

Variable

Arguments

WwMessageArgumentDataType[]

0:PropertyType

O, RO

Conformance Units

Woodworking Event Messages

IWwEventMessageType and its members are described in 7.11.

The WwAcknowledgeableConditionType represents a stateful message event from a module and is formally defined in Table 40. It is used to classify conditions to recognize acknowledgeable and confirmable event messages with the extensions of the interface IWwEventMessageType. The 0:EnabledState of the linked condition is used to map the active state of an event message. The behavior corresponds to the description of the 0:AcknowledgeableConditionType defined in OPC UA Part 9.

Table 40 – WwAcknowledgeableConditionType Definiton

Attribute

Value

BrowseName

WwAcknowledgeableConditionType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:AcknowledgeableConditionType defined in OPC UA Part 9

0:HasInterface

ObjectType

IWwEventMessageType

Applied from IWwEventMessageType

0:HasProperty

Variable

EventCategory

WwEventCategoryEnumeration

0:PropertyType

M, RO

0:HasProperty

Variable

MessageId

0:String

0:PropertyType

M, RO

0:HasProperty

Variable

MessageName

0:String

0:PropertyType

O, RO

0:HasProperty

Variable

PathParts

0:String[]

0:PropertyType

M, RO

0:HasProperty

Variable

Group

0:String

0:PropertyType

O, RO

0:HasProperty

Variable

LocalizedMessages

0:LocalizedText[]

0:PropertyType

O, RO

0:HasProperty

Variable

Arguments

WwMessageArgumentDataType[]

0:PropertyType

O, RO

Conformance Units

Woodworking Event Messages

IWwEventMessageType and its members are described in 7.11.

The WwAlarmConditionType represents a stateful message event from a module and is formally defined in Table 41. It is used to classify conditions to recognize acknowledgeable and confirmable event messages with the extensions of the interface IWwEventMessageType. As an enhancement to the more general conditions, an alarm contains an additional 0:ActiveState variable, which can be used to map the active state of an event message. In combination with this, the 0:EnabledState is used to control the usability of the condition. The behavior corresponds to the description of the 0:AlarmConditionType defined in OPC UA Part 9.

Table 41 – WwAlarmConditionType Definiton

Attribute

Value

BrowseName

WwAlarmConditionType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:AlarmConditionType defined in OPC UA Part 9

0:HasInterface

ObjectType

IWwEventMessageType

Applied from IWwEventMessageType

0:HasProperty

Variable

EventCategory

WwEventCategoryEnumeration

0:PropertyType

M, RO

0:HasProperty

Variable

MessageId

0:String

0:PropertyType

M, RO

0:HasProperty

Variable

MessageName

0:String

0:PropertyType

O, RO

0:HasProperty

Variable

PathParts

0:String[]

0:PropertyType

M, RO

0:HasProperty

Variable

Group

0:String

0:PropertyType

O, RO

0:HasProperty

Variable

LocalizedMessages

0:LocalizedText[]

0:PropertyType

O, RO

0:HasProperty

Variable

Arguments

WwMessageArgumentDataType[]

0:PropertyType

O, RO

Conformance Units

Woodworking Event Messages

IWwEventMessageType and its members are described in 7.11.

The WwEventsDispatcherType represents a container that is an event dispatcher for machine events and is formally defined in Table 42.

Table 42 – WwEventsDispatcherType Definiton

Attribute

Value

BrowseName

WwEventsDispatcherType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:BaseObjectType defined in OPC 10000-5

0:GeneratesEvent

ObjectType

0:BaseEventType

0:GeneratesEvent

ObjectType

WwBaseEventType

0:GeneratesEvent

ObjectType

WwConditionType

0:GeneratesEvent

ObjectType

WwAcknowledgeableConditionType

0:GeneratesEvent

ObjectType

WwAlarmConditionType

Conformance Units

Woodworking Machine Events

Woodworking Event Propagation

Woodworking Event Messages

Woodworking Stateful Event Messages

A wide variety of events and states can trigger messages on a plant, machine or component. Events and the associated messages are rather temporary and therefore cannot be subscribed directly. However, filtering can be realized with the event types like WwBaseEventType, WwConditionType, WwAcknowledgeableConditionType or WwAlarmConditionType. The woodworking events implement the interface IWwEventMessageType.

image016.png

Figure 11 – Overview of Woodworking Event Types

Woodworking machines do not need to provide the woodworking Types like WwBaseEventType. Instead, it can be an object based on any OPC UA 0:BaseEventType or a subtype, which also contains an implementation of the IWwEventMessageType interface. So it is possible to use the full range of OPC UA AlarmTypes like 0:LimitAlarmType:

image017.png

Figure 12 – OPC UA AlarmTypes

Note: Due to the implementation of the selected SDK (Software Developer Kit) to support the realization of the server application, it is possible that the condition methods such as AddComment, Acknowledge or Confirm cannot be used for conditions outside the AddressSpace.

This specification extends the standardized parameters of Job-Order-Input and Job-Order-Response Information of the OPC UA for Machinery, Part 3: JobManagement specification. All extended parameters have the Woodworking prefix “Ww” for the Id.

Table 43 lists the predefined key-value pairs for 2:JobOrderParameters and 2:JobResponseData. The table indicates, in which data structure the key-value pair should preferably to be used. An “X” in “In” indicates it may be used in 2:JobOrderParameters. And an “X” in “Out” indicates it may be used in 2:JobResponseData.

As an extension to “OPC40001-3” (OPC UA for Machinery, Part 3: JobManagement), all in-parameters can also be used as out-parameters. An in-parameter is normally set via a Manufacturing Execution System (MES) and an out-parameter is usually determined on a machine. In certain applications, this is determined jointly by the manufacturer and the customer.

Table 43 – 2:JobOrderParameters and 2:JobResponseData

ID

DataType of Value

Description

EngineeringUnits

Sub-parameters

In

Out

WwSerialProduction

0:Boolean

If this flag is set, production will continue until it is interrupted manually or by another reason.

-

-

X

-

WwProductionDatasetId

0:String

Unique identification of the production dataset. Depending on the type of machine it can be:

  • Program
  • Recipe
  • Macro
  • etc.

-

-

X

-

WwRawLength

0:Double

Raw length of the workpiece. If the dimension of a workpiece changes during the production process, then this raw value can be provided. The parameter is not required if the length does not change.

Product-

specificPreferred: mm (MMT)

-

X

-

WwLength

0:Double

Length of the workpiece. If the dimension of a workpiece changes during the production process, this is the resulting length.

Product-

specificPreferred: mm (MMT)

-

X

-

WwRawWidth

0:Double

Raw width of the workpiece. If the dimension of a workpiece changes during the production process, then this raw value can be provided. The parameter is not required if the width does not change.

Product-

specificPreferred: mm (MMT)

-

X

-

WwWidth

0:Double

Width of the workpiece. If the dimension of a workpiece changes during the production process, this is the resulting width.

Product-

specificPreferred: mm (MMT)

-

X

-

WwRawHeight

0:Double

Raw height of the workpiece. If the dimension of a workpiece changes during the production process, then this raw value can be provided. The parameter is not required if the height does not change.

Product-

specificPreferred: mm (MMT)

-

X

-

WwHeight

0:Double

Height of the workpiece. If the dimension of a workpiece changes during the production process, this is the resulting height.

Product-

specificPreferred: mm (MMT)

-

X

-

WwProductionSubDatasetIds

0:String[]

Array of unique sub-production dataset identifiers. If the order of the sub-production datasets has to be payed attention to, then the sequence within the array is relevant.

Dependent on the type of machine it can be:

  • SubProgram
  • SubRecipe
  • SubMacro
  • etc.

-

-

X

-

WwPlannedFeedspeed

0:Double

Planned feed speed.

Planned movement speed of the workpieces in the machine.

If WwPlannedCycle is also provided, the machine determines its use.

Product-

specificPreferred: m/min (2X)

-

X

-

WwActualFeedspeed

0:Double

Actual feed speed.

Actual movement speed of the workpieces in the machine.

Product-

specificPreferred: m/min (2X)

-

-

X

WwPlannedLoadingFeedspeed

0:Double

Planned feed speed at the loading point.

Product-

specificPreferred: m/min (2X)

-

X

-

WwActualLoadingFeedspeed

0:Double

Actual feed speed at the loading point.

Product-

specificPreferred: m/min (2X)

-

-

X

WwPlannedUnloadingFeedspeed

0:Double

Planned feed speed at the unloading point.

Product-

specificPreferred: m/min (2X)

-

X

-

WwActualUnloadingFeedspeed

0:Double

Actual feed speed at the unloading point.

Product-

specificPreferred: m/min (2X)

-

-

X

WwPlannedCycle

0:Double

Planned production cycle.

If WwPlannedFeedspeed is also provided, the machine determines its use.

Product-

specificPreferred: cycle/min

-

X

-

WwActualCycle

0:Double

Actual production cycle.

Product-

specificPreferred: cycle/min

-

-

X

WwPlannedLoadingCycle

0:Double

Planned production cycle at the loading point.If WwPlannedLoadingFeedspeed is also provided, the machine determines its use.

Product-

specificPreferred: cycle/min

-

X

-

WwActualLoadingCycle

0:Double

Actual production cycle at the loading point.

Product-

specificPreferred: cycle/min

-

-

X

WwPlannedUnloadingCycle

0:Double

Planned production cycle at the unloading point.If WwPlannedUnloadingFeedspeed is also provided, the machine determines its use.

Product-

specificPreferred: cycle/min

-

X

-

WwActualUnloadingCycle

0:Double

Actual production cycle at the unloading point.

Product-

specificPreferred: cycle/min

-

-

X

WwPlannedRepair

0:Boolean

Planned repair processing of a workpiece.

(True = yes, False = no)

If the incoming workpiece is to be repaired, this can be sent as an input.

-

-

X

-

WwRepair

0:Boolean

Repair processing of a workpiece.

(True = yes, False = no)

This flag can be set to True as an output parameter if the quality of the workpiece after processing by the machine is not acceptable.

-

-

-

X

WwEdgeIds

0:String[]

Ids of the edge material to be applied.

-

-

X

-

WwDischarge

0:Boolean

Eject workpiece.

(True = yes, False = no / back transport)

-

-

X

-

WwDischargeType

0:UInt32

Type of discharge

0 – not relevant

1 – manually

2 – automatically

-

-

X

-

WwLoadingType

0:UInt32

Type of loading

0 – not relevant

1 – manually

2 – automatically

-

-

X

-

WwBarcode

0:String

Barcode. The content depends on the customer.

It can be provided as an input parameter by the MES or as an output parameter by scanning it by a barcode reader.

-

-

X

X

WwWorkpieceMaterialIds

0:String[]

E.g. type of wood:

Possible example content:

- “Spruce”

- “Beech”

- “HardWood”

- etc

-

-

X

-

WwSurfaceIds

0:String[]

Ids of the surface material to be applied

-

-

X

-

WwProcessing

0:Boolean

True: The production step will be processed.

False: No processing (e.g. in a Throughfeed machine, only transport)

-

-

X

-

WwFlipAngle

0:UInt32

Degrees to flip. 180° means flipping on the other side.

Product-

specificPreferred: ° (DD)

-

X

-

WwTurnAngle

0:UInt32

Degrees to turn, e.g. 90°

Product-

specificPreferred: ° (DD)

-

X

-

WwXMirror

0:Boolean

False: No mirror

True: Mirrored in X

-

-

X

-

WwYMirror

0:Boolean

False: No mirror

True: Mirrored in Y

-

-

X

-

WwPlannedProductionPlaceId

0:String

Planned location where production has to take place, e.g. the number of the table on a CNC machine.

-

-

X

-

WwActualProductionPlaceId

0:String

Actual location where the production took place, e.g. the number of the table on a CNC machine.

-

-

-

X

WwProductionMode

0:String

Production mode to use.

On the machine side different production modes can be defined by the user,

(e.g. on a CNC machine “Mirrored” and “Place2” is equal to WwProductionMode 1)

The MES can send this WwProductionMode with a job.

-

-

X

-

WwPlannedAmountOfInputWorkpieces

0:UInt32

E.g. amount of panels for sawing machines

Product-

specificPreferred: piece (H87)

-

X

-