Skip to content

Moire Labs MODBUS Protocol Version 1

Please mind, that not all registers are supported on all device types.

Accessing RAM

READ  function 0x03 (words) / 0x46 (bytes)
WRITE function 0x06 (words) / 0x47 (bytes)

Using functions 0x03 and 0x06 reads and writes MODBUS address in word-lengths (2 bytes). This means, that defining MODBUS register to read must always be even. On the other hand, functions 0x46 and 0x47 reads and writes data in byte-lengths (1-byte), which makes it more flexible to access data which would otherwise be padded. The following tables show both register addresses - either accessible through word address or byte address.

Fnc 0x03/0x06   Fnc 0x46/0x47   Description                                     Value type
address [DEC]   address [DEC]
0               0               Filtered value of primary ADC (RO)              32bit float
2               4               Filtered value of secondary ADC (RO)            32bit float
4               8               Output DAC (RO)                                 16bit int
5               10              Raw primary value without correction (RO)       32bit float
7               14              Raw secondary value (RO)                        32bit float
9               18              Primary measurement value (RO)                  32bit float
11              22              Secondary measurement value (RO)                32bit float
13              26              Output value (RO)                               32bit float
17              34              Primary value without autozero correction (RO)  32bit float
                55              measurement_interval_hours (RW)                 uint8_t
28              56              measurement_interval_minutes (RW)               uint8_t
                57              measurement_interval_seconds (RW)               uint8_t

RO denotes read-only register, RW denotes read-write register.

Accessing ROM / EEPROM

READ  function 0x41 (words) / 0x44 (bytes)
WRITE function 0x42 (words) / 0x45 (bytes)

Using functions 0x41 and 0x42 reads and writes MODBUS address in word-lengths (2 bytes). This means, that defining MODBUS register to read must always be even. On the other hand, functions 0x44 and 0x45 reads and writes data in byte-lengths (1-byte), which makes it more flexible to access data which would otherwise be padded. The following tables show both register addresses - either accessible through word address or byte address.

Fnc 0x41/0x42   Fnc 0x44/0x45      Description                            Value type
address [DEC]   address [DEC]
0               0                  Protocol (0:MODBUS RTU; 1:SDI12) (RW)  uint8_t
                1                  Databits (0:5, 1:6, 2:7, 3:8) (RW)     uint8_t
1               2                  Parity (0:none, 1:even, 2:odd) (RW)    uint8_t
                3                  Stopbits (0:1, 1:2) (RW)               uint8_t
2               4                  Baud rate (in baud/s) (RW)             uint32_t
4               8                  MODBUS address (RW)                    uint8_t
                121                Primary reading minimum (RO)           32bit float
                125                Primary reading maximum (RO)           32bit float
                14561              Scale factor of primary reading (RO)   uint8_t
7281            14562              Unit of primary reading (RO)           uint8_t
                14563              Scale factor of secondary reading (RO) uint8_t
7282            14564              Unit of secondary unit (RO)            uint8_t
7362            14724              Location ID (RW)                       uint16_t
7363            14726              Sensor ID (RO)                         uint32_t
7365            14730              Measurements per packet (RW)           uint8_t
7368            14736              Primary measurement type (RO)          uint8_t
7369            14738              Measurement ID (RW)                    uint8_t

RO denotes read-only register, RW denotes read-write register.

Units of measurements and scale factors lookup tables

Units

K (temperature) = 0
°C (temperature) = 1
°Re (temperature) = 2
°F (temperature) = 3
°R (temperature) = 4
Pa (pressure) = 5
bar (pressure) = 6
atm (pressure) = 7
torr (pressure) = 8
mmHg (pressure) = 9
psi (pressure) = 10
m (level) = 11
reserved = 12
m3 (volume) = 13
l (volume) = 14
m3/s (flow) = 15
m3/h (flow) = 16
l/s (flow) = 17
l/h (flow) = 18
A (current) = 19
V (voltage) = 20
% (humidity) = 21

Unit scale factors

This is the unit scale factor. For example, if the unit is Pa and the scale factor is KILO, then the reading is in kPa.

no scale factor = 0
a (atto) = 1
f (femto) = 2
p (piko) = 3
n (nano) = 4
u (mikro) = 5
m (mili) = 6
c (centi) = 7
d (deci) = 8
da (deka) = 9
h (hekto) = 10
k (kilo) = 11
M (Mega) = 12
G (Giga) = 13
T (Tera) = 14
P (Peta) = 15
E (exa) = 16