The ProductionType provides a job management structure to manage the machine capacity utilization and is formally defined in Table 16.

Table 16 – ProductionType Definition

Attribute

Value

BrowseName

ProductionType

IsAbstract

false

References

Node Class

BrowseName

DataType

TypeDefinition

Other

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

0:HasComponent

Method

ChangePositionInList

Optional

0:HasComponent

Method

DeleteJob

Optional

0:HasComponent

Method

InsertJob

Optional

0:HasComponent

Object

ProductionPlan

ProductionPlanType

Mandatory

0:HasProperty

Variable

JobListIsRecommendation

0:Boolean

0:PropertyType

Mandatory

0:HasProperty

Variable

MaxCountOfJobs

0:UInt32

0:PropertyType

Optional

0:HasProperty

Variable

CurrentCountOfJobs

0:UInt32

0:PropertyType

Optional

0:HasProperty

Variable

SupportedMaterialTypes

0:NodeId[]

0:PropertyType

Optional

ProductionPlan defines a folder for the placeholders of jobs and keeps all information regarding the jobs. The job list contains all jobs that should be processed with this machine. The jobs are sorted in the ProductionPlan, but that sorting can be changed. If a job is ended, the machine decides which Job will be processed next.

JobListIsRecommendation is a flag which indicates that the sequence in the ProductionPlan is a recommendation. That means that the machine and/or the operator can modify the sequence. If the first job in the sequence is interrupted or idled/queued another job can be processed. The sequence in the JobList is fixed if the flag is false and if the first job cannot be processed, an interaction is necessary.

MaxCountOfJobs contains the maximum amount of jobs, which the server is able to handle within its memory capacity. CurrentCountOfJobs contains the current number of jobs, which are stored on the server at the moment.

SupportedMaterialTypes contains the NodeId of all MaterialTypes (subtypes of the BaseMaterialType) that can be used in this machine.

This method requests a change of the PositionInList to modify the processing order. The new position is specified by the NodeId of another job. If the flag ´before´ is true, the new position is before the given job. If the flag ´before´ is false, the new position will be after the given job. For example, the list contains 3 jobs (job_a, job_b, job_c), if the method is called for job_c with the NodeId of job_a and before is true, the new list is job_c, job_a, job_b. If the same method is called with the flag false, the new list is job_a, job_c, job_b.

The signature of this Method is specified below in Table 17 and Table 18 which specify the Arguments and AddressSpace representation, respectively.

Signature

ChangePositionInList (

[in]LimitedString64Target,

[in]LimitedString64Source,

[in]0:BooleanBefore);

Table 17 – ChangePositionInList Method Arguments

Argument

Description

Target

NodeID of the target job

Source

NodeID of the source job

Before

Boolean: If it is true the actual Job is moved before the target in list, if it is false the actual Job if moved behind.

Method Result Codes (defined in Call Service)

Result Code

Description

Bad_UserAccessDenied

See OPC 10000-4 for a general description.

Table 18 – ChangePositionInList Method AddressSpace definition

Attribute

Value

BrowseName

ChangePositionInList

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

0:HasProperty

Variable

0:InputArguments

0:Argument[]

0:PropertyType

0:Mandatory

Method to delete a specific job. The HLS sends a deletion request to the machine. As a result, the job is removed from the job list. This is only possible, if the job has been suspended before. Suspend acts as a parking place.

The signature of this Method is specified below in Table 19 and Table 20 which specify the Arguments and AddressSpace representation, respectively.

Signature

DeleteJob (

[in] LimitedString64Identifier

);

Table 19 – DeleteJob Method Arguments

Argument

Description

Identifier

Unique Identifier for the job

Method Result Codes (defined in Call Service)

Result Code

Description

Bad_UserAccessDenied

See OPC 10000-4 for a general description.

Table 20 – DeleteJob Method AddressSpace definition

Attribute

Value

BrowseName

DeleteJob

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

0:HasProperty

Variable

0:InputArguments

0:Argument[]

0:PropertyType

0:Mandatory

Method to create a new job. HLS creates and sends a job into the job list on the machine. The JobState is suspended (= default job state).

The signature of this Method is specified below in Table 21 and Table 22 which specify the Arguments and AddressSpace representation, respectively.

The AddressSpace definition can be omitted if there are no Properties other than InputArguments and OutputArguments.

Signature

InsertJob (

[in]LimitedString64Identifier,

[in]LimitedString64Name,

[in]0:NodeId[]InputMaterial,

[in]0:NodeId[]OutputMaterial

[out]0:NodeIdJobNodeId

);

Table 21 – InsertJob Method Arguments

