Modbus Registers

Tibbo's Bus Probes are controlled only at the register level. The following tables detail the Modbus registers used by Bus Probes.


All Bus Probe registers are 16-bit, either signed or unsigned. This means that when writing or reading a register, the Modbus command must follow the following format:

B7

B6

B5

B4

B3

B2

B1

B0

Modbus slave ID

Function code

Target register

Data to be written / Length of data to read

CRC (LSB)

CRC (MSB)


For example, if you want to check the firmware version of a Bus Probe whose ID is 1, you would send it the following request:

01 03 00 D4 00 01 C4 32

In this example, let's say that the data content of the device's reply message is 0x0103. For the monitor and firmware version of Bus Probes, the major version number is the first two hexadecimal characters ("01"), and the minor version number is the second two hexadecimal characters ("03"). Hence, this tells us that the Bus Probe is running firmware version 1.03.


Common Registers

These registers are present on all Bus Probes. Registers whose values are written to the EEPROM are non-volatile (i.e., their values persist even after the Bus Probe is powered off). Registers whose values are not saved in the EEPROM are read at boot.

For registers whose values are stored in the EEPROM, excessive writes will result in a reduced lifespan for the device. For more information, please see Prolonging and Estimating EEPROM Life.

Addr. (hex)

Name

R/W

Type

Description

200 (0xC8)

ID

R/Wp

Unsigned 16-bit

Device ID (Modbus address). This ID must be between 1 to 247. Attempts to set an ID outside of this range will be ignored.

The default ID of a Bus Probe depends on its type:

  • 0x40 for BP#01 (ambient temperature sensor)
  • 0x41 for BP#02 (relative humidity and temperature sensor)
  • 0x42 for BP#03 (ambient light sensor)
  • 0x43 for BP#04 (3-axis accelerometer)
  • 0x44 for BP#05 (flood/leak sensor)
  • 0x45 for BP#06 (opto-isolated digital input)

The value of this register is saved in the EEPROM.

201 (0xC9)

TYPE

R

Unsigned 16-bit

Probe type:

  • 0x01 — BP#01 (ambient temperature sensor)
  • 0x02 — BP#02 (ambient temperature and humidity sensor)
  • 0x03 — BP#03 (ambient light sensor)
  • 0x04 — BP#04 (3-axis acceleration sensor)
  • 0x05 — BP#05 (flood/leak sensor)
  • 0x06 — BP#06 (unidirectional opto-isolated digital input)

202 (0xCA)(1)(2)

BAUDRATE

R/Wp

Unsigned 16-bit

The baudrate the Bus Probe will use:

  • 0 — 1,200bps
  • 1 — 2,400bps
  • 2 — 4,800bps
  • 3 — 9,600bps
  • 4 — 19,200bps
  • 5 — 38,400bps (default)
  • 6 — 57,600bps
  • 7 — 115,200bps

The value of this register is saved in the EEPROM.

203 (0xCB)

SIGNATURE

R

Unsigned 16-bit

Always returns 0xAA55. This is a common signature for all Bus Probes.

204 (0xCC)(1)(2)

PARITY

R/Wp

Unsigned 16-bit

The serial parity mode the Bus Probe will use:

  • 0 — No parity (default)
  • 1 — Odd
  • 2 — Even
  • 3 — Mark(3)
  • 4 — Space

The value of this register is saved in the EEPROM.

205 (0xCD)

RESERVED

R

Unsigned 16-bit

This register is reserved for future use.

206 (0xCE)

RESERVED

R

Unsigned 16-bit

This register is reserved for future use.

207 (0xCF)

USER WORD 1

R/W

Unsigned 16-bit

Users are free to save any application-specific data in this register.

The value of this register is saved in the EEPROM.

208 (0xD0)

USER WORD 2

R/W

Unsigned 16-bit

Users are free to save any application-specific data in this register.

The value of this register is saved in the EEPROM.

209 (0xD1)

USER WORD 3

R/W

Unsigned 16-bit

Users are free to save any application-specific data in this register.

The value of this register is saved in the EEPROM.

210 (0xD2)

USER WORD 4

R/W

Unsigned 16-bit

Users are free to save any application-specific data in this register.

The value of this register is saved in the EEPROM.

211 (0xD3)

MONITOR VERSION

R

Unsigned 16-bit

Firmware version of the Monitor/Loader.

212 (0xD4)

FIRMWARE VERSION

R

Unsigned 16-bit

Firmware version of the application firmware.

R = read-only, R/W = read/write, R/Wp = read/write-protected (writing is possible only while the MD button is being pressed). Each Bus Probe comes with a metal pin that makes pushing and holding down the MD button easier.


1. This value can be reset to its default by power-cycling the device, waiting for the green and red LEDs to blink three times, and then quickly pressing the MD button three times in less than two seconds.

2. Firmware upgrades are handled by the Bus Probe's Monitor/Loader, which only communicates at 38,400-8-N-1. The values of these registers are ignored when updating the firmware.

3. If two stop bits are required, the parity can be set to the mark mode, which is equivalent to 8-N-2 (8 bits of data, no parity, and two stop bits).


