Xylem Bell & Gossett pump 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 |
| last_error_code | 6 | U16 | 1 | |
| parameter_index | 8 | U16 | 1 | |
| control_word_pcd | 2809 | U16 | 1 | |
| reference_pcd | 2810 | I16 | 0.006103515625 | |
| status_word_pcd | 2909 | U16 | 1 | |
| main_actual_value_pcd | 2910 | I16 | 0.006103515625 | |
| control_word | 49999 | U16 | 1 | |
| bus_reference | 50009 | I16 | 0.006103515625 | % |
| status_word | 50199 | U16 | 1 | |
| main_actual_value | 50209 | I16 | 0.006103515625 | % |
| power_kw | 16099 | U32BE | 0.01 | kW |
| motor_voltage | 16119 | U16 | 0.1 | V |
| frequency | 16129 | U16 | 0.1 | Hz |
| motor_current | 16139 | U32BE | 0.01 | A |
| speed_rpm | 16169 | I16 | 1 | RPM |
| dc_link_voltage | 16299 | U16 | 1 | V |
| heatsink_temp | 16339 | I16 | 1 | |
link settings as documented (unverified): RTU; default 9600 8E1; FC 01,03,05,06,11,15,16,17
bench facts as documented (unverified)
| terminals | Terminal 68, Terminal 69 |
| A/B polarity | Terminal 68 is connected to the P signal (TX+, RX+), Terminal 69 is connected to the N signal (TX-, RX-) |
| termination | Resistor network at both ends, set switch S801 on the control card to 'On' |
| connector | Control card terminals |
| isolation | Galvanic isolation |
| shield/ground | 0.25 mm2/24 AWG shielded twisted-pair cable |
| max registers/read | 63 |
| broadcast | supported |
| firmware register | 15429 |
| power | 380-500 V, 525-690 V |
| environment | Air humidity designed to meet IEC/EN 60068-2-3, EN 50178 at 50°C. IP54/55 or IP00/IP20/TYPE 1. |
| doc revision | MG92B102, Rev. 2011-10-31 |
field reports — community-sourced, unverified (checked 2026-06-11)
- Off-by-one register addressing confusion: Users frequently encounter issues because Danfoss/Xylem documentation lists 1-based register numbers (e.g., 2810 for Control Word, 16170 for Speed RPM), but Modbus masters require 0-based addressing (e.g., 2809, 16169). [source]
- Write function code documentation anomaly: The vendor documentation lists Function Code 03 (Read Holding Registers) for all parameters, failing to explicitly specify that Function Codes 06 (Write Single Register) or 16 (Write Multiple Registers) must be used to write to writable parameters. [source]
- RS-485 polarity swap: In some field installations, technicians have had to reverse the RS-485 polarity (swapping terminals 68 and 69) to establish communication, despite the documented polarity. [source]
- confirmed: comms defaults (baud rates [2400-115200], default baud 9600, RTU framing, Even parity, 1 stop bit) — confirmed by Danfoss Modbus RTU Operating Instructions (MG92B102) and Xylem Technologic manuals
- confirmed: physical connection details (terminals 68/69, polarity, termination switch S801, galvanic isolation) — confirmed by Xylem Technologic Intelligent Pump Controller Instruction Manual and Danfoss VLT manuals
- confirmed: register map addresses (0-based addresses for control word, status word, parameters like speed, frequency, current, etc.) — confirmed by Danfoss FC102 Modbus Register Overview and Xylem documentation
- confirmed: quirks (broadcast supported, max read registers of 63) — confirmed by Danfoss Modbus RTU Operating Instructions (MG92B102)
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.