- Home
- Modbus register maps
- Wilo
- Stratos MAXO with CIF module Modbus RTU
Pump (smart circulator) · Modbus register map
Wilo Stratos MAXO with CIF module Modbus RTU Modbus register map
Updated 25 October 2026
The Wilo Stratos MAXO is a smart wet-rotor circulator for heating, cooling and domestic hot water. Modbus RTU comes from a plug-in CIF module on RS-485. A master picks the setpoint source and control mode, writes a relative duty point in 0.5 % steps and switches the pump on, off or to MIN/MAX overrides; a bus command timer can lock the local menu and load fallback values if the bus goes quiet. Readings cover head, calculated flow, power, energy, speed, run hours, fluid temperatures, the heat/cold meter, status flags and the Wilo error code.
This page lists 56 Modbus registers for the Wilo Stratos MAXO with CIF module Modbus RTU — 11 writable — with the table, 0-based wire address, data type, word order, scale, units and access of each, re-typed from Wilo’s own free documentation (linked below) and checked against it.
- Manufacturer
- Wilo
- Model
- Stratos MAXO with CIF module Modbus RTU
- Equipment type
- Pump (smart circulator)
- Registers
- 56 (11 writable)
- Transport
- Modbus RTU
- Default unit ID
- Not stated
- Documented addressing
- 0-based (the number printed is the address on the wire)
- 32-bit word order
- ABCD high word first (big-endian)
- Firmware
- CIF module Modbus RTU 1.00-99.99 (individual registers from 3.00, 3.01, 3.02 or 5.01 as noted)
- Also known as
- Wilo-Stratos MAXO, Stratos MAXO-D, Stratos MAXO-Z, CIF-Module Modbus RTU, CIF Modbus RTU 2190368, CIF Modbus RTU UL 2237080
Integration notes: Wilo Stratos MAXO with CIF module Modbus RTU
Set the Modbus address, baud and frame in the pump menu, then write H 300 = 5 (MANUAL), H 401 = 1 (bus setpoint), H 42 = control mode, H 1 = duty point (200 = 100 %) and H 40 = 9 (on, with the required bit 3), as in Wilo's basic example. Check I 211 (parameter set 1 = normal), I 210, I 10, I 200 and I 402, then poll I 404, I 940, I 1, I 2, I 4 and I 7.
Minimum registers to map
Addresses are 0-based wire addresses. Enough to monitor and run the unit; map more as the job needs.
| Register | Name | Type | Why | Access |
|---|---|---|---|---|
| HR 40 | Pump Command in | BITMAP16 | On/off command (write 9 = on) | Read/write |
| HR 42 | controlFunction | UINT16 | Control mode | Read/write |
| HR 1 | dutyPointRel | INT16 | Duty point, 0.5 % steps | Read/write |
| HR 401 | setpointSignalSource | UINT16 | Setpoint source = bus | Read/write |
| HR 300 | busCmd.Timer | UINT16 | Bus command timer / local lockout | Read/write |
| IR 404 | Operation Status | BITMAP16 | Ready / warning / error flags | Read |
| IR 940 | warning/errorMessage | UINT16 | Wilo error code | Read |
| IR 4 | powerInput | UINT16 | Electrical power | Read |
| IR 2 | flow | UINT16 | Calculated flow | Read |
| IR 7 | speed | INT16 | Speed | Read |
Enable Modbus control & writes
In the pump menu go to Settings > External interfaces and set up the Modbus RTU interface (address, baud rate, data frame); OFF for the bus address deactivates it. Over the bus, write H 401 = 1 so the setpoint comes from the CIF module. On module 3.01+, H 416 picks the parameter set; if I 211 does not read 1 (normal set), the normal registers are not the ones in effect. Wilo's basic example then writes H 300 = 5 (MANUAL) so both the local menu and the bus are allowed, last write wins. By factory setting the local menu and control input IN2 are locked while a CIF module is fitted.
Communication loss & watchdog
Bus command timer: write H 300 = 2 (SET) or 6 (SET_PRESET) and repeat the write before the timeout in H 400 elapses (minimum 20 s; Wilo describes 300 s as the default or fixed value). If the writes stop, the local menu is released and, with SET_PRESET, the pump runs on the preset values in H 402-405; the pump may show E50 (bus timeout). I 504 shows the seconds remaining. The activation survives a power cycle; write H 300 = 1 (OFF) to return to factory behaviour.
Byte order & addressing
- Register numbers are wire addresses (0-based). Wilo's own test: read input register 700 and expect a value of 256 or more; if that fails, try 699/701 to find your master's offset.
- Every write to H 40 must have bit 3 set (value 9 = on, 8 = off); bit 3 is a static 1 kept for compatibility.
- Duty point is in 0.5 % steps: 200 = 100 % of the mode's reference, which is published as a float in I 206 with its unit code in I 208.
- Values are forwarded to the pump only when they change. If a write seems ignored, write a different value and then the one you want.
- Several sources (HMI, app, bus) can write the same settings; normally the last write wins. Read the active registers (I 10, I 200, I 210, I 402) to see what is really in effect.
- 32-bit floats (I 206, I 300-314) are high word first; read both registers in one request.
- Function codes 03, 04, 06 and 16 are supported.
Network setup
- Bus terminals on the CIF module: A(-), B(+) and GND, two sets for incoming and outgoing lines. Some masters label A and B the other way round; swap if nothing answers.
- Switch on the built-in 120 ohm terminator (both switches S1/S2 ON) only at the module that ends the line; factory setting is off.
- Use shielded cable with the EMC cable gland and earth the shield at both ends; daisy-chain only, no stubs, stars or loops.
- Baud codes (Parameter A): 0=300, 1=600, 2=1200, 3=2400, 4=4800, 5=9600, 6=19200, 7=38400, 9=115200, 10=76800. Frame codes (Parameter C): 2=8N1, 3=8N2, 6=8E1, 10=8O1.
- Twin-head pumps: fit the CIF module in the master pump; control writes act on the pump system as a whole.
Watch out for
- Temperatures are in kelvin x 10, not °C.
- Calculated flow (I 2) is an estimate; Wilo says not to use it for closed-loop control.
- Writes below the minimum duty point (I 204) are limited to it, and modes the pump does not support are silently ignored - always read back I 10 and I 200.
- With the timer in OFF the local menu stays locked permanently; MANUAL keeps both local and bus control.
Wilo Stratos MAXO with CIF module Modbus RTU Modbus registers
Address = 0-based wire address (the documented number is shown under it when it differs) · Order: ABCD = high word first, CDAB = low word first · Scale: engineering value = raw × scale.
| Table | Address | Name | Description | Type | Order | Scale | Units | Access | Values / bits |
|---|---|---|---|---|---|---|---|---|---|
| IR | 1 | pressure | Actual (differential) pressure; may be calculated. | UINT16 | × 10 | cm H2O | Read | ||
| IR | 2 | flow | Calculated flow; not for closed-loop control. | UINT16 | × 0.1 | m³/h | Read | ||
| IR | 3 | energyConsumption | Total electrical energy consumed. | UINT16 | kWh | Read | |||
| IR | 4 | powerInput | Electrical input power. | UINT16 | W | Read | |||
| IR | 5 | operationTime | Total motor running time. | UINT16 | × 10 | h | Read | ||
| IR | 7 | speed | Rotational speed. | INT16 | rpm | Read | |||
| IR | 8 | temperatureFluid@Device | Fluid temperature in kelvin (subtract 273.15 for °C). | UINT16 | × 0.1 | K | Read | ||
| IR | 10 | controlFunction (active) | Control mode in use. | UINT16 | Read | 1 = Gen_Spd (constant speed); 3 = Gen_PHdConst (constant differential pressure); 4 = Gen_PHdVar (variable differential pressure); 9 = Gen_T (constant temperature); 10 = Gen_TDiff (constant differential temperature); 15 = INVALID; 16 = HeatRadiator_PHd; 17 = HeatRadiator_DA; 18 = HeatRadiator_T; 19 = HeatFloor_PHd; 20 = HeatFloor_DA; 21 = HeatFloor_T; 22 = HeatCeiling_PHd; 23 = HeatCeiling_DA; 24 = HeatCeiling_T; 25 = HeatFan_PHd; 26 = HeatFan_DA; 27 = HeatFan_T; 28 = HeatB._T; 29 = HeatB._TDiff; 30 = HeatB._Acc.Flow; 31 = HeatE._T; 32 = HeatE._TDiff; 33 = HeatE._Acc.Flow; 34 = Heat_PHdConst; 35 = Heat_PHdVar; 36 = Heat_PHdExt; 37 = Heat_DA; 38 = Heat_VolFlow; 39 = Heat_Acc.Flow; 40 = Heat_T; 41 = Heat_TDiff; 42 = Heat_Spd; 43 = CoolCeiling_PHd; 44 = CoolCeiling_DA; 45 = CoolCeiling_T; 46 = CoolFloor_PHd; 47 = CoolFloor_DA; 48 = CoolFloor_T; 49 = CoolFan_PHd; 50 = CoolFan_DA; 51 = CoolFan_T; 52 = CoolB._T; 53 = CoolB._TDiff; 54 = CoolB._Acc.Flow; 55 = CoolE._T; 56 = CoolE._TDiff; 57 = CoolE._Acc.Flow; 58 = Cool_PHdConst; 59 = Cool_PHdVar; 60 = Cool_PHdExt; 61 = Cool_DA; 62 = Cool_VolFlow; 63 = Cool_Acc.Flow; 64 = Cool_T; 65 = Cool_TDiff; 66 = Cool_Spd; 67 = San_Circ._T; 68 = SanW.Heat._TDiff; 71 = San_PHdConst; 72 = San_PHdVar; 73 = San_PHdExternal; 74 = San_VolFlow; 75 = San_Acc.Flow; 76 = San_T; 77 = San_TDiff; 78 = San_Spd; 79 = Gen_PHdExt; 80 = Gen_DA (Dynamic Adapt); 81 = Gen_VolFlow (constant flow); 82 = Gen_Acc.Flow; 83 = ScndPHdConst; 84 = ScndPHdVar; 85 = ScndFlow; 86 = ScndSpd; 140 = Gen_UsrDfd (user-defined PID) | |||
| IR | 18 | speed max-pres-value | Maximum speed. | UINT16 | rpm | Read | |||
| IR | 19 | speed min-pres-value | Minimum speed. | UINT16 | rpm | Read | |||
| IR | 20 | pressureMaxPHdConst | Max pressure setpoint in dp-c; scales % back to head. | UINT16 | × 10 | cm H2O | Read | ||
| IR | 21 | pressureMinPHdConst | Min pressure setpoint in dp-c. | UINT16 | × 10 | cm H2O | Read | ||
| IR | 22 | pressureMaxPHdVar | Max pressure setpoint in dp-v. | UINT16 | × 10 | cm H2O | Read | ||
| IR | 23 | pressureMinPHdVar | Min pressure setpoint in dp-v. | UINT16 | × 10 | cm H2O | Read | ||
| IR | 24 | flow max-pres-value | Maximum (calculated) flow. | UINT16 | × 0.1 | m³/h | Read | ||
| IR | 25 | flow min-pres-value | Minimum (calculated) flow. | UINT16 | × 0.1 | m³/h | Read | ||
| IR | 28 | powerInput max-pres-value | Maximum electrical input power. | UINT16 | W | Read | |||
| IR | 35 | Service Message | Legacy register. | BITMAP16 | Read | bit 0 = Service required | |||
| IR | 36 | Error Type | Legacy register; prefer I 940 for new work. | BITMAP16 | Read | bit 0 = Electronic module error; bit 1 = Motor error; bit 3 = Error present (restart will be retried); bit 4 = Supply voltage error | |||
| IR | 37 | Error Message | Legacy detailed error flags. | BITMAP16 | Read | bit 0 = Undervoltage; bit 1 = Overvoltage; bit 2 = Supply phase fault; bit 3 = Idle running (e.g. air in system); bit 8 = Motor overheated; bit 9 = Motor error; bit 10 = Pump blocked; bit 11 = Module overheated; bit 12 = Module warning; bit 13 = Module error; bit 14 = Sensor malfunction | |||
| IR | 38 | Pump Status | Legacy controller status flags. | BITMAP16 | Read | bit 0 = On command; bit 2 = Setpoint not reached; bit 3 = Override OFF; bit 4 = Configured as double pump; bit 5 = Local operation overrides bus; bit 6 = Flow / head values invalid; bit 7 = Override MIN; bit 12 = Setpoint comes from outside, not this bus (module 5.00+) | |||
| IR | 39 | State Diagnostics | Legacy diagnostic flags. | BITMAP16 | Read | bit 0 = Error present; bit 1 = Supply voltage error; bit 3 = Speed at low regulation limit; bit 4 = Speed at high regulation limit; bit 6 = Setpoint out of range; bit 8 = Local operation overrides bus; bit 10 = On command | |||
| IR | 200 | dutyPointRel (active) | Setpoint the pump is actually using (200 = 100 %). | INT16 | × 0.5 | % | Read | ||
| IR | 202 | dutyPointRel maximum-output | Upper limit of the active setpoint. | INT16 | × 0.5 | % | Read | ||
| IR | 204 | dutyPointRel minimum-output | Lower limit; lower writes are limited to it. | INT16 | × 0.5 | % | Read | ||
| IR | 206 | dutyPoint100%Val | Engineering value at 100 % in the current mode; unit in I 208. | FLOAT32 | ABCD | Read | |||
| IR | 208 | dutyPointRel units | Unit code for I 206. | UINT16 | Read | 5 = V; 19 = kWh; 47 = W; 55 = bar; 62 = Cel; 63 = K; 73 = s; 80 = m3; 95 = {noUnit}; 104 = min-1; 135 = m3/h | |||
| IR | 210 | setpointSignalSource (active) | UINT16 | Read | 1 = CIF module (bus); 6 = Internal; 7 = EXT 1; 8 = EXT 2; 9 = INVALID | ||||
| IR | 211 | parameterSetSelector (active) | Parameter set in use (module 3.01+). | UINT16 | Read | 1 = norm (normal set); 2 = aux (auxiliary set); 3 = preset (fallback set) | |||
| IR | 300 | powerHeating | Heating power in the measured circuit. | FLOAT32 | ABCD | W | Read | ||
| IR | 302 | powerRefrigeration | Cooling power in the measured circuit. | FLOAT32 | ABCD | W | Read | ||
| IR | 304 | energyHeatRrst.able | Resettable heating energy (reset may not be possible via bus). | FLOAT32 | ABCD | kWh | Read | ||
| IR | 308 | energyRefrigRrst.able | Resettable cooling energy. | FLOAT32 | ABCD | kWh | Read | ||
| IR | 312 | energyHeat.Total | Total heating energy, not resettable. | FLOAT32 | ABCD | kWh | Read | ||
| IR | 314 | energyRefrig.Total | Total cooling energy, not resettable. | FLOAT32 | ABCD | kWh | Read | ||
| IR | 316 | temperat.FluidFwd | Forward (supply) temperature in kelvin. | UINT16 | × 0.1 | K | Read | ||
| IR | 318 | temperat.FluidRet | Return temperature in kelvin. | UINT16 | × 0.1 | K | Read | ||
| IR | 320 | voltageInput | Mains input voltage. | UINT16 | × 0.1 | V | Read | ||
| IR | 400 | dutyPointRel (output) | Actual duty point reached (200 = 100 %). | INT16 | × 0.5 | % | Read | ||
| IR | 402 | Pump Command active | Command currently in effect. | BITMAP16 | Read | bit 0 = Pump on; bit 1 = Override MIN; bit 2 = Override MAX; bit 3 = Static 1; bit 4 = Override OFF; bit 5 = Override ON; bit 8 = Auto setback / night mode | |||
| IR | 403 | Pump Command out | BITMAP16 | Read | bit 8 = Auto setback / night mode active | ||||
| IR | 404 | Operation Status | Main run / warning / error flags. | BITMAP16 | Read | bit 0 = Ready for operation; bit 1 = On command; bit 2 = Service required; bit 3 = Warning present; bit 4 = Error present (restart will be retried); bit 5 = Final error (no restart) | |||
| IR | 500 | heartbeatCount | Counts pump-to-module heartbeats; resets on restart. | UINT32 | ABCD | Read | |||
| IR | 504 | busCmd.TimerTimeRemain. | Seconds left before the bus command timer elapses (module 3.02+). | UINT16 | s | Read | |||
| IR | 940 | warning/errorMessage | Current Wilo warning/error code (E000-E255); 0 = none. | UINT16 | Read | 0 = E000 NO_ERROR - no error; 3 = E003 FLUID_TEMP_HI - fluid temperature too high; 4 = E004 MAINS_VOLT_LO - mains undervoltage; 5 = E005 MAINS_VOLT_HI - mains overvoltage; 6 = E006 MAINS_PHASE - mains phase missing; 7 = E007 PUMP_GENERATOR - generator operation (flow in pumping direction); 9 = E009 PUMP_TURBINE - turbine operation; 10 = E010 PUMP_BLOCKED - rotor blocked; 11 = E011 PUMP_DRY_RUN - dry running; 25 = E025 MOT_OPEN_CIRC - motor / winding contact missing; 26 = E026 MOT_TEMP_SENS - winding temperature sensor open; 30 = E030 MOD_TEMP_HI - module overtemperature; 33 = E033 MOD_VOLT_DC_HI - DC link overvoltage; 42 = E042 SENS_IN1 - In1 signal open or shorted (2-10 V / 4-20 mA); 43 = E043 SENS_IN2 - In2 signal open or shorted (2-10 V / 4-20 mA); 50 = E050 COM_LOC_BIND - local interface / bus communication timeout; 51 = E051 COM_MP - invalid twin/multi-pump combination; 52 = E052 COM_MP_TIMEOUT - twin/multi-pump communication timeout; 54 = E054 COM_REM_BIND - binding partner missing on bus; 72 = E072 ELECT_POW - power section / converter; 77 = E077 ELECT_SUPP_24_I - 24 V supply for inputs faulty; 89 = E089 MOT_MOD_FAULT - motor or module fault; 97 = E097 SET_DATA_MISS - pump type data set missing; 100 = E100 CTRL_BATT - battery low; 104 = E104 CTRL_FAN_EXT - external motor fan faulty; 119 = E119 MCTL_TURBINE - turbine operation (flow against pumping direction); 251 = E251 EXTENDED_WARN - extended code, warning bit set; 252 = E252 EXTENDED_ERR - extended code, error bit set; 255 = E255 INVALID - invalid | |||
| HR | 1 | dutyPointRel | Setpoint in % of the mode's 100 % value (200 = 100 %). | INT16 | × 0.5 | % | Read/write | ||
| HR | 40 | Pump Command in | On/off and override command; bit 3 must be 1 on every write. | BITMAP16 | Read/write | bit 0 = Pump on; bit 1 = Override MIN; bit 2 = Override MAX; bit 3 = Always 1 when writing; bit 4 = Override OFF (module 3.00+); bit 5 = Override ON (module 3.00+); bit 8 = Auto setback / night mode (module 3.02+) | |||
| HR | 42 | controlFunction | Control mode; unsupported values are ignored. | UINT16 | Read/write | 1 = Gen_Spd (constant speed); 3 = Gen_PHdConst (constant differential pressure); 4 = Gen_PHdVar (variable differential pressure); 9 = Gen_T (constant temperature); 10 = Gen_TDiff (constant differential temperature); 15 = INVALID; 16 = HeatRadiator_PHd; 17 = HeatRadiator_DA; 18 = HeatRadiator_T; 19 = HeatFloor_PHd; 20 = HeatFloor_DA; 21 = HeatFloor_T; 22 = HeatCeiling_PHd; 23 = HeatCeiling_DA; 24 = HeatCeiling_T; 25 = HeatFan_PHd; 26 = HeatFan_DA; 27 = HeatFan_T; 28 = HeatB._T; 29 = HeatB._TDiff; 30 = HeatB._Acc.Flow; 31 = HeatE._T; 32 = HeatE._TDiff; 33 = HeatE._Acc.Flow; 34 = Heat_PHdConst; 35 = Heat_PHdVar; 36 = Heat_PHdExt; 37 = Heat_DA; 38 = Heat_VolFlow; 39 = Heat_Acc.Flow; 40 = Heat_T; 41 = Heat_TDiff; 42 = Heat_Spd; 43 = CoolCeiling_PHd; 44 = CoolCeiling_DA; 45 = CoolCeiling_T; 46 = CoolFloor_PHd; 47 = CoolFloor_DA; 48 = CoolFloor_T; 49 = CoolFan_PHd; 50 = CoolFan_DA; 51 = CoolFan_T; 52 = CoolB._T; 53 = CoolB._TDiff; 54 = CoolB._Acc.Flow; 55 = CoolE._T; 56 = CoolE._TDiff; 57 = CoolE._Acc.Flow; 58 = Cool_PHdConst; 59 = Cool_PHdVar; 60 = Cool_PHdExt; 61 = Cool_DA; 62 = Cool_VolFlow; 63 = Cool_Acc.Flow; 64 = Cool_T; 65 = Cool_TDiff; 66 = Cool_Spd; 67 = San_Circ._T; 68 = SanW.Heat._TDiff; 71 = San_PHdConst; 72 = San_PHdVar; 73 = San_PHdExternal; 74 = San_VolFlow; 75 = San_Acc.Flow; 76 = San_T; 77 = San_TDiff; 78 = San_Spd; 79 = Gen_PHdExt; 80 = Gen_DA (Dynamic Adapt); 81 = Gen_VolFlow (constant flow); 82 = Gen_Acc.Flow; 83 = ScndPHdConst; 84 = ScndPHdVar; 85 = ScndFlow; 86 = ScndSpd; 140 = Gen_UsrDfd (user-defined PID) | |||
| HR | 300 | busCmd.Timer | Local-lockout / fallback timer state machine. | UINT16 | Read/write | 1 = OFF; 2 = SET; 3 = ACTIVE; 4 = RESET; 5 = MANUAL; 6 = SET_PRESET; 7 = ACTIVE_PRESET; 8 = RESET_PRESET; 9 = MANUAL_PRESET; 10 = INVALID | |||
| HR | 400 | busCmd.TimerTimeout | Bus command timer timeout, minimum 20 s. | UINT16 | s | Read/write | |||
| HR | 401 | setpointSignalSource | Where the setpoint comes from; write 1 for bus control. | UINT16 | Read/write | 1 = CIF module (bus); 6 = Internal; 7 = EXT 1; 8 = EXT 2; 9 = INVALID | |||
| HR | 402 | dutyPointRel preset | Fallback setpoint used by the bus command timer. | INT16 | × 0.5 | % | Read/write | ||
| HR | 403 | controlFunction preset | Fallback control mode. | UINT16 | Read/write | 1 = Gen_Spd (constant speed); 3 = Gen_PHdConst (constant differential pressure); 4 = Gen_PHdVar (variable differential pressure); 9 = Gen_T (constant temperature); 10 = Gen_TDiff (constant differential temperature); 15 = INVALID; 16 = HeatRadiator_PHd; 17 = HeatRadiator_DA; 18 = HeatRadiator_T; 19 = HeatFloor_PHd; 20 = HeatFloor_DA; 21 = HeatFloor_T; 22 = HeatCeiling_PHd; 23 = HeatCeiling_DA; 24 = HeatCeiling_T; 25 = HeatFan_PHd; 26 = HeatFan_DA; 27 = HeatFan_T; 28 = HeatB._T; 29 = HeatB._TDiff; 30 = HeatB._Acc.Flow; 31 = HeatE._T; 32 = HeatE._TDiff; 33 = HeatE._Acc.Flow; 34 = Heat_PHdConst; 35 = Heat_PHdVar; 36 = Heat_PHdExt; 37 = Heat_DA; 38 = Heat_VolFlow; 39 = Heat_Acc.Flow; 40 = Heat_T; 41 = Heat_TDiff; 42 = Heat_Spd; 43 = CoolCeiling_PHd; 44 = CoolCeiling_DA; 45 = CoolCeiling_T; 46 = CoolFloor_PHd; 47 = CoolFloor_DA; 48 = CoolFloor_T; 49 = CoolFan_PHd; 50 = CoolFan_DA; 51 = CoolFan_T; 52 = CoolB._T; 53 = CoolB._TDiff; 54 = CoolB._Acc.Flow; 55 = CoolE._T; 56 = CoolE._TDiff; 57 = CoolE._Acc.Flow; 58 = Cool_PHdConst; 59 = Cool_PHdVar; 60 = Cool_PHdExt; 61 = Cool_DA; 62 = Cool_VolFlow; 63 = Cool_Acc.Flow; 64 = Cool_T; 65 = Cool_TDiff; 66 = Cool_Spd; 67 = San_Circ._T; 68 = SanW.Heat._TDiff; 71 = San_PHdConst; 72 = San_PHdVar; 73 = San_PHdExternal; 74 = San_VolFlow; 75 = San_Acc.Flow; 76 = San_T; 77 = San_TDiff; 78 = San_Spd; 79 = Gen_PHdExt; 80 = Gen_DA (Dynamic Adapt); 81 = Gen_VolFlow (constant flow); 82 = Gen_Acc.Flow; 83 = ScndPHdConst; 84 = ScndPHdVar; 85 = ScndFlow; 86 = ScndSpd; 140 = Gen_UsrDfd (user-defined PID) | |||
| HR | 404 | Pump Command preset | Fallback on/off command. | BITMAP16 | Read/write | bit 0 = Pump on (preset) | |||
| HR | 405 | setpointSignalSource preset | Fallback setpoint source. | UINT16 | Read/write | 1 = CIF module (bus); 6 = Internal; 7 = EXT 1; 8 = EXT 2; 9 = INVALID | |||
| HR | 416 | parameterSetSelector | Which parameter set drives the pump (module 3.01+). | UINT16 | Read/write | 1 = norm (normal set); 2 = aux (auxiliary set); 3 = preset (fallback set) |
Notes on this map
- Source is Wilo's public HTML document for all CIF modules, which marks every register and every enum/bit value with the pumps that support it. Only registers and values listed as supported by the Stratos MAXO are kept. Second, related Wilo document: Wilo-CIF-Module installation and operating instructions 2193854 Ed.02/2020-11, https://cms.media.wilo.com/cdndoc/wilo182202/5025204/wilo182202.pdf (wiring and terminators; no datapoint list). Facts are re-keyed in our own words and the documents are linked, not re-hosted.
- 32-bit values (REAL and UDINT) are high word first (ABCD): Wilo puts the most significant 16 bits at the base address.
- Scale: physical value = raw x scale as in Wilo's list (pressure raw x 10 = cm H2O, operation time raw x 10 = h, flow raw x 0.1 = m³/h, duty point raw x 0.5 = %, temperatures raw x 0.1 = K).
- Temperatures are in kelvin, not °C: 2931 means 293.1 K = 20.0 °C.
- Error values: Wilo marks an unavailable or invalid reading with the largest positive value of the data type (e.g. 65535 for UINT, 32767 for INT).
- controlFunction lists every mode Wilo marks as supported on a Stratos MAXO; which modes a given pump accepts depends on its firmware and CPU variant (Wilo lists CPU_F4 and CPU_H5), and unsupported values are ignored. Values 69 and 70 are marked reserved and are left out.
- warning/errorMessage (I 940) lists only the codes Wilo marks as supported on the Stratos MAXO. The user trouble code (I 901, 74 Stratos MAXO codes) and the second error register I 950 are left out.
- Left out: aux parameter set H 412-415 and its readbacks I 222-262; PID tuning H 408-410; flow limits H 420-427 / I 270-281; temperature references H 302/H 304 and sensor signal H 306; analog input readings I 324-332; heat-meter start times I 306/I 310 (REAL seconds since 1970); system time I 502; identification I 700-718 (BCD-coded firmware, vendor/UUID words); double-pump total run time I 9; legacy Stratos registers H 44-47 and the partner-pump block I 65-102 (not marked for Stratos MAXO).
- Bits shown for the bit-field registers are those Wilo marks as supported on Stratos MAXO; bits not listed are static 0 (or unused) on this pump.
- Left out: I 212. Wilo names it 'pressure max-pres-value' (REAL, bar, module 5.01+) but describes it as the live pressure, so it is unclear whether it is the actual or the maximum pressure.
- Flow (I 2): for module versions up to 6.00 Wilo gives 9999 as its error value, not 65535.
Check it against the live device. A register map tells you what the controller can expose; the unit in front of you may differ by firmware or options. Read a few registers and compare them with the unit’s own display; for a 32-bit value the float and byte-order decoder shows all four word orders at once, so a wrong word order or scale is obvious. New to this? Read what a register map is and why addresses are off by one.
Questions about the Wilo Stratos MAXO with CIF module Modbus RTU
What Modbus registers does the Wilo Stratos MAXO with CIF module Modbus RTU have?
This map lists 56 registers: 45 input registers, 11 holding registers. 11 of them can be written. Registers vary with firmware, options and configuration, so confirm against the device.
Are the Wilo Stratos MAXO with CIF module Modbus RTU Modbus addresses 0-based or 1-based?
The manufacturer's document numbers registers 0-based (the number printed is the address on the wire). Every address on this page is the 0-based wire address you put in the request; the documented number is shown under it where it differs. Wilo states that all register addresses are raw addresses as sent on the bus, so input register 700 is requested at address 700. Its example frame confirms it: 01 04 02 BC 00 01 reads input register 0x02BC = 700. Masters that number registers from 1 must use 701 (or 30701).
What byte order does the Wilo Stratos MAXO with CIF module Modbus RTU use for 32-bit values?
Multi-register values in this map use ABCD (high word first (big-endian)). Set your client to this order for every 32/64-bit value in the table.
What are the minimum Modbus registers to integrate the Wilo Stratos MAXO with CIF module Modbus RTU?
Start with HR 40 Pump Command in (On/off command (write 9 = on)); HR 42 controlFunction (Control mode); HR 1 dutyPointRel (Duty point, 0.5 % steps); HR 401 setpointSignalSource (Setpoint source = bus); HR 300 busCmd.Timer (Bus command timer / local lockout); IR 404 Operation Status (Ready / warning / error flags); IR 940 warning/errorMessage (Wilo error code); IR 4 powerInput (Electrical power); IR 2 flow (Calculated flow); IR 7 speed (Speed).
How do I enable Modbus control of the Wilo Stratos MAXO with CIF module Modbus RTU?
In the pump menu go to Settings > External interfaces and set up the Modbus RTU interface (address, baud rate, data frame); OFF for the bus address deactivates it. Over the bus, write H 401 = 1 so the setpoint comes from the CIF module. On module 3.01+, H 416 picks the parameter set; if I 211 does not read 1 (normal set), the normal registers are not the ones in effect. Wilo's basic example then writes H 300 = 5 (MANUAL) so both the local menu and the bus are allowed, last write wins. By factory setting the local menu and control input IN2 are locked while a CIF module is fitted.
What happens when the Wilo Stratos MAXO with CIF module Modbus RTU loses Modbus communication?
Bus command timer: write H 300 = 2 (SET) or 6 (SET_PRESET) and repeat the write before the timeout in H 400 elapses (minimum 20 s; Wilo describes 300 s as the default or fixed value). If the writes stop, the local menu is released and, with SET_PRESET, the pump runs on the preset values in H 402-405; the pump may show E50 (bus timeout). I 504 shows the seconds remaining. The activation survives a power cycle; write H 300 = 1 (OFF) to return to factory behaviour.
Where is the official Wilo Stratos MAXO with CIF module Modbus RTU Modbus documentation?
The source is WILO Modbus RTU - CIF-Module installation and operating instructions with functional description and datapoint list (wilo194406), revision 2026-07-15, published free by Wilo at https://cms.media.wilo.com/cdndoc/wilo194406/11516106/wilo194406.html.
More Wilo Modbus register maps
Source: WILO Modbus RTU - CIF-Module installation and operating instructions with functional description and datapoint list · wilo194406 · rev. 2026-07-15. Register numbers, types, scaling and units are reproduced as published; descriptions are our own.