You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: TODO.md
+20-9Lines changed: 20 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,14 +6,22 @@ This file tracks the remaining tasks and unresolved issues for the SLMP Python l
6
6
7
7
-[ ]**Extended Specification live coverage expansion**: The capture-aligned implementation is working on validated paths, but broader
8
8
address-range, transport, and PLC-family coverage is still open. QnUDV has no
9
-
`HG`; `U0\G10` read-only on the current QnUDV target returned `0xC070` with
10
-
command `0x0401` subcommand `0x0080`.
11
-
12
-
-[ ]**Mixed block write root cause**: The practical fallback is implemented, but the reason some validated PLC
13
-
paths reject the first one-request mixed `1406` write with `0xC05B` is still
14
-
not fully explained. On the current QnUDV target, word-only, bit-only, and
15
-
mixed `1406` block writes returned `0xC059`, so this appears to be block-write
16
-
command support rather than a mixed-only rejection on that target.
9
+
`HG`; QnUDV `U0\G10` read-only was live-checked on 2026-05-15 against
10
+
`Q06UDVCPU` and returned `[0]` across Python, Node-RED, .NET, Rust, and C++
11
+
Minimal. QCPU `U0\G10` read-only was
12
+
live-checked on 2026-05-15 against `Q12HCPU` and returned `[0]` across
13
+
Python, Node-RED, .NET, Rust, and C++ Minimal. QnU `U0\G10` read-only was
14
+
live-checked on 2026-05-15 against `Q26UDEHCPU` and returned `[0]` across the
15
+
same five stacks.
16
+
17
+
-[x]**Mixed block write root cause**: The old `0xC05B` note is no longer
18
+
tracked as a live unresolved PLC behavior; it was likely from an in-progress
19
+
library/payload implementation. Current QCPU/QnU/QnUDV live checks across
20
+
Python, Node-RED, .NET, Rust, and C++ Minimal consistently show: word-only
21
+
block read/write for `D9000` succeeds, bit-only block read/write for `Y1FFF`
22
+
returns `0x4031`, mixed word+bit block read returns `0x4031`, and mixed
23
+
word+bit block write returns `0xC056`. Mixed block access is rejected because
24
+
the bit-block part is rejected.
17
25
18
26
## 2. Testing & Validation
19
27
@@ -26,7 +34,10 @@ This file tracks the remaining tasks and unresolved issues for the SLMP Python l
26
34
-`mx-r` -> `4e/iqr` with range family `mx-r`
27
35
28
36
## 3. Known Issues
29
-
-[ ]**Single-request mixed block write (`1406`)**: Single-request mixed block write (`1406`) has not yet been accepted on any current live-verified PLC path in this project. Prefer `split_mixed_blocks=True` for the safest operational behavior, or use `retry_mixed_on_error=True` if you still want to probe the one-request form first.
37
+
-[x]**Single-request mixed block write (`1406`)**: Current live checks show
38
+
single-request mixed block write is rejected on the checked QCPU/QnU/QnUDV
39
+
targets because the bit-block part is rejected. This is documented behavior
40
+
and not a remaining Python defect.
30
41
-[x]**ASCII mode out of scope**: ASCII mode is intentionally out of scope for this project. Binary 3E/4E is the only planned data-code path unless a concrete compatibility requirement appears.
31
42
-[x]**Raw wrappers internal-only**: `*_raw` wrappers are for library developers and maintainers. Keep them documented only in internal maintainer materials; they are not a user-facing roadmap item.
32
43
- [ ] **Extended Specification broader validation**: Extended Specification access for `G/HG` is not stable across all series. The iQ-R `_ext` builder now matches the captured `U3E0\G10` and `U3E0\HG20` payload shape, the dedicated coverage command can sweep multiple transports and named targets, and live checks now confirm: `TCP + SELF/SELF-CPU1 + U3E0\\G10/U3E0\\HG20 + points=1/4` for read-only coverage; target-aligned write/readback/restore for `SELF-CPU2/U3E1`, `SELF-CPU3/U3E2`, and `SELF-CPU4/U3E3` at both `points=1` and `points=4`, first on `G10/HG20`, then on `G30/HG30`, then on `G50/HG50` with restoration back to the original non-zero `G50` values, and now on `G70/HG70` and `G90/HG90`; aligned `UDP/1027` read-only and write/readback/restore for `SELF/U3E0`, `SELF-CPU1/U3E0`, and `SELF-CPU2..4/U3E1..3` on `G10/HG20` at `points=1` and `points=4`; non-aligned `points=1` write failures with the stable pattern `G -> 0x414A`, `HG -> readback_mismatch`; and `UDP/1025` timeouts for the earlier `SELF/SELF-CPU1` read-only sweep. Broader validation beyond those address ranges and broader UDP address coverage is still pending. Use CPU buffer access commands unless you have validated the exact Extended Specification path on the actual PLC.
Copy file name to clipboardExpand all lines: internal_docs/maintainer/PROTOCOL_SPEC.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -155,7 +155,7 @@ Random bit write (`1402`) state value:
155
155
Block read/write compatibility handling:
156
156
-`read_block` and `write_block` send mixed word+bit blocks in one `0406/1406` request by default, matching the manual.
157
157
- If a target environment needs a compatibility fallback, `split_mixed_blocks=True` sends two commands (word-only, bit-only).
158
-
- For write-side compatibility, `retry_mixed_on_error=True` first sends one mixed `1406` request and retries as split word-only and bit-only writes only when the PLC returns a known mixed-write rejection end code. The current retry set is `0xC056`, `0xC05B`, and `0xC061`.
158
+
- For write-side compatibility, `retry_mixed_on_error=True` first sends one mixed `1406` request and retries as split word-only and bit-only writes only when the PLC returns a known mixed-write rejection end code. The current retry set is `0xC056`and `0xC061`; `0xC05B` is preserved as an observed PLC end code but is not a retry trigger.
159
159
- Practical recommendation on current hardware evidence: if mixed write reliability matters more than keeping the manual's one-request form, prefer `split_mixed_blocks=True`.
160
160
- As of 2026-03-19, this project has no live-verified PLC path where the first one-request mixed `1406` write was accepted.
0 commit comments