The ProgramManagerType provides the FunctionalUnit’s program manager. It is formally defined in Table 56.

Table 56 – ProgramManagerType Definition

Attribute

Value

BrowseName

ProgramManagerType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the TopologyElementType Type defined in OPC 10000-100

0:HasComponent

Object

ActiveProgram

ActiveProgramType

M

0:HasComponent

Object

ProgramTemplateSet

ProgramTemplateSetType

M

0:HasComponent

Object

ResultSet

ResultSetType

M

0:HasComponent

Method

Download

O

0:HasComponent

Method

Remove

O

0:HasComponent

Method

Upload

O

Conformance Units

LADS ProgramManagerType

ActiveProgram represents the ongoing operational state of a FunctionalUnit on a Device, providing user-friendly, sequential insight into the progress and context of the currently running program.

ProgramTemplateSet holds the template set associated with the ProgramManager.

ResultSet contains the results of program runs. It includes information about where and by whom the run was initiated, the template used along with any additional parameters, the samples included, contextual information to link the results with the associated samples, and where the results are provided.

Note: The Properties argument of the ProgramTemplateManager’s Upload and Download Method is intended to provide vendor-specific information and/or to extend the opaque ByteString with transparent metadata. This enables legacy devices to continue using proprietary program formats while also being able to transport transparent metadata for the LADS server itself or possible device drivers.

Note: Results must be created between the start (calling Start/StartProgram method or a manual start) and the end of a Program. So, the result must be complete before the ActiveProgram state machine transitions to the Complete state.

The Download Method is used to transfer a Program Template from the Server to the Client. The signature for this Method is specified below. Table 58 specifies its representation in the AddressSpace.

Signature

Download (

[in]StringTemplateId

[out]KeyValueType[]AdditionalParameters

[out]ByteStringData

)

Table 57 – Download Method Arguments

Argument

Description

TemplateId

Unique identifier of the template to be downloaded.

AdditionalParameters

Additional properties of the program template.

Data

Opaque program template data.

Table 58 – Download Method AddressSpace Definition

Attribute

Value

BrowseName

Download

References

Node Class

BrowseName

DataType

TypeDefinition

ModellingRule

HasProperty

Variable

0:InputArguments

0:Argument[]

0:PropertyType

M

HasProperty

Variable

0:OutputArguments

0:Argument[]

0:PropertyType

M

The Remove Method deletes the Program Template from the Server. Table 60 specifies its representation in the AddressSpace.

Signature

Remove (

[in]StringTemplateId

)

Table 59 – Remove Method Arguments

Argument

Description

TemplateId

Unique identifier of the template to be removed.

Table 60 – Remove Method AddressSpace Definition

Attribute

Value

BrowseName

Remove

References

Node Class

BrowseName

DataType

TypeDefinition

ModellingRule

HasProperty

Variable

0:InputArguments

0:Argument[]

0:PropertyType

M

The Upload Method is used to transfer a Program Template from a Client to the Server. An instance of the ProgramTemplateType (see 7.2.5) needs to be created in the ProgramTemplateSet for each uploaded Program Template.

The properties of a Program Template and the information included are vendor specific. Considering the multiple different formats and ways of defining Program Templates in the laboratory and analytical domain, LADS handles the inner structure of the Program Template itself as a black box.

The properties of the instance of a ProgramTemplateType should be set via an Upload method call based on the Data and AdditionalParameter inputs.

Table 62 specifies its representation in the AddressSpace.

Signature

Upload

(

[in]KeyValueType[]AdditionalParameters

[in]ByteStringData

[out]StringTemplateId

)

Table 61 – Upload Method Arguments

Argument

Description

AdditionalParameters

Additional properties of the program template.

Data

Opaque program template data.

TemplateId

The unique identifier of the template which might be generated by the device/functional-unit itself or might be provided as element of the opaque input data..

Table 62 – Upload Method AddressSpace Definition

Attribute

Value

BrowseName

Upload

References

Node Class

BrowseName

DataType

TypeDefinition

ModellingRule

0:HasProperty

Variable

0:InputArguments

0:Argument[]

