TapHome

EBM-Papst EC Fan (Modbus RTU)

Modbus RTU
Submitted by
Last updated: 03. 2026
EBM-Papst EC Fan (Modbus RTU)

The EBM-Papst Air Vent template integrates EC fans from the ebm-papst series 84/112/150/200 with TapHome via Modbus RTU over RS-485. These fans have a built-in Modbus interface — no external adapter is required. The template provides on/off control, variable speed (PWM), power consumption monitoring, RPM readback, module temperature, and error detection.

The default communication parameters are 19200 baud, 8 data bits, Even parity, 1 stop bit. Up to 247 fans can be addressed on a single RS-485 bus.

Hardware connection

The ebm-papst EC fans have an integrated RS-485 interface with A/B/GND terminals. Connect directly to the TapHome Core Modbus RTU port using a twisted pair cable.

RS-485 wiring
  • A+ (pin A) on the fan to A+ on TapHome RS-485
  • B- (pin B) on the fan to B- on TapHome RS-485
  • GND on the fan to GND on TapHome

The GND wire must be connected between the fan and TapHome. Without a common ground reference, communication will be unreliable.

System diagram
RS-485 Modbus RTU bus topology with multiple ebm-papst EC fans

Multiple fans are connected in a daisy-chain topology on the RS-485 bus. Each fan requires a unique slave address configured via register D100 (range 1-247, factory default is 1).

TapHome Core has a built-in 120 ohm termination resistor. If the fan is the last device on the bus, enable its termination resistor as well (refer to the fan’s installation manual for the termination setting).

Configuration

Enabling Modbus communication

By default, ebm-papst EC fans use the analog 0-10 V input for speed control. To switch to Modbus RS-485 control, the Source device in TapHome must be set to Modbus (ON). This writes register D101 = 1 and triggers a parameter adoption (D000 = 2) so the change takes effect immediately.

Steps:

  1. Connect the fan to TapHome via RS-485 (A+, B-, GND)
  2. Import the template in TapHome with the correct Slave ID
  3. Set the Source device to Modbus (ON) — this switches from analog to RS-485 control
  4. The fan now accepts speed commands from TapHome via register D001

EEPROM write limit — Register D001 (speed/on-off) is stored in EEPROM with a maximum of 100,000 writes over the entire service life. Do not write this register at high frequency. Typical polling intervals of 500 ms for reading are fine, but avoid automation rules that continuously write speed changes every few seconds.

Communication parameters
ParameterValue
Baud rate19,200 bps (default, configurable via D149)
ParityEven (default, configurable via D14A)
Data bits8
Stop bits1
Slave address1 (default, configurable via D100, range 1-247)
Max registers per request9
Max telegram length23 bytes

The baud rate and parity settings can be changed via holding registers D149 and D14A. After changing these parameters, a Parameter reset (D000 bit 1) is required. Make sure TapHome is reconfigured to match the new settings before the reset.

Device capabilities

Fan control
  • On/Off (H:0xD001) — turns the fan on at approximately 50% speed (writes 32767 to D001) or off (writes 0). The read value is interpreted as a boolean — any non-zero value means the fan is running.
  • Speed (H:0xD001) — continuous speed control as a dimmer (0-100%). The value is scaled to the range 0-65535, where 65535 = 100% PWM duty cycle. In the default open-loop PWM mode, this directly controls the motor modulation level.

Both the On/Off and Speed devices share the same register (D001). The On/Off device provides a simple toggle, while Speed provides fine-grained percentage control.

Input source selection
  • Source (H:0xD101) — switches between Sensor (analog 0-10 V input) and Modbus (RS-485 control via D001). When switched, the template also writes D000 = 2 to trigger parameter adoption. This setting is stored in EEPROM and persists across power cycles.
Monitoring
  • RPM (I:0xD010 + H:0xD119) — actual fan speed calculated from two registers: the relative speed value (D010, range 0-64000) multiplied by the maximum speed (D119, in RPM). The result gives the actual RPM.
  • Watt Power (I:0xD021) — power consumption in watts, calculated as the raw register value multiplied by a model-specific factor (0.01705 in the template). This factor equals Ref_Uz x Ref_Iz / 65536 for a specific fan model.
  • Module Temperature (I:0xD015) — power module temperature in degrees Celsius, read as a direct signed integer value. No conversion required.
  • Error (I:0xD011) — motor status error flag. Returns true if any error condition is active: locked motor (BLK), hall sensor error (HLL), motor overheated (TFM), power module overheated (TFE), phase failure (PHA), DC-link undervoltage (UzLow), or general fan error (FB).
Additional capabilities

The ebm-papst EC fans also expose registers for warning flags (pre-error conditions like shedding active, voltage high, speed limit exceeded), DC-link voltage and current monitoring, motor and electronics temperature sensors, rotation direction readback, modulation level, operating hours counter, and an error history ring buffer. Configuration registers for control mode selection (closed-loop speed vs. open-loop PWM), ramp-up/ramp-down times, fail-safe emergency operation, preferred rotation direction, and save-set-value behavior are also available. These can be added in a future template update.

Troubleshooting

Power reading shows incorrect values

The Watt Power conversion factor (0.01705) in the template is calculated for a specific fan model using its reference voltage (Ref_Uz, register D1A0) and reference current (Ref_Iz, register D1A1). Different fan models have different reference values.

To verify or recalculate:

  1. Read register D1A0 — Reference Uz [mV] = value x 20 mV
  2. Read register D1A1 — Reference Iz [mA] = value x 2 mA
  3. Calculate the correct factor: (Ref_Uz x Ref_Iz) / 65536

For example, a fan with Ref_Uz = 508 V and Ref_Iz = 2.2 A gives: (508 x 2.2) / 65536 = 0.01705. If the power reading is consistently off by a fixed ratio, the fan model likely has different reference values.