Argument

Description

Identifier

Unique ID for the job

Name

Human readable name of the job

InputMaterial

Optional: Describes the materials to be processed within the job. Can include MaterialBaseType, RawGlassType, (Surface)GlassType

OutputMaterial

Optional: Describes the material-result of processing from the materials side.

JobNodeId

Optional: NodeId of the new created Job object (subtype of ProductionJobType)

Method Result Codes (defined in Call Service)

Result Code

Description

Bad_UserAccessDenied

See OPC 10000-4 for a general description.

Table 22 – InsertJob Method AddressSpace definition

Attribute

Value

BrowseName

InsertJob

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

0:HasProperty

Variable

0:InputArguments

0:Argument[]

0:PropertyType

0:Mandatory

0:HasProperty

Variable

0:OutputArguments

0:Argument[]

0:PropertyType

0:Mandatory

The ProductionPlanType provides the list of ProductionJobTypes and is formally defined in Table 23.

Table 23 – ProductionPlanType Definition

Attribute

Value

BrowseName

ProductionPlanType

IsAbstract

false

References

Node Class

BrowseName

DataType

TypeDefinition

Other

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

HasOrderedComponent

Object

<OrderedObject>

ProductionJobType

OptionalPlaceholder

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

The InstructionType provides all the information required by the glass machine to perform the job. In case of an assembly job, it contains all necessary steps for the mounting of the unit. For a glass cutting process the cutting plan is provided. The InstructionType is formally defined in Table 24.

Table 24 – InstructionType Definition

Attribute

Value

BrowseName

InstructionType

IsAbstract

false

References

Node Class

BrowseName

DataType

TypeDefinition

Other

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

0:HasComponent

Object

Plan

0:FileType

Mandatory

0:HasProperty

Variable

PlanFileFormat

FileFormatType

0:PropertyType

Mandatory

Plan contains the instruction for the job. In case of a programmable machine, it contains the program code.

PlanFileFormat defines the file format of the plan. This is used to ensure compatibility between the plan and the machine.

The ProductionJobType provides all information for a single job and is formally defined in Table 25.

Table 25 – ProductionJobType Definition

Attribute

Value

BrowseName

ProductionJobType

IsAbstract

false

References

Node Class

BrowseName

DataType

TypeDefinition

Other

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

0:HasComponent

Object

InputMaterials

FolderType

Mandatory

0:HasComponent

Object

OutputMaterials

FolderType

Mandatory

0:HasComponent

Variable

EndTime

0:DateTime

0:BaseDataVariableType

Mandatory

0:HasComponent

Object

Instruction

InstructionType

Mandatory

0:HasProperty

Variable

Identifier

LimitedString64

0:PropertyType

Mandatory

0:HasComponent

Object

State

ProductionStateMachineType

Mandatory

0:HasComponent

Object

Lock

2:LockingServicesType

Optional

0:HasProperty

Variable

Name

LimitedString64

0:PropertyType

Optional

0:HasComponent

Method

ReleaseJob

Optional

0:HasProperty

Variable

JobGroup

LimitedString64

0:PropertyType

Optional

0:HasComponent

Variable

StartTime

0:BaseDataVariableType

Mandatory

0:HasComponent

Method

SuspendJob

Optional

0:HasComponent

Method

AbortJob

Optional

0:HasComponent

Method

QueueJob

Optional

0:HasInterface

ObjectType

0:IOrderedObjectType

Applied from 0:IOrderedObjectType

0:HasProperty

Variable

NumberInList

0:UInt16

0:PropertyType

Mandatory

InputMaterials describes a folder that contains objects of subtypes of the BaseMaterialType. These represents the materials to be processed within the job. The folder contains a MandatoryPlaceholder of the BaseMaterialType.

OutputMaterial describes a folder that contains objects of subtypes of the BaseMaterialType. These represents the materials after processing from the materials side. The folder contains a MandatoryPlaceholder of the BaseMaterialType.

EndTime defines the timestamp when processing was finished and the machine switched to the ended or aborted state.

Instruction contains all the information required by the glass machine to perform the job. In case of an assembly job, it contains all necessary steps for the mounting of the unit. For a glass cutting process, the cutting plan is provided.

Identifier defines a unique identifier for the job.

State describes the current processing state in reference to the ProductionStateMachine.

Lock contains the methods and properties to get the information about the locking status of the job and to modify the lock. For more information refer to Locking Service in OPC 10000-100.

Name defines a human readable name of the job.

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.

StartTime defines the timestamp of starting processing when the machine switched from released to the running state.

JobGroup is an attribute to combine multiple jobs in a configurable order.

