TwinCAT: hardware-gated items #310/#314 from driver-gaps backlog #645
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?
Split out of #637. Items #310 and #314 need real TwinCAT hardware to implement and verify.
#310 and #314 ported, offline (
af19db4e→802781b6, merged46bf939f, opus-reviewed twice). ADS sum-read is opt-in (useSumRead, default off;sumReadMaxItems1–500 + a 32 KiB byte budget per command); only scalars passing the strict width/kind check ride a batch (review caught mismatched-type tags decoding garbage at Good); overall 1793/1794 latch the device to single reads until re-init, any other non-comms code reads that chunk singly for the poll with a once-per-device Warning. Diagnostics (AdsState, AppName, OnlineChangeCnt, CycleTimeMs, LastExecTimeMs, HeadroomMs) go to /hosts via IDriverDiagnostics, opt-indiagnosticsEnabled(default off), reusing the probe's ReadState. TwinCAT.Tests 355/355.Live gate deferred: the Elma presses are reachable over the VPN, but the ADS routes ignitionoee left point at the Mac's old VPN IP (10.181.198.189 → now 10.181.207.140), and adding a route changes a production PLC's route table — waiting on an explicit OK (candidate: Z35474, the one TC3 press, port 851).
Live-gated on real presses and closing (master
ec375538). Read-only: no ADS writes other than the user-approved route maintenance.Presses: Z35474 (TC3, port 851) and Z34834 (TC2 2.11, port 801).
SumReadctor throwsInvalidCastExceptionfor aList<>of entries (it needs an array), so every batched tag readBadCommunicationErroron every poll with no log line. The fake client in the unit tests never built a realSumRead. Fixed inAdsTwinCATClient.CreateSumRead+ a construction test that fails without the fix; a once-per-device Warning now fires on a sum-chunk failure (only after a successful connect). (664ff75e,a92fb81f)/hostsleg on docker-dev cannot run because the host has no in-process AMS router.