TapHome

QDL80A Temperature Sensor

Modbus RTU
Submitted by
Last updated: 04. 2026

Requires external gateway

TapHome Modbus RTU Gateway — product page

QDL80A Temperature Sensor

The QDL80A is a pressure and temperature transmitter that communicates via Modbus RTU over RS-485 in half-duplex mode. The TapHome template uses the primary measurement output register (H:4) as a temperature sensor, with the unit set to °C via holding register H:2. The raw integer value is automatically scaled using the decimal point setting from H:3.

The device supports slave addresses 1–247 and baud rates from 1200 to 38400. Default serial settings are 9600, N, 8, 1.

Hardware connection

RS-485 wiring

The QDL80A uses a 4-wire RS-485 connection with a Hirschmann connector:

QDL80A wiring diagrams — 4-20mA two-wire, RS485 four-wire, voltage output three-wire

For RS-485 Modbus RTU communication, use the RS485 output four-wire wiring diagram (bottom left):

  • NO-1 (Red) — 24V+ power supply
  • NO-2 (Black) — 24V- power supply ground
  • NO-3 (Blue) — RS-485 PC A (connect to A+/D+ on TapHome)
  • Ground Wire (Yellow) — RS-485 PC B (connect to B-/D- on TapHome)
Technical specifications
  • Power supply: DC 12–32V
  • Communication: RS-485 half-duplex, Modbus RTU
  • Baud rate: 9600 (default), configurable: 1200, 2400, 4800, 9600, 19200, 38400
  • Serial format: No parity, 8 data bits, 1 stop bit
  • Slave address range: 1–247
  • Connected thread: M20x1.5 (default), G1/2, G1/4

The wiring diagram labels “PC A” and “PC B” correspond to RS-485 data lines. Connect PC A to A+/D+ and PC B (Ground Wire / Yellow) to B-/D- on the TapHome Modbus RTU gateway. Ensure the power supply ground is shared between the transmitter and the gateway.

Configuration

Setting the unit to °C

The QDL80A is a combined pressure/temperature transmitter. The TapHome template reads the primary measurement output (H:4), which reports in whatever unit is configured in register H:2. For temperature measurement, the unit must be set to °C.

The template exposes register H:2 as a service attribute (“Unit”) — verify it shows °C (value 20 in the register). If the device is configured for a pressure unit, the temperature reading will be incorrect.

Slave ID

The default slave address is 1. To change it, use the “Rewrite the Slave Address” service action in TapHome, which writes to register H:0. The device replies using the old address, then switches to the new one. Valid range: 1–247.

After changing the slave address, update the Slave ID in the TapHome module connection settings to match.

Baud rate

The default baud rate is 9600. The current baud rate is visible via the “Baud Rate” service attribute. To change the baud rate, write to register H:1 directly (not exposed as a service action in the template). After the reply, the transmitter switches to the new baud rate.

Register valueBaud rate
01200
12400
24800
39600 (default)
419200
538400

The TapHome Modbus RTU gateway baud rate must match the transmitter setting. If communication fails after a baud rate change, reconfigure the gateway to the new rate.

Decimal point configuration

Register H:3 controls the number of decimal places for the primary measurement output (H:4). The TapHome template reads both registers and applies the formula H:4 / 10^(H:3) automatically.

H:3 valueFormatExample: raw 2400 →
0####2400
1###.#240.0
2##.##24.00
3#.###2.400
4#.####0.2400

For temperature in °C with one decimal place, H:3 should be set to 1 (typical factory default for temperature).

Device capabilities

Temperature measurement

The template provides a single temperature sensor that reads the primary measurement output from holding register H:4. The raw integer value is divided by 10^(H:3) to produce the final reading in °C.

Four service attributes are available on the module for monitoring the device configuration:

  • Slave Address (H:0) — current Modbus slave address
  • Baud Rate (H:1) — current serial baud rate (displayed as the actual rate: 1200, 2400, …, 38400)
  • Unit (H:2) — configured measurement unit (should show °C for temperature use)
  • Decimal Points (H:3) — number of decimal places applied to the measurement value

One service action is available:

  • Rewrite the Slave Address — changes the Modbus slave address (range 1–255)
Additional capabilities

