Skip to main content

Modbus Register Map

About these Registers:

DEVICE_ID / REMOTE_TERMINAL_UNIT (RTU) / SLAVE_ID:

Each sensor on a single multi-drop bus line must have a unique DEVICE_ID / RTU / SLAVE_ID:
By Default the DEVICE_ID / RTU / SLAVE_ID is the LAST 2 DIGITS OF THE SENSORS SERIAL NUMBER
The serial number (and therefore, the RTU number) can be found on the side of the TwinProx on the white label.

INDEXING:

Note that the listed registers below are considered 0-Indexed (the first value starts at 0)
Some Modbus masters will need to shift all the values up by one value if their master recognized the first Modbus value at 1 (known as 1-indexed).

SERIAL COMMUNICATION SETTINGS:

Baudrate: 115200
Parity: None
Handshakes: None
Data Bits: 8
Stop Bits: 1

FUNCTION CODES:

The function codes supported by TwinProx Sensor are:

03 - (0x03) READ MULTIPLE HOLDING REGISTERS 
16 - (0x10) WRITE MULTIPLE HOLDING REGISTERS

--- If you want to read or write to just a single register, you can do this by setting the length/offset/number of registers to 1 ---

Endianness:

The TwinProx sensor uses the Big Endian memory allocation paradigm.

In computingendianness is the order or sequence of bytes of a word of digital data in computer memory. Endianness is primarily expressed as big-endian (BE) or little-endian (LE). A big-endian system stores the most significant byte of a word at the smallest memory address and the least significant byte at the largest. A little-endian system, in contrast, stores the least-significant byte at the smallest address.

Modbus Register Map

Register Address Number of Registers Register Contents Description Range Default Value Scale Unit  Data Type Read / Write Notes
40176 1 Channel A Gap / Distance 0 to 105 n/a value/100 mils 16-bit Unsigned Integer R  
40177 1 Channel B Gap / Distance 0 to 105 n/a value/100 mils 16-bit Unsigned Integer R  
40178 1 Channel A Displacement 0 to 105 n/a value/100 mils Pk-Pk 16-bit Unsigned Integer  
40179 1 Channel B Displacement 0 to 105 n/a value/100 mils Pk-Pk 16-bit Unsigned Integer  R  
40049 1 DDC_START_SAMPLE n/a n/a   sample index 16-bit
Unsigned Integer
R/W

This register will start by reporting a 0 when read (indicating the 0th sample is in register 50, ready to be read). After successfully reading the data clip sample in register 171, this register should read 122 (indicating the 122nd sample is in register 50, ready to be read).

40050-40171 122 DDC_Samples n/a n/a     16-bit
Unsigned Integer
R

Block reads of registers 49 - 171 repeatedly until SAMPLES collected equal 1800.

40171 1 Auto_Reload_DDC_Chunk n/a n/a     16-bit
Unsigned Integer
R

Each time register 171 is successfully read by a Modbus Master. Register 49 is updated to reflect the index of the sample in register 50 and the next set of DDC Samples is loaded into registers 50 - 171.