The components of the ProductionJobType have additional subcomponents which are defined in Table 26

Table 26 ProductionJobType Type Additional Subcomponents

BrowsePath

References

NodeClass

BrowseName

DataType

TypeDefinition

Others

InputMaterials

0:HasComponent

Object

<InputMaterial>

BaseMaterialType

MandatoryPlaceholder

OutputMaterials

0:HasComponent

Object

<OutputMaterial>

BaseMaterialType

MandatoryPlaceholder

 

Method to abort a job. Let the job enter the state Abort from the JobStateMachine. If the job is in running the stop will be stopped. The stop behaviour depends on the machine and the current conditions of the machine.

The signature of this Method is specified below in Table 27 and Table 28 which specify the Arguments and AddressSpace representation, respectively.

Signature

AbortJob (

);

Table 27 – AbortJob Method Arguments

Argument

Description

Method Result Codes (defined in Call Service)

Result Code

Description

Bad_UserAccessDenied

See OPC 10000-4 for a general description.

Table 28 – AbortJob Method AddressSpace definition

Attribute

Value

BrowseName

ReleaseJob

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Method to release a job. Let the job enter the state released from the JobStateMachine. A released job can be processed by the machine. This Release Method can be called only if the job is locked from this client (see Lock Service). This method will unlock the job within the releasing process.

The signature of this Method is specified below in Table 29 and Table 30 which specify the Arguments and AddressSpace representation, respectively.

Signature

ReleaseJob (

);

Table 29 – ReleaseJob Method Arguments

Argument

Description

Method Result Codes (defined in Call Service)

Result Code

Description

Bad_UserAccessDenied

See OPC 10000-4 for a general description.

Table 30 – ReleaseJob Method AddressSpace definition

Attribute

Value

BrowseName

ReleaseJob

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

A method to suspend a job. Let the job enter the state suspended from the JobStateMachine. A suspended job will not be processed by the machine.

The signature of this Method is specified below in Table 31 and Table 32 which specify the Arguments and AddressSpace representation, respectively.

Signature

SuspendJob (

);

Table 31 – SuspendJob Method Arguments

Argument

Description

Method Result Codes (defined in Call Service)

Result Code

Description

Bad_UserAccessDenied

See OPC 10000-4 for a general description.

Table 32 – SuspendJob Method AddressSpace definition

Attribute

Value

BrowseName

SuspendJob

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Method to queue a job which has been inserted via the InsertJob Method and all required data has been passed to the OPC UA server for production. Let the job enter the state Queued from the JobStateMachine. A queued job is ready to receive the final production release.

The signature of this Method is specified below in Table 31 and Table 32 which specify the Arguments and AddressSpace representation, respectively.

Signature

QueueJob(

);

Table 33 – QueueJob Method Arguments

Argument

Description

Method Result Codes (defined in Call Service)

Result Code

Description

Bad_UserAccessDenied

See OPC 10000-4 for a general description.

Table 34 – QueueJob Method AddressSpace definition

Attribute

Value

BrowseName

QueueJob

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

The ProductionStateMachineType describes a fundamental statemachine for processing jobs from glass machines and is formally defined in Table 38. An implementation of this statemachine is mandatory. Furthermore, it can be extended by further substatemachines (e.g. for a detailed description of the Running state). The name of each transition consists of the names of the states it connects: [FromState]To[ToState]. Their References are specified in Table 37.

On the first level, the state machine consists of the states Initialized (there is a sub-state-machine with Idle, Queued, Released), Running, Interrupted, Aborted and Ended. The state transitions can be initiated by HLS or by the machine itself. Figure 15 shows the state machine and the state transitions graphically.

Table 35 – ProductionStateMachineType Definition

Attribute

Value

BrowseName

ProductionStateMachineType

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

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

0:HasComponent

Object

Aborted

0:StateType

0:HasComponent

Object

AbortedToInitializing

0:TransitionType

0:HasComponent

Variable

0:CurrentState

0:LocalizedText

0:FiniteStateVariableType

0:Mandatory

0:HasComponent

Object

Ended

0:StateType

0:HasComponent

Object

EndedToInitializing

0:TransitionType

0:HasComponent

Object

Initializing

0:InitialStateType

0:HasComponent

Object

InitializingToAborted

0:TransitionType

0:HasComponent

Object

InitializingToRunning

0:TransitionType

0:HasComponent

Object

Interrupted

0:StateType

0:HasComponent

Object

InterruptedToAborted

0:TransitionType

0:HasComponent

Object

InterruptedToRunning

0:TransitionType

0:HasComponent

Object

Running

0:StateType

