TapHome

Xvent Xcont Central

Modbus RTU
Submitted by
Last updated: 03. 2026
Xvent Xcont Central

The Xvent Xcont Central is a Modbus RTU controller for Xvent Xhouse (XH) and Xflat (XF) central heat recovery units. It connects to TapHome via RS-485 using an RJ45 connector through the XCONT-HUB. The template provides fan speed control, room temperature and humidity monitoring, frost protection temperature, airflow measurement, CO2 and humidity activation thresholds, and operating modes including boost and summer mode.

Firmware version 100 or higher is required for Modbus communication.

Hardware connection

RS-485 wiring via RJ45

The Xcont Central uses an RJ45 connector for RS-485 communication through the XCONT-HUB. The bus operates in half-duplex mode.

Xvent Xcont Central RJ45 connector pinout for RS-485 connection to XCONT-HUB

RJ45 pin assignment:

PinFunction
1Unconnected
2Unconnected
3RS-485 bus data wire A
4RS-485 bus data wire A
5RS-485 bus data wire B
6RS-485 bus data wire B
7Unconnected
8Unconnected

Connect wires A (pins 3, 4) to TapHome RS-485 A+/D+ and wires B (pins 5, 6) to TapHome RS-485 B-/D-. Pins 1, 2, 7, and 8 must be left unconnected.

The bus operates in half-duplex mode. The unit requires a minimum pause of 4 ms between Modbus frames for correct frame detection. The typical response time is approximately 4 ms.

Technical specifications
  • Protocol: Modbus RTU Slave, RS-485
  • Baud rate: 19200 (also supports 4800 and 9600)
  • Parity: Even (also supports no parity)
  • Data bits: 8
  • Stop bit: 1
  • Slave address range: 1–247

Configuration

Enabling Modbus communication

The Modbus slave address and communication parameters are configured via the DCFG retention register at address 0x9C50. The default settings are:

  • Baud rate: 19200 (bits 5–6 = 3)
  • Parity: Even (bit 7 = 0)
  • Slave address: Configured in bits 8–15 (range 1–247)

To change the Modbus settings, write to register H:40016 using Modbus function 0x10:

BitsFunctionValues
5–6Baud rate0=Disabled, 1=4800, 2=9600, 3=19200
7Parity0=Even, 1=No parity
8–15Slave address1–247

Changes to baud rate, parity, and slave address take effect immediately. The unit will stop communicating until the Modbus master is reconfigured to match the new parameters.

TapHome configuration

When adding the device in TapHome, configure the Modbus RTU connection with these settings:

  • Slave ID: Match the address configured in the unit (default depends on unit)
  • Baud rate: 19200
  • Parity: Even
  • Stop bits: 1
  • Data bits: 8

Device capabilities

Power and operating modes
  • Power (H:40000 bit 0) — main power ON/OFF switch for the recovery unit
  • Fan Mode (H:40000 bit 1) — switches between Automatic (AQS-driven based on CO2/humidity sensors) and Manual fan control
  • Summer Mode (H:40000 bit 2) — activates summer mode bypass with configurable duration (default 8 hours)
  • Boost Mode (H:40000 bit 4) — activates boost mode with higher fan speed for a configurable duration (default 60 seconds)
  • Touch Button Lock (H:40000 bit 5) — child lock for the front panel touch buttons

All these controls share a single retention register (H:40000) and use individual bit manipulation — toggling one function does not affect the others.

Fan speed control
  • Fan Speed Level (H:40000 bits 6–9) — selects from 8 fan speed levels (0–7), where each level corresponds to a specific voltage output that varies by unit model (XF1-015, XH1-030, XF1-020, XH2-030). The multi-value switch also shows a Boost option (level 8), but it is recommended to use the Boost Mode switch instead

  • Fan Status (A:30001 bits 8–11) — read-only multi-value indicator showing the current fan operating state: Unit OFF, OFF cooling, Fan 1 error, Fan 2 error, Active normal, Active antifreeze, Inactive normal, Inactive antifreeze, Summer mode, or Boost mode. A service attribute shows the previous fan status before the current transition

