Modbus data logger: local SD card or cloud logging
A Modbus data logger polls registers as master and stores them with a timestamp, locally or in the cloud. How to choose, and how to size the memory.

A Modbus data logger is a device that polls registers as the master on the bus, gives each reading a timestamp and stores the series. Local logging means an SD card, USB stick, or internal memory in the cabinet. Cloud logging means the logger sends each reading over the internet to a server. Local works without a network, but someone has to collect the data. The cloud gives you the history remotely and needs a buffer for when the connection drops.
If you record consumption, temperatures, or fault codes as an installer, this choice decides how soon you see a fault and how much history a dropout costs. Below are the bus rules, a memory calculation, a comparison, and three checks before you start logging.
The data logger is the master on the Modbus bus
On a Modbus RTU bus the data logger asks and the Modbus device answers. The Modbus over Serial Line specification (V1.02, §2.2) puts it plainly: "Only one master (at the same time) is connected to the bus". Slaves never transmit on their own.
So the logger sends a request per register to an address between 1 and 247 and waits for the reply. What comes back is a bare number. Modbus carries no time: the MBAP header of Modbus TCP holds only Transaction Identifier, Protocol Identifier, Length, and Unit Identifier (Modbus Messaging on TCP/IP Implementation Guide V1.0b, §3.1.3). The timestamp comes from the logger's own clock.
On 9 July 2020 the Modbus Organization replaced master and slave with client and server. Manuals and logger menus use both; they mean the same thing.
Without the register map the logger cannot tell what a number means. On the Eastron SDM630, total active energy sits in input register 30343 (address 0x0156) as a float32 across two registers, read with function code 04 (Eastron SDM630 Modbus Protocol V1.8). Reading such a map is covered in Modbus register map explained.
Free: RS485 and Modbus RTU installation checklist (PDF)
The pre-commissioning checklist for every RS485 bus.
- Wiring order: A/B polarity, GND and shielding
- Termination and biasing, with the multimeter checks
- Communication settings crib sheet (baud rate, parity, stop bits)
- The 10 most common faults and how to spot them
Logging locally to SD card, USB, or internal memory
A local data logger keeps the readings in the cabinet, and they stay there until someone collects them. The Datexel DAT9011DL writes to an SD card and the DAT9011USB to a USB flash drive. Both log at most every 10 seconds and store up to 256 registers as a CSV file. The ProSoft PLX51-DL-232 holds up to 16,777,216 records in internal memory, according to the manufacturer.
Local logging suits a site without internet, or a measurement campaign of a few weeks. The downside shows later. A fault on Tuesday is only visible when you read the card. A full card either stops logging or overwrites the oldest data, depending on the device.
You can build one yourself. A thread on the Revolution Pi forum describes a logger that writes registers to a file with Bash scripts and uses crontab to schedule them. It works, but you then maintain the script, the clock, and the storage.
How much memory a Modbus data logger needs
Readings per day equal the number of registers times the number of polls per day. Twenty registers once a minute is 20 x 1,440 = 28,800 values a day.
The table sets that against the Senseca DLF4, which stores at least 800,000 readings according to its datasheet.
| Registers | Interval | Values per day | 800,000 values full after |
|---|---|---|---|
| 20 | 1 minute | 28,800 | about 27 days |
| 20 | 15 minutes | 1,920 | about 416 days |
| 5 | 15 minutes | 480 | over 4.5 years |
Own calculation based on the Senseca DLF4 datasheet.
Count the data type as well. A float32 takes two registers, so 256 registers hold at most 128 float values. The KSH WPC-832-MQD stores up to 30 registers and, according to the manufacturer, does not support floating point. It reads an energy meter's float32 as two unrelated integers.
Logging to the cloud
A cloud logger sends each reading over the internet to a server. You see the history in a browser without driving to site, or download a CSV file for analysis. The Senseca DLF4 transmits over LTE-M1, NB-IoT, or EGPRS to a web portal or an FTP server. The WPC-832-MQD sends to a server you specify and lets you download CSV files remotely.
The connection is the weak point. When the network or mobile coverage drops, the logger has to keep polling and hold each timestamped reading until the link is back. A logger without a buffer leaves a gap in the history.
How much a gap matters depends on the register. A cumulative counter such as total kWh bridges it: the difference between the last reading before and the first after the outage is the consumption in that period. An instantaneous value such as power or temperature is lost for that period.
Check which way the connection opens. A logger that connects outwards itself needs no open port on site. The reasons are in remote Modbus monitoring, and for sites without a fixed line in 4G Modbus gateway.
Local and cloud logging compared
The choice depends on who needs the data, and when. The table puts the differences side by side.
| Local data logger | Cloud logger | |
|---|---|---|
| Where readings are stored | SD card, USB, or internal memory in the cabinet | On a server, opened in a browser |
| Collecting data | On site or over the local network | Remotely |
| Internet needed | No | Yes, with a buffer for outages |
| Memory full | Stops or overwrites | Server keeps the history |
| When you see a fault | At the next visit | As soon as the data arrives |
| Typical use | Measurement campaign of weeks, site without network | Ongoing monitoring of your customers' installations |
Adding a logger to a bus that already has a master
A second master on the same RTU bus does not work. If a BMS or PLC already polls the bus, two masters transmit over each other and corrupt each other's frames.
There are two ways out. The first is to run the logger as a slave and have the existing master write the values into its registers. Campbell Scientific states that its dataloggers "can serve as both Modbus masters and slaves", and the DAT9011DL has a separate RTU slave port. That route means changing the master's program. The second is to log over Modbus TCP, where several clients may query one server. The specification leaves the number of connections to the device (Implementation Guide V1.0b, §4.2.1), so check the manual.
For a new bus, keep to the specification: 32 devices without a repeater, up to 1000 m at a maximum of 9600 baud with AWG26 or thicker (§3.4). Wiring is covered in the RS485 wiring guide.
Check the clock and data types before you log
A wrong timestamp or a misread data type makes a month of data useless. Three checks prevent that.
- 1
Synchronise the clock
Switch on time synchronisation if the logger supports NTP, as the WPC-832-MQD does. A free-running clock drifts, and the timestamps drift with it.
- 2
Check data type and word order
Look up in the register map whether a value is int16, int32, or float32, and in which word order. Read one value by hand and compare it with the device display.
- 3
Match the serial settings
Logger and device only communicate when baud rate, parity, and stop bits are the same in both configurations. The default parity in the specification is even.
Frequently asked questions
What is a data logger used for?
Recording measured values over time. A data logger reads values at set moments, gives each one a timestamp and stores the series. A Modbus data logger reads registers from meters, inverters, or controllers over RS485 or Ethernet. It keeps the data on a card in the cabinet or on a server.
Is RS-485 and Modbus the same?
No. RS-485 is the electrical layer: two wires, differential, 32 devices without a repeater. Modbus RTU is the protocol on top that decides who asks and how a register is read. Modbus also runs over Ethernet as Modbus TCP on port 502, with no RS-485 involved.
What software can I use to read Modbus data?
Any program that works as a Modbus master or client and knows the device's register map. For a quick test on a laptop or PC, a Modbus tool with a USB to RS485 adapter is enough. For continuous recording you need a logger that stores timestamped readings and handles a full memory or a lost connection.
Can a data logger listen in on a bus that already has a master?
No, not as a second master on the same RTU bus. Two masters transmit over each other and the frames break. Run the logger as a slave and have the existing master write values to it. Or log over Modbus TCP, where several clients may query one device.
How long can a data logger run before its memory is full?
That depends on registers, interval, and memory. Twenty registers every minute is 28,800 values a day. A logger with 800,000 values, such as the Senseca DLF4, is then full after about 27 days. Polling once every 15 minutes, the same memory lasts more than a year.
What are the downsides of using Modbus for logging?
Modbus carries no timestamps and no units. The logger adds the time from its own clock, and the register map tells you the unit, scaling, and data type. Only one master may poll an RTU bus, so adding a logger to a bus with a BMS or PLC needs a slave port or Modbus TCP.
Question about your setup?
Ask it here. We think along with your project, and building a free integration is part of that.