This clause defines ObjectsTypes for managing production jobs on the machine and for information on their status including process parameters (temperatures, pressures…).

This ObjectType represents the jobs (order to produce parts/process material) stored on the machine. It is formally defined in Table 72.

image020.png

Figure 14 – JobsType Overview

Table 72 – JobsType Definition

Attribute

Value

BrowseName

JobsType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of 0:BaseObjectType defined in OPC UA Part 5

0:HasComponent

Object

ActiveJob

JobInformationType

M

0:HasComponent

Object

JobInPreparation

JobInformationType

O

0:HasComponent

Method

SendJobList

O

0:HasComponent

Method

SendCyclicJobList

O

0:HasComponent

Object

ActiveJobValues

ActiveJobValuesType

M

GeneratesEvent

ObjectType

RequestJobListEventType

Defined in 18.3.2

GeneratesEvent

ObjectType

RequestCyclicJobListEventType

Defined in 18.3.4

ActiveJob represents the job that is currently active on the machine.

JobInPreparation represents a job that is in preparation. Background: Some manufacturers use two "layers" for job information in their control systems: one active information layer and one for preparation. So, during a running job, inputs for the following job are possible. By pressing a button on the control panel, data from the prepared job information can be set active.

ActiveJobValues represents the status of the current job. See 18.4.

SendJobList sends a list of jobs available on the client to the server. Can be triggered by the machine by the event RequestJobList (see 18.3.2). For cyclic processes SendCyclicJobList and RequestCyclicJobListEventType are used.

NOTE: A method SendContinuousJobList for continuous processes will be added in the future.

This ObjectType represents the data of the job. It is formally defined in Table 73.

Table 73 – JobInformationType Definition

Attribute

Value

BrowseName

JobInformationType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of 0:BaseObjectType defined in OPC UA Part 5

0:HasProperty

Variable

JobName

0:String

0:PropertyType

M, RO

0:HasProperty

Variable

JobDescription

0:String

0:PropertyType

M, RO

0:HasProperty

Variable

CustomerName

0:String

0:PropertyType

M, RO

0:HasProperty

Variable

ProductionDatasetName

0:String

0:PropertyType

M, RO

0:HasProperty

Variable

ProductionDatasetDescription

0:String

0:PropertyType

M, RO

0:HasProperty

Variable

Material

0:String[]

0:PropertyType

M, RO

0:HasProperty

Variable

ProductName

0:String[]

0:PropertyType

M, RO

0:HasProperty

Variable

ProductDescription

0:String[]

0:PropertyType

M, RO

0:HasProperty

Variable

ContinueAtJobEnd

0:Boolean

0:PropertyType

M, RW

0:HasSubtype

ObjectType

CyclicJobInformationType

The JobInformationType is abstract. A derived concrete type, which includes a method for writing the Properties, must be used (e.g. CyclicJobInformationType).

NOTE: A second subtype ContinuousJobInformationType will be added in the future.

The JobName Property represents the name of the job.

The JobDescription Property represents the description of the job.

The CustomerName Property represents the name of the customer for that the job is produced.

The ProductionDatasetName Property represents the name of the production dataset which is needed for the job.

The ProductionDatasetDescription Property includes an additional description of the production dataset which is needed for the job.

The Material Property is an Array of material names used for the job.

The ProductName Property is an Array of product names produced by the job. (More than one possible with multiple cavities)

The ProductDescription Property is an Array of descriptions of the products produced by the job.

The ContinueAtJobEnd Property indicates if the machine continues the production even if the nominal output has been reached.

Additional information on a job for cyclic production (e.g. injection moulding) are stored in the CyclicJobInformationType. It extends the JobInformationType. It is formally defined in Table 74.

Table 74 – CyclicJobInformationType Definition

Attribute

Value

BrowseName

CyclicJobInformationType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of JobInformationType

0:HasProperty

Variable

NominalParts

0:UInt64

0:PropertyType

M, RW

0:HasProperty

Variable

NominalBoxParts

0:UInt64

0:PropertyType

O, RW

0:HasProperty

Variable

ExpectedCycleTime

0:Duration

0:PropertyType

O, RW

0:HasProperty

Variable

MouldId

0:String

0:PropertyType

O, RO

0:HasProperty

Variable

NumCavities

0:UInt32