Temperature and humidity monitoring
  • Room Temperature & Humidity (A:30016 / A:30014) — reads room temperature with 0.1°C resolution and relative humidity with 0.1% RH resolution. A sensor status service attribute reports whether the sensor is OK, disconnected, or shorted
  • Frost Protection Temperature (A:30015) — reads the exhaust-side frost protection temperature sensor with 0.1°C resolution. A sensor status service attribute monitors the sensor connection state
  • Desired Temperature (A:30012) — reads the currently configured room temperature setpoint with 0.1°C resolution. This value is read-only in the template — the temperature level is set via the front panel register
Fan voltage monitoring
  • Fan 1 Voltage (A:30018) — reads the actual output voltage of fan 1 with 0.01 V resolution. Service attributes report the tacho input status and motor start confirmation
  • Fan 2 Voltage (A:30020) — reads the actual output voltage of fan 2 with 0.01 V resolution. Same service attributes as Fan 1
Air quality thresholds
  • CO2 Activation Threshold (H:40001) — configurable CO2 concentration level (600–1000 ppm, default 800 ppm) at which the fans automatically activate when in AQS automatic mode. Adjustable via a “Set Value” service action
  • RH Activation Threshold (H:40002) — configurable relative humidity level (50–75%, default 65%) at which the fans automatically activate when in AQS automatic mode. Adjustable via a “Set Value” service action
Airflow measurement
  • Airflow (A:30015) — reads the current airflow rate from the flow sensor with 0.1 m³/h resolution
Service diagnostics

The module exposes three service attributes for monitoring:

  • Firmware Version (A:30000) — current firmware version of the unit
  • UI State (A:30001 bits 0–3) — current user interface state with 14 possible values including Unit off, Fan errors, Sensor errors, Lock states, Normal operation, Service menu, and User menu
  • Attribute (H:40000 bits 10–15) — temperature level setting for E-type units

The module ReadScript also monitors CO2 and RH sensor errors from status register A:30003, reporting them as errors in TapHome.

Additional capabilities

The Xcont Central also exposes registers for CO2 sensor readings (A:30013), AQS air quality state and required fan speed, preheat and reheat status monitoring, filter elapsed time tracking (A:30028), relay status for preheat and reheat, room temperature correction offset, and various timer registers. Configuration options include filter lifetime setting, boost mode fan speed and duration, summer mode duration, and a permanent minimum fan speed flag. These can be added in a future template update.

The CO2 sensor value register (A:30013) and filter elapsed time (A:30028) are not included in the current template. To monitor CO2 levels directly, the CO2 sensor can be added as a custom Modbus device in TapHome using input register A:30013 (function 0x04, address 0x753D).

Troubleshooting

No Modbus communication
  1. Check the RJ45 cable connection — ensure the cable is properly seated in both the XCONT-HUB and the RS-485 adapter
  2. Verify pin wiring — pins 3/4 (wire A) and 5/6 (wire B) must be correctly mapped to TapHome RS-485 A+/B-
  3. Confirm communication parameters — TapHome must be set to 19200 baud, even parity, 1 stop bit, 8 data bits (matching the unit defaults)
  4. Check the slave address — verify the configured address matches what is set in TapHome
  5. Observe frame timing — ensure at least 4 ms pause between Modbus frames
Sensor errors reported in TapHome
  1. CO2 sensor error — check the physical connection of the CO2 sensor to the unit. The module ReadScript reads bit 0 of register A:30003
  2. RH sensor error — check the physical connection of the humidity sensor. The module ReadScript reads bit 1 of register A:30003
  3. Room sensor disconnected/shorted — check the service attribute on the Room Temperature device. Status values: 0=OK, 1=Disconnected, 2=Shorted