0:PropertyType

M

0:HasProperty

Variable

0:OutputArguments

0:Argument[]

0:PropertyType

M

The ResultType provides the results of a specific program run. It is formally defined in Table 63.

Table 63 – ResultType Definition

Attribute

Value

BrowseName

ResultType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of 0:BaseObjectType defined in OPC 10000-5

0:HasProperty

Variable

ApplicationUri

0:String

0:PropertyType

M

0:HasProperty

Variable

Description

0:LocalizedText

0:PropertyType

M

0:HasProperty

Variable

DeviceProgramRunId

0:String

0:PropertyType

O

0:HasProperty

Variable

EstimatedRuntime

0:Duration

0:PropertyType

O

0:HasComponent

Object

FileSet

ResultFileSetType

M

0:HasProperty

Variable

SupervisoryJobId

0:String

0:PropertyType

M

0:HasComponent

Object

ProgramTemplate

ProgramTemplateType

M

0:HasProperty

Variable

Properties

KeyValueType[]

0:PropertyType

M

0:HasProperty

Variable

Samples

SampleInfoType[]

0:PropertyType

M

0:HasProperty

Variable

Started

0:DateTime

0:PropertyType

M

0:HasProperty

Variable

Stopped

0:DateTime

0:PropertyType

M

0:HasProperty

Variable

SupervisoryTaskId

0:String

0:PropertyType

M

0:HasProperty

Variable

TotalPauseTime

0:Duration

0:PropertyType

O

0:HasProperty

Variable

TotalRuntime

0:Duration

0:PropertyType

O

0:HasProperty

Variable

User

0:String

0:PropertyType

M

0:HasComponent

Object

VariableSet

VariableSetType

M

0:HasProperty

Variable

Samples

SampleInfoType[]

0:PropertyType

M

Conformance Units

LADS ResultType

ApplicationUri provides information about the remote client that initiated the program run generating the result. It must align with the ApplicationUri in the ApplicationDescription (refer to OPC 10000-4 section 7.1) of a Session (refer to OPC 10000-4 section 5.6.2). In instances where the program was initiated locally and cannot be attributed to an OPC UA Client, the ApplicationUri of the Server should be utilized.

User provides information about the remote client user that initiated the program run generating the result. User must be a human-readable value, based on the UserIdentityToken (refer to OPC 10000-4 section 7.36). In instances where the program was initiated locally and cannot be attributed to an OPC UA Client, the local user of the Server should be utilized.

Recommendations for creating the User parameter are as follows:

• AnonymousIdentityToken: This should not be utilized.

• UserNameIdentityToken: The UserName field should be utilized.

• X509IdentityToken: The Common Name of the certificate should be utilized.

• IssuedIdentityToken (JWT): The Name field of the access Token Claim should be utilized (refer to 10000-6 section 6.5.3.2).

Description is the human-readable description of the specific program run that created this result and the result itself.

DeviceProgramRunId is the internal program identifier assigned by the Device to the program run generating this result. It is used to identify a Result object and is returned to the Client when the StartProgram Method is called.

SupervisoryJobId is the identifier for the execution of a specific workflow consisting of one or multiple steps. It is provided as an Argument of the StartProgram() Method which initiates the program run.

SupervisoryTaskId is the unique identifier of the specific Task in the supervisory system to which the result belongs. It is provided as an Argument of the StartProgram() Method which initiates the program run.

ProgramTemplate is an immutable copy of the Program Template attributes with which the result was generated and is provided for documentation and traceability purposes. This copy will not change even if the original is changed.

Properties is a list of key-value pairs with KeyValueType which is provided when calling the StartProgram() Method. It can be utilized when performing the program run and is provided in the ResultType object for documentation and traceability purposes.

Samples is a list of sample-specific information with SampleInfoType which is provided when calling the StartProgram() Method. It can be utilized when performing the program run and is provided in the ResultType object for documentation and traceability purposes.

Started is the timestamp of when the program was started.

Stopped is the timestamp of when the program was stopped.

EstimatedRuntime is the time that was estimated for the program execution.