The QDL80A also has a dedicated temperature channel on register H:5 with its own unit setting (H:6, °C or °F) and decimal point configuration (H:7). This second channel could be added as an additional temperature sensor in a future template update. The device also supports parity configuration via register H:37 (no parity, odd, or even).

Troubleshooting

No communication
  1. Verify the RS-485 wiring: PC A → A+/D+, PC B (Yellow) → B-/D- on TapHome
  2. Confirm the slave address in TapHome matches the device (default: 1)
  3. Check that baud rate, parity (none), data bits (8), and stop bits (1) match between the transmitter and TapHome gateway
  4. Ensure the power supply is within the DC 12–32V range
Incorrect temperature reading
  1. Check the unit register (H:2) — it must be set to °C (value 20). If set to a pressure unit, the reading will be the pressure value, not temperature
  2. Verify the decimal point setting (H:3) matches the expected precision — a wrong decimal point will shift the value by orders of magnitude
  3. Note that H:4 is the primary measurement output. If the device is factory-configured for pressure, H:4 reports pressure. Use H:5 for the dedicated temperature channel (not in current template)
Abnormal Modbus responses

The QDL80A returns error codes via function code 0x80 + original function code:

  • 0x01 — Invalid instruction (unsupported function code)
  • 0x02 — Invalid address (register address out of range)

Available devices

QDL80A Temperature Sensor Module
Service Attributes
Slave Address
Baud RateCurrent serial communication speed — 1200 to 38400 bps
UnitConfigured measurement unit — must be set to °C for correct temperature reading
Decimal PointsNumber of decimal places applied to the measurement value — determines the scaling factor for the raw register output
Service Actions
Rewrite the Slave Address

QDL80A Temperature sensor

Service Attributes
Slave Address
modbusr(H, 0, int16);
Baud Rate
SWITCH(modbusr(H, 1, int16),
	0, 1200,
	1, 2400,
	2, 4800,
	3, 9600,
	4, 19200,
	5, 38400,
	6, 57600,
	7, 115200,
      NaN
);
Unit
switch(modbusr(H, 2, int16),
	0, "MPa",
	1, "KPa",
	2, "Pa",
	3, "bar",
	4, "mbar",
	5, "Kgcm2",
	6, "PSI",
	7, "mH2O",
	8, "mmH2O",
	9, "inH2O",
	10, "H2O",
	11, "mHg",
	12, "mmHg",
	13, "inHg",
	14, "atm",
	15, "Torr",
	16, "m",
	17, "cm",
	18, "mm",
	19, "Kg",
	20, "°C",
	21, "PH",
	22, "°F",
	NaN
);
Decimal points
SWITCH(modbusr(H, 3, int16),
	0, "####",
	1, "###.#",
	2, "##.##",
	3, "#.###",	
	4, "#.###",
	NaN
);
Service Actions
Rewrite the Slave Address
Parameters: Slave Address (1–255 SlaveAddr)
modbusw(SH, 0, int16, SlaveAddr);
modbusw(SH, 15, int16, 0);  # Save to user area
Temperature Sensor Temperature Sensor Read-only

Primary measurement output with dynamic decimal scaling — reads raw integer from H:4 and divides by 10^(decimal points)

Register: H:4 Int16 Unit: °C numeric

Temperature Sensor

Read temperature
MODBUSR(H, 4, Int16)/power(10, modbusr(H, 3, int16));
Connection: Modbus RTU • 9600 baud• 8N1 • Slave ID: $[SlaveId]
Possible improvements (4)
  • H:5 Temperature Measurement Output Value — Dedicated temperature channel — could be added as a second ModbusTemperatureSensor reading H:5 with H:7 decimal points
  • H:6 Temperature Unit — Temperature unit setting (11=°C, 12=°F) — separate from the pressure/primary unit (H:2)
  • H:7 Temperature Decimal Points — Decimal places for the temperature channel (0–4)
  • H:37 Parity Setting — 0=No verification, 1=Odd parity, 2=Even check — register address 0x0025

Sources

  • Modbus RTU register map — slave address, baud rate, pressure/temperature readings, decimal points, units
  • Wiring diagrams — 4-20mA two-wire, RS485 four-wire, voltage output three-wire