0:PropertyType

O, RO

0:HasComponent

Method

SetCyclicJobData

M

GeneratesEvent

ObjectType

RequestCyclicJobWriteEventType

Defined in 18.2.11.7

The NominalParts Property indicates the total number (sum of all cavities) of parts that shall be produced by the job.

In some productions, the parts are placed in several boxes. The NominalBoxParts Property indicates the number of parts that shall be put into one box.

NOTE: A "box" can be any kind of container like stacking box, lattice box, bag… .

The ExpectedCycleTime Property indicates which cycle time is calculated for the job.

The MouldId Property represents the Id of the Mould used for the job.

NOTE: Although a machine can be equipped with several moulds, one job is always related to a single mould. This is why MouldId is not an array here.

The NumCavities Property indicates the number of cavities in the Mould used for production.

With this Method the MES sets the job data for cyclic jobs.

Input arguments are all Properties of the CyclicJobInformationType.

Signature

SetCyclicJobData (

[in]0:StringJobName

[in]0:StringJobDescription

[in]0:StringCustomerName

[in]0:StringProductionDatasetName

[in]0:StringProductionDatasetDescription

[in]0:String[]Material

[in]0:String[]ProductName

[in]0:String[]ProductDescription

[in]0:BooleanContinueAtJobEnd

[in]0:UInt64NominalParts

[in]0:UInt64NominalBoxParts

[in]0:DurationExpectedCycleTime

[in]0:StringMouldId

[in]0:UInt32NumCavities);

When optional Properties in CyclicJobInformationType (e.g. NominalBoxParts) are not used, the arguments have to be empty or equal to zero.

Table 75 – SetCyclicJobData Method AddressSpace Definition

Attribute

Value

BrowseName

SetCyclicJobData

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

0:HasProperty

Variable

InputArguments

Argument[]

0:PropertyType

Mandatory

The Event RequestCyclicJobWriteEventType is used to initiate a call of the SetCyclicJobData Method by the client.

Table 76 – RequestCyclicJobWriteEventType Definition

Attribute

Value

BrowseName

RequestCyclicJobWriteEventType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of 0:BaseEventType defined in OPC UA Part 5

0:HasProperty

Variable

JobName

0:String

0:PropertyType

M

The jobs for a machine can be planned in an MES. This clause defines methods and events to request and send a list of planned jobs.

This Method is used to send a list of jobs available on the client to the server. The server shall support to receive at least 10 jobs.

Signature

SendJobList (

[in]JobListElementType[]JobList);

Table 77 – SendJobList Method Arguments

Argument

Description

JobList

Array of JobInformationType describing the available jobs in the client.

Table 78 – SendJobList Method AddressSpace Definition

Attribute

Value

BrowseName

SendJobList

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

0:HasProperty

Variable

InputArguments

Argument[]

0:PropertyType

Mandatory

It is possible to call the Method without an InputArgument (length of the array JobList is zero) as an answer to the Event RequestJobList (see below), if no planned job is available.

The JobListElementType is defined in Table 79

Table 79 – JobListElementType Definition

Name

Type

Description

JobListElementType

structure

Subtype of 0:Structure as defined in OPC UA 10000-3

JobName

0:String

As defined in JobInformationType

JobDescription

0:String

JobClassification

0:String

Classification of the job

CustomerName

0:String

As defined in JobInformationType

ProductionDatasetName

0:String

ProductionDatasetDescription

0:String

Material

0:String[]

ProductName

0:String[]

ProductDescription

0:String[]

JobPriority

0:String

Priority of the job

PlannedStart

0:DateTime

Planned start of the job

PlannedProductionTime

0:Duration

Planned production time of the job

LatestEnd

0:DateTime

Latest end of the job

The variables JobClassification, JobPriority, PlannedStart, PlannedProductionTime and LatestEnd are additional information only for the operator to be shown on the machine control. This may help the operator to decide which jobs to download/activate. PlannedStart and LatestEnd shall be given in UTC time.

The JobClassification can e.g. be used to present a maintenance job with planned time. The possible values are user dependent and not standardized by this specification.

The instance of JobsType can fire an Event of RequestJobListEventType (without parameters) to initiate a call of SendJobList by the client. This can e.g. be triggered by an operator who wants to see the planned jobs for his machine.

