AML — AutomationML
AutomationML — XML-based engineering-data exchange between CAD/CAE tools and OPC UA. Two parallel registrars (AMLBaseTypes, AMLLibraries) covering the spec's split publication. NodeIds only at the runtime level.
OPC UA companion specification for AutomationML — the XML-based engineering-data exchange used by CAD/CAE tools (Eplan, Siemens TIA, Beckhoff TwinCAT). The OPC Foundation publishes AML in two NodeSet2.xml files; the package ships a registrar for each.
What's in the package
| Artefact | Count |
|---|---|
| Enums | — |
| DTOs | — |
| Codecs | — |
| Registrars | 2 (AMLBaseTypesRegistrar, AMLLibrariesRegistrar) |
NodeIds-only. The spec defines hundreds of nodes (object types, reference types, view nodes) but no custom DataTypes — so no codecs and no enums at the package level.
Loading
use PhpOpcua\Client\ClientBuilder;
use PhpOpcua\Nodeset\AML\AMLBaseTypesRegistrar;
use PhpOpcua\Nodeset\AML\AMLLibrariesRegistrar;
$client = ClientBuilder::create()
->loadGeneratedTypes(new AMLBaseTypesRegistrar())
->loadGeneratedTypes(new AMLLibrariesRegistrar())
->connect('opc.tcp://aml-gateway.local:4840');
Load both unless your application only cares about base types. Both registrars are no-ops on the runtime registry — they exist for the dependency-cascade contract.
Direct dependencies
None — AML is a root spec.
What the constants give you
The AML node tree mostly mirrors AutomationML's own
CAEXFile/InstanceHierarchy/RoleClassLibrary/SystemUnitClassLibrary
structure. Use AMLBaseTypesNodeIds::* and
AMLLibrariesNodeIds::* to navigate it without string-typing the
NodeIds.
Used by
No other spec in the package depends on AML directly. AML is the "top of the stack" for tools — the values flow into AML servers from engineering tools, and downstream applications consume the AML structure via browse + read.