Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Klaus Landsdorf <kl@iniationware.com> Co-authored-by: Marc Schier <marcschier@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com> Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
MachineryServer
A self-contained OPC UA server that publishes one simulated hydraulic press using every part of the OPC 40001 series.
dotnet run --project samples/Machinery/MachineryServer -- --port 62546
What the address space contains
The press is Organizes-referenced from the OPC 40001-1 Machines folder —
which hangs off Objects, not off the Device Integration DeviceSet. Below it:
| Part | What the sample builds |
|---|---|
| 40001-1 | Identification, Monitoring (item state, operation mode, health, process, consumption), Components with one component and its lifetime counters, MachineryEquipment with one die, Notifications, OperationCounters |
| 40001-2 | HydraulicOilTemperature, a process value over PADIM's analog-signal model, with limits and a setpoint |
| 40001-3 | JobManagement, whose eleven job verbs come from the ISA-95 Job Control V2 model and bind to the in-memory provider |
| 40001-4 | CompressedAirSupply, tied to the well-known CompressedAir carrier with the Energy model's Contains reference |
| 40001-101 | ResultManagement, including the ResultTransfer download path |
What the simulation does
PressSimulation runs one stroke every four seconds. Each
stroke moves MachineryItemState to Executing and back, sets
MachineryOperationMode to Processing, and publishes a result whose CSV
payload a client downloads through GenerateFileForRead.
State only ever moves from the server: OPC 40001-1 declares no cause method on either state machine — the whole Machinery NodeSet contains no method at all — so a client observes state and cannot request it.
Where the numbers come from
PressDatasheet holds every published value, so the
address space and the simulation cannot disagree.