0:HasComponent

Object

RunningToAborted

0:TransitionType

0:HasComponent

Object

RunningToEnded

0:TransitionType

0:HasComponent

Object

RunningToInterrupted

0:TransitionType

0:HasComponent

Object

RunningToRunning

0:TransitionType

0:HasComponent

Object

InitializingState

InitializingSubStateMachineType

0:Mandatory

image021.png

Figure 15 – JobStateMachine

The states shall have the numbers indicated in Table 36; the transitions shall have the numbers indicated in Table 36.

Initializing is the state in which the element in production is being prepared. During this state, the machine and the job 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. This state contains a sub-statemachine of the Type InitializingSubStateMachineType. Depending on the implementation, a glass machine starts to process the jobs which have been released for production either by itself or by an operator. The machine sets the status of the next released job in the queue to Running and processes it.

Running indicates that the operation of a job in production has been started or re-started and is currently running. There can be sub-statemachines in future versions of this standard or vendor-specific sub-statemachines.

Interrupted indicates that the execution of a job 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. From Interrupted you can switch back to the Running state by Continue or, if the processing is to be aborted with Abort to the State Aborted (both transitions are machine internal). Furthermore, an interrupted job can be brought back to the Queued state with the SuspendMethod called by an HLS.

The state Aborted indicates, that the operation of a job in production has been irreversibly stopped before finishing. In addition, an already scheduled job can be moved directly to the Aborted state with the Abort-Method from HLS if the job is not to be produced.

Ended is reached when the operation of a job in production has been finished. Jobs can only be removed in the states Ended and Initializing (only in sub-states Idle and Queued).

Table 36 – ProductionStateMachineType Attribute values for child Nodes

Source Path

Value Attribute

Description Attribute

State Numbers

Initializing

0:StateNumber

0

Running

0:StateNumber

1

Ended

0:StateNumber

2

Interrupted

0:StateNumber

3

Aborted

0:StateNumber

4

Transition Numbers

InitializingToRunning

0:TransitionNumber

0

RunningToEnded

0:TransitionNumber

1

EndedToInitializing

0:TransitionNumber

2

RunningToRunning

0:TransitionNumber

3

RunningToInterrupted

0:TransitionNumber

4

InterruptedToRunning

0:TransitionNumber

5

RunningToAborted

0:TransitionNumber

6

InterruptedToAborted

0:TransitionNumber

7

AbortedToInitializing

0:TransitionNumber

8

InitializingToAborted

0:TransitionNumber

9

Fields may be empty which means this Attribute is not defined.

InitializingToRunning is triggered when the operation of a job in production starts.

RunningToEnded is triggered when the operation of a job in production finishes.

EndedToInitializing is triggered when re-initialization of the operation of a job in production starts.

RunningToRunning is triggered when another consecutive run of the operation of a job in production in direct succession starts.

RunningToInterrupted is triggered when the operation of a job in production is interrupted.

InterruptedToRunning is triggered when an interruption ends and the operation of a job in production continues running.

RunningToAborted is triggered when the operation of a job in production is aborted while in the Running state.

InterruptedToAborted is triggered when the operation of a job in production is aborted while in the Interrupted state. AbortedToInitializing is triggered if the operation of a job in production is being re-initialized after an abort.

InitializingToAborted is triggered when the operation of a job in production is aborted while in the Initializing state.

Table 37 – ProductionStateMachineType Additional References

Source Path

ReferenceType

Is Forward

Target Path

AbortedToInitializing

0:FromState

True

Aborted

0:ToState

True

Initializing

EndedToInitializing

0:FromState

True

Ended

0:ToState

True

Initializing

InitializingToAborted

0:FromState

True

Initializing

0:ToState

True

Aborted

InitializingToRunning

0:FromState

True

Initializing

0:ToState

True

Running

InterruptedToAborted

0:FromState

True

Interrupted

0:ToState

True

Aborted

InterruptedToRunning

0:FromState

True

Interrupted

0:ToState

True

Running

RunningToAborted

0:FromState

True

Running

0:ToState

True

Aborted

RunningToEnded

0:FromState

True

Running

0:ToState

True

Ended

RunningToInterrupted

0:FromState

True

Running

0:ToState

True

Interrupted

RunningToRunning

0:FromState

True

Running

0:ToState

True

Running

The InitializingSubStateMachineType provides more finely subdivided states (Idle, Queued and Released) to the Initialized state. Idle, are jobs which have been created but not yet scheduled. If the job is scheduled by an HLS in the queue of the glass machine, the state changes to Queued. To reach the Released state, which symbolizes the production release, an HLS must confirm the release by calling the ReleasedMethod. This SubStateMachine is formally defined in Table 38. The name of each transition consists of the names of the states it connects: [FromState]To[ToState]. Their References are specified in Table 40.

