This specification provides a definition of AliasNamesfunctionality. AliasNamesprovide a manner of configuring and exposing an alternate well-defined name for any Nodein 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 Serverthat supports AliasNamesprovides a lookup Methodthat will translate anAliasName to a NodeIdof the related Nodeon a Server. An aggregating Servercan collect these AliasNamesfrom multiple Serversand provide a lookup Methodto allow Clientapplications to discover NodeIdson a system wide basis. An aggregating Servermight also define AliasNamesfor Nodesin other Serversthat do not support AliasNames.A GDS may be constructed that would automatically aggregate all AliasNamesthat are defined on any Serverthat 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 AliasNamesis 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-14apply.
All used terms are italicizedin the specification.
alternate well-defined name for any Nodein 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 Serversare 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 Serversexist and these Serversmight be dynamic, in that new Serverscan 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 Serverscan 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 Servermight exist, where the aggregating Serverwould provide the names as well as the lookup for the underlying Server. This aggregating Servermight also provide other functionality such as aggregation of values, but it might only provide the name definitions and resolutions. The underlying Servermight have no knowledge of the name.
An overview of this object model is provided in section 5. Figure 1illustrates the overall AliasNameObject Model
Instances of the AliasNameType ObjectTypeprovide alternate names for Nodes. The AliasNameTypeis 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 |
||||||
ConformanceUnits |
||||||
AliasName Base |
This ObjectTypehas no Propertiesor Variables. The BrowseNameof the Objectis used as the alias name. The string part of the BrowseNameshall be the DisplayNamewith an empty locale id andno other locale shall be provided. This Objectshall have at least one AliasFor Reference(or sub-type).
AliasNameCategoryTypeinstances are used to organize the AliasNameTypeinstances that a Serverdefines. They can also include instances of AliasNameCategoryTypeto allow hierarchical groupings of AliasNames. It includes a mandatory Methodfor finding instances of AliasNameTypein the AliasName hierarchy, starting at this instance of AliasNameCategoryType. For example, if the Methodcall is made on the Aliases AliasNameCategoryTypeinstance (see 9.2), it would apply the AliasNameSearchPattern to all AliasNamesthat are defined under TagVariables, Topicsand any other AliasNameCategoryTypeinstance in the hierarchy.
The AliasNameCategoryTypeis 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 FolderTypefrom OPC 10000-5 |
|||||
Organizes |
Object |
<Alias> |
|
AliasNameType |
OptionalPlaceholder |
Organizes |
Object |
<SubAliasNameCategories> |
|
AliasNameCategoryType |
OptionalPlaceholder |
HasComponent |
Method |
FindAlias |
Defined in 6.3.2 |
Mandatory |
|
|
|
|
|
|
|
Conformance Units |
|||||
AliasName Base |
The list of AliasNamesthat an Objectcontains may be dynamic. For example, AliasNamesmay be added in an aggregating Serveras underlying Serversbecome available or may be removed if a Serveris no longer available.
<Alias> represents any number of instances of AliasNameType. Each instance shall have at least one AliasFor Referenceto aNode. Multiple <Alias> instances can point to the same Node.
<SubAliasNameCategories> allows the nesting or structuring of AliasNamesinto hierarchical groupings.
An <Alias> can appear in more than one place in the hierarchy of AliasNameCategories.
The FindAlias Methodallows a Clientto obtain the list of Nodesthat match the provided AliasNamesearch string. The signature of this Methodis 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 NodeIdthat represent a ReferenceType (i.e. AliasFor or one of its subtypes) that restricts the search. Any ReferenceTypeincludes all subtypes of that ReferenceType. |
AliasNodeList |
The returned list of AliasNameDataType. If no Nodesmatch the search string or have the appropriate ReferenceType, the list shall be empty. |
Methodresult 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 string |
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 Methodis 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 Serversmight provide an equivalent object (such as a temperature sensor). This Methodwill return the AliasNamesin order of preference. That is the Serverwill return what it recommends as the best match first followed by the next best match etc. The criteria for ordering are Serverspecific. The criteria might be based on the ServerStatusof the Serverthat contains the referenced Node, it might be load balancing of Servers,or it might be some other algorithm.
Clientsshould use the first usable entry in the list.
The following DataTypesare defined for the AliasNamesmodel.
This DataTypedefines a structure thatcancontain an array of ExpandedNodeIdfor a single AliasName. Its elements are defined in Table 6. It will always have at least one entry in the ReferencedNodesarray.
Table 6– AliasNameDataType DataType structure
Name |
Type |
Description |
AliasNameDataType |
Structure |
|
AliasName |
QualifiedName |
The AliasName(BrowseNameof the Node) |
ReferencedNodes |
ExpandedNodeId[] |
Its representation in the AddressSpaceis defined in Table 7.
Table 7– AliasNameDataType Definition
Attribute |
Value |
||||
BrowseName |
AliasNameDataType |
||||
References |
Node Class |
BrowseName |
DataType |
TypeDefinition |
Modelling Rule |
Subtype of the Structuredefined in OPC 10000-5 |
|||||
Conformance Units |
|||||
AliasName Base |
The following Referencesare defined for the AliasNamesmodel.
This reference is a subtype of NonHierarchical References.
The semantic of this ReferenceTypeis to link AliasNameTypeinstances to the Nodes they represent. The inverse reference is not required, i.e. the Nodesmight not have a reference back to instance of AliasNameType.
The SourceNodeof Referencesof this type shall be anObject of typeAliasNameType.
The TargetNodeof this ReferenceTypecan be of any NodeClass.
Figure 2provides an illustration of how this ReferenceTypeis 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 |
|||
ConformanceUnits |
|||
AliasName Base |
The following standard Objectsare defined for maintaining the hierarchical structure of AliasNameCategoriesin a Server. Servervendors are free to add additional instances of AliasNameCategoryTypeunder this hierarchy.
The Aliases Nodeis 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 |
|
ConformanceUnits |
||||
AliasName Hierarchy |
This is the root folder for all alias related Objects. It can contain instances of AliasNameType Objectsand / or instances of AliasNameCategoryType Objects.
If the Serversupports ModelChangeEvents for AliasNames, this Nodeshall contain the NodeVersion Property. If a Serversupports the NodeVersion Propertyfor this Node, then it shall support the NodeVersion Propertyfor all instances of AliasNameType and AliasNameCategoryType.A Clientcan check this required Nodeto determine if the Serversupports ModelChangeEventsfor AliasNames.
TagVariablesis an instance of AliasNameCategoryType. TagVariablesshall restrict instances of AliasNameTypeto those that have an AliasFor Referencesthat 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 |
|
ConformanceUnits |
||||
AliasName Category Tags |
This is the root folder for AliasNameTypeinstances that contain an AliasForreference to Variables.It can contain additional AliasNameCategoryType Objects, which could be used to create a hierarchy. A single instance of AliasNameTypecan exist in more than one location in the Alias hierarchy.
Topicsis an instance of AliasNameCategoryType. Topicsshall restrict instances of AliasNameTypeto only have AliasFor Referencesthat point to PublishedDataSetType(or subtypes) instances (PublishedDataSetType is defined in OPC 10000-14). The Topics Nodeinstance 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 |
|
ConformanceUnits |
||||
AliasName Category Topics |
It can contain additional AliasNameCategoryType Objects, which could be used to create a hierarchy or other structure. A single instance of AliasNameTypecan exist in more than one location in the hierarchy, but all instances in the Topicshierarchy must point to an instance of a PublishedDataSetType.