modbus_rtu collector¶
modbus_rtu
collector performs Modbus RTU requests over the serial line
to collect performance data.
Configuration¶
Parameter | Type | Default | Description |
---|---|---|---|
id |
String | Collector's ID. Must be unique per agent instance. Will be returned along with the metrics. | |
type |
String | Must be modbus_rtu |
|
service |
String | Equal to id |
Service id for output metrics |
interval |
Integer | Repetition interval in seconds | |
labels |
Array of Strings | List of additional labels. Will be returned along with metrics | |
serial_path |
String | Path to the serial port device (i.e. /dev/ttyS1 ) |
|
slave |
Integer | Modbus RTU slave id | |
baud_rate |
Integer | Serial port speed | |
data_bits |
Integer | Serial port data bits: 5, 6, 7 or 8 | |
parity |
String | none |
Serial port parity, either none , even or odd |
stop_bits |
Integer | Serial port stop bits, either 1 or 2 |
|
register |
Integer | Starting register of modbus request, zero-based | |
register_type |
String | holding |
Modbus request type. Either holding , input or coil |
format |
String | Expected response format. See Response format for details | |
timeout_ms |
Integer | 5000 | Request timeout, ms. |
Check address notation
Take note the starting register address is zero-based, while vendors can document the registers starting from 1. Refer to the vendor documentation and subtract 1 when necessary.
Response Format¶
Modbus' response is as an array of 16-bit integers. Actual data encoding
should be set as format
parameter. Some encodings may require reading
2 or 4 adjacent registers.
Format | Count | Description |
---|---|---|
i16_be |
1 | 16-bit signed integer, big-endian. |
u16_be |
1 | 16-bit unsigned integer, big-endian. |
i32_be |
2 | 32-bit signed integer, big-endian |
i32_le |
2 | 32-bit signed integer, low-endian |
i32_bs |
2 | 32-bit signed integer, big-endian, swapped |
i32_ls |
2 | 32-bit signed integer, low-endian, swapped |
u32_be |
2 | 32-bit unsigned integer, big-endian |
u32_le |
2 | 32-bit unsigned integer, low-endian |
u32_bs |
2 | 32-bit unsigned integer, big-endian, swapped |
u32_ls |
2 | 32-bit unsigned integer, low-endian, swapped |
f32_be |
2 | 32-bit floating point, big-endian |
f32_le |
2 | 32-bit floating point, low-endian |
f32_bs |
2 | 32-bit floating point, big-endian, swapped |
f32_ls |
2 | 32-bit floating point, low-endian, swapped |
Big/Low/Swapped endian¶
32-bit integer 0x01020304
stored as a sequence of 4 octets. 4 different
approaches widely used between modbus devices:
Format | 1 | 2 | 3 | 4 |
---|---|---|---|---|
Big-endian (be) | 01 | 02 | 03 | 04 |
Low-endian (le) | 04 | 03 | 02 | 01 |
Big-endian, swapped (bs) | 02 | 01 | 04 | 03 |
Low-endian, swapped (ls) | 03 | 04 | 01 | 02 |
Collected Metrics¶
Metric | Metric Type | Platform | Description |
---|---|---|---|
ts |
All | ISO 8601 Timestamp | |
collector |
All | Collector Id | |
labels |
All | List of labels | |
value |
All | Measured value |
Compilation Features¶
Enable modbus_rtu
feature during compiling the agent (Enabled by default).