TotalRuntime is the total time of program execution, including paused states. The paused states are Held and Suspended.

TotalPauseTime is the time the program execution for the result was in a paused state. The paused states are Held and Suspended.

The EstimatedRuntime, TotalRuntime and TotalPauseTime information is retrieved from the last value of the ActiveProgram properties.

FileSet is a list of represented files of ResultFileType objects which were generated during the run. The format of the individual files is represented via an associated MIME type attribute.

VariableSet contains additional vendor-specific sample data that was created during a run. The value of the variables in the set or in a nested structure in the set are immutable. Thus, the value attribute is not allowed to change from the Client or Server side after the creation of a Node.

The ResultFileType provides a description of a file that is part of a result of a program manager run. It is formally defined in Table 64.

Table 64 – ResultFileType Definition

Attribute

Value

BrowseName

ResultFileType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of 0:BaseObjectType defined in OPC 10000-5

0:HasComponent

Object

File

FileType

O

0:HasProperty

Variable

MimeType

0:String

0:PropertyType

M

0:HasProperty

Variable

Name

0:String

0:PropertyType

M

0:HasProperty

Variable

URL

0:String

0:PropertyType

O

Conformance Units

LADS ResultFileType

File is the OPC UA Node of the file with the method for downloading the file.

MimeType is the MIME type of the file.

Name is the name that describes the file. The name may be different from the filename on the filesystem.

URL is a URL from which the file can be downloaded.

Note: This specification allows for transferring the result file using either the native OPC UA FileType or a different protocol. For example, the URL property can be used with a second protocol (e.g., FTP). The advantage of the OPC UA method is that all information can be provided using a single protocol. No secondary access management and security implementation is needed. For Brownfield applications where a second protocol exists, this second protocol can be used to reduce the implementation effort.

The ActiveProgramType specifies the current state of operation of a FunctionalUnit. It provides context and information about the currently active program on the Device. This allows users to follow the progress of a program run in a standardized fashion by organising steps into a flat, linear sequence. It is formally defined in Table 65.

Table 65 – ActiveProgramType Definition

Attribute

Value

BrowseName

ActiveProgramType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of 0:BaseObjectType defined in OPC 10000-5

0:HasProperty

Variable

CurrentPauseTime

Duration

0:PropertyType

O

0:HasProperty

Variable

CurrentRuntime

Duration

0:PropertyType

O

0:HasProperty

Variable

CurrentStepName

LocalizedText

0:PropertyType

O

0:HasProperty

Variable

CurrentStepNumber

UInt32

0:PropertyType

O

0:HasProperty

Variable

CurrentStepRuntime

Duration

0:PropertyType

O

0:HasProperty

Variable

EstimatedRuntime

Duration

0:PropertyType

O

0:HasProperty

Variable

EstimatedStepNumbers

UInt32

0:PropertyType

O

0:HasProperty

Variable

EstimatedStepRuntime

Duration

0:PropertyType

O

0:HasProperty

Variable

DeviceProgramRunId

String

0:PropertyType

O

0:HasProperty

Variable

CurrentProgramTemplate

3:NameNodeIdDataType

0:PropertyType

O

Conformance Units

LADS ActiveProgramType

The status of all properties must be communicated through various StatusCodes, depending on the situation:

• For a device that has not had a prior run and therefore cannot estimate the runtime, the StatusCode should be BadWaitingForInitialData. This indicates that the system is waiting for initial data to compute the estimated runtime.

• If the runtime cannot be estimated due to process-related reasons or incompatibility, the StatusCode should be BadNoData. This communicates that no data is available to estimate the runtime.

• If the runtime can be computed and the program is currently running or paused, the StatusCode should be Good. This indicates that the estimated runtime is available and the program is in progress.

• If the runtime can be computed after the program run but the value might not be the most current, the StatusCode should be UncertainLastUsableValue. This communicates that the last known value is being used for the estimated runtime, but it may not be the most up to date.

Additional StatusCodes are allowed depending on the specific situation (e.g., technical problems).

CurrentPauseTime is the current pause-time of the program run. The CurrentPauseTime is set to 0 at the start of the program and is counted upwards when the program run is in a paused state. The paused state is an aggregation of the Suspended and Held states.