Table 80 – RequestJobListEventType Definition

Attribute

Value

BrowseName

RequestJobListEventType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of 0:BaseEventType defined in OPC UA Part 5

This Method is used instead of SendJobList in the case of cyclic production and includes the input parameters ExpectedCycleTime, NominalParts and NominalBoxParts.

Signature

SendCyclicJobList (

[in]CyclicJobListElementType[]JobList);

Table 81 – SendCyclicJobList Method Arguments

Argument

Description

JobList

Array of CyclicJobInformationType describing the available cyclic jobs in the client.

Table 82 – SendCyclicJobList Method AddressSpace Definition

Attribute

Value

BrowseName

SendCyclicJobList

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

0:HasProperty

Variable

InputArguments

Argument[]

0:PropertyType

Mandatory

It is possible to call the Method without an InputArgument (length of the array JobList is zero) as an answer to the Event RequestCyclicJobList (see below), if no planned job is available.

The CyclicJobListElementType is a subtype of JobListElementType and adds the elements defined in Table 83.

Table 83 – CyclicJobListElementType Definition (subtype of JobListElementType)

NominalBoxParts, MouldId and NumCavities may be empty or zero if not used.

The instance of JobsType can fire an Event of RequestCyclicJobListEventType (without parameters) to initiate a call of SendCyclicJobList by the client. This can e.g. be triggered by an operator who wants to see the planned jobs for his machine.

Table 84 – RequestCyclicJobListEventType Definition

Name

Type

Description

CyclicJobListElementType

structure

Subtype of JobListElementType

NominalParts

0:UInt64

As defined in CyclicJobInformationType

NominalBoxParts

0:UInt64

ExpectedCycleTime

0:Duration

MouldId

0:String

NumCavities

0:UInt32

Attribute

Value

BrowseName

RequestCyclicJobListEventType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of 0:BaseEventType defined in OPC UA Part 5

This ObjectType represents values of the active job. It is formally defined in Table 85.

Table 85 – ActiveJobValuesType Definition

Attribute

Value

BrowseName

ActiveJobValuesType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of 0:BaseObject Type defined in OPC UA Part 5

0:HasProperty

Variable

JobStatus

JobStatusEnumeration

0:PropertyType

M, RO

0:HasComponent

Method

StartJob

M

0:HasComponent

Method

InterruptJob

M

0:HasComponent

Method

FinishJob

M

0:HasProperty

Variable

CurrentLotName

0:String

0:PropertyType

M, RW

0:HasProperty

Variable

BoxId

0:String

0:PropertyType

O, RW

0:HasSubtype

ObjectType

ActiveCyclicJobValuesType

The JobStatus Property represents the current status of the job.

Table 86 – JobStatusEnumeration Definition

Name

Value

Description

OTHER

0

This state is used if none of the other states below apply. Set by operator.

TRANSFERRED_ASSIGNED

1

The job has been transferred to the machine and assigned as current job.

SET_UP_ACTIVE

2

The operator prepares the machine for the job.

SET_UP_INTERRUPTED

3

The operator has interrupted but not finished the preparation of the machine for the job.

SET_UP_FINISHED

4

The operator has finished the preparation of the machine for the job.

START_UP_ACTIVE

5

The operator is setting the machine in the start-up phase.

JOB_IN_PRODUCTION

6

The machine is producing parts/products for the job.

JOB_INTERRUPTED

7

The job is interrupted. The nominal output is not reached.

JOB_FINISHED

8

Nominal output reached.

TEAR_DOWN_ACTIVE

9

The operator tears the machine down.

TEAR_DOWN_INTERRUPTED

10

Tear-down is interrupted but not finished.

TEAR_DOWN_FINISHED

11

Tear-down is finished.

The JobStatus is set by the machine/operator. This can be triggered by the methods StartJob, InterruptJob and FinishJob. The selection of the value JOB_IN_PRODUCTION_6 can be prevented by the client by setting ProductionReleased to FALSE (see 14.7.2).

With this Method the client (e.g. MES) request the machine to change the JobStatus to JOB_IN_PRODUCTION_6. The following produced parts/products are counted for the job.

NOTE: The method does not change the MachineMode.

Signature

StartJob ();

The method has no Input- or OutputArguments.

Table 87 – StartJob Method AddressSpace Definition

Attribute

