The LocalDiscoveryServer is useful for networks where the host names can be discovered. However, this is typically not the case in large systems with multiple servers on multiple subnets. For this reason there is a need for an enterprise wide DiscoveryServer called a GlobalDiscoveryServer.

The GlobalDiscoveryServer (GDS) is an OPC UA Server which allows Clients to search for Servers within the administrative domain. When compared to the LDS, the GDS provides an authorative source for Servers which have been verified by administrators and accessed via a secure communication channel.

The GDS provides Methods that allow administrators to register applications and allow applications to search for other applications.

Some GDS implementations may provide a front-end to an existing DirectoryService such as LDAP (see Annex E). By standardizing on an OPC UA based interface, Clients do not need to have knowledge of different DirectoryServices.

GlobalDiscoveryServers restrict access to many of the features they provide. These restrictions are described either by referring to well-known Roles which a Session must have access to or by referring to Privileges which are assigned to Sessions using mechanisms other than the well-known Roles. The well-known Roles used in for a GDS are listed in Table 1.

Table 1 – Well-known Roles for a GDS

Name

Description

DiscoveryAdmin

This Role grants rights to register, update and unregister any OPC UA Application.

SecurityAdmin

This Role grants the right to change the security configuration of a GDS.

The Privileges used in for a GDS are listed in Table 2.

Table 2 – Privileges for a GDS

Name

Description

ApplicationSelfAdmin

This Privilege grants an OPC UA Application the right to update its own registration.

The Certificate used to create the SecureChannel is used to determine the identity of the OPC UA Application.

ApplicationAdmin

This Privilege grants rights to update one or more registrations.

The Certificate used to create the SecureChannel is used to determine the identity of the OPC UA Application and what the set of registrations it is authorized to update.

A GlobalDiscoveryServer is an OPC UA Server implementing different global services for discovery, Certificate management, user or PubSub key management, user authorization, software and device management.

The number of OPC UA Applications using the different services as OPC UA Client may be huge and the OPC UA Server is most likely not able to handle connections from all OPC UA Clients at the same time. Therefore an OPC UA Client connected to a GDS should minimize the time it is connected to the GDS to the currently required actions. The OPC UA Client shall disconnect as soon as it completes the sequence of actions needed to interact with the services. The OPC UA Clients shall not keep connections open between the execution of sequences.

A GDS OPC UA Server is allowed to close Sessions with OPC UA Clients not authenticated as one of the GDS administrative Roles if it runs out of connection resources. If the GDS needs to close Sessions, it should first close Sessions without GDS management Privileges. Otherwise it may close the Session that was inactive for the longest time not using GDS global services e.g. Method calls.

It is also recommended to use a short maximum session timeout on the GDS OPC UA Server.

Actions performed cyclically by OPC UA Applications during PullManagement shall start the second cycle with a random delay that is between one and at least ten percent of the cycle period.

If an administrator (e.g. a Client with access to the DirectoryAdmin Role) registers a LocalDiscoveryServer with the GDS, then the GDS periodically adds Servers to a list for review by calling FindServersOnNetwork or FindServers on the LDS. Figure 11 shows the relationship between a GDS and the LDS-ME or LDS.

The GDS shall not make Servers discovered in this manner available via QueryApplications for FindApplications before an administrator has approved the Server on a case by case basis or via automated rules. Note that auto-population can result in conflicts where multiple Servers have the same ApplicationUri due to a configuration error. A GDS should keep track of these conflicts so an administrator can review and resolve them.

image014.png

Figure 11 – The Relationship Between GDS and other components

The steps shown in Figure 11 are:

1

The Server calls RegisterServer2 on the LDS running on the same computer.

2

The administrator registers LDS-ME installations with the GDS.

3

The GDS calls FindServersOnNetwork on the LDS-ME to find all applications on the same MulticastSubnet.

4

The GDS creates a record for each application returned by the LDS-ME. These records shall be approved before they are made available to Clients of the GDS. This approval can be obtained from an DiscoveryAdmin.

5

The Client calls QueryApplications Method on the GDS to discover applications.

The Information Model used for registration and discovery is shown in 6.6.1. Any Client shall be able to call the QueryApplications Method to find applications known to GDS. The complete definitions for each of the types used are described in 0.

Once a Server is registered with the GDS the record does not dissappear if the Server goes offline. If a Server is permentently taken offline the administrator needs to manually remove the registration.The interactions described above apply to Servers automatically discovered via an LDS. Servers can also be discovered by another application and registered automatically with the GDS provided the other application has the necessary administrative rights on the GDS.

The OPC UA Application or the Application configuration tool connects to the GDS for initial installation with GDS including Application registration. This requires a user that has the DiscoveryAdmin Role or the ApplicationAdmin Privilege.

The workflow for the Application registration is shown in Figure 12.

image015.png

Figure 12 – Application Registration Workflow

The description of the Application registration workflow steps is provided in Table 3.

Table 3 – Application Registration Workflow Steps

Step

Description

Application installation

The registration of an application with a GDS is normally executed as part of the initial installation and configuration of the application.

It can be executed by a configuration tool that is part of the application or by a generic GDS configuration tool.

Connect

For the connection management with the GDS the services OpenSecureChannel, CreateSession and ActivateSession are used to create a connection with MessageSecurityMode SignAndEncrypt and a user that has the permission to register applications with the GDS. If the user does not have sufficient rights, the GDS can provide a mechanism to accept registrations on the GDS side before they are visible to Clients through QueryApplications.

FindApplications

The first step after connect is to check if there is already a registration available for the ApplicationUri.

The DirectoryType Method FindApplications is used to pass the ApplicationUri of the application to the GDS. The Method returns an array of application records where the size of the array defines the next steps.

  • If the array is empty, the next step is RegisterApplication.
  • If the array size is one, and the record matches the expected application record, the next step is Browse CertificateGroups.
  • If the array size is one and the record does not match the expected application record, the registration must be verified with a DiscoveryAdmin.
  • If the array size is more than one, this indicates a fatal error and the status must be verified with a DiscoveryAdmin.

RegisterApplication

The DirectoryType Method RegisterApplication is used to pass in an application record with the application information.

If the Method succeeds an ApplicationId is returned. This ApplicationId should be persisted for further interaction with the GDS regarding this application.

If the Method fails, a DiscoveryAdmin is needed to identify and correct the issue. Typical errors include insufficient rights or conflicts with other application records.

Browse CertificateGroups

The Browse Service is used to get the list of GDS managed CertificateGroups by browsing the CertificateGroups Folder of the Directory Object.

If more than one CertificateGroup is returned, the user selects the relevant CertificateGroups needed for the application.

The selected CertificateGroupIds should be persisted together with the ApplicationId.

Registration end options

The following options are possible to complete the registration with the CertificateManager:

  1. Continue with PullManagement using the existing connection to the GDS. This option is typically used by Clients executing the registration in an interactive mode for their own identity. See 7.6 for the PullManagement workflow.
  2. Continue with PullManagement inside a headless application.
  3. Continue with PushManagement.

Set application Certificate on GDS

For option (2) the current application Certificate must be configured for the application on the GDS to allow Application authentication for the initial PullManagement sequence. This configuration in the GDS is currently not in the scope of this specification.

Configure PushManagement

For option (3) the application must be configured for PushManagement in the CertificateManager. The configuration of the PushManagement in the CertificateManager is currently not in the scope of this specification.

Disconnect

For options (2) and (3) the configuration tool disconnects from the GDS.

The GlobalDiscoveryServer Information Model used for discovery is shown in Figure 13. Most of the interactions between the GlobalDiscoveryServer and Application administrator or the Client will be via Methods defined on the Directory folder.

image016.png

Figure 13 – The Address Space for the GDS

This Object is the root of the GlobalDiscoveryServer AddressSpace and it is the target of an Organizes reference from the Objects folder defined in OPC 10000-5. It organizes the information that can be accessed into subfolders. The implementation of a GDS can customize and organize the folders in any manner it desires. For example folders can exist for information models, or for optional services or for various locations in an administrative domain. It is defined in Table 4.

Table 4 – Directory Object Definition

Attribute

Value

BrowseName

2:Directory

TypeDefinition

2:DirectoryType defined in 6.6.3.

References

NodeClass

BrowseName

DataType

TypeDefinition

Modelling Rule

Conformance Units

GDS Application Directory

DirectoryType is the ObjectType for the root of the GlobalDiscoveryServer AddressSpace. It organizes the information that can be accessed into subfolders It also provides methods that allow applications to register or find applications. It is defined in Table 5.

Table 5 – DirectoryType Definition

Attribute

Value

BrowseName

2:DirectoryType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of the 0:FolderType defined in OPC 10000-5.

0:HasComponent

Object

2:Applications

-

0:FolderType

Mandatory

0:HasComponent

Method

2:FindApplications

Defined in 6.6.4.

Mandatory

0:HasComponent

Method

2:RegisterApplication

Defined in 6.6.6.

Mandatory

0:HasComponent

Method

2:UpdateApplication

Defined in 6.6.7.

Mandatory

0:HasComponent

Method

2:UnregisterApplication

Defined in 6.6.8.

Mandatory

0:HasComponent

Method

2:GetApplication

Defined in 6.6.9.

Mandatory

0:HasComponent

Method

2:QueryApplications

Defined in 6.6.10.

Mandatory

0:HasComponent

Method

2:QueryServers

Defined in 6.6.11.

Mandatory

Conformance Units

GDS Application Directory

The Applications folder may contain Objects representing the Applications known to the GDS. These Objects may be organized into subfolders as determined by the GDS. Some characteristics for organizing applications are the networks, the physical location, or the supported profiles. The QueryApplications Method can be used to search for OPC UA Applications based on various criteria.

A GDS is not required to expose its Applications as browsable Objects in its AddressSpace, however, each Application shall have a unique NodeId which can be passed to Methods used to administer the GDS.

The FindApplications Method returns the Applications associated with an ApplicationUri. It can be called by any Client application.

The RegisterApplication Method is used to add a new Application to the GDS. It requires administrative privileges.

The UpdateApplication Method is used to update an existing Application in the GDS. It requires administrative privileges.

The UnregisterApplication Method is used to remove an Application from the GDS. It requires administrative privileges.

The QueryApplications Method is used to find Client or Server applications that meet the criteria provided. This Method replaces the QueryServers Method.

The QueryServers Method is used to find Servers that meet the criteria specified. It can be called by any Client application. This Method has been replaced by the QueryApplications Method

FindApplications is used to find the ApplicationId for an approved OPC UA Application (see 6.6.6 or 6.4). This list of records returned shall have zero or one element.

If the returned array is null or zero length then the GDS does not have an entry for the ApplicationUri.

Signature

FindApplications(

[in] String applicationUri

[out] ApplicationRecordDataType[] applications

);

Argument

Description

applicationUri

The ApplicationUri that identifies the Application of interest.

applications

A list of application records that match the ApplicationUri.

The ApplicationRecordDataType is defined in 6.6.5.

Method Result Codes (defined in Call Service)

Result Code

Description

Bad_InvalidArgument

The ApplicationUri is too long or not a valid URI.

Table 6 specifies the AddressSpace representation for the FindApplications Method.

Table 6 – FindApplications Method AddressSpace Definition

Attribute

Value

BrowseName

2:FindApplications

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

0:HasProperty

Variable

0:InputArguments

0:Argument[]

0:PropertyType

Mandatory

0:HasProperty

Variable

0:OutputArguments

0:Argument[]

0:PropertyType

Mandatory

This type defines a DataType which represents a record in the GDS.

If the ApplicationType is Client and the serverCapabilities includes RCP (reverse connect) then all DiscoveryUrls shall begin with the rcp+ prefix which indicates that reverse connections are supported. Otherwise, the DiscoveryUrls shall be empty.

If the ApplicationType is ClientAndServer the serverCapabilities may include RCP and all DiscoveryUrls that support reverse connect have the rcp+ prefix. If the same URL supports normal connetions and reverse connection then there shall be two elements in the DiscoveryUrls array with and without the rcp+ prefix.

Table 7 – ApplicationRecordDataType Structure

Name

Type

Description

ApplicationRecordDataType

Structure

Subtype of the Structure DataType defined in OPC 10000-5

ApplicationId

NodeId

The unique identifier assigned by the GDS to the record.

This NodeId may be passed to other Methods.

ApplicationUri

String

The URI for the Application associated with the record.

ApplicationType

ApplicationType

The type of application.

This type is defined in OPC 10000-4.

ApplicationNames

LocalizedText[]

One or more localized names for the application.

The first element is the default ApplicationName for the application when a non-localized name is needed.

ProductUri

String

A globally unique URI for the product associated with the application.

This URI is assigned by the vendor of the application.

DiscoveryUrls

String[]

The list of discovery URLs for an application.

The first HTTPS URL specifies the domain used as the Common Name of HTTPS Certificates.

ServerCapabilities

String[]

The list of server capability identifiers for the application.

The allowed values are defined in Annex D.

Its representation in the AddressSpace is defined in Table 8.

Table 8 – ApplicationRecordDataType Definition

Attribute

Value

BrowseName

2:ApplicationRecordDataType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:Structure DataType defined in OPC 10000-5.

Conformance Units

GDS Application Directory

RegisterApplication is used to register a new Application Instance with a GlobalDiscoveryServer.

This Method shall be called from an authenticated SecureChannel and from a Client that has access to the DiscoveryAdmin Role or the ApplicationAdmin Privilege (see 6.2).

Servers that support transparent redundancy shall register as a single application and pass the DiscoveryUrls for all available instances and/or network paths.

Servers that support non-transparent redundancy shall register as different applications. In addition, OPC 10000-4 requires the use of the NTRS ServerCapability defined in Annex D.

RegisterApplication shall not create duplicate records. If the ApplicationUri already exists the Method returns Bad_EntryExists.

If RegisterApplication succeeds the OPC UA Application is approved and is returned by QueryApplications and FindApplications.

If registration was successful and auditing is supported, the GDS shall generate the ApplicationRegistrationChanged AuditEventType (see 6.6.12).

Signature

RegisterApplication(

[in] ApplicationRecordDataType application

[out] NodeId applicationId

);

Argument

Description

application

The application that is to be registered with the GlobalDiscoveryServer.

applicationId

A unique identifier for the registered Application.

This identifier is persistent and is used in other Methods used to administer applications.

Method Result Codes (defined in Call Service)

Result Code

Description

Bad_InvalidArgument

The application or one of the fields of the application record is not valid.

The text associated with the error shall indicate the exact problem.

Bad_EntryExists

A record with the same ApplicationUri already exists.

Bad_UserAccessDenied

The current user does not have the rights required.

Bad_SecurityModeInsufficient

The SecureChannel is not authenticated.

Table 9 specifies the AddressSpace representation for the RegisterApplication Method.

Table 9 – RegisterApplication Method AddressSpace Definition

Attribute

Value

BrowseName

2:RegisterApplication

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

0:HasProperty

Variable

0:InputArguments

0:Argument[]

0:PropertyType

Mandatory

0:HasProperty

Variable

0:OutputArguments

0:Argument[]

0:PropertyType

Mandatory

UpdateApplication is used to update an existing Application in a GlobalDiscoveryServer.

This Method shall be called from an authenticated SecureChannel and from a Client that has access to the DiscoveryAdmin Role, the ApplicationSelfAdmin Privilege, or the ApplicationAdmin Privilege (see 6.2).

When updating an existing Application the ApplicationUri cannot be changed. If it is changed the Method returns Bad_WriteNotSupported.

If the update was successful and auditing is supported, the GDS shall generate the ApplicationRegistrationChanged AuditEventType (see 6.6.12).

Signature

UpdateApplication(

[in] ApplicationRecordDataType application

);

Argument

Description

application

The application that is to be updated in the GDS database.

Method Result Codes (defined in Call Service)

Result Code

Description

Bad_NotFound

The applicationId is not known to the GDS.

Bad_InvalidArgument

The application or one of the fields of the application record is not valid.

The text associated with the error shall indicate the exact problem.

Bad_WriteNotSupported

The applicationUri was changed and it cannot be updated.

Bad_UserAccessDenied

The current user does not have the rights required.

Bad_SecurityModeInsufficient

The SecureChannel is not authenticated.

Table 10 specifies the AddressSpace representation for the UpdateApplication Method.

Table 10 – UpdateApplication Method AddressSpace Definition

Attribute

Value

BrowseName

2:UpdateApplication

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

0:HasProperty

Variable

0:InputArguments

0:Argument[]

0:PropertyType

Mandatory

UnregisterApplication is used to remove an Application from a GlobalDiscoveryServer.

This Method shall be called from an authenticated SecureChannel and from a Client that has access to the DiscoveryAdmin Role, the ApplicationSelfAdmin Privilege, or the ApplicationAdmin Privilege (see 6.2).

This Method shall only be invoked by authorized users.

A Server Application that is unregistered may be automatically added again if the GDS is configured to populate itself by calling FindServersOnNetwork and the Server Application is still registering with its local LDS.

If an Application has Certificates issued by the CertificateManager, these Certificates shall be revoked when this Method is called.

If un-registration was successful and auditing is supported, the GDS shall generate the ApplicationRegistrationChanged AuditEventType (see 6.6.12).

Signature

UnregisterApplication(

[in] NodeId applicationId

);

Argument

Description

applicationId

The identifier assigned by the GDS to the Application.

Method Result Codes (defined in Call Service)

Result Code

Description

Bad_NotFound

The applicationId is not known to the GDS.

Bad_UserAccessDenied

The current user does not have the rights needed to unregister the application.

Bad_SecurityModeInsufficient

The SecureChannel is not authenticated.

Table 11 specifies the AddressSpace representation for the UnregisterApplication Method.

Table 11 – UnregisterApplication Method AddressSpace Definition

Attribute

Value

BrowseName

2:UnregisterApplication

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

0:HasProperty

Variable

0:InputArguments

0:Argument[]

0:PropertyType

Mandatory

GetApplication is used to find an OPC UA Application known to the GDS.

Signature

GetApplication(

[in] NodeId applicationId

[out] ApplicationRecordDataType application

);

Argument

Description

applicationId

The ApplicationId that identifies the Application of interest.

application

The application record that matches the ApplicationId.

The ApplicationRecordDataType is defined in 6.6.5

Method Result Codes (defined in Call Service)

Result Code

Description

Bad_NotFound

The applicationId is not known to the GDS.

Bad_UserAccessDenied

The current user does not have the rights needed to read the requested record.

Table 12 specifies the AddressSpace representation for the GetApplication Method.

Table 12 – GetApplication Method AddressSpace Definition

Attribute

Value

BrowseName

2:GetApplication

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

0:HasProperty

Variable

0:InputArguments

0:Argument[]

0:PropertyType

Mandatory

0:HasProperty

Variable

0:OutputArguments

0:Argument[]

0:PropertyType

Mandatory

QueryApplications is used to find Client or Server applications that meet the specified filters. The only Clients returned are those that support the reverse connection capability described in OPC 10000-6.

QueryApplications returns ApplicationDescriptions instead of the ServerOnNetwork Structures returned by QueryServers. This is more useful to some Clients because it matches the return type of FindServers.

Any Client is able to call this Method, however, the set of results returned may be restricted based on the Client’s user credentials.

