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:
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:
The value of this register is saved in the EEPROM. |
201 (0xC9) |
TYPE |
R |
Unsigned 16-bit |
Probe type:
|
202 (0xCA)(1)(2) |
BAUDRATE |
R/Wp |
Unsigned 16-bit |
The baudrate the Bus Probe will use:
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:
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. |
301 (0x12D) |
TEMP_RAW |
R |
Unsigned 16-bit |
Raw temperature data from the measurement IC (MCP9808). |
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. |
401 (0x191) |
TEMP_RAW |
R |
Unsigned 16-bit |
Raw temperature data from the measurement IC (HIH6130). |
404 (0x194) |
HUM_PROC |
R |
Unsigned 16-bit |
Processed fixed-point relative humidity data expressed in steps of 0.1%. |
405 (0x195) |
HUM_RAW |
R |
Unsigned 16-bit |
Raw humidity data from the measurement IC (HIH6130). |
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. |
501 (0x1F5) |
LUM_RAW |
R |
Unsigned 16-bit |
Raw luminance data from the measurement IC (BH1721FVC). |
R = read-only
Additional Registers of BP#04 (Three-Axis Accelerometer)
![A diagram illustrating the axes of BP#04.](./images/bp_axes_of_accelerometer.png)
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. |
601 (0x259) |
AXIS_X_RAW |
R |
Signed 16-bit |
Raw X-axis acceleration data from the measurement IC (ADXL312). |
602 (0x25A) |
AXIS_Y_PROC |
R |
Signed 16-bit |
Processed fixed-point Y-axis acceleration data expressed in steps of ~0.003G. |
603 (0x25B) |
AXIS_Y_RAW |
R |
Signed 16-bit |
Raw Y-axis acceleration data from the measurement IC (ADXL312). |
604 (0x25C) |
AXIS_Z_PROC |
R |
Signed 16-bit |
Processed fixed-point Z-axis acceleration data expressed in steps of ~0.003G. |
605 (0x25D) |
AXIS_Z_RAW |
R |
Signed 16-bit |
Raw Z-axis acceleration data from the measurement IC (ADXL312). |
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:
|
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:
|
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:
|
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:
|
R = read-only