Value

BrowseName

StartJob

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

With this Method the client (e.g. MES) requests the machine to change the JobStatus to JOB_INTERRUPTED_7. The following produced parts/products are not counted for the job.

NOTE: It is not fixed by this specification if the machine stops or continuous running.

Signature

InterruptJob ();

The method has no Input- or OutputArguments.

Table 88 – InterruptJob Method AddressSpace Definition

Attribute

Value

BrowseName

InterruptJob

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

With this Method the client (e.g. MES) requests the machine to change the JobStatus to JOB_FINISHED_8. If ContinueAtJobEnd (see 18.2.10) is FALSE, the machine stops. Otherwise a message to the operator shall be shown on the machine.

Signature

FinishJob ();

The method has no Input- or OutputArguments.

Table 89 – FinishJob Method AddressSpace Definition

Attribute

Value

BrowseName

FinishJob

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

The CurrentLotName Property represents the current production lot. Although the modelling rule is mandatory, the 0:String can be empty.

The BoxId Property represents the Id of the box in which the current production is put in.

NOTE: A "box" can be any kind of container like stacking box, lattice box, bag… .

Additional information on the running job for cyclic production (e.g. injection moulding) is stored in the ActiveCyclicJobValuesType. It extends the ActiveJobValuesType. It is formally defined in Table 90.

Table 90 – ActiveCyclicJobValuesType Definition

Attribute

Value

BrowseName

ActiveCyclicJobValuesType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of ActiveJobValuesType

0:HasComponent

Variable

JobCycleCounter

0:UInt64

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

BoxCycleCounter

0:UInt64

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

MachineCycleCounter

0:UInt64

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

LastCycleTime

0:Duration

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

AverageCycleTime

0:Duration

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

JobPartsCounter

0:UInt64

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

JobGoodPartsCounter

0:UInt64

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

JobBadPartsCounter

0:UInt64

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

JobTestSamplesCounter

0:UInt64

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

BoxPartsCounter

0:UInt64

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

BoxGoodPartsCounter

0:UInt64

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

BoxBadPartsCounter

0:UInt64

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

BoxTestSamplesCounter

0:UInt64

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

LastPartId

0:String[]

0:BaseDataVariableType

O, RO

0:HasComponent

Method

StopAtCycleEnd

M

0:HasComponent

Method

ResetJobCounters

M

0:HasComponent

Method

ResetBoxCounters

O

0:HasComponent

Method

ResetAverageCycleTime

O

The JobCycleCounter Variable represents the number of finished cycles in the job.

The BoxCycleCounter Variable represents the number of finished cycles for the current box.

The MachineCycleCounter Variable represents the number of finished cycles in the machine life time.

The LastCycleTime Variable represents the cycle time (duration in milliseconds) of the recently finished cycle.

The AverageCycleTime Variable represents the average cycle time. The calculation starts from the last calling of ResetActiveJobAverageCycleTime.

These Variables represent the total number of produced parts and the numbers of good, bad and test sample parts in the current job.

These Variables represent the total number of produced parts and the numbers of good, bad and test sample parts in the current box.

The LastPartId Variable is an array and represents the Ids of the parts produced in the recently finished cycle.

With this Method, the MES directs the machine to stop at the end of the current cycle.

Signature

StopAtCycleEnd ();

The method has no Input- or OutputArguments.

Table 91 – StopAtCycleEndMethod AddressSpace Definition

Attribute

Value

BrowseName

StopAtCycleEnd

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Method for setting the cycle and parts counters for the job to 0.

Signature

ResetJobCounters ();

The method has no Input- or OutputArguments.

Table 92 – ResetJobCounters Method AddressSpace Definition

Attribute

Value

BrowseName

ResetJobCounters

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Method for setting the cycle and parts counters for the current box to 0.

Signature

ResetBoxCounters ();

The method has no Input- or OutputArguments.

Table 93 – ResetBoxCounters Method AddressSpace Definition

Attribute

Value

BrowseName

ResetBoxCounters

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

This Method initiates a new calculation of the average cycle time for the job.

Signature

ResetAverageCycleTime ();

The method has no Input- or OutputArguments.

Table 94 – ResetAverageCycleTime Method AddressSpace Definition

Attribute

Value

BrowseName

ResetAverageCycleTime

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule