docs(driver-expansion): descope Modbus direct-serial — RTU-over-TCP only
Per user decision 2026-07-15: the direct-serial transport (ModbusRtuTransport, System.IO.Ports, serial config fields, socat live rig) is not being built. Serial RS-485 buses are reached exclusively via serial->Ethernet gateways (Moxa NPort etc.) using the new ModbusRtuOverTcpTransport — zero new package deps, no container device mapping, reuses the hardened socket lifecycle. ModbusTransportMode shrinks to Tcp|RtuOverTcp (Rtu member reserved). The direct-serial design is kept in the RTU doc's §2b as a marked record, including the R2-01 SerialPort-BaseStream-ignores-ReadTimeout trap.
This commit is contained in:
@@ -145,7 +145,7 @@ means the universal browser is a **separate `IUniversalDriverBrowser`**, not one
|
||||
| MQTT/Sparkplug | MQTTnet v5 + **hand-rolled Tahu protobuf** | MIT | **Not SparkplugNet** — its MQTTnet-4.x transitive pin collides with the repo's deliberately-OFF transitive pinning (Roslyn-split constraint) |
|
||||
| Omron (CIP) | libplctag.NET | MPL-2.0 | same dep AbCip already ships (`plc=omron-njnx`); FINS hand-rolled |
|
||||
| SQL poll | Microsoft.Data.SqlClient | — | already in-repo at 6.1.1 — zero new deps for P1 |
|
||||
| Modbus RTU | extend existing Modbus | — | serial impls behind the **existing** `IModbusTransport` seam; P1 (RTU-over-TCP) zero new deps, P2 direct-serial adds `System.IO.Ports` |
|
||||
| Modbus RTU | extend existing Modbus | — | **RTU-over-TCP only** behind the **existing** `IModbusTransport` seam; zero new deps. Direct serial (`System.IO.Ports`) **descoped** (user, 2026-07-15) — serial buses are reached via serial→Ethernet gateways |
|
||||
| ~~MELSEC~~ | ~~hand-rolled 3E~~ | — | deferred; HslCommunication is a commercial-license blocker |
|
||||
|
||||
**Avoid HslCommunication** (commercial license; the "MIT" claim is a stale abandoned fork) for both
|
||||
@@ -189,7 +189,8 @@ MELSEC is out of the sequence (deferred).
|
||||
- Fixtures live under `tests/.../Docker/`, deployed to the shared host `10.100.0.35` via
|
||||
`lmxopcua-fix sync` (which owns the `project=lmxopcua` labelling host-side). Per-driver sims: `mtconnect/cppagent`, Mosquitto/EMQX +
|
||||
Sparkplug simulator, `bacnet-stack`/ela-compil `BasicServer`, central SQL Server
|
||||
(`10.100.0.35,14330`) + seeded table, `rtu_over_tcp` pymodbus profile + socat serial pair.
|
||||
(`10.100.0.35,14330`) + seeded table, `rtu_over_tcp` pymodbus profile (no serial rig —
|
||||
direct-serial descoped).
|
||||
- **Env-gated live suites** for what a sim can't cover: BACnet Who-Is/BBMD UDP broadcast, Omron CIP
|
||||
wire (live hardware), MQTT broker soak.
|
||||
- Per driver: unit (framer/parser/type-map with golden vectors + fakes) → integration (docker
|
||||
@@ -198,6 +199,9 @@ MELSEC is out of the sequence (deferred).
|
||||
## 8. Deferred / out of scope
|
||||
|
||||
- **MELSEC SLMP** — deferred (§1). Research complete (`melsec-slmp.md`); revisit on demand.
|
||||
- **Modbus direct-serial transport** (`ModbusRtuTransport` / `System.IO.Ports`) — descoped
|
||||
(user, 2026-07-15); design record kept in the RTU doc §2b. RTU-over-TCP via a
|
||||
serial→Ethernet gateway is the only shipped RTU mode.
|
||||
- **Write-back** for MTConnect (Interfaces), MQTT (NCMD/DCMD), BACnet (WriteProperty priority
|
||||
array), SQL (parameterized UPSERT) — all documented as later phases in the respective designs.
|
||||
- **Bespoke lazy browsers** for large BACnet sites and large ControlLogix/TwinCAT symbol sets —
|
||||
|
||||
Reference in New Issue
Block a user