Fan errors
  1. Check the Fan Status device — values 2 and 3 indicate Fan 1 or Fan 2 error respectively
  2. Verify the tacho input status service attribute on the Fan Voltage devices (OK/NG)
  3. Check the motor start flag service attribute — NG indicates the motor failed to start
Register address format

The Xcont Central uses high Modbus addresses. Input registers start at 0x7530 (decimal 30000) and retention registers at 0x9C40 (decimal 40000). When configuring custom devices in TapHome, use the decimal register addresses (e.g., 30016 for room temperature, 40000 for front panel control).

Available devices

Xvent Xcont Central Module
Service Attributes
Firmware Version
UI State
Attribute

Xvent Xcont Central

Read (module)
IF(GETBIT(MODBUSR(A, 30003, Uint16),0)=1, ADDERROR("Chyba CO2 čidla"));
IF(GETBIT(MODBUSR(A, 30003, Uint16),1)=1, ADDERROR("Chyba RH čidla"));
Service Attributes
Firmware Version
MODBUSR(A, 30000, Uint16)
Stav uživatelského rozhraní
SWITCH(GETBITS( MODBUSR(A, 30001, Uint16),0,4 ), 
0, "Vypnutá jednotka",
1, "Vypnuté zařízení probíhá dochlazení předehřevu či dohřevu",
2, "Chyba ventilátoru 1 ",
3, "Chyba ventilátoru 2 ",
4, "Chyba pokojového čidla",
5, "Chyba protimrazového čidla",
6, "Aktivní zámek dotykových tlačítek",
7, "Stav deaktivace zámku dotykových tlačítek",
8, "Stav probuzeného ovladače, zobrazí aktuální nastavení",
9, "Režim nastavení škály ventilátorů",
10, "Režim nastavení škály teplot",
11, "Běžný power ON režim",
12, "Režim servisního menu",
13, "Režim uživatelského menu",
"Chyba"
)
Atribút
GETBITS(MODBUSR(H, 40000, Uint16), 10, 6)
Fan 1 Voltage Variable Read-only

Actual output voltage of supply fan — indicates current fan speed

Register: A:30018 Int16 Unit: V numeric
Service Attributes
Tacho Input Status
Motor Start Flag

Fan 1 Voltage

Read
MODBUSR(A, 30018, Int16)/100
Service Attributes
Stav tacho vstupu
SWITCH (GETBIT(MODBUSR(A, 30019, Uint16), 0),
1, "OK",
2, "NG",
"Chyba pri komunikaci"
)
Flag úspěšného startu motoru
SWITCH (GETBIT(MODBUSR(A, 30019, Uint16), 1),
1, "OK",
2, "NG",
"Chyba pri komunikaci"
)
Fan 2 Voltage Variable Read-only

Actual output voltage of exhaust fan — indicates current fan speed

Register: A:30020 Int16 Unit: V numeric
Service Attributes
Tacho Input Status
Motor Start Flag

Fan 2 Voltage

Read
MODBUSR(A, 30020, Int16)/100
Service Attributes
Stav tacho vstupu
SWITCH (GETBIT(MODBUSR(A, 30021, Uint16), 0),
1, "OK",
2, "NG",
"Chyba pri komunikaci"
)
Flag úspěšného startu motoru
SWITCH (GETBIT(MODBUSR(A, 30021, Uint16), 1),
1, "OK",
2, "NG",
"Chyba pri komunikaci"
)
Boost Mode Switch

Activates temporary high-speed ventilation for rapid air exchange

Register: H:40000 UInt16 bit
Values / States: Aktivní · Neaktivní

Boost Mode

Read switch state
GETBIT(MODBUSR(H, 40000, Uint16), 4)
Write switch state
var val := SETBIT(MODBUSR(H, 40000, Uint16), 4, St);
MODBUSW(H, 40000, Uint16, val);
Frost Protection Temperature Temperature Sensor Read-only

Exhaust-side temperature sensor for frost protection — triggers fan reduction when temperature drops

