Specifications
The 51 companion specifications shipped at v4.3.0 — counts, dependencies, registrar class names. Click through to a spec for the details and the load snippet.
Fifty-one companion specifications. The table below shows for each: namespace, enum count, DTO count, codec count, registrar class names, and direct (non-transitive) dependencies.
| Spec | Enums | DTOs | Codecs | Registrar(s) | Depends on |
|---|---|---|---|---|---|
| ADI | 3 | — | — | AdiRegistrar |
DI |
| AMB | 1 | 2 | 2 | AMBRegistrar |
— |
| AML | — | — | — | AMLBaseTypesRegistrar, AMLLibrariesRegistrar |
— |
| AutoID | 6 | 19 | 19 | AutoIDRegistrar |
DI |
| BACnet | 36 | 44 | 44 | BACnetRegistrar |
— |
| CAS | 23 | 1 | 1 | CASRegistrar |
DI, IA, Machinery |
| CNC | 6 | 1 | 1 | CNCNodeSetRegistrar |
— |
| CommercialKitchenEquipment | 24 | — | — | CommercialKitchenEquipmentRegistrar |
DI |
| CranesHoists | 4 | — | — | CranesHoistsRegistrar |
DI, Machinery, Robotics |
| CSPPlusForMachine | — | — | — | CSPPlusForMachineRegistrar |
DI |
| CuttingTool | — | 1 | 1 | CuttingToolRegistrar |
DI, IA, Machinery, MachineTool |
| DEXPI | 29 | — | — | DEXPIRegistrar |
— |
| DI | 8 | 11 | 11 | DiRegistrar, DiPackageMetadataRegistrar |
— |
| ECM | 1 | 5 | 5 | ECMRegistrar |
DI, IA |
| FDI | 3 | 6 | 6 | Fdi5Registrar, Fdi7Registrar |
DI |
| FDT | 11 | 3 | 3 | FDTNodeSetRegistrar |
DI |
| GDS | — | 1 | 1 | GdsRegistrar |
— |
| GPOS | — | 4 | 4 | GPOSRegistrar |
RSL |
| I4AAS | 10 | 1 | 1 | I4AASRegistrar |
— |
| IA | 4 | 1 | 1 | IARegistrar |
DI |
| IOLink | 1 | — | — | IOLinkRegistrar, IOLinkIODDRegistrar |
DI |
| IREDES | 5 | 2 | 2 | IREDESRegistrar |
— |
| ISA95 | 1 | 4 | 4 | OpcISA95Registrar |
— |
| LADS | 1 | 2 | 2 | LADSRegistrar |
AMB, DI, Machinery |
| LaserSystems | — | — | — | LaserSystemsRegistrar |
DI, IA, Machinery, MachineTool |
| Machinery | — | — | — | MachineryRegistrar |
DI, IA |
| MachineTool | 10 | — | — | MachineToolRegistrar |
DI, IA, Machinery |
| MachineVision | 2 | 14 | 14 | MachineVisionRegistrar |
— |
| MDIS | 12 | 1 | 1 | OpcMDISRegistrar |
— |
| MetalForming | — | 2 | 2 | MetalFormingRegistrar |
DI, IA, Machinery, MachineTool, PADIM |
| MTConnect | 25 | 3 | 3 | MTConnectRegistrar |
— |
| Onboarding | — | 6 | 6 | OnboardingRegistrar |
GDS |
| PackML | 1 | 6 | 6 | PackMLRegistrar |
— |
| PADIM | 3 | 1 | 1 | PADIMRegistrar, IRDIRegistrar |
DI |
| PAEFS | 4 | — | — | PAEFSRegistrar |
DI, Machinery, PADIM |
| PNEM | 4 | 5 | 5 | PnEmRegistrar |
DI |
| POWERLINK | 4 | 3 | 3 | POWERLINKRegistrar |
DI |
| Powertrain | — | — | — | PowertrainRegistrar |
DI, Machinery |
| PROFINET | 18 | 2 | 2 | PnRegistrar |
— |
| Pumps | 18 | 1 | 1 | PumpsRegistrar |
DI, Machinery |
| Robotics | 4 | — | — | RoboticsRegistrar |
DI, IA |
| RSL | — | — | — | RSLRegistrar |
— |
| Safety | 2 | 3 | 3 | SafetyRegistrar |
— |
| Scales | 6 | 5 | 5 | ScalesRegistrar |
DI, IA, Machinery, PackML |
| Scheduler | 3 | 11 | 11 | SchedulerRegistrar |
— |
| Sercos | — | — | — | SercosRegistrar |
DI |
| Shotblasting | — | — | — | ShotblastingRegistrar |
DI, Machinery |
| TMC | 11 | 20 | 20 | TMCRegistrar |
DI, PackML |
| Weihenstephan | 2 | — | — | WeihenstephanRegistrar |
DI, Machinery, PackML |
| Woodworking | 3 | 2 | 2 | WoodworkingRegistrar |
DI, Machinery |
| WoT | — | — | — | WotConRegistrar |
— |
Totals at v4.3.0: 309 enums, 193 DTOs, 193 codecs, 56 registrars (some specs ship two), 51 specs.
Reading the table
- Enums / DTOs / Codecs — counts of files in each category for
that spec.
—means none. - Registrar(s) — the class name(s) under
PhpOpcua\Nodeset\<Spec>\. The directory name is always the spec name in PascalCase; the registrar class may differ. See What gets generated — naming inconsistencies. - Depends on — direct (non-transitive) dependencies declared
by the registrar's
dependencyRegistrars(). Loading the spec vialoadGeneratedTypes()pulls these in (and recursively their own dependencies) unlessonly: trueis passed. See Dependency resolution.
The dependency root specs
A handful of specs sit at the root of the dependency graph — they do not depend on anything else and are pulled in by many downstream specs.
| Root spec | Pulled in by |
|---|---|
DI |
Most of the operational specs: ADI, AutoID, CAS, CommercialKitchenEquipment, CranesHoists, CSPPlusForMachine, CuttingTool, ECM, FDI, FDT, IA, IOLink, LADS, LaserSystems, Machinery, MachineTool, MetalForming, PAEFS, PADIM, Pumps, PNEM, POWERLINK, Powertrain, Robotics, Scales, Sercos, Shotblasting, TMC, Weihenstephan, Woodworking. (Onboarding depends on GDS, but GDS has no upstream dependencies, so the Onboarding → GDS chain does not pull DI in.) |
IA |
Operational specs that extend it: CAS, CuttingTool, ECM, LaserSystems, Machinery, MachineTool, MetalForming, Robotics, Scales |
Machinery |
CAS, CranesHoists, CuttingTool, LADS, LaserSystems, MachineTool, MetalForming, PAEFS, Powertrain, Pumps, Scales, Shotblasting, Weihenstephan, Woodworking |
MachineTool |
CuttingTool, LaserSystems, MetalForming |
PackML |
Scales, TMC, Weihenstephan |
PADIM |
MetalForming, PAEFS |
If your application loads several "downstream" specs, the cascade
brings the roots in transitively. You almost never load DI
explicitly — but it is in the loaded set for nearly every real
deployment.
Picking specs for your deployment
Start from what the server publishes:
$client = ClientBuilder::create()->connect('opc.tcp://your-server:4840');
foreach ($client->read('i=2255')->getValue() as $idx => $uri) {
echo "ns=$idx → $uri\n";
}
Match the URIs the server lists against the OPC Foundation's
companion-spec URIs (the UA-Nodeset
directory naming is a strong hint — Robotics/ → http://opcfoundation.org/UA/Robotics/).
Load the registrars for those specs only.
The non-standard registrar names
For convenience, the registrar class names that do not follow
<Spec>Registrar in PascalCase:
| Spec | Class name |
|---|---|
DI |
DiRegistrar (also DiPackageMetadataRegistrar) |
ISA95 |
OpcISA95Registrar |
MDIS |
OpcMDISRegistrar |
PROFINET |
PnRegistrar |
PNEM |
PnEmRegistrar |
PADIM |
PADIMRegistrar + IRDIRegistrar |
CNC |
CNCNodeSetRegistrar |
WoT |
WotConRegistrar |
Bookmark this table; IDE autocomplete handles the rest.