Modbus
Laatst bijgewerkt op 15 oktober 2025
Het Modbus communicatieprotocol is een veelgebruikte standaard in industriële automatisering. In deze handleiding leg ik in duidelijke taal uit wat Modbus is, welke varianten er zijn en hoe je het praktisch instelt. Je leest over Modbus RTU en Modbus TCP, registers en coils, en belangrijke instellingen zoals RS-485, baudrate en slave-ID.
Wat is het Modbus communicatieprotocol
Modbus is een simpel, open protocol ontwikkeld door Modicon (nu Schneider Electric) om gegevens uit te wisselen tussen elektronische apparaten. Het Modbus communicatieprotocol werkt volgens een master/slave-model bij seriële lijnen (RTU) en een client/server-model bij TCP. Apparaten vragen of leveren data via coils en registers met vaste adressering.
Architectuur: master/slave en client/server
Bij Modbus RTU is er één master die opdrachten en leesverzoeken stuurt en meerdere slaves die reageren. Bij Modbus TCP spreken we van client/server: een client (bijv. SCADA of PLC) verbindt met één of meerdere servers (apparaten) via TCP/IP.
Datarepresentatie: coils en registers
De uitwisseling gebeurt via coils (1 bit) en registers (16-bit woorden). Coils zijn typisch digitale uitgangen; discrete inputs zijn alleen-lezen digitale ingangen. Input registers bevatten analoge meetwaarden; holding registers zijn lees- en schrijfbaar voor setpoints en parameters.
Belangrijkste kenmerken
- Simpel en robuust — weinig overhead, betrouwbaar in industriële omgevingen
- Breed ondersteund — open standaard, door veel fabrikanten en apparaten
- Master‑Slave (RTU) / Client‑Server (TCP) — één partij bepaalt communicatie
- Gestandaardiseerde adresstructuur — vaste indeling voor coils en registers
- Flexibel transport — seriële lijnen (RS-232/RS-485) en Ethernet (TCP/IP)
- Deterministisch gedrag — voorspelbare timing dankzij mastergestuurde polling
Ondersteunde apparaten en toepassingen
| Toepassing / apparaat | Beschrijving |
|---|---|
| PLC’s | Veel PLC’s ondersteunen Modbus RTU en/of Modbus TCP voor communicatie met randapparatuur. |
| Sensors & actuatoren | Slimme sensoren (temperatuur, druk, flow) en actuatoren bieden vaak data via Modbus. |
| Frequentieregelaars en motorstarters | Aandrijvingen gebruiken Modbus om parameters te lezen of te schrijven. |
| Meet- en energiemeters | Energie- en meetmeters communiceren via Modbus-registers. |
| SCADA- en HMI-systemen | Fungeren vaak als master of client om data uit Modbus-slaves te verzamelen. |
| Gateways en converters | Converteren Modbus RTU naar TCP of naar andere protocollen (bijv. MQTT). |
Instellen: Modbus RTU
Modbus RTU is bedoeld voor seriële communicatie en is geschikt voor eenvoudige, lokale netwerken.
Fysieke verbinding
- Gebruik RS-485 (meest gebruikt) of RS-232. RS-485 ondersteunt multidrop (meerdere apparaten op één lijn).
- Zorg voor correcte bekabeling en juiste afsluitweerstanden om reflecties te voorkomen.
Netwerkparameters
- Stel baudrate, databits, pariteit en stopbits identiek in op alle apparaten.
- Elke slave krijgt een uniek slave-ID (1–247).
- Polling: de master vraagt periodiek data op; goede timing voorkomt botsingen.
Instellen: Modbus TCP
Modbus TCP is Modbus over Ethernet via TCP/IP. De standaardpoort is 502. Een client (bijv. SCADA of PLC) maakt verbinding met een server/apparaat. Voor remote access en cloud-integratie kun je Modbus TCP inzetten in combinatie met netwerksegmentatie en beveiligingsmaatregelen.
Voor remote access en datalogging kun je Modbus TCP combineren met gateways en data‑loggers; let daarbij goed op IP-configuratie (vaste IP of betrouwbare DHCP-reservering) en op firewallregels.
Modbus memory model en registertypes
Modbus gebruikt vier registertypes met vaste logische adressen en functiecodes:
| Type | Logisch adresbereik | Beschrijving | Functies (typisch) | Toegankelijkheid |
|---|---|---|---|---|
| Coils | 0xxxx | Digitale uitgangen (1 bit) | 01 (Read), 05/15 (Write) | Lezen & Schrijven |
| Discrete Inputs | 1xxxx | Digitale ingangen (1 bit) | 02 (Read) | Alleen lezen |
| Input Registers | 3xxxx | Analoge ingangen (16-bit) | 04 (Read) | Alleen lezen |
| Holding Registers | 4xxxx | Analoge waarden / instelparameters | 03 (Read), 06/16 (Write) | Lezen & Schrijven |
Praktische voorbeelden
In Modbus-berichten gebruik je offsets vanaf 0, niet de logische adressen. Voorbeelden:
- Holding Register 40001 → offset 0 bij functiecode 03.
- Holding Register 40010 → offset 9.
- Coils lezen: FC01; coils schrijven: FC05 (single) of FC15 (multiple).
Coils (0xxxx)
1 bit per adres, representeren digitale uitgangen. Voorbeeld: 00001 = lamp aan/uit. Lezen: FC01. Schrijven: FC05/FC15.
Discrete inputs (1xxxx)
1 bit per adres, alleen-lezen digitale ingangen. Lezen: FC02. Voorbeeld: 10001 = deur open/gesloten.
Input registers (3xxxx)
16-bit woorden, alleen-lezen. Gebruikt voor analoge meetwaarden (temperatuur, druk). Lezen: FC04. Voorbeeld: 30001 = temperatuur °C.
Holding registers (4xxxx)
16-bit woorden, lezen en schrijven; voor instelwaarden en procesdata. Lezen: FC03. Schrijven: FC06 (single) / FC16 (multiple). Voorbeeld: 40001 = setpoint temperatuur.
Logische adressen vs offsets
De logische adressen (zoals 40001) zijn bedoeld voor documentatie; in Modbus-berichten wordt alleen de offset verzonden. Verwarring tussen logische adressen en offsets is een veelvoorkomende foutbron — controleer altijd de apparaatdocumentatie.
Beveiliging en segmentatie
Modbus heeft geen ingebouwde security. Gebruik daarom netwerksegmentatie (VLAN’s), firewalls en VPN’s om het protocol te beschermen. Voor bredere IT/OT-issues is kennis van cybersecurity essentieel bij ontwerp en inbedrijfstelling.
Samenvatting
Modbus RTU en Modbus TCP vormen samen een robuuste en breed toepasbare standaard voor industriële communicatie. RTU is ideaal voor seriële verbindingen; TCP is geschikt voor Ethernet. Het geheugenmodel met coils en registers is vast, waarbij holding registers het meest flexibel zijn. Begrip van offsets, functiecodes (bijv. FC01, FC03, FC04) en seriële instellingen (baudrate, pariteit, stopbits) is essentieel voor een correcte implementatie.