Register: A:30015 Int16 Unit: °C numeric
Service Attributes
Sensor Status

Frost Protection Temperature

Read temperature
GETBITS(MODBUSR(A, 30015, Int16),0, 14 )/10
Service Attributes
Status čidla
SWITCH (GETBITS(MODBUSR(A, 30017, Uint16), 14, 2),
0, "OK",
1, "Čidlo rozpojeno",
2, "Čidlo skratováno",
"Komunikační chyba"
)
CO2 Activation Threshold Variable

CO2 concentration level (600–1000 ppm) at which fans activate automatically in AQS mode

Register: H:40001 UInt16 Unit: ppm numeric
Service Actions
Set Value

CO2 Activation Threshold

Read
MODBUSR(H, 40001, UInt16)
Service Actions
Nastavení hodnoty
Parameters: Value[600-1000] (600–1000 val)
MODBUSW(H, 40001, Uint16, val)
RH Activation Threshold Variable

Relative humidity level (50–75%) at which fans activate automatically in AQS mode

Register: H:40002 UInt16 Unit: % RH numeric
Service Actions
Set Value

RH Activation Threshold

Read
MODBUSR(H, 40002, UInt16)/1000
Service Actions
Nastavení hodnoty
Parameters: Value [50-75%] (50–75 val)
MODBUSW(H, 4002,BigendianInt16, val*10);
Summer Mode Switch

Activates summer bypass mode — runs for a configurable duration (default 8 hours)

Register: H:40000 UInt16 bit
Values / States: Aktivní · Neaktivní

Summer Mode

Read switch state
GETBIT(MODBUSR(H, 40000, Uint16), 2)
Write switch state
var val := SETBIT(MODBUSR(H, 40000, Uint16), 2, St);
MODBUSW(H, 40000, Uint16, val);
Power Switch
Register: H:40000 UInt16 bit

Power

Read switch state
GETBIT(MODBUSR(H, 40000, Uint16), 0)
Write switch state
var val := SETBIT(MODBUSR(H, 40000, Uint16), 0, St);

MODBUSW(H, 40000, Uint16, val);
Desired Temperature Variable Read-only

Currently configured room temperature setpoint — read-only, set via front panel

Register: A:30012 Int16 Unit: °C numeric

Desired Temperature

Read
MODBUSR(A, 30012, Int16)/10
Airflow Variable Read-only

Current airflow rate from the flow sensor in m³/h

Register: A:30015 UInt16 Unit: m³/h numeric

Airflow

Read
MODBUSR(A, 30015, Uint16)/10
Fan Mode Switch

Automatic (AQS-driven based on CO2/humidity) or Manual fan control

Register: H:40000 UInt16 bit
Values / States: Automatický · Manuální

Fan Mode

Read switch state
GETBIT(MODBUSR(H, 40000, Uint16), 1)
Write switch state
var val := SETBIT(MODBUSR(H, 40000, Uint16), 1, St);

MODBUSW(H, 40000, Uint16, val);
Fan Status Multi-value Switch Read-only

Current fan operating state — Unit OFF, Active normal, Antifreeze, Summer mode, Boost mode, or error states

Register: A:30001 UInt16 multi-value
Values / States: Vypnutá jednotka · OFF - proces dochlazování · Chyba ventilátoru 1 · Chyba ventilátoru 2 · Běžný režim · Antifreeze Režim · Neaktivní ventilátory v běžném režimu · Neaktivní ventilátory v antifreeze režimu · Letní režim · Boost režim

Fan Status

Read switch state
GETBITS(MODBUSR(A, 30001, Uint16),8,4 )
Service Attributes
Predchozí stav ventilátorů
SWITCH(GETBITS( MODBUSR(A, 30001, Uint16),12,4 ), 
0, "Vypnutá jednotka",
1, "Jednotka je OFF, ventilátory dochlazují předehřev či dohřev",
2, "Chyba ventilátoru 1 ",
3, "Chyba ventilátoru 2 ",
4, "Aktivní ventilátory v běžném režimu",
5, "Aktivní ventilátory ventilátor v antifreeze režimu",
6, "Neaktivní ventilátory v běžném režimu ",
7, "Neaktivní ventilátory v antifreeze režimu ",
8, "Ventilátory v letním režimu",
9, "Ventilátory v Boost režimu ",
"Chyba"
)
Fan Speed Level Multi-value Switch