CurrentRuntime is the current runtime of the program run. The CurrentRuntime is set to 0 at the start of the program and is counted upwards, as long as the program run is not in a paused state. The paused state is an aggregation of the Suspended and Held states.

CurrentStepName is the name of the current step.

CurrentStepNumber is the number/index of the current step (incremented whenever the next step is entered).

CurrentStepRuntime is the runtime of the current step. The CurrentStepRuntime is set to 0 at the start of the current step and is counted upwards, as long as the program run is not in paused state. The paused state is an aggregation of the Suspended and Held states.

EstimatedRuntime is the estimated runtime of the current program run.

EstimatedStepNumbers is the estimated total number of steps of the current program run.

EstimatedStepRuntime is the estimated runtime of the current program step.

CurrentProgramTemplate provides the template-id as well as the node-id of the currently executed program.

DeviceProgramRunId represents a device-specific unique internal identifier for this program run. Its value shall be identical to the return value of the last call to the FunctionalUnit’s StartProgram() Method. It is used to identify the result object corresponding to this program run within the FunctionalUnit’s result set.

The ProgramTemplateType provides a Program Template. It is formally defined in Table 66.

A Program Template is stored within the ProgramTemplateSet of a ProgramManager and can be selected to be executed as the ActiveProgram for the FunctionalUnit. Alternative common names for a Program Template are protocol, program, or recipe.

Clients (e.g., supervisory system clients, such as ELN or LIMS) can utilize the ProgramTemplateSet and Program Template objects to:

  • List all templates available on a FunctionalUnit,
  • Select a template for execution as the ActiveProgram.

The Download Method (see 7.2.1.2) and Upload Method (see 7.2.1.4) functions of the ProgramManagerType can be used to download and upload Program Templates.

Considering the multiple different formats and ways of defining Program Templates in the laboratory and analytical domain, LADS handles the Program Template itself as a black box.

The information contained is read-only and the properties are set based on information included in the Program Template itself. This is beyond the scope of the LADS specification. Thus, only generic information about the context and purpose of the Program Template is provided here.

Table 66 – ProgramTemplateType Definition

Attribute

Value

BrowseName

ProgramTemplateType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the BaseObjectType defined in OPC 10000-5

0:HasProperty

Variable

Author

String

0:PropertyType

M

0:HasProperty

Variable

Created

DateTime

0:PropertyType

M

0:HasProperty

Variable

Description

LocalizedText

0:PropertyType

M

0:HasProperty

Variable

Modified

DateTime

0:PropertyType

M

0:HasProperty

Variable

DeviceTemplateId

0:String

0:PropertyType

M

0:HasProperty

Variable

SupervisoryTemplateId

0:String

0:PropertyType

O

0:HasProperty

Variable

Version

0:String

0:PropertyType

M

Conformance Units

LADS ProgramTemplateType

Author is the user who created the template.

Created is the time of the template’s creation.

Description is a human-readable description of the template.

Modified is the time of last modification.

DeviceTemplateId is the program template’s identifier unique within the scope of the device.

SupervisoryTemplateId is an optional enterprise-wide unique identifier for the template. This can be utilized to refer the template to supervisory systems.

Version is the version of the template (the format is at the user’s discretion).

The SupportedPropertyType provides argument names and links to variables within the information model, typically target values or parameters of Functions. This makes it possible to specify a list of KeyValueTypess as an input object. It is formally defined in Table 67.

The SupportedPropertyType is used in the SupportedPropertiesSet of the FunctionalUnit. The name of each Argument object is used as a key in the KeyValueType list input Argument of the Start()/StartFunctions() Method. Each Argument object should contain an Organizes Reference to the target variable to which it belongs. Thus, the metadata of the target variable can be introspected online. The name of the SupportedProperty object is typically an argument name for a variable in the Device.

Table 67 – SupportedPropertyType Definition

Attribute

Value

BrowseName

SupportedPropertyType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the BaseObjectType defined in OPC 10000-5

Conformance Units

LADS SupportedPropertyType