|
ProtoCore v0.0.1
Deterministic, zero-heap network stack for embedded targets
|
Layer: L7-Application ยท Flags: PC_ENABLE_OPCUA + PC_ENABLE_EUROMAP77
Turns the board into an EUROMAP 77 injection-molding-machine (IMM) server. EUROMAP 77 (published as OPC 40077, with shared types/enums from EUROMAP 83 / OPC 40083) is the OPC UA companion specification for injection molding machines talking to a MES: it standardizes how an IMM reports its identity, status, and the active job's live production counters so any OPC UA / MES client reads the same structure across every machine vendor. This example exposes that model over OPC UA on TCP/4840 - the plastics-industry twin of example Umati (machine tools) and Robotics.
An IMM_MES_Interface object under the Objects folder, with the standard EUROMAP 77 components (faithful BrowseNames):
You fill an EmImm struct and refresh its live fields each loop() from your machine I/O; the server reads straight out of it. pc_em77_install(&imm) binds the struct and registers the OPC UA Browse + Read resolvers - that is the whole wiring. The production counters are faithful UInt64 (EUROMAP 77 defines them 64-bit), served through the OPC UA Variant's UInt64 encoding.
One companion-spec model, one struct. The values carry the standard EUROMAP 77 BrowseNames, so a generic OPC UA / MES client discovers and reads them the same way it would on a real molding machine. It is a read-only monitoring model (the machine reports, the MES observes), built on the OPC UA Binary server from example OpcUa.
SSID / PASSWORD at the top of Euromap77.ino.build_opt.h for the Arduino IDE): Any OPC UA client works. With python asyncua:
Browse from Objects to IMM_MES_Interface, then into Jobs -> ActiveJobValues -> JobCycleCounter and read it a few times - it climbs as the simulated machine runs. UaExpert and open62541 browse the same tree; the UInt64 counters decode without narrowing.
One IMM with its active job is exposed (the common single-machine MES feed). The values are faithfully named per EUROMAP 77; full companion-spec TypeDefinitions, methods, file/dataset transfer, and the multi-cardinality arrays (InjectionUnits, Moulds) are a documented follow-on - a generic OPC UA client still browses the structure and reads every value by BrowseName today. Like Umati / Robotics, one companion model is active per server build (they share the single OPC UA read/browse handler).