---
title: "QDL80A Temperature Sensor"
description: "Read temperature from QDL80A transmitter via Modbus RTU over RS-485. Dynamic decimal scaling, configurable slave ID and baud rate."
url: "https://taphome.com/en/compatibility/general-qdl80a-temperature-sensor/"
language: en
lastmod: 2026-10-08
generator: hugo
ai:
  topics: ["modbus-rtu","sensor","rs485","temperature","pressure-transmitter"]
  questions: ["How to integrate QDL80A temperature sensor with TapHome?","What does the QDL80A TapHome template measure?","How to connect QDL80A via RS-485 to TapHome?","How to configure the slave ID and baud rate on the QDL80A?","How does the QDL80A decimal point scaling work in TapHome?","What is the difference between H:4 and H:5 registers on the QDL80A?"]
---

# QDL80A Temperature Sensor

Communication: Modbus RTU

## Integration guide

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](https://taphome.com/images/compatibility/general-qdl80a-temperature-sensor/wiring-diagram_hu_e7bc1f4523ce8c2b.jpg)

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

> [!WARNING]
> 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 value | Baud rate |
|---------------|-----------|
| 0 | 1200 |
| 1 | 2400 |
| 2 | 4800 |
| 3 | 9600 (default) |
| 4 | 19200 |
| 5 | 38400 |

> [!TIP]
> 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 value | Format | Example: 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 (the action accepts up to 255, but only 1–247 are valid Modbus addresses)

### 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 1

These devices appear in TapHome after import.

QDL80A Temperature Sensor Module

Service Attributes

|                |                                                                                                                       |
|----------------|-----------------------------------------------------------------------------------------------------------------------|
| Slave Address  |                                                                                                                       |
| Baud Rate      | Current serial communication speed — 1200 to 38400 bps                                                                |
| Unit           | Configured measurement unit — must be set to °C for correct temperature reading                                       |
| Decimal Points | Number of decimal places applied to the measurement value — determines the scaling factor for the raw register output |

Service Actions

|                           |
|---------------------------|
| Rewrite the Slave Address |

Service Attributes

Slave Address

```taphome
modbusr(H, 0, int16);
```

Baud Rate

```taphome
SWITCH(modbusr(H, 1, int16),
	0, 1200,
	1, 2400,
	2, 4800,
	3, 9600,
	4, 19200,
	5, 38400,
	6, 57600,
	7, 115200,
      NaN
);
```

Unit

```taphome
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

```taphome
SWITCH(modbusr(H, 3, int16),
	0, "####",
	1, "###.#",
	2, "##.##",
	3, "#.###",	
	4, "#.###",
	NaN
);
```

Service Actions

Rewrite the Slave Address

Parameters: Slave Address (1–255 SlaveAddr)

```taphome
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

Read temperature

```taphome
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

## Import parameters

Enter these values when you import the XML.

| Asked in the app | Default       |
|------------------|---------------|
| Slave Id         | `1`           |
| IP address       | `192.168.1.0` |

## 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

## Related Documentation

- [Modbus Integration](https://taphome.com/en/compatibility/modbus-guide/)
- [Modbus](https://taphome.com/en/docs/integration/modbus/)
- [Simple configuration using templates](https://taphome.com/en/docs/integration/modbus/templates/)
- [Modbus scripts and prefetch](https://taphome.com/en/docs/script/modbus-scripts/)
- [Modbus functions](https://taphome.com/en/docs/script/modbus/)
- [Modbus data types](https://taphome.com/en/docs/script/modbus-data-types/)

