Cla-Val electronic valve controller
Register map(s) for this device, with a note of how far each has been checked. Addresses are
0-based, as on the wire. Scale and byte order are confirmed only at the hardware-verified rung.
coherence-checked
Round-trips through a real Modbus stack with no overlapping addresses and a word-order-sensitive codec — the map is internally coherent and wire-decodable. Does NOT prove byte-order or scaling match a real device: the emulator is seeded from the map's own types, so a uniformly wrong byte-order still round-trips. Only hardware-verified confirms byte-order/scale on the wire.
| point | address (0-based) | type | scale | unit |
| Analog Input Modbus Override | 6 | U16 | 1 | |
| Digital Input Modbus Override | 7 | U16 | 1 | |
| Digital Input DI1 | 999 | U16 | 1 | |
| Digital Input DI2 | 1000 | U16 | 1 | |
| Digital Input DI3 | 1001 | U16 | 1 | |
| Digital Input DI4 | 1002 | U16 | 1 | |
| Digital Input DI5 | 1003 | U16 | 1 | |
| Digital Input DI6 | 1004 | U16 | 1 | |
| Digital Output SO1 | 1005 | U16 | 1 | |
| Digital Output SO2 | 1006 | U16 | 1 | |
| Digital Output RO1 | 1007 | U16 | 1 | |
| Digital Output RO2 | 1008 | U16 | 1 | |
| AI1 | 2999 | I32BE | 0.01 | |
| AI2 | 3001 | I32BE | 0.01 | |
| AI3 | 3003 | I32BE | 0.01 | |
| AI4 | 3005 | I32BE | 0.01 | |
| AI5 | 3007 | I32BE | 0.01 | |
| AI6 | 3009 | I32BE | 0.01 | |
| AO1 | 3035 | I32BE | 0.01 | |
| AO2 | 3037 | I32BE | 0.01 | |
| AO3 | 3039 | I32BE | 0.01 | |
| AO4 | 3041 | I32BE | 0.01 | |
field reports — community-sourced, unverified (checked 2026-06-11)
- In R-Engine version 2.2.0, when remote backup of the ValvApps to an FTP server (or Link2Valves server) is enabled, the active PID process could get corrupted during the backup process. [source]
- In R-Engine versions prior to 2.9.2, downloading a new R-Engine version via L2V (Link2Valves) could cause the device to get stuck in an infinite restart loop. [source]
- In R-Engine versions prior to 2.5.0, log export on USB was broken (bug introduced in version 2.4.0). [source]
- In older R-Engine versions, a device restart was required after switching between Modbus tables. [source]
- confirmed: di1 @ 999, di2 @ 1000, di3 @ 1001, di4 @ 1002, di5 @ 1003, di6 @ 1004 — confirmed by Cla-Val VC-22D / D22 Modbus Registers Table (registers 41000 to 41005, 1-based)
- confirmed: so1 @ 1005, so2 @ 1006, ro1 @ 1007, ro2 @ 1008 — confirmed by Cla-Val VC-22D / D22 Modbus Registers Table (registers 41006 to 41009, 1-based)
- confirmed: ai1 @ 2999, ai2 @ 3001, ai3 @ 3003, ai4 @ 3005, ai5 @ 3007, ai6 @ 3009 — confirmed by Cla-Val VC-22D / D22 Modbus Registers Table (registers 43000 to 43011, 1-based, 32-bit values)
- confirmed: ao1 @ 3035, ao2 @ 3037, ao3 @ 3039, ao4 @ 3041 — confirmed by Cla-Val VC-22D / D22 Modbus Registers Table (registers 43036 to 43043, 1-based, 32-bit values)
The trust ladder
Each rung states what it proved and what it did not. Gray until proven; green is earned by hardware only.
- generated — A prompt produced it. Unproven — anyone can regenerate this.
- structure-verified — Decode path is structurally sound (addresses, widths, finite values). Does NOT prove word order or scaling.
- coherence-checked — Round-trips through a real Modbus stack with no overlapping addresses and a word-order-sensitive codec — the map is internally coherent and wire-decodable. Does NOT prove byte-order or scaling match a real device: the emulator is seeded from the map's own types, so a uniformly wrong byte-order still round-trips. Only hardware-verified confirms byte-order/scale on the wire.
- hardware-verified (software-key) x1 — Matched a real device with operator-attested readings as ground truth — the only rung that confirms word order + scaling on the wire.