Companion specification · Tier 1

Machinery ProcessValues

DocumentOPC 40001-x
Version1.00.0
Published2023-05-01
Namespacehttp://opcfoundation.org/UA/Machinery/ProcessValues/
SectorMachinery

Machinery ProcessValues is the small Machinery companion namespace that standardises how a machine exposes analog process values: the measured value with its engineering unit, its range and its instrument range, in a fixed structure rather than as a bare scaled integer on a vendor tag.

Where it sits in the stack

It is one of the optional namespaces around the Machinery base layer, alongside Result, Jobs and Energy, and it leans on the core Part 8 data-access types for units and ranges. Sector models and vendors use it to publish temperatures, pressures, speeds and flows in a way a client can interpret without a per-machine scaling table. It has not been revised since 1.00.0 in May 2023.

The types that matter

TypeWhat it carries
ProcessValueTypeThe container object for one process value on a machine: the analog signal itself plus the identifying information that says which physical quantity it is.
AnalogUnitRangeTypeThe core Part 8 variable type that a standardised process value is built from. It carries EngineeringUnits, EURange and InstrumentRange as properties on the value node itself.
AnalogUnitTypeThe lighter core variant, with EngineeringUnits but no mandatory EURange. Common where a vendor publishes a unit but no scaling limits.
EUInformationThe DataType carrying the engineering unit as a UNECE Recommendation 20 code plus namespace URI, display name and description. This is what makes degC and degF machine-distinguishable.
RangeThe low and high pair used for EURange and InstrumentRange. EURange is the meaningful engineering range; InstrumentRange is what the sensor can physically report.
AnalogItemTypeThe older core data-access type still used by many vendors for the same purpose. Expect to meet it instead of the ProcessValues structure on machines that predate the model.

Using it on a real machine

  1. Check whether the namespace is loaded at allRead NamespaceArray for http://opcfoundation.org/UA/Machinery/ProcessValues/. Most machines that claim Machinery support do not load this namespace, and expose analog values as plain Doubles instead.
  2. Read the unit, not just the valueRead the EngineeringUnits property alongside the value and store the UNECE unit code with your samples. A pressure series with no unit becomes unusable the moment a second machine uses different units.
  3. Use EURange to set deadbandsA percent deadband is defined against EURange, so a value with no EURange cannot use one. Fall back to an absolute deadband expressed in the value's own unit.
  4. Subscribe with a deadband, do not pollAnalog values are the main source of subscription overload. Set a deadband that reflects real process significance and a publishing interval matched to your analytics cadence, typically one second for OEE-adjacent work.
  5. Record status, not only valueKeep the StatusCode with each sample. An analog value carrying UncertainSensorNotAccurate or BadOutOfService is not a number you should average into a KPI.

What it gives you for OEE

This model is a supporting layer, not an OEE source: it carries no state, no counters and no reasons. What it buys you is trustworthy process context around the OEE numbers, which matters in two places. First, performance losses often correlate with a process value drifting (speed reduction, temperature out of band), and self-describing units make that comparison possible across machines. Second, quality work needs the process value at the moment a part was produced, and a value with a real unit and range can be compared to a specification without a per-machine conversion table. If a vendor gives you only raw analog tags, expect to maintain scaling metadata by hand for the life of the installation.

Try it free: There is no public server known to expose this namespace specifically. The practical route is local: run the umati sample server (docker run -d -p 4840:4840 ghcr.io/umati/sample-server:main) to browse the surrounding Machinery structure, and for the analog pattern itself use any simulation server that exposes core AnalogItemType or AnalogUnitRangeType nodes, such as opc.tcp://opcuademo.sterfive.com:26543 or opc.tcp://milo.digitalpetri.com:62541/milo, where you can read EngineeringUnits and EURange directly.

Gotchas

  • Adoption is thin. Many machines that implement Machinery skip this namespace entirely, so plan for raw analog tags as the likely case.
  • EURange is not always present, and a percent deadband silently has no defined basis without it.
  • Engineering units must be UNECE Recommendation 20 codes. Vendors sometimes populate only the DisplayName, which looks fine in a browser and is useless to a program.
  • Values that arrive with Uncertain or Bad status still arrive. Filter on StatusCode before aggregating, or your averages will quietly include substitute values.
Verify before you rely on this: Only the analog data-access pattern is confirmed here. The exact type, component and optional-node names in the ProcessValues namespace should be read from Opc.Ua.Machinery.ProcessValues.NodeSet2.xml for the version your machine ships before you design against them.

Once the machine speaks a companion spec, the OEE mapping is portable across vendors, which is the point at which analytics stops being a per-machine project.

See Jemba →

Last verified 7 September 2026 against OPC UA 1.05.07. Version and publication date read from the released nodeset. OPC UA Connect is an educational resource and is not affiliated with the OPC Foundation.

Free download
OPC UA Machine Data → OEE Mapping Kit
Which nodes to subscribe to, how they become Availability, Performance and Quality, and which companion specification already gives you the answer, so you stop inventing tags.
Get the free mapping kit →
Free, no course, no login