OPC UA address space: nodes, classes, attributes, references

How an OPC UA server organizes information: the eight NodeClasses, their attributes, references between nodes and namespaces.

Nodes and NodeClasses

Everything in a server is a node. Each node has a NodeClass that defines which attributes it has:

NodeClassValuePurposeExample
Object1Container representing a thingMotor1, Server, folder Objects
Variable2Holds a valueMotor1.Speed, ServerStatus.CurrentTime
Method4Callable functionMotor1.Start()
ObjectType8Type of objectsMotorType, FolderType
VariableType16Type of variablesAnalogItemType
ReferenceType32Kind of relationHasComponent, Organizes
DataType64Type of valuesDouble, a vendor structure
View128Subset of the address spacemaintenance view

Attributes

All nodes share NodeId, NodeClass, BrowseName, DisplayName, Description, WriteMask. Variables add the attributes you work with every day:

Attribute (id)Meaning
Value (13)Current value with status and timestamps (a DataValue)
DataType (14)NodeId of the data type, e.g. i=11 Double
ValueRank (15)−1 scalar, 1 one-dimensional array, n > 1 n dimensions, 0 one or more dimensions, −2 any, −3 scalar or one dimension
AccessLevel (17)Bits: CurrentRead, CurrentWrite, HistoryRead…
UserAccessLevel (18)The same bits for the current user
MinimumSamplingInterval (19)How fast the server can sample the value
Historizing (20)Whether the server records history

References

Nodes are connected by typed references. The common ones:

  • Organizes — folder structure (Objects → Plant → Line1);
  • HasComponent — part of an object (Motor1 → Speed);
  • HasProperty — metadata (Speed → EngineeringUnits, EURange);
  • HasTypeDefinition — instance → its type (Motor1 → MotorType);
  • HasSubtype — type hierarchy.

Browsing is following references from a starting node, usually Objects (i=85).

Namespaces

Each node belongs to a namespace identified by a URI. The server publishes the list in Server.NamespaceArray (i=2255); the position in this array is the namespace index used in NodeIds. Index 0 is always http://opcfoundation.org/UA/ (standard nodes), index 1 is the server's local namespace; vendors and companion specifications add further URIs.

Practical consequences

  • A BrowseName is not unique — the NodeId is.
  • Writing fails with BadNotWritable when CurrentWrite is not set in AccessLevel, with BadUserAccessDenied when only UserAccessLevel forbids it.
  • Types make clients generic: a SCADA faceplate for MotorType works for every motor instance.

Loading the map…

Sources

  1. OPC 10000-3 Part 3: Address Space Model (v1.05) — OPC Foundation
  2. OPC 10000-5 Part 5: Information Model (v1.05) — OPC Foundation
  3. OPC 10000-6 Part 6: Mappings (v1.05) — OPC Foundation

Updated 2026-10-02