Fan speed level 0–7 — voltage per level varies by unit model

Register: H:40000 UInt16 multi-value
Values / States: Boost

Fan Speed Level

Read switch state
GETBITS(MODBUSR(H, 40000, Uint16), 6, 4)
Write switch state
var val := SETBITS(MODBUSR(H, 40000, Uint16), 6, 4,  Mu);
MODBUSW(H, 40000, Uint16, val);
Room Temperature & Humidity Temperature Sensor Read-only

Room temperature and relative humidity from the combined sensor

Register: A:30016 Int16 Unit: °C numeric
Service Attributes
Sensor Status

Room Temperature & Humidity

Read humidity
MODBUSR(A, 30014, Int16)/10
Read temperature
GETBITS(MODBUSR(A, 30016, Int16), 0 , 14) / 10
Service Attributes
Status čidla
SWITCH(GETBITS(MODBUSR(A, 30016, Int16), 14 , 2),
0,"Ok",
1,"Čidlo rozpojeno",
2,"Čidlo zkratováno",
"Chyba komunikace"
)
Touch Button Lock Switch

Child lock for front panel touch buttons — prevents accidental changes

Register: H:40000 UInt16 bit
Values / States: Zamčeno · Odomčeno

Touch Button Lock

Read switch state
GETBIT(MODBUSR(H, 40000, Uint16), 5)
Write switch state
var val := SETBIT(MODBUSR(H, 40000, Uint16), 5, St);
MODBUSW(H, 40000, Uint16, val);
Connection: Modbus RTU • 19200 baud• 8E1 • Slave ID: $[SlaveId]
Possible improvements (14)
  • A:30002 Status Register 2 (Preheat/Reheat) — Preheat status (bit 0–3), previous preheat (bit 4–7), last preheat with active fans (bit 8–11), fan modification stage (bit 12–15)
  • A:30003 Status Register 3 (Reheat/Filter) — Reheat status, filter status, various change flags. Module readscript checks bits 0–1 for CO2/RH sensor errors only
  • A:30004 AQS State — Air quality sensor status: CO2/RH sensor errors, AQS ventilation request, active CO2/RH levels, required fan speed. Partially covered by module readscript error checks
  • A:30005 AQS Required Flow — Required flow value according to AQS values (0.1 m3/h)
  • A:30006 Required Fan Flow — Required fan flow combining user and AQS settings (0.1 m3/h)
  • A:30011 Required Fan Speed — Required fan voltage combining user and AQS settings (0.01 V)
  • A:30013 CO2 Sensor Value — Current CO2 sensor reading (1 ppm). Key air quality measurement — surprisingly missing from template
  • A:30028 Filter Elapsed Time — Filter active time (1 h). Useful for filter replacement tracking
  • A:30033 Relay Status — Relay status: bit 0 = preheat relay, bit 1 = reheat relay
  • H:40016 DCFG Configuration — System configuration: auto shutdown flag, permanent min fan speed, Modbus baud rate/parity/address settings. WARNING: writing baud/parity/address takes effect immediately
  • H:40017 Room Temperature Correction — Room temperature sensor offset correction (0.1 degC, range -10.0 to +10.0°C)
  • H:40018 Summer Mode Duration — Duration of summer mode (1 s, range 3600–32400, default 28800 = 8 h)
  • H:40021 Boost Mode Duration — Duration of boost mode (1 s, range 30–3600, default 60)
  • H:40023 Filter Lifetime — Filter lifetime setting (1 h, range 2200–8800, default 4400)

Sources