Galaxy: MXAccess quality byte 0x02 unmapped (JoePlatform/JoeAppEngine ScanState read Bad 0x80000000) #866
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found by the #614 read-only live run against VD03 (2026-11-11). Reading
JoePlatform.ScanStateandJoeAppEngine.ScanStatereturns Bad (0x80000000), and the driver logsUnrecognised MXAccess quality byte 0x02.The platforms themselves are deployed (
deployed_package_idis set) but apparently not running. Capture what MXAccess sends for an undeployed or stopped engine's attributes, and map 0x02 to a specific status code instead of generic Bad. 0x02 may be the OPC DABad_ConfigError-style substatus; check the gateway's documentation.Fixed, pushed to master in
363f0d81(71b3b7f3,875b8217,1a08b4f7).Cause: 0x02 was not a quality byte. A status row's
detailis MXAccess'sMxStatusDetailcode verbatim: mxaccessgw'sMxStatusProxyConvertercopiesMXSTATUS_PROXY.detailstraight through, and every producer of status rows goes through it. Detail 2 isMX_E_PlatformCommunicationError, which is what a deployed but stopped platform's attributes return.FromMxStatussent any detail ≤ 0xFF through the OPC DA quality table, which mis-named every low code. For example,MX_E_InvalidObjectId(8) surfaced as BadNotConnected,MX_E_Overflow(20) as BadCommunicationError, and a detail in the Uncertain band published Uncertain for a failure.Fix: failure rows now map by the gateway.md vocabulary, then by category:
The category-fallback warning logs once per (detail, category).
Second defect, found in review: the gateway fills
Statuseson every data change, so the item's OPC DAQualitywas never read. An off-scan, Bad or Uncertain attribute with an OK status row was published Good. A failure status row still wins; otherwise the quality byte grades the value, which matches the legacy rule of ≥ 192 = Good.Live check, read-only on VD03 (DEV):
_TestAreaattributes stay Good;JoePlatform.ScanStateandJoeAppEngine.ScanStatenow readBadCommunicationError(0x80050000) instead of 0x80000000;ScadaBridge impact: Galaxy Bad values now carry specific sub-codes. An attribute whose quality is not Good can now arrive as Bad or Uncertain where it used to arrive as Good. Residuals are in #872.