TapHome

ComWinTop CWT-TM-8PT

Modbus RTU
Submitted by
Last updated: 04. 2026

Requires external gateway

TapHome Modbus RTU Gateway — product page

ComWinTop CWT-TM-8PT

The ComWinTop CWT-TM-8PT is a DIN-rail mounted temperature acquisition module available in two variants — CWT-TM-8PT100 (for PT100 sensors) and CWT-TM-8PT1000 (for PT1000 sensors). It reads up to 8 temperature channels and exposes them over Modbus RTU via RS-485. TapHome polls all 8 channels as individual temperature sensors with a 15-second update interval.

Hardware connection

Technical specifications
ParameterValue
Power supplyDC 8–30 V
Sensor typePT100 or PT1000 (depending on model)
Measurement range-180 °C to +650 °C
Resolution0.1 °C
Accuracy0.25 °C
Sensor connections2-wire and 3-wire
OutputRS-485 (Modbus RTU), isolated
Operating temperature-30 °C to +55 °C
Mounting35 mm DIN rail
Dimensions88 x 72 x 59 mm
RS-485 wiring

Connect the module to the TapHome Modbus RTU Gateway using a 3-wire RS-485 connection:

  • A (D+) → A+/D+ on TapHome RS-485
  • B (D-) → B-/D- on TapHome RS-485
  • GND → GND on TapHome power supply
Sensor wiring

Each channel has three terminals: RTDx+, RTDx-, and GND.

Three-wire connection (recommended):

  • RTDx+ → sensor wire 1
  • RTDx- → sensor wire 2
  • GND → sensor wire 3 (compensation wire)

Three-wire wiring compensates for lead wire resistance and provides better accuracy.

Two-wire connection:

  • RTDx+ → sensor wire 1
  • RTDx- → sensor wire 2
  • Short RTDx- and GND together for each two-wire channel

For two-wire connections, the RTDx- and GND terminals must be shorted together. Without this jumper, the measurement will be inaccurate due to uncompensated lead resistance.

Configuration

The module ships with default communication parameters that match the TapHome template — no configuration is needed for a single-module setup.

Default parameters
ParameterDefault value
Baud rate9600
Data bits8
ParityNone
Stop bits1
Slave ID1
Changing the slave ID

When connecting multiple modules on the same RS-485 bus, each module must have a unique slave address. The slave ID is stored in holding register 0x10 (high byte) and can be changed via a Modbus write command (function code 06H). The valid range is 1–250.

After changing the slave ID, update the Slave Id import parameter in TapHome to match the new address.

Changing baud rate and parity

Baud rate and parity are stored in register 0x10 (low byte). Supported baud rates: 1200, 2400, 4800, 9600 (default), 14400, 19200. Parity options: None (default), Even, Odd.

The module exposes three service attributes in TapHome — Slave ID, Speed, and Parity — so you can verify the current communication parameters directly from the TapHome interface without additional tools.

Device capabilities

Temperature channels

The template provides 8 independent temperature sensors, one per channel. Each sensor reads its value from a dedicated Float register (IEEE 754, 4 bytes) over Modbus RTU. The readings are direct °C values — no conversion or scaling is required.

ChannelRegisterSensor
1H:0x30Temperature Sensor (1)
2H:0x32Temperature Sensor (2)
3H:0x34Temperature Sensor (3)
4H:0x36Temperature Sensor (4)
5H:0x38Temperature Sensor (5)
6H:0x3ATemperature Sensor (6)
7H:0x3CTemperature Sensor (7)
8H:0x3ETemperature Sensor (8)

All channels are read-only and polled every 15 seconds. Unused channels (with no sensor connected) will report a fault value — the module supports disconnection and short-circuit detection on sensor inputs.

Additional capabilities

The module also provides an alternative UINT register set (H:0x68–H:0x6F) with 2-byte integers and 0.1 °C resolution. The TapHome template uses the Float format for higher precision. Both formats read the same physical sensors — the UINT registers can be used as a lightweight alternative if needed in a future template update.

Troubleshooting

No temperature readings
  1. Verify the RS-485 wiring — A (D+) and B (D-) must not be swapped
  2. Check that the slave ID in TapHome matches the module configuration (default: 1)
  3. Confirm baud rate 9600, parity None, 1 stop bit in TapHome gateway settings
  4. Ensure the module is powered (DC 8–30 V)
