Modbus registers uitgelegd: zo lees je elke register map
Modbus registers uitgelegd voor installateurs. De vier registertypes, Modicon versus busadres, 32-bit woordvolgorde en een uitgewerkt Eastron SDM630 voorbeeld.

Modbus registers zijn de vakjes waarin een apparaat zijn waarden bewaart, en de register map is de tabel die de fabrikant erbij levert om te zeggen welke waarde op welk adres staat. Elke energiemeter, warmtepomp en omvormer heeft er een, en elke tabel ziet er net iets anders uit. Begrijp je eenmaal het model erachter, dan lees je elke register map van elk merk zonder te gokken. Dit artikel legt dat model uit.
Je leert welke vier registertypes Modbus kent, hoe een datasheet-adres als 40001 zich vertaalt naar het adres op de bus, hoe een 32-bit waarde verstopt zit over twee registers, en hoe je een echte Eastron SDM630 map omzet naar werkende uitlezingen. Bedoeld voor installateurs en integrators, niet voor softwareontwikkelaars.
Key takeaways
- Modbus kent precies vier registertypes: coils en discrete inputs (elk 1 bit) en input en holding registers (elk 16 bit).
- De 1-based Modicon notatie (40001) en het 0-based busadres (0x0000) zijn hetzelfde register: laat het eerste cijfer vallen en trek 1 af.
- Een 32-bit waarde beslaat twee registers, en de woordvolgorde (big-endian of little-endian) ligt niet vast in de standaard, dus de verkeerde volgorde geeft een geloofwaardig maar fout getal.
Gratis: RS485 en Modbus RTU installatie checklist (PDF)
De controlelijst voor elke RS485 bus, voor je de installatie oplevert. Print hem en neem hem mee.
- 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
Je ontvangt de checklist en af en toe een praktische Modbus tip. Geen spam, altijd uitschrijfbaar.
Wat is een Modbus register map?
Een Modbus register map is een tabel van de fabrikant met elk uitleesbaar en schrijfbaar datapunt in een apparaat, met adres, datatype, eenheid en toegangsrechten. Het is de vertaalsleutel tussen de kale 16-bit waarden op de RS485- of TCP-verbinding en de temperaturen, spanningen en setpoints die ze voorstellen.
De Modbus standaard zelf, vastgelegd in de Modbus Application Protocol Specification V1.1b3 van de Modbus Organization, legt alleen het transport en de vier datablokken vast. Over de betekenis van een adres zegt de standaard niets. Daarom heeft elk apparaat een eigen map, en daarom vraag je die map als eerste document op voordat je een nieuw apparaat in bedrijf neemt. Voor de bredere context van hoe Modbus werkt, zie onze complete Modbus gids.
De vier Modbus registertypes
Modbus ordent alle data in precies vier tabellen, en elk adres dat je ooit uitleest hoort bij een ervan. Ze verschillen op maar twee assen: grootte (een enkele bit of een heel 16-bit word) en toegang (alleen lezen of lezen en schrijven).
Dezelfde vier blokken staan in het datamodel van de specificatie, sectie 4.3. Elk blok heeft een eigen adresruimte van 0 tot 65535, dus adres 0 bestaat vier keer, een keer per blok. De function code die je stuurt bepaalt welk van de vier tabellen je bedoelt.
Coils en discrete inputs: de bit-blokken
Coils zijn enkele lees-schrijf bits, meestal een relais, een pompvrijgave of een aan/uit commando. Je leest ze met function code 01 en schrijft met 05 (enkel) of 15 (meerdere). Discrete inputs zijn enkele alleen-lezen bits, meestal een alarmcontact of een run/stop status, gelezen met function code 02. In HVAC en koeltechniek kom je deze minder vaak tegen dan registers, maar alarm- en statusbewaking zit hier.
Input en holding registers: de 16-bit blokken
Input registers zijn 16-bit alleen-lezen waarden, gelezen met function code 04. Ze dragen meetdata: een spanning, een temperatuur, een momentaan vermogen. Holding registers zijn 16-bit lees-schrijf waarden, gelezen met function code 03 en geschreven met 06 (enkel) of 16 (meerdere). Ze dragen setpoints, configuratie en op veel apparaten ook meetwaarden. Ruwweg 80 procent van wat een installateur uitleest zit in deze twee blokken.
Hoe vind je het registeradres?
Hier zit de grootste bron van off-by-one fouten in de praktijk. Datasheets noteren adressen in twee verschillende notaties, en die door elkaar halen zet je op elke uitlezing een register te hoog of te laag.
Het busadres, ook PDU-adres genoemd, is wat werkelijk in het Modbus frame staat. Het is 0-based, dus het eerste holding register is adres 0x0000. De Modicon notatie, de klassieke vijfcijferige "4xxxx" stijl, is 1-based en verstopt het registertype in het eerste cijfer: 40001 is het eerste holding register, 30001 het eerste input register, 10001 de eerste discrete input, 00001 de eerste coil.
Laat het eerste cijfer vallen en trek 1 af: 40001 wordt 0x0000.
Om te vertalen laat je het eerste cijfer vallen en trek je 1 af. Datasheet 40001 is dus busadres 0x0000, en 40100 wordt 0x0063. Sommige moderne datasheets slaan Modicon over en noteren het 0-based hex adres direct. Geen van beide is fout; je moet alleen weten welke notatie het blad voor je gebruikt voordat je een enkel adres in je tool typt.
Waarden die over meer dan een register lopen
Een enkel register bevat 16 bits, en dat loopt tot 65535. Elke grotere waarde, en elk kommagetal, verspreidt zich over twee of meer opeenvolgende registers. Een 32-bit float of int32 neemt twee registers; een 64-bit waarde vier.
De valkuil is dat de Modbus specificatie de volgorde van die words niet vastlegt. Een fabrikant mag het hoogste word eerst sturen (big-endian) of het laagste word eerst (little-endian, ook wel word swap). Lees je ze in de verkeerde volgorde, dan krijg je een geloofwaardig maar fout getal, vaak een enorme factor ernaast of negatief.
Eastron, Carlo Gavazzi en de meeste Europese energiemeters gebruiken big-endian woordvolgorde. Sommige Aziatische merken en veel PLCs staan standaard op little-endian. De datasheet vermeldt het bijna altijd, meestal als "MSW first" of "float, ABCD/CDAB". Doet hij dat niet, en klopt de waarde duidelijk een factor niet, probeer dan de omgewisselde volgorde voordat je de bekabeling verdenkt.
Uitgewerkt voorbeeld: de Eastron SDM630 map lezen
De Eastron SDM630 is een driefase DIN-rail energiemeter die zijn metingen als 32-bit floats in input registers aanbiedt, gelezen met function code 04. Hier de bovenkant van de map in bus- (PDU) notatie.
| Busadres | Waarde | Type | Eenheid |
|---|---|---|---|
| 0x0000 | Spanning L1 naar nul | Float32 | V |
| 0x0006 | Stroom L1 | Float32 | A |
| 0x000C | Actief vermogen L1 | Float32 | W |
| 0x0034 | Totaal actief systeemvermogen | Float32 | W |
| 0x0048 | Totaal actieve energie import | Float32 | kWh |
Om spanning L1 te lezen stuur je function code 04 met startadres 0x0000 en aantal 2 (twee registers, want de waarde is een 32-bit float). De meter geeft vier databytes terug, die je als big-endian float decodeert. Volgens het Eastron SDM630 Modbus protocol datasheet volgt elk meetregister ditzelfde patroon, dus als je er een gedecodeerd hebt, heb je ze allemaal.
Merk op dat de SDM630 metingen in input registers zet (function code 04), terwijl een apparaat als een warmtepomp diezelfde soort data vaak in holding registers zet (function code 03). Kijk altijd naar de registertype-kolom van de map, niet alleen naar het adres. Wil je het werk op byte-niveau helemaal overslaan, dan is de SDM630 een kant-en-klaar template dat elk register voor je in kaart brengt.
Waarom hetzelfde adres per merk iets anders betekent
Omdat de standaard geen betekenis per adres vastlegt, is register 0x0000 op de ene meter een spanning, op de volgende een firmwareversie en op een derde een setpoint. Er is geen universele map, en geen gateway detecteert automatisch wat een register betekent. Dit is het feit dat installateurs verrast die van BACnet komen, dat wel zelfbeschrijvende objectnamen draagt, en overstappen naar kale Modbus.
Een concreet geval. Register 0x0000 geeft op een Eastron SDM630 spanning L1 naar nul, op een doorsnee warmtepomp het setpoint van de aanvoertemperatuur, en op een omvormer de firmwareversie. Hetzelfde adres, drie betekenissen, en alleen de eigen register map van het apparaat vertelt welke je uitleest.
De enige echte uitzondering is SunSpec, een gestandaardiseerd Modbus registermodel dat meer dan 100 omvormer- en meterfabrikanten toepassen, waardoor een map op veel merken past. Buiten SunSpec behandel je elk apparaat als uniek en vraag je de map op voordat je begint. Om te ontdekken welke apparaten en adressen uberhaupt op een bus zitten, doe je eerst een Modbus netwerk scan.
Register map problemen oplossen
Komt een waarde fout terug in plaats van weg, loop dan deze vier op volgorde na voordat je aan de bekabeling komt.
| Symptoom | Waarschijnlijke oorzaak | Oplossing |
|---|---|---|
| Waarde staat een register ernaast | Modicon en busadres door elkaar | Trek 1 af en laat het eerste cijfer vallen, of tel het terug op |
| Waarde een grote factor ernaast of negatief | Verkeerde woordvolgorde op 32-bit waarde | Wissel hoogste en laagste word (big-endian vs little-endian) |
| Uitlezing faalt met exception 02 | Adres buiten de map van het apparaat | Lees alleen adressen die de map noemt; sommige ranges zijn gaten |
| Uitlezing faalt met exception 03 | Te veel registers tegelijk gevraagd | Function code 03 en 04 lezen maximaal 125 registers per aanvraag |
Antwoordt een bus helemaal niets, dan zit het probleem in de adressering of de fysieke laag, niet in de map. Begin met onze RS485 bekabelingsgids en Modbus RTU uitleg.
Hier past de ModbusCloud Gateway. De Gateway leest elk Modbus RTU- of TCP-apparaat in een cloud dashboard via kant-en-klare register templates, dus je kiest het apparaat in plaats van de map met de hand te ontcijferen. Hij regelt de adresvertaling en de woordvolgorde voor je.
Wat zijn de vier types Modbus registers?
Modbus kent coils en discrete inputs, dat zijn enkele bits, en input en holding registers, dat zijn 16-bit words. Coils en holding registers zijn lees-schrijf; discrete inputs en input registers zijn alleen lezen. Elk type heeft eigen function codes en adresruimte.
Wat is een Modbus register map?
Een Modbus register map is een tabel van de fabrikant met elk datapunt in een apparaat, met adres, datatype, eenheid en toegangsrechten. Omdat de standaard geen betekenis per adres vastlegt, heeft elk apparaat een eigen map nodig om kale waarden naar echte metingen te vertalen.
Hoe vind ik een Modbus registeradres?
Kijk of de datasheet Modicon notatie gebruikt (1-based, vijf cijfers zoals 40001) of het busadres (0-based hex zoals 0x0000). Om Modicon naar busadres te vertalen, laat je het eerste cijfer vallen en trek je 1 af, dus 40001 wordt 0x0000.
Wat is het verschil tussen input en holding registers?
Beide zijn 16-bit registers. Input registers zijn alleen-lezen meetwaarden, gelezen met function code 04. Holding registers zijn lees-schrijf en bevatten setpoints, configuratie en vaak ook metingen, gelezen met function code 03 en geschreven met 06 of 16.
Hoeveel bits is een Modbus register?
Een Modbus register is 16 bits, oftewel twee bytes, met een waarde van 0 tot 65535. Coils en discrete inputs zijn enkele bits. Waarden groter dan 65535, en alle kommagetallen, beslaan twee of meer opeenvolgende registers.
Waarom leest mijn Modbus waarde als onzin?
Een 32-bit waarde beslaat twee registers, en de Modbus standaard legt hun volgorde niet vast. Is het apparaat big-endian en je tool little-endian, of andersom, dan combineren de words fout en staat de waarde een grote factor ernaast. Wissel de woordvolgorde om het op te lossen.
Kun je naar een Modbus holding register schrijven?
Ja. Holding registers zijn lees-schrijf. Schrijf een enkel holding register met function code 06 en meerdere met function code 16. Input registers en discrete inputs zijn alleen lezen en kun je niet schrijven. Controleer altijd eerst de toegangskolom in de register map.
Klaar om register maps niet meer met de hand te ontcijferen? De ModbusCloud Gateway leest elk Modbus apparaat in een cloud dashboard via kant-en-klare templates, en regelt de adresvertaling en woordvolgorde automatisch. Bekijk hoe een complete monitoringketen er voor jouw installaties uitziet.
Vraag over jouw installatie?
Stel hem hier. We denken mee met je project, en een gratis integratie erbij bouwen hoort daarbij.