.

Table 38 – InitializingSubStateMachineType Definition

Attribute

Value

BrowseName

InitializingSubStateMachineType

IsAbstract

false

References

Node Class

BrowseName

DataType

TypeDefinition

Other

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

0:HasComponent

Object

Idle

0:InitialStateType

None

0:HasComponent

Object

Queued

0:StateType

None

0:HasComponent

Object

Released

0:StateType

None

0:HasComponent

Object

IdleToQueued

0:TransitionType

0:HasComponent

Object

QueuedToReleased

0:TransitionType

0:HasComponent

Object

QueuedToIdle

0:TransitionType

0:HasComponent

Object

ReleasedToQueued

0:TransitionType

The states shall have the numbers indicated in Table 39; the transitions shall have the numbers indicated in Table 39.

Idle, are jobs that have been created but not yet scheduled.

If the job is scheduled by an HLS in the queue of the glass machine, the state changes to Queued. A job can only be modified in the states Idle and Queued.

To reach the ReleasedState, which symbolizes the production release, an HLS must confirm the release by calling the ReleasedMethod.

Table 39 – InitializingSubStateMachineType Attribute values for child Nodes

Source Path

Value Attribute

Description Attribute

State Numbers

Idle

0:StateNumber

0

Queued

0:StateNumber

1

Released

0:StateNumber

2

Transition Numbers

IdleToQueued

0:TransitionNumber

0

QueuedToReleased

0:TransitionNumber

1

QueuedToIdle

0:TransitionNumber

2

ReleasedToQueued

0:TransitionNumber

3

Fields may be empty which means this Attribute is not defined.

IdleToQueued is triggered when the job is successfully added to the JobList.

QueuedToReleased is triggered when the job receives the final release for production.

QueuedToIdle is triggered when the job is need to changed and go to Idle.

ReleasedToQueued is triggered when a job is lose his release.

Table 40 – InitializingSubStateMachineType Additional References

Source Path

ReferenceType

Is Forward

Target Path

IdleToQueued

0:FromState

True

Idle

0:ToState

True

Queued

QueuedToReleased

0:FromState

True

Queued

0:ToState

True

Released

QueuedToIdle

0:FromState

True

Queued

0:ToState

True

Idle

ReleasedToQueued

0:FromState

True

Released

0:ToState

True

Queued

The AssemblyJobType provides the information for an assembly job, which assembles multiple input materials to one output material and is formally defined in Table 41.

Table 41 – AssemblyJobType Definition

Attribute

Value

BrowseName

AssemblyJobType

IsAbstract

false

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the ProductionJobType defined in this Companion Specification, i.e. inheriting the InstanceDeclarations of that Node.

0:HasComponent

Object

<InputMaterial>

BaseMaterialType

MandatoryPlaceholder

0:HasComponent

Object

<OutputMaterial>

AssemblyType

MandatoryPlaceholder

<InputMaterial> describes the materials to be processed within the job. Can include MaterialBaseType or GlassType.

<OutputMaterial> describes the result after assembly from the materials side.

The CuttingJobType provides the information for a cutting job, which cuts one sheet of glass into multiple smaller sheets and is formally defined in Table 42.

Table 42 – CuttingJobType Definition

Attribute

Value

BrowseName

CuttingJobType

IsAbstract

false

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the ProductionJobType defined in this Companion Specification, i.e. inheriting the InstanceDeclarations of that Node.

0:HasComponent

Object

<InputMaterial>

BaseMaterialType

MandatoryPlaceholder

0:HasComponent

Object

<OutputMaterial>

GlassType

MandatoryPlaceholder

InputMaterial describes the materials to be processed within the job. Can include MaterialBaseType or GlassType.

OutputMaterial describes the result after cutting from the materials side.

The ProcessingJobType provides the information for a processing job and is formally defined in Table 43.

Table 43 – ProcessingJobType Definition

Attribute

Value

BrowseName

ProcessingJobType

IsAbstract

false

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the ProductionJobType defined in this Companion Specification, i.e. inheriting the InstanceDeclarations of that Node.

0:HasComponent

Object

<InputMaterial>

BaseMaterialType

MandatoryPlaceholder

0:HasComponent

Object

<OutputMaterial>

BaseMaterialType

MandatoryPlaceholder

InputMaterial describes the materials to be processed within the job. Can include MaterialBaseType or GlassType.

OutputMaterial describes the result after processing from the materials side.