MTConnect: EVENT enumerations + DATA_SET/TABLE support #650

Closed
opened 2026-10-08 18:51:37 -04:00 by dohertj2 · 1 comment
Owner

Split out of #613 (low priority). (1) EVENT DataItems with controlled vocabularies (Execution, ControllerMode, ...) are served as Strings; modelling them as OPC UA enumerations needs a per-type vocabulary table that vendors extend, plus a fallback for unknown values. (2) MTConnect 2.x DATA_SET / TABLE observations (Entry key/value children) currently read BadNotSupported; options: expose as String JSON, or structured/array nodes. Both documented as unsupported in docs/drivers/MTConnect.md (feature status table).
Acceptance: decide representation, implement in MTConnectObservationIndex/StreamsParser, wire test against the fixture. Not scheduled.

Split out of #613 (low priority). (1) EVENT DataItems with controlled vocabularies (Execution, ControllerMode, ...) are served as Strings; modelling them as OPC UA enumerations needs a per-type vocabulary table that vendors extend, plus a fallback for unknown values. (2) MTConnect 2.x DATA_SET / TABLE observations (Entry key/value children) currently read BadNotSupported; options: expose as String JSON, or structured/array nodes. Both documented as unsupported in docs/drivers/MTConnect.md (feature status table). Acceptance: decide representation, implement in MTConnectObservationIndex/StreamsParser, wire test against the fixture. Not scheduled.
Author
Owner

DATA_SET/TABLE fixed on master (f8f8eb9f + 9631a40f, merged 0be21be3): served as a String of compact, ordinal-sorted JSON ({"k":v} / {"row":{"cell":v}}); /current replaces, /sample merges by key, resetTriggered replaces, removed drops the key, empty set = Good {}, UNAVAILABLE = BadNoCommunication. Review caught a regression first (ordinary SAMPLEs with resetTriggered, e.g. a daily PartCount, would have become {}) — fixed + tested. Fixture gained a TABLE item (fixture_worktable) and periodic changes. Live gate PASS: fixture redeployed on 10.100.0.35, MTConnect.IntegrationTests 16/16 incl. Read_serves_data_set_and_table_as_json_strings against the real cppagent.

EVENT enumerations: parked / won't-fix, rationale in docs/drivers/MTConnect.md (vendor-extensible vocabulary, would break consumers reading these as String).

DATA_SET/TABLE fixed on master (`f8f8eb9f` + `9631a40f`, merged `0be21be3`): served as a String of compact, ordinal-sorted JSON (`{"k":v}` / `{"row":{"cell":v}}`); `/current` replaces, `/sample` merges by key, `resetTriggered` replaces, `removed` drops the key, empty set = Good `{}`, UNAVAILABLE = BadNoCommunication. Review caught a regression first (ordinary SAMPLEs with `resetTriggered`, e.g. a daily PartCount, would have become `{}`) — fixed + tested. Fixture gained a TABLE item (`fixture_worktable`) and periodic changes. **Live gate PASS**: fixture redeployed on 10.100.0.35, MTConnect.IntegrationTests 16/16 incl. `Read_serves_data_set_and_table_as_json_strings` against the real cppagent. EVENT enumerations: **parked / won't-fix**, rationale in docs/drivers/MTConnect.md (vendor-extensible vocabulary, would break consumers reading these as String).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dohertj2/lmxopcua#650