This commit is contained in:
Jonas Bengtsson
2026-10-04 09:28:02 +02:00
parent 87c1c8db7b
commit 4adbb4171e
16 changed files with 788 additions and 29 deletions
+32 -1
View File
@@ -7,7 +7,7 @@
| Project | `wago-modbustcp-simulator-py` |
| Version | 1.4 (Draft for review) |
| Date | 2026-10-03 |
| Status | Framework phase; module addressing implemented (FR-4.3.11); service/container deployment implemented (§12); plain-text request tracing implemented (NFR-6.4); clean CLI error handling implemented (NFR-6.5 CLI part); web UI §10 in implementation (M1–M5 done: auth, overview, manipulation, diagnostics, configuration; M6 scenario view open); long-duration simulation (§8), bench mode (§9), runtime device configuration (§11 — coupler/module subset now covered by web UI M5), multi-vendor device profiles (§13) and additional fieldbus protocols PROFINET/COMLI (§14) requested |
| Status | Framework phase; module addressing implemented (FR-4.3.11); service/container deployment implemented (§12); plain-text request tracing implemented (NFR-6.4); clean CLI error handling implemented (NFR-6.5 CLI part); web UI §10 in implementation (M1–M5a done: auth, overview, manipulation, diagnostics, configuration, channel names, import/export, split overview; M6 scenario view open); long-duration simulation (§8), bench mode (§9), runtime device configuration (§11 — coupler/module/channel-name subset now covered by web UI M5/M5a), multi-vendor device profiles (§13) and additional fieldbus protocols PROFINET/COMLI (§14) requested |
| Target device simulated | WAGO 750-362 / 750-362/0000-0001 FC Modbus TCP (G4) bus coupler |
| Reference documents | `docs/m07500362_xxxxxxxx_0en.pdf` (750-362 Modbus TCP manual), Modbus TCP specification (modbus.org) |
@@ -919,6 +919,34 @@ Terminal monitors (§9) suffice for single engineers, but FAT benches are
Modbus watchdog settings, I/O Config with SAVE CONFIG, Modbus Mapping
overview, address-selection DIP switch) are specified in §11; §10 covers
value/state oversight and manipulation.
- FR-10.2.11: **Channel names** (requested 2026-10-03): every module
channel can carry an application-specific name (e.g. `start_button`,
`tank_level`). Names live in the node configuration — not in the
module catalog (catalog articles are shared per type) — persisted
alongside the module list, and are re-applied after process-image
rebuilds (§11). Unnamed channels fall back to the generic channel
label (e.g. `DI 1`). Names surface everywhere the UI lists a channel:
node overview, the channel list, the configuration editor, and
tooltips.
- FR-10.2.12: **Import/export of module configuration** (requested
2026-10-03): the complete module configuration — module list with
slot order, per-channel names, and coupler settings — can be
downloaded as a single JSON file and imported back. Import validates
the payload (known articles, ≤ 64 modules, name shapes) and applies
it atomically: module rebuild + channel names + coupler settings in
one step, with the same persistence behavior as SAVE CONFIG (§11).
Export/import makes FAT benches shareable and reproducible between
engineers and benches.
- FR-10.2.13: **Split overview** (requested 2026-10-03): the overview
page is divided in two — the realistic node graphic (DIN rail with
LEDs, FR-10.2.2) on top, and below it a scrollable **channel list**:
one row per channel with the I/O code (`DI0.0`), the configured
channel name (if any), and a control for the value — a switch for
DI/DO and a numeric field for AI/AO — which both displays the live
value and manipulates it (same semantics as FR-10.2.4: DI = field
side, DO/AO = master-side force through internal paths). The list
updates live like the rail (FR-10.2.3) and is the primary working
surface for benches with many channels.
### 10.3 Implementation decisions (binding, 2026-10-03)
@@ -979,6 +1007,8 @@ src/wago_sim/
| `POST /api/diagnostics/inject-fault`, `POST /api/diagnostics/clear-fault` | LED / module-diagnosis injection | 10.2.5 |
| `GET/PUT /api/config/coupler` | watchdog settings, response delay, idle timeout, MAC-ID | §11 subset |
| `GET/PUT /api/config/modules` | module list CRUD + process-image rebuild | §11 FR-11.2.1–11.2.4 |
| `GET /api/config/export` · `POST /api/config/import` | full configuration (modules + channel names + coupler) as JSON | 10.2.12 |
| `GET/PUT /api/config/channel-names` | read/write per-channel names | 10.2.11 |
### 10.6 Milestones
@@ -989,6 +1019,7 @@ src/wago_sim/
| M3 | Manipulation — toggle/pulse/ramp, AI engineering units, master-side force |
| M4 | Diagnostics — watchdog/statistics/diagnosis view, reset, fault injection |
| M5 | Configuration — coupler forms; module CRUD with image rebuild and persistence |
| M5a | Channel names (FR-10.2.11) + configuration import/export (FR-10.2.12) + split overview with channel list (FR-10.2.13) |
| M6 | (deferred) Scenario run view (FR-10.2.6) + alias-ownership rejection (FR-10.2.9) |
### 10.7 Acceptance criteria