Fan does not respond to speed commands
  1. Verify the Source device is set to Modbus (ON) — if set to Sensor, the fan ignores D001 and uses the analog input
  2. Check the RS-485 wiring: A+ to A+, B- to B-, GND connected
  3. Confirm the slave address matches between TapHome and the fan (register D100)
  4. Verify communication parameters: 19200 baud, Even parity, 8N1
Error flag is set but fan appears to work

The Error device reads the motor status bitfield (D011) as a boolean. Even minor conditions like “fan bad” (FB) or transient undervoltage (UzLow) will set the error flag. To clear errors, write D000 bit 2 (error reset). If the error persists, check the specific error bits by reading the full D011 register value in TapHome service settings.

Speed reads correctly but RPM shows zero

The RPM calculation depends on register D119 (maximum speed). If D119 is not readable or returns 0, the RPM result will be 0 regardless of actual speed. Verify that D119 returns a valid value for the installed fan model (typically 1000-5000 RPM).

Available devices

EBM-Papst Air Vent Module
On/Off Switch

Turns the fan on at ~50% speed or off — shares register D001 with Speed

Register: H:0xD001 UInt16 numeric

On/Off

Read switch state
MODBUSR(H, 0xD001, Bool)
Write switch state
MODBUSW(H, 0xD001, Uint16, St * 32767)
Speed Dimmer

Continuous fan speed control 0-100% (open-loop PWM) — shares register D001 with On/Off

Register: H:0xD001 UInt16 Unit: % numeric

Speed

Read level
MODBUSR(H, 0xD001, Uint16) / 65535
Write level
MODBUSW(H, 0xD001, Uint16, Le * 65535)
Watt Power Variable Read-only

Power consumption in watts — conversion factor is model-specific (Ref_Uz x Ref_Iz / 65536)

Register: I:0xD021 Int16 Unit: W numeric

Watt Power

Read
MODBUSR(A, 0xD021, Int16)*0.01705
Module Temperature Temperature Sensor Read-only
Register: I:0xD015 Int16 Unit: °C numeric

Module Temperature

Read temperature
MODBUSR(A, 0xD015, Int16)
Error Reed Contact Read-only

Motor status error flag — locked motor, hall sensor, overheated, phase failure, undervoltage

Register: I:0xD011 Bool

Error

Read
MODBUSR(A, 0xD011, Bool)
Source Switch

Input source selector — Modbus (RS-485 control) or Sensor (analog 0-10V input)

Register: H:0xD101 Bool
Values / States: Modbus · Sensor

Source

Read switch state
MODBUSR(H, 0xD101, Bool)
Write switch state
MODBUSW(H, 0xD101, Bool, St); MODBUSW(H, 0xD000, Int16, 2);
RPM Variable Read-only

Actual fan speed in RPM — calculated from relative speed and model-specific maximum speed

Register: I:0xD010 UInt16 Unit: RPM numeric

RPM

Read
(MODBUSR(A, 0xD010, UInt16)/64000)*MODBUSR(H, 0xD119, UInt16)
Connection: Modbus RTU • 19200 baud• 8E1 • Slave ID: $[SlaveId]
Possible improvements (17)
  • I:0xD012 Warning Flags — Bitfield with pre-error warnings: LRF (shedding active), UeHigh (supply voltage high), nGrenz (limiting speed exceeded), cable break, n_Low (speed below monitor limit), TM_high, TE_high, P_Limit, I_Limit
  • I:0xD013 DC-link Voltage — Uz[V] = (D013 / 256) × Ref_Uz[V]. Requires D1A0 reference value. Useful for supply voltage monitoring
  • I:0xD014 DC-link Current — Iz[A] = (D014 / 256) × Ref_Iz[A]. Requires D1A1 reference value. Useful for current monitoring
  • I:0xD016 Motor Temperature — Direct value [°C] (Int16). Separate from module temperature (D015). Useful for motor overheating prevention
  • I:0xD017 Electronics Temperature — Direct value [°C] (Int16). Electronics interior temperature
  • I:0xD018 Current Direction of Rotation — 0=anti-clockwise, 1=clockwise
  • I:0xD019 Current Modulation Level — Modulation level[%] = (D019 / 65536) × 100%. Actual PWM duty cycle
  • I:0xD01A Current Set Value — Readback of active set value — same encoding as D001. Useful for verifying the fan received the commanded value
  • H:0xD102 Preferred Running Direction — 0=anti-clockwise, 1=clockwise. Requires Parameter reset (D000 bit 1) after change
  • H:0xD103 Save Set Value — 0=set value NOT stored (fan stationary after reset), 1=stored in EEPROM. Should be 0 for continuous Modbus control to avoid EEPROM wear
  • H:0xD106 Control Mode — 0=closed-loop speed control, 2=open-loop PWM. Template assumes PWM mode. Requires Parameter reset after change
  • H:0xD119 Maximum Speed (writable) — Already read by RPM device but not writable from template. Direct value [RPM], model-specific
  • H:0xD11F Ramp-up Time — Time for 256-step change × 10ms. Value 0 = immediate. Controls acceleration smoothness
  • H:0xD120 Ramp-down Time — Time for 256-step change × 10ms. Value 0 = immediate. Controls deceleration smoothness
  • H:0xD15C Fail-safe Function On/Off — Emergency operation if Modbus communication is lost. D15B=direction, D15C=on/off, D15D=set value, D15E=dropout delay
  • H:0xD009 Operating Hours Counter — Total fan operating hours. Read-only for end customer. D00A = operating minutes counter
  • H:0xD182 Error Indicator — Points to address of last error in error history ring buffer (D184–D19E). Each entry has error code + timing

Sources