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