Info
License: Free — part of the universal collection tier.
Modbus TCP¶
The modbus probe polls Modbus TCP Holding Registers on PLCs, industrial
sensors, and smart-building controllers. Each configured register becomes one
metric with a name and unit you define. Supports uint16, int16, uint32,
int32, float32_abcd and float32_cdab register types.
Quick start¶
# probes.d/20-modbus.yaml — each file under probes.d/ is a YAML array of probes
- name: modbus-plc
type: modbus
params:
host: 192.168.1.100
registers:
- name: temperature
address: 40001
type: float32_abcd
scale: 0.1
unit: Cel
description: Room temperature
Parameters¶
| Parameter | Must set | Default | Description |
|---|---|---|---|
host |
Yes | - | Device address or hostname. Example: 192.168.1.100 |
port |
No | 502 |
Modbus TCP port |
unit_id |
No | 1 |
Modbus unit (slave) identifier |
timeout |
No | 10s |
Per-read timeout, seconds or a duration |
interval |
No | 30 |
Seconds between collections |
registers |
Yes | - | Registers to read and how to decode them |
registers[].name |
Yes | - | Register name, the register.name attribute of the value |
registers[].address |
Yes | - | Holding-register address, Modicon 1-based (40001) or 0-based on non-standard devices |
registers[].type |
Yes | - | How the raw bytes are decoded. One of uint16, int16, uint32, int32, float32_abcd, float32_cdab |
registers[].scale |
No | 1 |
Multiplier applied after decoding; 0 counts as 1 |
registers[].unit |
No | 1 |
OTel unit of the value. Example: Cel |
registers[].description |
No | - | Human-readable label for dashboards |
A register's name is also the PRTG channel name of its value.
Metrics¶
| Metric | Unit | Description |
|---|---|---|
modbus.register.value |
configurable | Decoded register value, tagged with register.name and register.address |
modbus.up |
1 | 1 when the Modbus TCP device answered all register reads this cycle |
Operational notes¶
hostis required; the probe will fail to start without it.- Address numbering follows the Modicon 1-based convention (40001 = holding register 0). Subtract 40001 to get the 0-based Modbus Protocol Data Unit address if needed.
- For
float32_abcdvsfloat32_cdab, check your device manual for the byte-word order it uses.
Metric reference¶
Every metric this probe can emit. Metric is the OpenTelemetry name the
OTLP, Prometheus and Zabbix outputs derive theirs from. Name is what a
Nagios check and the API metrics= filter match.
PRTG channel is the label PRTG shows, placeholders filled from the
series' tags.
| Metric | Name | PRTG channel | Unit | Description |
|---|---|---|---|---|
modbus.register.value |
modbus.register.value |
Register | 1 | Decoded value of the Modbus Holding Register |
modbus.up |
modbus.up |
Modbus Device Up | # | 1 when the Modbus TCP device answered all register reads in the last cycle |