TheGlobalDiscoveryServer Information Modelused for discoveryis shown in Figure 13. Most of the interactions between the GlobalDiscoveryServerand Applicationadministrator or the Clientwill be via Methodsdefined on the Directoryfolder.
Figure 13– The Address Space for the GDS
This Object is the root of the GlobalDiscoveryServer AddressSpaceand it is the target of an Organizesreference from the Objectsfolder 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 |
DirectoryTypeis the ObjectTypefor 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:FolderTypedefined 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 Applicationsfolder may contain Objectsrepresenting the Applicationsknown to the GDS. These Objectsmay 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 Methodcan be used to search for OPC UA Applicationsbased on various criteria.
A GDS is not required to expose its Applicationsas browsable Objectsin its AddressSpace, however, each Applicationshall have a unique NodeIdwhich can be passed to Methodsused to administer the GDS.
The FindApplications Methodreturns the Applicationsassociated with an ApplicationUri. It can be called by any Clientapplication.
The RegisterApplication Methodis used to add a new Applicationto the GDS. It requires administrative privileges.
The UpdateApplication Methodis used to update an existing Applicationin the GDS. It requires administrative privileges.
The UnregisterApplication Methodis used to remove an Applicationfrom the GDS. It requires administrative privileges.
The QueryApplications Methodis used to find Clientor Serverapplications that meet the criteria provided. This Methodreplaces the QueryServers Method.
The QueryServers Methodis used to find Serversthat meet the criteria specified. It can be called by any Clientapplication. This Methodhas been replaced by the QueryApplications Method
FindApplicationsis used to find the ApplicationIdfor an approved OPC UA Application(see 6.6.6or 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 ApplicationUrithat identifies the Applicationof 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_UserAccessDenied |
The current user does not have the rights required. |
Table 6specifies the AddressSpacerepresentation 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 ApplicationTypeis Clientthe serverCapabilitiesshall include RCP (reverse connect) and all DiscoveryUrlsshall begin with the rcp+ prefix which indicates that reverse connections are supported.
If the ApplicationTypeis ClientAndServerthe serverCapabilitiesmay include RCP and all DiscoveryUrlsthat 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 DiscoveryUrlsarray with and without the rcp+ prefix.
Table 7– ApplicationRecordDataType Structure
Name |
Type |
Description |
ApplicationRecordDataType |
Structure |
Subtype of the Structure DataTypedefined in OPC 10000-5 |
applicationId |
NodeId |
The unique identifier assigned by the GDS to the record. |
applicationUri |
String |
The URI for the Applicationassociated 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 ApplicationNamefor 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 AddressSpaceis 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 DataTypedefined in OPC 10000-5. |
|||||||
|
|||||||
Conformance Units |
|||||||
GDS Application Directory |
RegisterApplicationis used to register a new ApplicationInstance with a GlobalDiscoveryServer.
This Methodshall be called from an authenticated SecureChanneland from a Clientthat has access to the DiscoveryAdmin Role orthe ApplicationAdmin Privilege(see 6.2).
Serversthat support transparent redundancy shall register as a single application and pass the DiscoveryUrlsfor all available instances and/or network paths.
Serversthat support non-transparent redundancy shall register as different applications. In addition, OPC 10000-4requires the use of the NTRS ServerCapabilitydefined in Annex D.
RegisterApplicationshall not create duplicate records if the ApplicationUrialready exists.
If RegisterApplication succeeds the OPC UA Applicationis approved and is returned by QueryApplicationsand 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 Methodsused 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_UserAccessDenied |
The current user does not have the rights required. |
Table 9specifies the AddressSpacerepresentation 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 Applicationin a GlobalDiscoveryServer.
This Methodshall be called from an authenticated SecureChanneland from a Clientthat has access to the DiscoveryAdmin Role, the ApplicationSelfAdmin Privilege, or the ApplicationAdmin Privilege(see 6.2).
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_UserAccessDenied |
The current user does not have the rights required. |
Table 10specifies the AddressSpacerepresentation 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 Applicationfrom a GlobalDiscoveryServer.
This Methodshall be called from an authenticated SecureChanneland from a Clientthat has access to the DiscoveryAdmin Role, the ApplicationSelfAdmin Privilege, or the ApplicationAdmin Privilege(see 6.2).
This Methodshall only be invoked by authorized users.
A Server Applicationthat is unregistered may be automatically added again if the GDS is configured to populate itself by calling FindServersOnNetworkand the Server Applicationis still registering with its local LDS.
If an Applicationhas Certificatesissued by the CertificateManager, these Certificatesshall be revoked when this Methodis 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 applicationIdis not known to the GDS. |
Bad_UserAccessDenied |
The current user does not have the rights needed to unregister the application. |
Table 11specifies the AddressSpacerepresentation 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 |
GetApplicationis used to find an OPC UA Applicationknown to the GDS.
Signature
GetApplication(
[in] NodeId applicationId
[out] ApplicationRecordDataType application
);
Argument |
Description |
applicationId |
The ApplicationIdthat identifies the Applicationof 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 applicationIdis not known to the GDS. |
Bad_UserAccessDenied |
The current user does not have the rights needed to read the requested record. |
Table 12specifies the AddressSpacerepresentation 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 Clientor Serverapplications that meet the specified filters. The only Clientsreturned are those that support the reverse connection capability described in OPC 10000-6.
QueryApplicationsreturns ApplicationDescriptionsinstead of the ServerOnNetwork Structuresreturned by QueryServers. This is more useful to some Clientsbecause it matches the return type of FindServers.
Any Clientis able to call this Method, however, the set of results returned may be restricted based on the Client’suser credentials.
The applications returned shall pass all of the filters provided (i.e. the filters are combined in an AND operation). The capabilitiesparameter 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 Clientsto 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 Clientdetects that this time is more recent than the last time the Clientcalled the Methodit shall call the Methodagain with a startingRecordIdof 0.
The lastCounterResetTimeparameter is used to indicate that the counters on records had to be reset for some reason such as a Serverrestart. The Clientmay not use any nextRecordIdreceived prior to this time to set the value for the startingRecordIdin a new call.
The return parameter is a list of ApplicationDescriptions. The mapping from a ApplicationRecord to an ApplicationDescriptionsis 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 preferredLocalesfor the current Sessionis returned. If there is no Sessionthe 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 ApplicationNameof the applications to return. Supports the syntax used by the LIKE FilterOperatordescribed in OPC 10000-4. Not used if an empty string is specified. The filter is only applied to the default ApplicationName. |
applicationUri |
The ApplicationUriof the applications to return. Supports the syntax used by the LIKE FilterOperatordescribed 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 ProductUriof the applications to return. Supports the syntax used by the LIKE FilterOperatordescribed in OPC 10000-4. Not used if an empty string is specified. |
capabilities |
The capabilities supported by the applications returned. The applicationsreturned 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 startingRecordIdin subsequent calls to QueryApplicationsto fetch the next batch of records. It is 0 if there are no more records to return. |
applications |
A list of Applicationswhich meet the criteria. The ApplicationDescriptionstructure is defined in OPC 10000-4. |
Table 14specifies the AddressSpacerepresentation 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 Serverapplications that meet the specified filters.
Any Clientis able to call this Method, however, the set of results returned may be restricted based on the Client’suser credentials.
The applications returned shall pass all of the filters provided (i.e. the filters are combined in an AND operation). The serverCapabilitiesparameter 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 Clientsto 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 Clientdetects that this time is more recent than the last time the Clientcalled the Methodit shall call the Methodagain with a startingRecordIdof 0.
The lastCounterResetTimeparameter is used to indicate that the counters on records had to be reset for some reason such as a Serverrestart. The Clientmay not use any recordIdreceived prior to this time to set the value for the startingRecordIdin a new call.
The return parameter is a list of ServerOnNetwork Structures. The mapping from a ApplicationRecordDataTypeto an ServerOnNetwork is shown in Table 15.
Table 15– ApplicationRecordDataType to ServerOnNetworkMapping
ApplicationRecordDataType |
ServerOnNetwork |
Notes |
applicationId |
-- |
Ignored |
applicationUri |
-- |
Ignored |
applicationType |
-- |
Ignored |
applicationNames |
serverName |
The name that best matches the preferredLocalesfor the current Sessionis returned. If there is no Sessionthe first element is returned. |
productUri |
-- |
Ignored |
discoveryUrls |
discoveryUrl |
A ServerOnNetworkrecord is returned for each discoveryUrl in the ApplicationRecord. |
serverCapabilities |
serverCapabilities |
|
-- |
recordId |
This is the recordId assigned by the QueryServerscall. 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 ApplicationNameof the Applicationsto return. Supports the syntax used by the LIKE FilterOperatordescribed in OPC 10000-4. Not used if an empty string is specified. The filter is only applied to the default ApplicationName. |
applicationUri |
The ApplicationUriof the Serversto return. Supports the syntax used by the LIKE FilterOperatordescribed in OPC 10000-4. Not used if an empty string is specified. |
productUri |
The ProductUriof the Servers to return. Supports the syntax used by the LIKE FilterOperatordescribed in OPC 10000-4. Not used if an empty string is specified. |
serverCapabilities |
The applicationsreturned 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 Serverswhich meet the criteria. The ServerOnNetworkstructure 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 16specifies the AddressSpacerepresentation 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, UpdateApplicationor UnregisterApplication Methodsare called.
Its representation in the AddressSpaceis 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:AuditUpdateMethodEventTypedefined in OPC 10000-5. |
||||||
|
||||||
Conformance Units |
||||||
GDS Application Directory |
This EventTypeinherits all Propertiesof the AuditUpdateMethodEventType. Their semantics are defined in OPC 10000-5.