Additional Registers of BP#01 (Ambient Temperature Sensor)

Addr. (hex)

Name

R/W

Type

Description

300 (0x12C)

TEMP_PROC

R

Signed

16-bit

Processed fixed-point temperature data expressed in steps of 0.01°C.
Measurement resolution is 0.25°C.

301 (0x12D)

TEMP_RAW

R

Unsigned 16-bit

Raw temperature data from the measurement IC (MCP9808).
See vendor datasheet for details.

R = read-only


Additional Registers of BP#02 (Ambient Temperature and Relative Humidity Sensor)

Addr. (hex)

Name

R/W

Type

Description

400 (0x190)

TEMP_PROC

R

Signed

16-bit

Processed fixed-point temperature data expressed in steps of 0.1°C.
Measurement resolution is 0.5°C.

401 (0x191)

TEMP_RAW

R

Unsigned 16-bit

Raw temperature data from the measurement IC (HIH6130).
See vendor datasheet for details.

404 (0x194)

HUM_PROC

R

Unsigned 16-bit

Processed fixed-point relative humidity data expressed in steps of 0.1%.
Measurement resolution is 0.1%.

405 (0x195)

HUM_RAW

R

Unsigned 16-bit

Raw humidity data from the measurement IC (HIH6130).
See vendor datasheet for details.

R = read-only


Additional Registers of BP#03 (Ambient Light Sensor)

Addr. (hex)

Name

R/W

Type

Description

500 (0x1F4)

LUM_PROC

R

Unsigned 16-bit

Processed fixed-point luminance data expressed in steps of 1 Lux.
Measurement resolution is 1 Lux.

501 (0x1F5)

LUM_RAW

R

Unsigned 16-bit

Raw luminance data from the measurement IC (BH1721FVC).
See vendor datasheet for details.

R = read-only


Additional Registers of BP#04 (Three-Axis Accelerometer)

A diagram illustrating the axes of BP#04.

Addr. (hex)

Name

R/W

Type

Description

600 (0x258)

AXIS_X_PROC

R

Signed

16-bit

Processed fixed-point X-axis acceleration data expressed in steps of ~0.003G.
Measurement resolution is ~0.003 G.

601 (0x259)

AXIS_X_RAW

R

Signed

16-bit

Raw X-axis acceleration data from the measurement IC (ADXL312).
See vendor datasheet for details.

602 (0x25A)

AXIS_Y_PROC

R

Signed

16-bit

Processed fixed-point Y-axis acceleration data expressed in steps of ~0.003G.
Measurement resolution is ~0.003 G.

603 (0x25B)

AXIS_Y_RAW

R

Signed

16-bit

Raw Y-axis acceleration data from the measurement IC (ADXL312).
See vendor datasheet for details.

604 (0x25C)

AXIS_Z_PROC

R

Signed

16-bit

Processed fixed-point Z-axis acceleration data expressed in steps of ~0.003G.
Measurement resolution is ~0.003 G.

605 (0x25D)

AXIS_Z_RAW

R

Signed

16-bit

Raw Z-axis acceleration data from the measurement IC (ADXL312).
See vendor datasheet for details.

R = read-only


Additional Registers of BP#05 (Flood/Leak Sensor)

Addr. (hex)

Name

R/W

Type

Description

700 (0x2BC)

FLOOD_FLAG

R

Unsigned 16-bit

Flood/leak detection status. This register can be:

  • 0 — Dry
  • 1 — Wet

701 (0x2BD)

FLOOD_SENSITIVITY

R/Wp

Unsigned 16-bit

The sensitivity of the flood/leak sensor. This register is non-volatile (i.e., its value will persist even after the Bus Probe is powered off). This register can be:

  • 0 — Normal sensitivity
  • 1 — Reduced sensitivity

R = read-only, R/Wp = read/write-protected (writing is possible only while the MD button is being pressed).


Additional Registers of BP#06 (Opto-Isolated Digital Input)

Addr. (hex)

Name

R/W

Type

Description

800 (0x320)

DIGITAL_INPUT

R

Unsigned 16-bit

Digital input status. This register can be:

  • 0 — Low
  • 1 — High

801 (0x321)

DIGITAL_INPUT_FILTERED

R

Unsigned 16-bit

Filtered input. When this register is polled, BP#06 samples the input signal for 250µs at 2.5µs intervals. This register can be:

  • 0 — Low (more than 90% of samples are LOW)
  • 1 — High (more than 90% of samples are HIGH)
  • 2 — Unknown (majority criterion is not satisfied)

R = read-only


Modbus Registers

Common Registers

Additional Registers of BP#01 (Ambient Temperature Sensor)

Additional Registers of BP#02 (Ambient Temperature and Relative Humidity Sensor)

Additional Registers of BP#03 (Ambient Light Sensor)

Additional Registers of BP#04 (Three-Axis Accelerometer)

Additional Registers of BP#05 (Flood/Leak Sensor)

Additional Registers of BP#06 (Opto-Isolated Digital Input)