[OPC UA] NodeID path changes on Client side (Data Sources Manager) — How to preserve Server-side hierarchy?

Hi everyone,

I’m working on a small-scale Smart Factory project using CODESYS-based PLCs (WAGO) and running into an OPC UA NodeID naming issue. Hope someone can point me in the right direction.

Project Architecture:

  • 5 subordinate PLCs, each acting as an OPC UA Server
  • 1 central PLC (WAGO Compact Controller 100) acting as an OPC UA Client via Data Sources Manager, aggregating data from all 5 PLCs
  • Each subordinate PLC also needs data from the other subordinate PLCs for inter-logic processing
  • The central PLC then acts as a second OPC UA Server, exposing selected variables to a Node-RED instance running locally on the same central PLC

Current Status:
All 5 PLCs are communicating successfully with the central PLC. The data is flowing correctly.

Problem — NodeID Naming:
On the subordinate PLC (e.g. Station1), I have a GVL named Production containing variables like Magazine1.SlotCount. The OPC UA Server exposes this as:

ns=2;s=Production.Magazine1.SlotCount

However, on the central PLC (OPC UA Client side, using Data Sources Manager), the mapped variable path appears as:

Station1.Symbol_Set.Magazine1.SlotCount

The Production prefix from the subordinate PLC is lost, and Symbol_Set (the Symbol Set name) is injected into the path instead.

What I want to achieve:

Station1.Production.Magazine1.SlotCount

What I’ve tried:

  • Renaming the Symbol Set on the server side
  • Wrapping variables in nested structs to add hierarchy
  • Adjusting GVL naming

None of these approaches produced the desired NodeID structure on the client side.

Questions:

  1. Is there a way to control the NodeID path that appears on the OPC UA Client side in CODESYS Data Sources Manager?
  2. Is the Symbol_Set layer in the client path hardcoded by CODESYS, or can it be customized?
  3. If this isn’t achievable natively, what is the recommended approach for maintaining a clean, meaningful NodeID hierarchy across multiple PLCs in this kind of architecture?

Any advice or alternative approaches would be greatly appreciated.

Thank you!