Task #250 — AB CIP + AB Legacy test-client CLIs #204

Merged
dohertj2 merged 1 commits from task-250-abcip-ablegacy-cli into v2 2026-04-21 08:34:51 -04:00
Owner

Second + third of the four driver test-client CLIs. Both consume Driver.Cli.Common from #249.

otopcua-abcip-cli

ControlLogix / CompactLogix / Micro800 / GuardLogix via libplctag. Probe / read / write / subscribe against Logix symbolic paths (controller scope, program scope, array element, UDT member). Value parser covers every AbCipDataType atomic type.

otopcua-ablegacy-cli

SLC 500 / MicroLogix / PLC-5 / LogixPccc via libplctag's PCCC back-end. Same 4 commands. Addresses use PCCC convention (N7:0, F8:0, B3:0/3, L19:0, T4:0.ACC).

Tests

35 new (17 AbCip + 18 AbLegacy); 73 cumulative driver-CLI tests across #249 + #250.

Docs

Per-CLI operator runbook under docs/Driver.{AbCip,AbLegacy}.Cli.md with family ↔ CIP-path cheat sheets + PCCC address primer.

Test plan

Full-solution build clean. --help verified end-to-end on both CLIs.

Next (#251): S7 + TwinCAT CLIs.

Second + third of the four driver test-client CLIs. Both consume Driver.Cli.Common from #249. ## otopcua-abcip-cli ControlLogix / CompactLogix / Micro800 / GuardLogix via libplctag. Probe / read / write / subscribe against Logix symbolic paths (controller scope, program scope, array element, UDT member). Value parser covers every AbCipDataType atomic type. ## otopcua-ablegacy-cli SLC 500 / MicroLogix / PLC-5 / LogixPccc via libplctag's PCCC back-end. Same 4 commands. Addresses use PCCC convention (N7:0, F8:0, B3:0/3, L19:0, T4:0.ACC). ## Tests 35 new (17 AbCip + 18 AbLegacy); 73 cumulative driver-CLI tests across #249 + #250. ## Docs Per-CLI operator runbook under docs/Driver.{AbCip,AbLegacy}.Cli.md with family ↔ CIP-path cheat sheets + PCCC address primer. ## Test plan Full-solution build clean. `--help` verified end-to-end on both CLIs. Next (#251): S7 + TwinCAT CLIs.
dohertj2 added 1 commit 2026-04-21 08:34:39 -04:00
Second + third of the four driver test clients. Both follow the same shape as
otopcua-modbus-cli (#249) and consume Driver.Cli.Common for DriverCommandBase +
SnapshotFormatter.

New projects:
  - src/ZB.MOM.WW.OtOpcUa.Driver.AbCip.Cli/ — otopcua-abcip-cli.
    AbCipCommandBase carries gateway (ab://host[:port]/cip-path) + family
    (ControlLogix/CompactLogix/Micro800/GuardLogix) + timeout.
    Commands: probe, read, write, subscribe.
    Value parser covers every AbCipDataType atomic type (Bool, SInt..LInt,
    USInt..ULInt, Real, LReal, String, Dt); Structure writes refused as
    out-of-scope for the CLI.
  - src/ZB.MOM.WW.OtOpcUa.Driver.AbLegacy.Cli/ — otopcua-ablegacy-cli.
    AbLegacyCommandBase carries gateway + plc-type (Slc500/MicroLogix/Plc5/
    LogixPccc) + timeout.
    Commands: probe (default address N7:0), read, write, subscribe.
    Value parser covers Bit, Int, Long, Float, AnalogInt, String, and the
    three sub-element types (TimerElement / CounterElement / ControlElement
    all land on int32 at the wire).

Tests (35 new, 73 cumulative across the driver CLI family):
  - AB CIP: 17 tests — ParseValue happy-paths for every Logix atomic type,
    failure cases (non-numeric / bool garbage), tag-name synthesis.
  - AB Legacy: 18 tests — ParseValue coverage (Bit / Int / AnalogInt / Long /
    Float / String / sub-elements), PCCC address round-trip in tag names
    including bit-within-word + sub-element syntax.

Docs:
  - docs/Driver.AbCip.Cli.md — family ↔ CIP-path cheat sheet + examples per
    command + typical workflows.
  - docs/Driver.AbLegacy.Cli.md — PCCC address primer (file letters → CLI
    --type) + known ab_server upstream gap cross-ref to #224 close-out.

Wiring:
  - ZB.MOM.WW.OtOpcUa.slnx grew 4 entries (2 src + 2 tests).

Full-solution build clean. `otopcua-abcip-cli --help` + `otopcua-ablegacy-cli
--help` verified end-to-end.

Next up (#251): S7 + TwinCAT CLIs, same pattern.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
dohertj2 merged commit ff50aac59f into v2 2026-04-21 08:34:51 -04:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dohertj2/lmxopcua#204