Inaccurate readings
  1. For two-wire connections, verify that RTDx- and GND are shorted together on each channel
  2. Consider switching to three-wire sensor connections for better accuracy
  3. Check for long cable runs — lead wire resistance affects two-wire measurements
Sensor fault reported
  1. Check the physical connection between the sensor and the module terminal
  2. Verify the sensor type matches the module variant (PT100 sensor with CWT-TM-8PT100, PT1000 with CWT-TM-8PT1000)
  3. The module detects both disconnection and short-circuit conditions on sensor inputs

Available devices

ComWinTop 8-Channel PT100/PT1000 Module
Service Attributes
Slave ID
SpeedCommunication baud rate — 9600 (default), 1200, 2400, 4800, 14400, or 19200
ParitySerial parity setting — None (default), Even, or Odd

ComWinTop - 8 channels PT100/PT1000

Service Attributes
Slave ID
getbyte(modbusr(H, 0x10, Uint16), 1)
Speed
var ret := getbyte(modbusr(H, 0x10, Uint16), 0);

switch(getbits(ret, 0, 3),
0, "9600 (default)",
1, "1200",
2, "2400",
3, "4800",
4, "9600",
5, "14400",
6, "19200",
"unknown");
Parity
var ret := getbyte(modbusr(H, 0x10, Uint16), 0);

switch(getbits(ret, 3, 2),
0, "None",
1, "Even",
2, "Odd",
"Odd");
Temperature Sensor (1) Temperature Sensor Read-only
Register: H:0x30 Float Unit: °C IEEE 754 float

Temperature Sensor (1)

Read temperature
MODBUSR(H, 0x30, float)
Temperature Sensor (2) Temperature Sensor Read-only
Register: H:0x32 Float Unit: °C IEEE 754 float

Temperature Sensor (2)

Read temperature
MODBUSR(H, 0x32, Float)
Temperature Sensor (3) Temperature Sensor Read-only
Register: H:0x34 Float Unit: °C IEEE 754 float

Temperature Sensor (3)

Read temperature
MODBUSR(H, 0x34, Float)
Temperature Sensor (4) Temperature Sensor Read-only
Register: H:0x36 Float Unit: °C IEEE 754 float

Temperature Sensor (4)

Read temperature
MODBUSR(H, 0x36, Float)
Temperature Sensor (5) Temperature Sensor Read-only
Register: H:0x38 Float Unit: °C IEEE 754 float

Temperature Sensor (5)

Read temperature
MODBUSR(H, 0x38, Float)
Temperature Sensor (6) Temperature Sensor Read-only
Register: H:0x3A Float Unit: °C IEEE 754 float

Temperature Sensor (6)

Read temperature
MODBUSR(H, 0x3A, Float)
Temperature Sensor (7) Temperature Sensor Read-only
Register: H:0x3C Float Unit: °C IEEE 754 float

Temperature Sensor (7)

Read temperature
MODBUSR(H, 0x3C, Float)
Temperature Sensor (8) Temperature Sensor Read-only
Register: H:0x3E Float Unit: °C IEEE 754 float

Temperature Sensor (8)

Read temperature
MODBUSR(H, 0x3E, Float)
Connection: Modbus RTU • 9600 baud• 8N1 • Slave ID: $[SlaveId]
Possible improvements (8)
  • H:0x68 Channel 1 Temperature (UINT) — Alternative UINT format (2 bytes, scale 0.1). Template uses Float format (0x30) instead — both read the same physical sensor
  • H:0x69 Channel 2 Temperature (UINT) — Alternative UINT format (2 bytes, scale 0.1). Template uses Float format (0x32) instead
  • H:0x6A Channel 3 Temperature (UINT) — Alternative UINT format (2 bytes, scale 0.1). Template uses Float format (0x34) instead
  • H:0x6B Channel 4 Temperature (UINT) — Alternative UINT format (2 bytes, scale 0.1). Template uses Float format (0x36) instead
  • H:0x6C Channel 5 Temperature (UINT) — Alternative UINT format (2 bytes, scale 0.1). Template uses Float format (0x38) instead
  • H:0x6D Channel 6 Temperature (UINT) — Alternative UINT format (2 bytes, scale 0.1). Template uses Float format (0x3A) instead
  • H:0x6E Channel 7 Temperature (UINT) — Alternative UINT format (2 bytes, scale 0.1). Template uses Float format (0x3C) instead
  • H:0x6F Channel 8 Temperature (UINT) — Alternative UINT format (2 bytes, scale 0.1). Template uses Float format (0x3E) instead

Sources