Errata exists for this version of the document.
This specification provides a definition of AliasNames functionality. AliasNames provide a manner of configuring and exposing an alternate well-defined name for any Node in the system. This is analogous to the way domain names are used as an alias to IP addresses in IP networks. Like a DNS Server, an OPC UA Server that supports AliasNames provides a lookup Method that will translate an AliasName to a NodeId of the related Node on a Server. An aggregating Server can collect these AliasNames from multiple Servers and provide a lookup Method to allow Client applications to discover NodeIds on a system wide basis. An aggregating Server might also define AliasNames for Nodes in other Servers that do not support AliasNames. A GDS may be constructed that would automatically aggregate all AliasNames that are defined on any Server that has registered with the GDS. In this case the GDS also provides the lookup mechanism for Clients at a well-known endpoint and address. The GDS functionality for AliasNames is formally defined in Annex B.
For the purposes of this document, the terms and definitions given in OPC 10000-1, OPC 10000-3, OPC 10000-4, OPC 10000-5, OPC 10000-7, OPC 10000-12, and OPC 10000-14 apply.
All used terms are italicized in the specification.
alternate well-defined name for any Node in the system
GDSGlobal Discovery Server
For systems that are large and complex, engineering is often done in multiple tools and by multiple individuals. The separate configurations are required to work together, but resolving the references between these different configurations can be a significant task. A common solution to simplify this task is a naming convention for the items that are being referenced. Providing an automatic lookup capability for these names would greatly simplify configuration. Each system can specify its own names and configurations can be built to just use the names, without having to know the exact address of the items. The exact address would include the address of the Server, the address of the tag in the Server, the required protocol for connecting to the Server, security settings etc. OPC UA defines a GDS that can provide information about what Servers are available in a system and how to connect to them, but it does not currently provide information about the tags that are available in a given Server.
In a system where many smaller Servers exist and these Servers might be dynamic, in that new Servers can appear and disappear. Configuration might move between Servers. The automatic resolution of where a specific piece of information is located would greatly simplify these systems.
Much like the previous use case, a cloud-based system, where Servers can be spun up in a new cloud system or adjusted and split based on loading to multiple Servers. The automatic resolution of where a specific piece of information is located would greatly simplify these systems.
In systems where many simple devices exist, any given simple device might not have the ability to provide name resolution, yet these systems can be much like systems in one of the previous use cases. In a system such as this an aggregating Server might exist, where the aggregating Server would provide the names as well as the lookup for the underlying Server. This aggregating Server might also provide other functionality such as aggregation of values, but it might only provide the name definitions and resolutions. The underlying Server might have no knowledge of the name.
An overview of this object model is provided in section 5. Figure 1 illustrates the overall AliasName Object Model
Instances of the AliasNameType ObjectType provide alternate names for Nodes. The AliasNameType is formally defined in Table 1.
Table 1 – AliasNameType Definition
Attribute |
Value |
|||||
BrowseName |
AliasNameType |
|||||
IsAbstract |
False |
|||||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
ModellingRule |
|
Subtype of the BaseObjectType defined in OPC 10000-5 |
This ObjectType has no Properties or Variables. The BrowseName of the Object is used as the alias name. The string part of the BrowseName shall be the DisplayName with an empty locale id and no other locale shall be provided. This Object shall have at least one AliasFor Reference (or sub-type).
AliasNameCategoryType instances are used to organize the AliasNameType instances that a Server defines. They can also include instances of AliasNameCategoryType to allow hierarchical groupings of AliasNames. It includes a mandatory Method for finding instances of AliasNameType in the AliasName hierarchy, starting at this instance of AliasNameCategoryType. For example, if the Method call is made on the Aliases AliasNameCategoryType instance (see 9.2), it would apply the AliasNameSearchPattern to all AliasNames that are defined under TagVariables, Topics and any other AliasNameCategoryType instance in the hierarchy.
The AliasNameCategoryType is a subtype of FolderType and is formally defined in Table 2.
Table 2 – AliasNameCategoryType Definition
Attribute |
Value |
||||
BrowseName |
AliasNameCategoryType |
||||
IsAbstract |
False |
||||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
ModellingRule |
Subtype of the FolderType from OPC 10000-5 |
|||||
HasComponent |
Object |
<Alias> |
|
AliasNameType |
OptionalPlaceholder |
HasComponent |
Object |
<SubAliasNameCategories> |
|
AliasNameCategoryType |
OptionalPlaceholder |
HasComponent |
Method |
FindAlias |
Defined in 6.3.2 |
Mandatory |
The list of AliasNames that an Object contains may be dynamic. For example, AliasNames may be added in an aggregating Server as underlying Servers become available or may be removed if a Server is no longer available.
<Alias> represents any number of instances of AliasNameType. Each instance shall have at least one AliasFor Reference to a Node. Multiple <Alias > instances can point to the same Node.
<SubAliasNameCategories> allows the nesting or structuring of AliasNames into hierarchical groupings.
An <Alias> can appear in more than one place in the hierarchy of AliasNameCategories.
The FindAlias Method allows a Client to obtain the list of Nodes that match the provided AliasName search string. The signature of this Method is specified below, the arguments are defined in Table 3.
Signature
FindAlias(
[in] String AliasNameSearchPattern,
[in] NodeId ReferenceTypeFilter,
[out] AliasNameDataType[] AliasNodeList
);
Table 3 - FindAlias Method Arguments
Argument |
Description |
AliasNameSearchPattern |
A string that can contain wild cards, use to find a list of AliasNames (see OPC 10000-4 - “Wildcard Characters” table for supported wildcards) |
ReferenceTypeFilter |
A NodeId that represent a ReferenceType (i.e. AliasFor or one of its subtypes) that restricts the search. Any ReferenceType includes all subtypes of that ReferenceType. |
AliasNodeList |
The returned list of AliasNameDataType. If no Nodes match the search string or have the appropriate ReferenceType, the list shall be empty. |
Method result codes are defined in Table 4
Table 4 - FindAlias Method Error Codes
Result Code |
Description |
Bad_InvalidArgument |
The input string is not a valid search sting |
Bad_UserAccessDenied |
The current user does not have the rights required. |
Bad_ResponseToLarge |
The response was to large to be returned, try new filter and repeat find |
|
|
The Method is formally defined in Table 5.
Table 5 - FindAlias Method AddressSpace definition
Attribute |
Value |
||||
BrowseName |
FindAlias |
||||
References |
Node Class |
BrowseName |
DataType |
TypeDefinition |
ModellingRule |
HasProperty |
Variable |
InputArguments |
Argument[] |
PropertyType |
Mandatory |
HasProperty |
Variable |
OutputArguments |
Argument[] |
PropertyType |
Mandatory |
It is important to note that there might be more than one entry for every AliasName. Multiple Servers might provide an equivalent object (such as a temperature sensor). This Method will return the AliasNames in order of preference. That is the Server will return what it recommends as the best match first followed by the next best match etc. The criteria for ordering are Server specific. The criteria might be based on the ServerStatus of the Server that contains the referenced Node, it might be load balancing of Servers, or it might be some other algorithm.
Clients should use the first usable entry in the list.
The following DataTypes are defined for the AliasNames model.
This DataType defines a structure that can contain an array of ExpandedNodeId for a single AliasName. Its elements are defined in Table 6. It will always have at least one entry in the ReferencedNodes array.
Table 6 - AliasNameDataType DataType structure
Name |
Type |
Description |
AliasNameDataType |
Structure |
|
AliasName |
QualifiedName |
The AliasName (BrowseName of the Node) |
ReferencedNodes |
ExpandedNodeId[] |
Its representation in the AddressSpace is defined in Table 7.
Table 7 – AliasNameDataType Definition
Attributes |
Value |
BrowseName |
AliasNameDataType |
The following References are defined for the AliasNames model.
This reference is a subtype of NonHierarchical References.
The semantic of this ReferenceType is to link AliasNameType instances to the Nodes they represent. The inverse reference is not required, i.e. the Nodes might not have a reference back to instance of AliasNameType.
The SourceNode of References of this type shall be an Object of type AliasNameType.
The TargetNode of this ReferenceType can be of any NodeClass.
Figure 2 provides an illustration of how this ReferenceType is used. It is defined in Table 8.
Attributes |
Value |
||
BrowseName |
AliasFor |
||
InverseName |
HasAlias |
||
Symmetric |
False |
||
IsAbstract |
False |
||
References |
NodeClass |
BrowseName |
Comment |
Subtype of NonHierarchicalReferences ReferenceType defined in OPC 10000-5 |
The following standard Objects are defined for maintaining the hierarchical structure of AliasNameCategories in a Server. Server vendors are free to add additional instances of AliasNameCategoryType under this hierarchy.
The Aliases Node is formally defined in Table 9.
Attribute |
Value |
|||
BrowseName |
Aliases |
|||
|
|
|||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
OrganizedBy by the Objects Folder defined in OPC 10000-5 |
||||
HasTypeDefinition |
ObjectType |
AliasNameCategoryType |
Defined in 6.3 |
|
|
|
|
|
|
This is the root folder for all alias related Objects. It can contain instances of AliasNameType Objects and / or instances of AliasNameCategoryType Objects.
If the Server supports ModelChange Events for AliasNames, this Node shall contain the NodeVersion Property. If a Server supports the NodeVersion Property for this Node, then it shall support the NodeVersion Property for all instances of AliasNameType and AliasNameCategoryType. A Client can check this required Node to determine if the Server supports ModelChangeEvents for AliasNames.
TagVariables is an instance of AliasNameCategoryType. TagVariables shall restrict instances of AliasNameType to those that have an AliasFor References that point to Variables. The TagVariables instance is formally defined in Table 10.
Table 10 – TagVariables definition
Attribute |
Value |
|||
BrowseName |
TagVariables |
|||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
OrganizedBy by the Aliases defined in 9.2 |
||||
HasTypeDefinition |
ObjectType |
AliasNameCategoryType |
Defined in 6.3 |
|
|
|
|
|
|
This is the root folder for AliasNameType instances that contain an AliasFor reference to Variables. It can contain additional AliasNameCategoryType Objects, which could be used to create a hierarchy. A single instance of AliasNameType can exist in more than one location in the Alias hierarchy.
Topics is an instance of AliasNameCategoryType. Topics shall restrict instances of AliasNameType to only have AliasFor References that point to PublishedDataSetType (or subtypes) instances (PublishedDataSetType is defined in OPC 10000-14). The Topics Node instance is formally defined in Table 11.
Attribute |
Value |
|||
BrowseName |
Topics |
|||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
OrganizedBy by the Aliases defined in 9.2 |
||||
HasTypeDefinition |
ObjectType |
AliasNameCategoryType |
Defined in 6.3 |
|
|
|
|
|
|
It can contain additional AliasNameCategoryType Objects, which could be used to create a hierarchy or other structure. A single instance of AliasNameType can exist in more than one location in the hierarchy, but all instances in the Topics hierarchy must point to an instance of a PublishedDataSetType.