Seems to be working great

This commit is contained in:
2026-10-07 01:03:18 -06:00
parent c39c226885
commit 739347c4da
26 changed files with 6290 additions and 7007 deletions
+23 -33
View File
@@ -1,39 +1,29 @@
# Validation and remaining qualification
# Validation and online-change qualification
IEC library version: 0.6.0.0. C component version: 0.4.0.0.
External C ABI signature/API version are unchanged.
Release versions: IEC library **0.8.0.0**, C component **0.5.0.0**. The external
ABI signature/API version is unchanged.
## Passed on the Linux build host
Host validation completed:
- Strict C compilation with warnings treated as errors for the test targets.
- Bridge capacity, context pool, handle generation and shutdown tests.
- Nine direct TCP and nine bridge TCP protocol/error/recovery scenarios.
- RTU tests over real pseudo-terminals: fragmented frames, CRC errors, timeouts,
exceptions, register/coil writes, invalid write echoes and recovery.
- TCP slave FC1/2/3/4/5/6/15/16, address/exception handling and bind recovery.
- Worker TCP and RTU responses complete with a 100 ms deadline while PLC calls
are paused for 250 ms; results remain available for the next call.
- Worker duration/age reporting and rejection of an unacknowledged result overwrite.
- Slave service between scans and remote writes preserved against stale PLC pushes.
- Scan watchdog transport shutdown and resumption, including uncertain sent writes
without automatic worker replay; server watchdog listener restart.
- CPU affinity configuration/restoration, invalid configuration rejection,
concurrent status calls, and 20 worker shutdown/restart cycles.
- Worker tests repeated after priority-inheritance mutex/error-reporting changes.
- Full component host shared-object compile using the uploaded generated SDK headers;
ComponentEntry and atmbcall_cext exported. This is not a fresh M4/ARM SDK build.
- Updated IEC export parsed, object identifiers/references checked, basic structured
text block balance checked, common client toString verified, and old embedded
component removed. These checks do not substitute for the CODESYS compiler.
- Strict synchronous C build and bridge capacity/pool/handle/shutdown tests.
- Direct and bridge TCP normal, fragmented, timeout, protocol-error, exception,
write and reconnect scenarios.
- RTU pseudo-terminal frame, CRC, timeout, exception, register/coil write and
recovery scenarios.
- TCP slave function-code, exception, address and bind-recovery scenarios.
- XML export parsing, object references, collection metadata and removal of the
threaded Worker object.
- C client `FB_reinit` closes its native context before clearing IEC pointers;
slave `FB_reinit` closes its listener before clearing its handle.
## Required before deployment
Required on each target before production:
Rebuild the C component for each target with its compatible SDK/toolchain, check
its ELF architecture and GLIBC dependencies, import the export in CODESYS, compile,
embed/deploy the rebuilt component and perform a full download. No updated compiled
.library or ARM binary is supplied. Previous binaries are backups only.
- Rebuild for the exact CPU/toolchain and verify ELF/GLIBC compatibility.
- Compile/import the export in CODESYS and embed the matching C component.
- Test online change while idle, during an active read, during disconnect and
during an active write.
- Verify contexts reopen, request pointers are rebuilt, data becomes valid, and
no stale socket/listener remains after repeated online changes.
CODESYS IDE compilation, physical target/serial hardware testing, prolonged load
and disconnect testing, and online-change behavior were not qualified here.
Online change remains future work. Confirm watchdog and reconnect settings under
actual PLC task jitter and network failures before production use.
Physical target, prolonged soak, and CODESYS IDE qualification were not available
in the host environment. Keep the previous threaded release as rollback only.