The applications returned shall pass all of the filters provided (i.e. the filters are combined in an AND operation). The capabilities parameter is an array and an application will pass this filter if it supports all of the specified capabilities.

Each time the GDS creates or updates an application record it shall assign a monotonically increasing identifier to the record. This allows Clients to request records in batches by specifying the identifier for the last record received in the last call to QueryApplications. To support this the GDS shall return records in order starting from the lowest record identifier. The GDS shall also return the last time the counter was reset. If a Client detects that this time is more recent than the last time the Client called the Method it shall call the Method again with a startingRecordId of 0.

The lastCounterResetTime parameter is used to indicate that the counters on records had to be reset for some reason such as a Server restart. The Client may not use any nextRecordId received prior to this time to set the value for the startingRecordId in a new call.

The return parameter is a list of ApplicationDescriptions. The mapping from a ApplicationRecord to an ApplicationDescriptions is shown in Table 13.

Table 13 – ApplicationRecordDataType to ApplicationDescription Mapping

ApplicationRecordDataType

ApplicationDescription

Notes

applicationId

--

Ignored

applicationUri

applicationUri

applicationType

applicationType

applicationNames

applicationName

The name that best matches the preferredLocales for the current Session is returned. If there is no Session the first element is returned.

productUri

productUri

discoveryUrls

discoveryUrls

--

gatewayServerUri

Set to NULL.

--

discoveryProfileUri

Set to NULL.

serverCapabilities

--

Ignored

Signature

QueryApplications(

[in] UInt32 startingRecordId

[in] UInt32 maxRecordsToReturn

[in] String applicationName

[in] String applicationUri

[in] UInt32 applicationType

[in] String productUri

[in] String[] capabilities

[out] UtcTime lastCounterResetTime

[out] UInt32 nextRecordId

[out] ApplicationDescription[] applications

);

Argument

Description

INPUTS

startingRecordId

Only records with an identifier greater than this number will be returned.

Specify 0 to start with the first record in the database.

maxRecordsToReturn

The maximum number of records to return in the response.

0 indicates that there is no limit.

applicationName

The ApplicationName of the applications to return.

Supports the syntax used by the LIKE FilterOperator described in OPC 10000-4.

Not used if an empty string is specified.

The filter is only applied to the default ApplicationName.

applicationUri

The ApplicationUri of the applications to return.

Supports the syntax used by the LIKE FilterOperator described in OPC 10000-4.

Not used if an empty string is specified.

applicationType

A mask indicating what types of applications are returned.

The mask values are:

0x1 – Servers;

0x2 – Clients;

If the mask is 0 then all applications are returned.

productUri

The ProductUri of the applications to return.

Supports the syntax used by the LIKE FilterOperator described in OPC 10000-4.

Not used if an empty string is specified.

capabilities

The capabilities supported by the applications returned.

The applications returned shall support all of the capabilities specified. If no capabilities are provided this filter is not used.

The allowed values are defined in Annex D.

OUTPUTS

lastCounterResetTime

The last time the counters were reset.

nextRecordId

The identifier of the next record. It is passed as the startingRecordId in subsequent calls to QueryApplications to fetch the next batch of records. It is 0 if there are no more records to return.

applications

A list of Applications which meet the criteria.

The ApplicationDescription structure is defined in OPC 10000-4.

Table 14 specifies the AddressSpace representation for the QueryApplications Method.

Table 14 – QueryApplications Method AddressSpace Definition

Attribute

Value

BrowseName

2:QueryApplications

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

0:HasProperty

Variable

0:InputArguments

0:Argument[]

0:PropertyType

Mandatory

0:HasProperty

Variable

0:OutputArguments

0:Argument[]

0:PropertyType

Mandatory

QueryServers is used to find Server applications that meet the specified filters.

Any Client is able to call this Method, however, the set of results returned may be restricted based on the Client’s user credentials.

The applications returned shall pass all of the filters provided (i.e. the filters are combined in an AND operation). The serverCapabilities parameter is an array and an application will pass this filter if it supports all of the specified capabilities.

