Native AB transport: bench-controller proof of writes + PCCC, then decide libplctag deletion #592
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?
The T21 real-press gate was read-only; every native write and every AbLegacy native path is proven only against
ab_server. Design P6 (delete libplctag) is blocked on a bench controller. Hardware-only residuals left by closed #566/#567/#572/#582.Sources: docs/drivers/AbCip.md (Known gaps), docs/drivers/AbLegacy.md §Wire evidence, docs/plans/2026-10-07-native-ab-transport-design.md §8 (P6), §9.
logixpcccSLC framing; routed paths beyond1,0S:0probe, B/T/C/R/S/L/ST/A/O/I files, T/C/R sub-element offsets, ST byte order, F8 writeB3:0/5): current fixture proof recorded 2026-10-09 in docs/plans/2026-10-07-native-ab-transport-gate-results.md. SLC500/MicroLogix both transports pass neighbor-preserving word RMW; libplctag PLC-5 passes, native PLC-5 intentionally refuses (#571). Original cause undetermined; no patch needed. This is simulator evidence, not physical-controller proof.Filed 2026-10-08 by the pending/deferred-work sweep after the #562–#591 issue sweep.
From #636: driver-gaps item #248 (AbLegacy PD/MG/PLS/BT file types) is tracked here. From #634: items #242/#243 (AbCip) are also tracked here.
Progress 2026-10-09 (master
12aa293c, pushed). Evidence:docs/plans/2026-10-07-native-ab-transport-gate-results.md(sections "hw4 evidence batch" and "#611 UDT member-write gate").Done:
test2, BOOLProgram:UN01_Press.xxtest, REALProgram:ES03_EM03_Zone3._ff_test; UDT members_EmptyTemperatureSegment.ID/.Enable(BIT)/.HoldTime. Tags chosen from an L5X census (no routine/alias/trend reference, not in the Galaxy map).B3:0/5→ 0x803D0000, May 2026, libplctag + SLC500): does not reproduce any more;AbLegacyBitWriteTestssets/clears bits and asserts the whole word (neighbours preserved) on SLC500 + MicroLogix (both transports) and PLC-5 libplctag. Original cause undetermined. PLC-5 native returns the same code for the unrelated #571 refusal.Still open (hardware):
logixpcccSLC framing; routed paths beyond1,0AbLegacy on a real MicroLogix 1400 — 2026-10-09 (Z-33323,
ab://10.201.44.231/, empty path).Press selection: checked cycle-in-progress (
N10:150/0,B3:0/4) on the reachable presses. Z-33470 was mid-cycle and was left alone. Z-33323 was idle (both false, pump inputI:0/0off,O:0= 0) before and after the tests. The other North presses time out on TCP from the VPN.Native reads — all Good and equal to libplctag where libplctag works:
S:0(default probe),S:57= 1400,S:4; N; F8 (2.1, 200.0); B words and bits; T.PRE/.ACC/.DN(incl. T40); C.PRE/.ACC/.DN; R.LEN/.POS/.DN; ST"Z-33323"(byte order correct);O:0,O:0/3,I:0,I:0/0.Native writes (restored, verified):
N7:230→4242→0 (neighbours unchanged);F8:1900→42.5→0;B3:200bit RMW: set /5 → 32, set /3 → 40, clear /5 → 8, clear /3 → 0 (neighbour words unchanged). Addresses vetted against the sibling Z-33756 program export (no ladder/symbol/HMI/panel/migration reference) plus Z-33323's own symbol table, and read 0 first.Defect found: libplctag (the AbLegacy default) fails
S:/O:/I:and control status bits on this controller — including the default probeS:0— filed as #659.Checklist update:
S:0probe, B/T/C/R/S/ST/O/I, T/C/R sub-element offsets, ST byte order, F8 writelogixpcccRaw output:
docs/plans/2026-10-07-native-ab-transport-gate-results.md(2026-10-09 MicroLogix section) anddocs/drivers/AbLegacy.md§Wire evidence — on master with the next push.Progress (hw5, pushed in master
ea220363, mergeb394413e), all on Z-35162 (CompactLogix 5069-L320ERS2,ab://10.209.70.160/1,0), user-approved one-off writes, each restored and verified:Program:ES03_TemperatureControl._StrTmpthrough the production AbCipDriver, restored byte-exact.Program:EM01_PowerUnit._SEQ_EP[31]0 → 4242 → 0; all 32 elements otherwise unchanged (the census initially missed that_SEQ_EP[1..3]are aliased sequencer step registers; element 31 is unaliased).AbCip.IntegrationTests/HardwareGate/with a pinned (host, tag) allow-list,AB_HW_WRITE_APPROVED=1gate, and offline guard tests;CipConnection.ForwardOpenAsyncnow reaches the diagnostics tap.Still open here (need hardware / programs we don't have): #567 large-struct/fragmented writes; whole-array writes (AbCip has none by design); SLC / PLC-5 /
logixpcccnative; MicroLogix L/A and function files; ALMA/ALMD on real hardware; sibling-bit preservation and the libplctag UDT-member path on real hardware.2026-10-13 source/documentation reconciliation (historical hardware evidence, no new live probe):
Current evidence supersedes the opening checklist. The 2026-10-09 user-approved CompactLogix gates prove scalar DINT/BOOL/REAL, UDT member, STRING and array-element native writes with restores; mixed STRING/array/scalar MSP reads match single reads; the observed target idle timeout closes TCP without a CIP status. Native MicroLogix1400 reads cover S/N/F/B/T/C/R/ST/O/I including S:0, T/C/R sub-elements and ST byte order; native N/F/B-bit writes were restored and verified. #659 fixed fallback address translation for S/O/I and unsupported control-bit names. These are recorded historical live proofs, not newly rerun gates.
The old ab_server B3:0/5 gap does not reproduce on current fixtures: AbLegacyBitWriteTests checks whole-word neighbour preservation on SLC500/MicroLogix both transports, PLC5 fallback; native PLC5 BadNotSupported is its explicit unrelated write refusal. No simulator patch is justified.
Keep open: fragmented wide-struct writes requiring a safe >MaxRequestBytes scratch value/bench target; Micro800 and routing beyond1,0; real SLC/PLC5/logixpccc native evidence; MicroLogix L/A/function files; hardware ALMA/ALMD and sibling-bit/member-write gaps. Whole-array driver writes are absent by design, so distinguish a new capability decision from a verification checkbox. P6 deletion of libplctag remains a separate scope decision after required hardware evidence.
Evidence: docs/drivers/AbCip.md:245; docs/drivers/AbLegacy.md:211; docs/plans/2026-10-07-native-ab-transport-gate-results.md:480/542/580/706/788; current #592 comments already describe progress. No immediate bounded transport implementation identified solely from this ticket; tracker reconciliation is the useful action.