|
ProtoCore v0.0.1
Deterministic, zero-heap network stack for embedded targets
|
Layer: L7-Application ยท Flags: PC_ENABLE_OPCUA + PC_ENABLE_UMATI
Turns the board into a umati machine-tool server. umati ("universal machine technology interface", VDW / OPC Foundation, OPC 40501-1) is the OPC UA companion specification for machine tools: it standardizes how a machine reports its identity and live state so any umati / OPC UA client reads the same structure across every vendor. This example exposes that model over OPC UA on TCP/4840.
A MachineTool object under the Objects folder, with the standard umati components (faithful BrowseNames per OPC 40501-1):
You fill a UmatiMachineTool struct and refresh its live fields each loop() from your machine I/O; the server reads straight out of it. pc_umati_install(&mt) binds the struct and registers the OPC UA Browse + Read resolvers - that is the whole wiring.
One companion-spec model, one struct. The values carry the standard umati BrowseNames, so a generic OPC UA client discovers and reads them the same way it would on a real CNC. It is a read-only monitoring model (the machine reports, the client observes), built on the OPC UA Binary server from example OpcUa.
SSID / PASSWORD at the top of Umati.ino.build_opt.h for the Arduino IDE): Any OPC UA client works. With python asyncua:
Browse from Objects to MachineTool, then into Monitoring -> Spindle -> RotationSpeed and read it a few times - it tracks the simulated machine. UaExpert and the umati dashboard browse the same tree.
A single Channel / Spindle and three linear axes are exposed (the common embedded machine). The values are faithfully named per OPC 40501-1; full companion-spec TypeDefinitions and advertising the MachineTool namespace in the server's NamespaceArray (which needs array-Variant support in the base OPC UA server) are a documented follow-on - a generic OPC UA client still browses the structure and reads every value by BrowseName today.