Each time the GDS creates or updates an application record it shall assign a monotonically increasing identifier to the record. This allows Clients to request records in batches by specifying the identifier for the last record received in the last call to QueryServers. To support this the GDS shall return records in order starting from the lowest record identifier. The GDS shall also return the last time the counter was reset. If a Client detects that this time is more recent than the last time the Client called the Method it shall call the Method again with a startingRecordId of 0.

The lastCounterResetTime parameter is used to indicate that the counters on records had to be reset for some reason such as a Server restart. The Client may not use any recordId received prior to this time to set the value for the startingRecordId in a new call.

The return parameter is a list of ServerOnNetwork Structures. The mapping from a ApplicationRecordDataType to an ServerOnNetwork is shown in Table 15.

Table 15 – ApplicationRecordDataType to ServerOnNetwork Mapping

ApplicationRecordDataType

ServerOnNetwork

Notes

applicationId

--

Ignored

applicationUri

--

Ignored

applicationType

--

Ignored

applicationNames

serverName

The name that best matches the preferredLocales for the current Session is returned. If there is no Session the first element is returned.

productUri

--

Ignored

discoveryUrls

discoveryUrl

A ServerOnNetwork record is returned for each discoveryUrl in the ApplicationRecord.

serverCapabilities

serverCapabilities

--

recordId

This is the recordId assigned by the QueryServers call. It may be used as the startedRecordId in a subsequent call to QueryServers.

Signature

QueryServers(

[in] UInt32 startingRecordId

[in] UInt32 maxRecordsToReturn

[in] String applicationName

[in] String applicationUri

[in] String productUri

[in] String[] serverCapabilities

[out] UtcTime lastCounterResetTime

[out] ServerOnNetwork[] servers

);

Argument

Description

INPUTS

startingRecordId

Only records with an identifier greater than this number will be returned.

Specify 0 to start with the first record in the database.

maxRecordsToReturn

The maximum number of records to return in the response.

0 indicates that there is no limit.

applicationName

The ApplicationName of the Applications to return.

Supports the syntax used by the LIKE FilterOperator described in OPC 10000-4.

Not used if an empty string is specified.

The filter is only applied to the default ApplicationName.

applicationUri

The ApplicationUri of the Servers to return.

Supports the syntax used by the LIKE FilterOperator described in OPC 10000-4.

Not used if an empty string is specified.

productUri

The ProductUri of the Servers to return.

Supports the syntax used by the LIKE FilterOperator described in OPC 10000-4.

Not used if an empty string is specified.

serverCapabilities

The applications returned shall support all of the server capabilities specified. If no server capabilities are provided this filter is not used.

OUTPUTS

lastCounterResetTime

The last time the counters were reset.

servers

A list of Servers which meet the criteria.

The ServerOnNetwork structure is defined in OPC 10000-4.

Method Result Codes (defined in Call Service)

Result Code

Description

Bad_UserAccessDenied

The current user does not have the rights required.

Table 16 specifies the AddressSpace representation for the QueryServers Method.

Table 16 – QueryServers Method AddressSpace Definition

Attribute

Value

BrowseName

2:QueryServers

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

0:HasProperty

Variable

0:InputArguments

0:Argument[]

0:PropertyType

Mandatory

0:HasProperty

Variable

0:OutputArguments

0:Argument[]

0:PropertyType

Mandatory

This event is raised when the RegisterApplication, UpdateApplication or UnregisterApplication Methods are called.

Its representation in the AddressSpace is formally defined in Table 17.

Table 17 – ApplicationRegistrationChangedAuditEventType Definition

Attribute

Value

BrowseName

2:ApplicationRegistrationChangedAuditEventType

IsAbstract

True

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Subtype of the 0:AuditUpdateMethodEventType defined in OPC 10000-5.

Conformance Units

GDS Application Directory

This EventType inherits all Properties of the AuditUpdateMethodEventType. Their semantics are defined in OPC 10000-5.