The PLC program from the old repo's 04-plc/, flattened into one folder and
checked against the running system.
Verified during the move:
- build.py regenerates register-map.csv byte-identically (69 points)
- polled the live PLC: the SIMULATION build is what is deployed and
running, %MW21=2 wet weather, values moving, run hours accumulating
- addresses, %MW HR1024 segmentation and %QW17/%QW7 signedness all
match the map
Corrections against the old repo:
- 10_globals.st header cited WRPS-CTL-002 (the FDS); it means CTL-003
- build.py wrote the map to its parent directory; now beside itself
- deploy/README.md was a single-file folder; now DEPLOY.md
- dropped the empty editor-devices/remote/
- README no longer claims the simulation build is uncompiled - it is
the one running
Two open items are now stated plainly rather than buried:
- none of the 20 acceptance tests in CTL-003 have ever been run
- the OpenPLC Editor lived only on the retired dev-ubuntu host, so
there is currently NO route to deploy a new program (DEPLOY.md 0)
Documents the setpoint distinction: IO_MUX seeds %MW defaults once at
first scan, operators retune them live, and that tuning exists only in
the container volume - a restart reverts it.
3.9 KiB
3.9 KiB
| 1 | iec_address | modbus_object | modbus_address | tag | description | units | scaling | access |
|---|---|---|---|---|---|---|---|---|
| 2 | %IW0 | Input register | 0 | LIT-101 | Wet well level | mm | 1 | R |
| 3 | %IW1 | Input register | 1 | FIT-201 | Inlet flow | L/s | x10 | R |
| 4 | %IW2 | Input register | 2 | FIT-301 | Discharge flow | L/s | x10 | R |
| 5 | %IW3 | Input register | 3 | PIT-302 | Manifold pressure | kPa | 1 | R |
| 6 | %IW4 | Input register | 4 | PIT-311 | PU-301 discharge pressure | kPa | 1 | R |
| 7 | %IW5 | Input register | 5 | PIT-321 | PU-302 discharge pressure | kPa | 1 | R |
| 8 | %IW6 | Input register | 6 | PIT-331 | PU-303 discharge pressure | kPa | 1 | R |
| 9 | %IW7 | Input register | 7 | VE-314 | PU-301 bearing vibration | mm/s | x10 | R |
| 10 | %IW8 | Input register | 8 | VE-324 | PU-302 bearing vibration | mm/s | x10 | R |
| 11 | %IW9 | Input register | 9 | VE-334 | PU-303 bearing vibration | mm/s | x10 | R |
| 12 | %IX0.0 | Discrete input | 0 | LSHH-102 | High high level (TRUE = wet) | R | ||
| 13 | %IX0.1 | Discrete input | 1 | LSLL-103 | Low low level (TRUE = wet, FALSE = dry) | R | ||
| 14 | %IX0.2 | Discrete input | 2 | LSH-104 | Spill detected (TRUE = spilling) | R | ||
| 15 | %IX0.3 | Discrete input | 3 | TE-312 | PU-301 motor thermal (TRUE = healthy) | R | ||
| 16 | %IX0.4 | Discrete input | 4 | TE-322 | PU-302 motor thermal (TRUE = healthy) | R | ||
| 17 | %IX0.5 | Discrete input | 5 | TE-332 | PU-303 motor thermal (TRUE = healthy) | R | ||
| 18 | %IX0.6 | Discrete input | 6 | MSE-313 | PU-301 seal leak (TRUE = leak) | R | ||
| 19 | %IX0.7 | Discrete input | 7 | MSE-323 | PU-302 seal leak (TRUE = leak) | R | ||
| 20 | %IX1.0 | Discrete input | 8 | MSE-333 | PU-303 seal leak (TRUE = leak) | R | ||
| 21 | %IX1.1 | Discrete input | 9 | XA-502 | Mains healthy (TRUE = healthy) | R | ||
| 22 | %QX0.0 | Coil | 0 | PU-301 | Run command | R | ||
| 23 | %QX0.1 | Coil | 1 | PU-302 | Run command | R | ||
| 24 | %QX0.2 | Coil | 2 | PU-303 | Run command | R | ||
| 25 | %QX0.3 | Coil | 3 | PU-301 | Running | R | ||
| 26 | %QX0.4 | Coil | 4 | PU-302 | Running | R | ||
| 27 | %QX0.5 | Coil | 5 | PU-303 | Running | R | ||
| 28 | %QX0.6 | Coil | 6 | PU-301 | Available | R | ||
| 29 | %QX0.7 | Coil | 7 | PU-302 | Available | R | ||
| 30 | %QX1.0 | Coil | 8 | PU-303 | Available | R | ||
| 31 | %QX1.1 | Coil | 9 | STN | Station in auto | R | ||
| 32 | %QX1.2 | Coil | 10 | STN | High level alarm | R | ||
| 33 | %QX1.3 | Coil | 11 | STN | Spill active | R | ||
| 34 | %QX1.4 | Coil | 12 | PU-301 | Tripped | R | ||
| 35 | %QX1.5 | Coil | 13 | PU-302 | Tripped | R | ||
| 36 | %QX1.6 | Coil | 14 | PU-303 | Tripped | R | ||
| 37 | %QW0 | Holding register | 0 | STN | Wet well level | mm | 1 | R |
| 38 | %QW1 | Holding register | 1 | STN | Inflow | L/s | x10 | R |
| 39 | %QW2 | Holding register | 2 | STN | Total discharge flow | L/s | x10 | R |
| 40 | %QW3 | Holding register | 3 | STN | Pumps running | count | 1 | R |
| 41 | %QW4 | Holding register | 4 | STN | Common drive speed | Hz | x10 | R |
| 42 | %QW5 | Holding register | 5 | STN | Time to spill weir (32767 = drawing down) | s | 1 | R |
| 43 | %QW6 | Holding register | 6 | STN | Time to LSHH (32767 = drawing down) | s | 1 | R |
| 44 | %QW7 | Holding register | 7 | STN | Net accumulation (signed) | L/s | x10 | R |
| 45 | %QW8 | Holding register | 8 | PU-301 | Run hours | h | 1 | R |
| 46 | %QW9 | Holding register | 9 | PU-302 | Run hours | h | 1 | R |
| 47 | %QW10 | Holding register | 10 | PU-303 | Run hours | h | 1 | R |
| 48 | %QW11 | Holding register | 11 | STN | Volume remaining to spill | m3 | 1 | R |
| 49 | %QW12 | Holding register | 12 | STN | Station state (enum 3.1) | 1 | R | |
| 50 | %QW13 | Holding register | 13 | PU-301 | Pump state (enum 3.2) | 1 | R | |
| 51 | %QW14 | Holding register | 14 | PU-302 | Pump state (enum 3.2) | 1 | R | |
| 52 | %QW15 | Holding register | 15 | PU-303 | Pump state (enum 3.2) | 1 | R | |
| 53 | %QW16 | Holding register | 16 | STN | Current duty pump (0 = none, 1-3) | 1 | R | |
| 54 | %QW17 | Holding register | 17 | STN | Alarm bitmask (section 6) - READ AS UNSIGNED | 1 | R | |
| 55 | %QW20 | Holding register | 20 | STN | Command acknowledge (echoes %MW1) | 1 | R | |
| 56 | %MW0 | Holding register | 1024 | STN | Station mode: 1 = auto, 2 = off | 1 | RW | |
| 57 | %MW1 | Holding register | 1025 | STN | Command word (section 3.3) | 1 | RW | |
| 58 | %MW2 | Holding register | 1026 | STN | Command parameter (pump number) | 1 | RW | |
| 59 | %MW3 | Holding register | 1027 | STN | Level control setpoint | mm | 1 | RW |
| 60 | %MW4 | Holding register | 1028 | STN | Start duty level | mm | 1 | RW |
| 61 | %MW5 | Holding register | 1029 | STN | Start pump 2 level | mm | 1 | RW |
| 62 | %MW6 | Holding register | 1030 | STN | Start pump 3 level | mm | 1 | RW |
| 63 | %MW7 | Holding register | 1031 | STN | Stop all level | mm | 1 | RW |
| 64 | %MW8 | Holding register | 1032 | STN | High level alarm | mm | 1 | RW |
| 65 | %MW9 | Holding register | 1033 | STN | Minimum drive speed | Hz | x10 | RW |
| 66 | %MW10 | Holding register | 1034 | STN | Service interval | h | 1 | RW |
| 67 | %MW20 | Holding register | 1044 | SIM | SIM ONLY: manual inflow (mode 0) | L/s | x10 | RW |
| 68 | %MW21 | Holding register | 1045 | SIM | SIM ONLY: scenario 0=man 1=diurnal 2=wet 3=ref | 1 | RW | |
| 69 | %MW22 | Holding register | 1046 | SIM | SIM ONLY: write 1 to reset scenario, self-clearing | 1 | RW | |
| 70 | %MW23 | Holding register | 1047 | SIM | SIM ONLY: time scale 1-120 | x | 1 | RW |