# atMb — documented working library Start with `library/atMb-Documented.export`: comments-only documentation of your working CmpAtomModbus export, retaining its embedded C library object. It uses `ClientTCP`, matching the uploaded working interface. Read `docs/USER-GUIDE.md` for setup and examples and `docs/API-REFERENCE.md` for all 95 code objects, parameters, outputs, methods and properties. `docs/DOCUMENTATION-VALIDATION.md` records code/payload preservation checks. `reference/Working-CmpAtomModbus.export` is the exact uploaded original. The earlier development export and generator are retained for source history. `library/build_native_export.py` generates the earlier migration export; it does not generate or supersede the newly documented working export. Do not overwrite working IDE changes by regenerating that migration export. The documentation adds no C changes; the source-to-uploaded-binary match remains unverified. The rest of the source/build kit remains below. # atMb — native Modbus for CODESYS Git-ready source snapshot, revision 0.9.1. Public namespace `atMb`. C implementation supports TCP client, RTU client and TCP slave; IEC code has no ModbusFB dependency. Online-change support remains future work. ## Files - `component-source/`: C engine, CODESYS component frame/interface and host tests. - `ExtensionSDK/`: supplied SDK used by the component build. - `library/atMb-Native.export`: corrected IEC import; includes public status declarations. - `library/atMb-Native-Review.st`: readable generated IEC source. - `library/build_native_export.py`: reproducible export generator. - `reference/CmpAtomModbus-AllInOne.export`: required generator baseline, not the final import. - `artifacts/arm64/`: your uploaded shared object and precompile cache, preserved unchanged. - `docs/BUILD-AND-USAGE.md`: import, deployment, API, diagnostics and limitations. - `SHA256SUMS.txt`: snapshot file checksums. ## Build and test on the Pi ```sh sudo apt install build-essential m4 dos2unix python3 make -C component-source/component SDKDIR="$(realpath ExtensionSDK)" clean make -C component-source/component SDKDIR="$(realpath ExtensionSDK)" all make -C component-source test ``` Build natively for each Linux target architecture; the uploaded ARM64 `.so` cannot run on ARM32 or x86-64. Runtime/SDK compatibility must also be checked for each CODESYS target. The host tests exercise protocol code independently of the CODESYS runtime. ## IEC export ```sh python3 library/build_native_export.py ``` Import `library/atMb-Native.export` into a fresh CODESYS library project, namespace `atMb`, and embed the newly built `.so` in a C Implemented Library object. See the full instructions in `docs/BUILD-AND-USAGE.md`. The export is source, not a compiled `.library`. The supplied precompile cache is an opaque reference artifact and is not a substitute for the library project. Your uploaded `.so` is ARM64 and contains RTU/server symbols. Its exact match to this source snapshot and its operation in the runtime have not been verified; rebuild from source before making a release. The older development instructions say no prebuilt binary is included: that applies to the earlier kit; this repo snapshot adds your uploaded binary under `artifacts/arm64/`. ## Start a repository ```sh cd atMb-repo git init git add . git commit -m "Initial atMb native Modbus source" ``` No Git history or remote is included. The SDK and baseline came from supplied files; review their redistribution terms before publishing a public repository. No new license is assigned by this snapshot.