Modbus datalogger: lokaal op SD-kaart of naar de cloud
Een Modbus datalogger leest als master registers uit en slaat ze met tijdstempel op, lokaal op een kaart of in de cloud. Zo kies je en reken je het geheugen uit.

Een Modbus datalogger is een apparaat dat als master op de bus registers uitleest, elke meting een tijdstempel geeft en de reeks opslaat. Lokaal betekent op een SD-kaart, USB-stick of intern geheugen in de kast. In de cloud betekent dat de logger elke meting via internet naar een server stuurt. Lokaal werkt zonder netwerk, maar iemand moet de data ophalen. De cloud geeft de historie op afstand en heeft een buffer nodig voor als de verbinding wegvalt.
Leg je als installateur verbruik, temperaturen of storingscodes vast, dan bepaalt die keuze hoe snel je een storing ziet en hoeveel historie je na een uitval kwijt bent. Hieronder staan de busregels, een rekensom voor het geheugen, de vergelijking en drie controles voordat je gaat loggen.
Een datalogger is de master op de Modbus-bus
Op een Modbus RTU-bus vraagt de datalogger en antwoordt het Modbus-apparaat. De Modbus over Serial Line-specificatie (V1.02, §2.2) zegt letterlijk: "Only one master (at the same time) is connected to the bus". Slaves zenden nooit uit zichzelf.
De logger stuurt dus per register een verzoek naar een adres tussen 1 en 247 en wacht op het antwoord. Wat hij krijgt, is een kaal getal. Het protocol stuurt geen tijd mee: de MBAP-header van Modbus TCP bevat alleen Transaction Identifier, Protocol Identifier, Length en Unit Identifier (Modbus Messaging on TCP/IP Implementation Guide V1.0b, §3.1.3). Het tijdstempel komt van de klok van de logger.
De Modbus Organization verving op 9 juli 2020 de woorden master en slave door client en server. In handleidingen en loggermenu's kom je beide tegen; het gaat om hetzelfde.
Zonder registertabel weet de logger niet wat het getal betekent. Bij de Eastron SDM630 staat de totale actieve energie in input register 30343 (adres 0x0156), als float32 over twee registers, gelezen met function code 04 (Eastron SDM630 Modbus Protocol V1.8). Hoe je zo'n tabel leest, staat in Modbus-registers uitgelegd.
Gratis: RS485 en Modbus RTU installatie checklist (PDF)
De controlelijst voor elke RS485 bus, voor je de installatie oplevert.
- Bedradingsvolgorde: A/B polariteit, GND en afscherming
- Terminatie en biasing, inclusief multimeter controles
- Spiekbriefje communicatie instellingen (baudrate, pariteit, stopbits)
- De 10 meest gemaakte fouten en hoe je ze herkent
Lokaal loggen op SD-kaart, USB of intern geheugen
Een lokale datalogger bewaart de metingen in de kast, en daar blijven ze tot iemand ze ophaalt. De Datexel DAT9011DL schrijft naar een SD-kaart, de DAT9011USB naar een USB-stick. Datexel noemt hem in de datasheet een Modbus data logger. Beide loggen hooguit elke 10 seconden en bewaren tot 256 registers als CSV.
Lokaal loggen past bij een installatie zonder internet, of bij een meting van een paar weken voor een advies. Het nadeel merk je pas later. Een storing van dinsdag zie je pas als je de kaart uitleest. Een volle kaart stopt met loggen of overschrijft de oudste data, afhankelijk van de logger.
Zelfbouw kan ook. Op het forum van Revolution Pi staat een logger die met Bash-scripts registers naar een bestand schrijft, met crontab als planner. Dat werkt, maar het onderhoud van script, klok en geheugen ligt dan bij jou.
Hoeveel geheugen een Modbus datalogger nodig heeft
Het aantal waarden per dag is het aantal registers maal het aantal uitlezingen per dag. Twintig registers elke minuut is 20 x 1.440 = 28.800 waarden per dag.
Deze tabel zet dat af tegen het geheugen van de Senseca DLF4, die volgens zijn datasheet minstens 800.000 meetwaarden bewaart.
| Registers | Interval | Waarden per dag | 800.000 waarden vol na |
|---|---|---|---|
| 20 | 1 minuut | 28.800 | circa 27 dagen |
| 20 | 15 minuten | 1.920 | circa 416 dagen |
| 5 | 15 minuten | 480 | ruim 4,5 jaar |
Eigen rekenwerk op basis van de Senseca DLF4-datasheet.
Tel ook het datatype mee. Een float32 neemt twee registers in, dus 256 registers zijn hooguit 128 floatwaarden. De KSH WPC-832-MQD bewaart tot 30 registers en kan volgens de fabrikant geen floating point. Een energiemeter die float32 levert, lees je daarmee als twee losse gehele getallen.
Loggen naar de cloud
Een cloudlogger stuurt elke meting via internet naar een server. De historie bekijk je in een browser, zonder naar de installatie te rijden. De Senseca DLF4 verstuurt via LTE-M1, NB-IoT of EGPRS naar een webportaal of een FTP-server. De WPC-832-MQD stuurt naar een server die je zelf opgeeft en laat CSV-bestanden op afstand downloaden.
De verbinding is het zwakke punt. Valt het netwerk of de 4G-dekking weg, dan moet de logger blijven uitlezen en de metingen met tijdstempel vasthouden tot de lijn terug is. Een logger zonder buffer laat een gat in de historie.
Hoe erg een gat is, hangt af van het register. Een tellerstand zoals totaal kWh overbrugt het: het verschil tussen de laatste meting voor en de eerste na de storing is het verbruik in die periode. Een momentwaarde zoals vermogen of temperatuur is voor die periode weg.
Kijk ook naar de richting van de verbinding. Een logger die zelf naar buiten verbindt, heeft geen open poort op locatie nodig. Waarom dat telt, staat in Modbus-monitoring in de cloud en voor locaties zonder vaste lijn in 4G Modbus-gateway.
Lokaal of cloud vergeleken
De keuze hangt af van wie de data wanneer nodig heeft. Deze tabel zet de verschillen naast elkaar.
| Lokale datalogger | Cloudlogger | |
|---|---|---|
| Waar staan de metingen | SD-kaart, USB of intern geheugen in de kast | Op een server, te openen in de browser |
| Ophalen | Langsgaan of lokaal netwerk | Op afstand |
| Internet nodig | Nee | Ja, met buffer voor storingen |
| Geheugen vol | Stopt of overschrijft | Server bewaart de historie |
| Storing zien | Bij het volgende bezoek | Zodra de data binnenkomt |
| Typisch gebruik | Meetcampagne van weken, locatie zonder netwerk | Doorlopende monitoring van installaties bij klanten |
Een logger toevoegen aan een bus met een bestaande master
Een tweede master op dezelfde RTU-bus werkt niet. Leest een gebouwbeheersysteem of PLC de bus al uit, dan zenden twee masters door elkaar en verminken ze elkaars frames.
Er zijn twee uitwegen. De eerste is de logger als slave laten meedraaien: de bestaande master schrijft de waarden naar de registers van de logger. Dat vraagt een aanpassing in het programma van de master. Campbell Scientific schrijft dat zijn dataloggers "can serve as both Modbus masters and slaves", en de DAT9011DL heeft een aparte RTU-slavepoort. De tweede is loggen via Modbus TCP. Daar mogen meerdere clients één server bevragen, maar hoeveel verbindingen een apparaat aankan, legt de norm niet vast (Implementation Guide V1.0b, §4.2.1). Kijk dat na in de handleiding van het apparaat.
Leg je een nieuwe bus aan voor de logger, houd dan de specificatie aan: 32 apparaten zonder repeater, tot 1000 m bij hooguit 9600 baud en AWG26 of dikker (§3.4). De bedrading staat in RS485-bekabeling voor Modbus.
Klok en datatypes controleren voordat je logt
Een fout tijdstempel of een verkeerd gelezen datatype maakt een maand data onbruikbaar. Drie controles voorkomen dat.
- 1
Klok synchroniseren
Zet tijdsynchronisatie aan als de logger NTP heeft, zoals de WPC-832-MQD. Een losse klok loopt weg en de tijdstempels schuiven mee.
- 2
Datatype en volgorde nalezen
Kijk in de registertabel welk type een waarde is (int16, int32 of float32) en in welke woordvolgorde. Lees één waarde handmatig uit en vergelijk hem met het display.
- 3
Seriële instellingen gelijk zetten
Baudrate, pariteit en stopbits moeten op logger en apparaat gelijk zijn. De standaardpariteit volgens de specificatie is even.
Veelgestelde vragen
Wat doet een datalogger?
Een datalogger leest op vaste momenten meetwaarden uit, geeft elke waarde een tijdstempel en slaat de reeks op. Bij een Modbus datalogger zijn dat registers van meters, omvormers of regelaars, uitgelezen via RS485 of Ethernet. De opslag staat op een kaart in de kast of op een server in de cloud.
Is Modbus hetzelfde als RS485?
Nee. RS485 is de elektrische laag: twee draden, differentieel, tot 32 apparaten zonder repeater. Modbus RTU is het protocol dat over die draden loopt en bepaalt wie vraagt en hoe een register wordt gelezen. Modbus kan ook over Ethernet, als Modbus TCP op poort 502.
Kan een datalogger meelezen op een bus die al een master heeft?
Nee, niet als tweede master op dezelfde RTU-bus. Twee masters zenden door elkaar en de frames gaan stuk. Laat de logger als slave meedraaien en de bestaande master de waarden naar hem schrijven. Of log via Modbus TCP, waar meerdere clients één apparaat mogen bevragen.
Hoe lang kan een datalogger zonder te legen?
Dat hangt af van registers, interval en geheugen. Twintig registers per minuut zijn 28.800 waarden per dag. Een logger met 800.000 waarden, zoals de Senseca DLF4, is dan na ongeveer 27 dagen vol. Eens per kwartier haalt dezelfde logger ruim een jaar.
Hoe maak ik een Modbus-verbinding met een datalogger?
Sluit A, B en de gemeenschappelijke massa aan op de RS485-klemmen, of verbind via Ethernet voor Modbus TCP. Zet baudrate, pariteit en stopbits gelijk aan het apparaat en geef het juiste slave-adres op. Test met één register dat je met het display kunt vergelijken.
Wat gebeurt er met de data als de internetverbinding wegvalt?
Dat hangt af van de logger. Een cloudlogger met buffer blijft uitlezen, bewaart de metingen met tijdstempel en stuurt ze na als de verbinding terug is. Zonder buffer ontstaat een gat. Een tellerstand overbrugt dat gat via het verschil, een momentwaarde niet.
Vraag over jouw installatie?
Stel hem hier. We denken mee met je project, en een gratis integratie erbij bouwen hoort daarbij.