Posible to use an alias instead of OPCUA Identyfier?

Goof afternoon,

a customer asks if it is possible to replace the path of an OPCUA endpoint by an alias.
I mean, instead of Arp.Plc.Eclr/Program:Variable to use an alias.

Thank you,

Angel

Hi Angel, you can probably achieve this using a custom information model.

Information Models are part of the OPC UA standard, and some information is given in the PLCnext Info Center, here:

https://www.plcnext.help/te/Service_Components/OPC_UA_Server/OPCUA_External_information_models.htm

In order to create your own custom information model, you will probably need to use something like UaModeler from Unified Automation.

Dear Martin, Somehow, I managed to get my custom Information Model “MyPlant” to appear in UaExpert.

> This code was also _injected_ into my **CodeSet.xml** :  
> [Screenshot 2025-10-24 123323.png](https:\\/\\/forum.plcnext-community.net\\/uploads\\/G5TJ656AAJEV\\/screenshot-2025-10-24-123323.png)

<UAVariable NodeId="ns=1;i=6004" DataType="Int16" AccessLevel="3" BrowseName="1:int_datapoint" MinimumSamplingInterval="1.000000e+02">
        <DisplayName>int_datapoint</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
            <Reference IsForward="false" ReferenceType="HasComponent">ns=1;i=5003</Reference>
        </References>
        <Value>
            <uax:Int16>255</uax:Int16>
        </Value>
        <Extensions>
            <Extension>
                <AttributeSource xmlns="http://phoenixcontact.com/OpcUA/2019/NodeSetExtensions.xsd" GdsValueAttribute="Arp.Plc.Eclr/MainInstance.OPC_TREE.int_value"/>
            </Extension>
        </Extensions>
    </UAVariable>

Here’s a screenshot from UaExpert: As you can see, the value from the PLCnext program doesn’t propagate correctly to the node in MyPlant.
Could you please suggest some possible causes for this behavior?
Thank you very much in advance!
Teng

Since the initial discussion above, the OPC UA Server now supports Aliases:

Alias Names The functionality of Alias Names is to reference one or multiple nodes in a server address space using a custom name.\n The eUA Server supports references to nodes in its own address space according to AliasNames used within a single Server. Does this help?

Since the initial discussion above, the OPC UA Server now supports Aliases:</p>[https://www.plcnext.help/te/Communication_interfaces/OPC_UA/Alias_Names.htm</a></p>Does this help?</p>

Thank you Martin for your quick reply. I am very grateful that experts like you occasionally answer our questions about using PLCnext. I would still like to know why the added block does not work.

Forum - PLCnext Community PLCnext Technology from Phoenix Contact is a unique, open ecosystem for modern automation that is capable of meeting all the challenges of the IoT world. Dear Martin,

this is my nodeset.xml created from UaModeler using the alias methode.

<?xml version="1.0" encoding="utf-8"?>
<UANodeSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ua="http://unifiedautomation.com/Configuration/NodeSet.xsd" xmlns="http://opcfoundation.org/UA/2011/03/UANodeSet.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s1="http://yourorganisation.org/alias_name_test/Types.xsd" xmlns:uax="http://opcfoundation.org/UA/2008/02/Types.xsd">
    <NamespaceUris>
        <Uri>http://yourorganisation.org/alias_name_test/</Uri>
    </NamespaceUris>
    <Aliases>
        <Alias Alias="Organizes">i=35</Alias>
        <Alias Alias="HasTypeDefinition">i=40</Alias>
        <Alias Alias="AliasFor">i=23469</Alias>
    </Aliases>
    <Extensions>
        <Extension>
            <ua:ModelInfo Tool="UaModeler" Hash="ZIvDkSJm50AHFo3q9Es68Q==" Version="1.8.1"/>
        </Extension>
    </Extensions>
    <UAObject NodeId="ns=1;i=5003" BrowseName="1:bool_datapoint">
        <DisplayName>bool_datapoint</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=23455</Reference>
            <Reference IsForward="false" ReferenceType="Organizes">i=23479</Reference>
            <Reference ReferenceType="AliasFor">ns=6;s=Arp.Plc.Eclr/MainInstance.OPC_TREE.bool_value</Reference>
        </References>
    </UAObject>
</UANodeSet>

I did not see any alias in UaExpert. This namespace „http://yourorganisation.org/alias_name_test/“ is also not appeared. What have I done wrong here? In the Info Center you are running the alias in a OpcUA.Test server, which is not the Arp.Plc.Eclr normal PLC-programm runs.

=== UPDATE ===

After a Type 1 reset, all the things I „messed up“ in the PLCnext are cleared. Both methods work!
I will paste the XML file here as a reference for anyone who has the same problem. This was created using UaModeler with the injection code in the part.

<?xml version="1.0" encoding="utf-8"?>
<UANodeSet xmlns:ua="http://unifiedautomation.com/Configuration/NodeSet.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:uax="http://opcfoundation.org/UA/2008/02/Types.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s1="http://yourorganisation.org/custom_nodeset/Types.xsd" xmlns="http://opcfoundation.org/UA/2011/03/UANodeSet.xsd">
    <NamespaceUris>
        <Uri>http://yourorganisation.org/custom_nodeset/</Uri>
    </NamespaceUris>
    <Aliases>
        <Alias Alias="Boolean">i=1</Alias>
        <Alias Alias="Organizes">i=35</Alias>
        <Alias Alias="HasTypeDefinition">i=40</Alias>
        <Alias Alias="HasComponent">i=47</Alias>
    </Aliases>
    <Extensions>
        <Extension>
            <ua:ModelInfo Hash="vHBODuwxGgpHwftAdx+POQ==" Version="1.8.1" Tool="UaModeler"/>
        </Extension>
    </Extensions>
    <UAObject BrowseName="1:MyDevice" NodeId="ns=1;i=5003">
        <DisplayName>MyDevice</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=58</Reference>
            <Reference ReferenceType="Organizes" IsForward="false">i=85</Reference>
            <Reference ReferenceType="HasComponent">ns=1;i=6001</Reference>
        </References>
    </UAObject>
    <UAVariable AccessLevel="3" BrowseName="1:bool_datapoint" NodeId="ns=1;i=6001" DataType="Boolean">
        <DisplayName>bool_datapoint</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
            <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=5003</Reference>
        </References>
        <Value>
            <uax:Boolean>false</uax:Boolean>
        </Value>
        <Extensions>
            <Extension>
                <AttributeSource xmlns="http://phoenixcontact.com/OpcUA/2019/NodeSetExtensions.xsd" GdsValueAttribute="Arp.Plc.Eclr/MainInstance.OPC_TREE.bool_value"/>
            </Extension>
        </Extensions>
    </UAVariable>
</UANodeSet>

I’m glad that you have a working solution.

I’m no expert on OPC UA Information Models, but it should also be possible to map an existing OPC UA variable in the PLCnext Engineer project to a variable in your model using something like this:

<Reference ReferenceType="HasComponent">ns=6;s=Arp.Plc.Eclr/MainInstance.OPC_TREE.int_value</Reference>

Note that the variable referenced here must be a variable in the PLCnext Engineer project with the „OPC“ attribute checked, so you should also be able to see this referenced variable in UaExpert. If you have more questions about how to create OPC UA information models - or any other technical support questions related to PLCnext Technology - please contact your local Phoenix Contact office.