@@ -95,6 +95,20 @@ structs — not covered. UDT fan-out IS covered (PR-S7-D2 / #300) via the
|
||||
`udt_layout` meta-seed in `Docker/profiles/s7_1500.json` and the
|
||||
`Driver_fans_out_udt_into_member_tags` integration test.
|
||||
|
||||
### 6. SZL (System Status List) — `@System.*` virtual addresses
|
||||
|
||||
PR-S7-E1 / [#302](https://github.com/dohertj2/dohertj2/lmxopcua/issues/302)
|
||||
adds a virtual `@System.*` address surface (CPU type, firmware, scan-cycle
|
||||
stats, diagnostic-buffer ring) backed by SZL reads. **snap7 does not
|
||||
implement SZL** — the simulator answers every SZL request with a function-
|
||||
not-supported error, so the integration profile exercises only the
|
||||
not-supported semantics (`@System.CpuType` against snap7 returns
|
||||
`BadNotSupported`). Live-firmware SZL coverage is parked behind a
|
||||
`[Fact(Skip = ...)]` until either S7netplus exposes a public `ReadSzlAsync`
|
||||
or we ship a raw S7comm PDU helper. See
|
||||
[`docs/v2/s7.md` "CPU diagnostics (SZL)"](../v2/s7.md#cpu-diagnostics-szl)
|
||||
for the wire-status detail.
|
||||
|
||||
## When to trust the S7 tests, when to reach for a rig
|
||||
|
||||
| Question | Unit tests | Real PLC |
|
||||
@@ -127,6 +141,15 @@ structs — not covered. UDT fan-out IS covered (PR-S7-D2 / #300) via the
|
||||
runner with the lab rig executes. The classifier branch
|
||||
(`S7PreflightClassifier.IsPutGetDisabled`) is unit-tested without a
|
||||
network in `S7PreflightTests.Classifier_matches_only_PUT_GET_disabled_error_codes`.
|
||||
5. **PR-S7-E1 — live SZL test against a real S7-1500.** snap7 doesn't
|
||||
implement SZL at all, and S7netplus 0.20 doesn't expose a public
|
||||
`ReadSzlAsync`, so the `@System.*` virtual address surface currently
|
||||
answers `BadNotSupported` against every backend. The parser
|
||||
(`S7SzlParser`) is unit-tested against golden bytes; flipping the wire
|
||||
path on requires either an S7netplus PR or a raw-PDU helper. Once that's
|
||||
in, [`S7_1500SzlTests.System_CpuType_against_live_S7_1500_returns_non_empty_string`](../../tests/ZB.MOM.WW.OtOpcUa.Driver.S7.IntegrationTests/S7_1500/S7_1500SzlTests.cs)
|
||||
should be flipped from `[Fact(Skip = ...)]` to env-var-gated against the
|
||||
self-hosted runner with the lab rig.
|
||||
|
||||
Without any of these, S7 driver correctness against real hardware is trusted
|
||||
from field deployments, not from the test suite.
|
||||
|
||||
Reference in New Issue
Block a user