Wat is Modbus?
Modbus is een open, royaltyvrij communicatieprotocol waarmee industriële apparaten zoals PLC’s, sensoren, actuatoren, HMI’s en energiemeters via een eenvoudig vraag-antwoordprincipe meetwaarden en opdrachten uitwisselen. Modicon (nu een merk van Schneider Electric) publiceerde het protocol in 1979 voor de eigen PLC’s. Sindsdien is Modbus uitgegroeid tot een de-factostandaard die vrijwel elke fabrikant ondersteunt, over seriële lijnen als RS-485 en over Ethernet.
Modbus is geen enkel protocol maar een familie: één gemeenschappelijke applicatielaag met verschillende transportvarianten, zoals Modbus RTU, Modbus ASCII en Modbus TCP. Juist die eenvoud maakt het robuust en breed inzetbaar, maar ook kwetsbaar, omdat klassiek Modbus geen versleuteling of authenticatie kent.
🕰️ Hoe is Modbus ontstaan?
| Jaar | Gebeurtenis |
|---|---|
| 1979 | Modicon publiceert Modbus voor communicatie met de eigen PLC’s via seriële lijnen |
| jaren ‘80 | Modicon introduceert Modbus Plus, een apart propriëtair tokennetwerk |
| 1999 | Publicatie van de Open Modbus/TCP-specificatie voor Ethernet |
| 2002 | Oprichting van Modbus-IDA, de huidige Modbus Organization |
| 2004 | Schneider Electric draagt het auteursrecht op het protocol over aan Modbus-IDA |
| 2007 | Modbus TCP opgenomen in IEC 61158 en IEC 61784-2 (communicatieprofiel CPF 15) |
| 2012 | Actuele applicatieprotocolspecificatie V1.1b3 |
| 2018 | Publicatie van Modbus/TCP Security met TLS op poort 802 |
| 2020 | De Modbus Organization vervangt de termen master/slave door client/server |
Doordat de specificaties vrij te downloaden zijn en geen licentiekosten vragen, bouwden duizenden fabrikanten Modbus in hun producten. Dat verklaart waarom het protocol na ruim veertig jaar nog altijd in nieuwe apparatuur verschijnt.
🧠 Hoe werkt Modbus?
Modbus werkt volgens een strikt vraag-antwoordprincipe. Een client (vroeger master) stuurt een verzoek met een functiecode, bijvoorbeeld “lees tien registers vanaf adres 100”. De server (vroeger slave) voert het verzoek uit en stuurt een antwoord met de gevraagde data, of een foutmelding. Een server neemt nooit zelf het initiatief: wie data wil hebben, moet erom vragen (polling).
Elk bericht bestaat uit een PDU (Protocol Data Unit) van maximaal 253 bytes: één byte functiecode plus data. De transportlaag verpakt die PDU in een ADU met adressering en foutcontrole; bij seriële varianten is die maximaal 256 bytes, bij Modbus TCP 260 bytes.
Het datamodel kent vier tabellen, elk met adressen 0–65535:
| Tabel | Type | Toegang | Typisch gebruik | Klassieke notatie |
|---|---|---|---|---|
| Coils | 1 bit | Lezen en schrijven | Digitale uitgangen, aan/uit-commando’s | 0xxxx |
| Discrete inputs | 1 bit | Alleen lezen | Digitale ingangen, statusbits | 1xxxx |
| Input registers | 16 bit | Alleen lezen | Meetwaarden zoals temperatuur of druk | 3xxxx |
| Holding registers | 16 bit | Lezen en schrijven | Setpoints, parameters, configuratie | 4xxxx |
De klassieke notatie (zoals 40001) is 1-gebaseerd, terwijl het adres in het bericht 0-gebaseerd is. Dat verschil van één is een van de meest voorkomende oorzaken van verkeerd uitgelezen waarden bij inbedrijfstelling.
📦 Welke functiecodes kent Modbus?
| Code | Functie | Maximum per verzoek |
|---|---|---|
| 01 | Lees coils | 2.000 bits |
| 02 | Lees discrete inputs | 2.000 bits |
| 03 | Lees holding registers | 125 registers |
| 04 | Lees input registers | 125 registers |
| 05 | Schrijf één coil | 1 bit |
| 06 | Schrijf één holding register | 1 register |
| 15 | Schrijf meerdere coils | 1.968 bits |
| 16 | Schrijf meerdere holding registers | 123 registers |
| 23 | Lees en schrijf registers in één transactie | 125 lezen / 121 schrijven |
| 43/14 | Lees apparaatidentificatie (fabrikant, type, versie) | n.v.t. |
Gaat er iets mis, dan antwoordt de server met de functiecode plus 0x80 en een exceptiecode, zoals 01 (ongeldige functie), 02 (ongeldig adres), 03 (ongeldige waarde) of 04 (storing in het apparaat). Fabrikanten mogen daarnaast eigen functiecodes gebruiken in de daarvoor bestemde gebruikersbereiken 65–72 en 100–110.
🧱 Welke Modbus-varianten zijn er?
| Variant | Medium | Codering en foutcontrole | Adressering | Beveiliging |
|---|---|---|---|---|
| Modbus RTU | RS-485 of RS-232 | Binair, CRC-16, berichten gescheiden door 3,5 tekens stilte | 1–247, 0 = broadcast | Geen |
| Modbus ASCII | RS-485 of RS-232 | Hexadecimale tekens, LRC, begint met : en eindigt met CR LF |
1–247 | Geen |
| Modbus TCP | Ethernet, TCP/IP poort 502 | Binair met 7-byte MBAP-header; TCP verzorgt de foutcontrole | IP-adres plus unit ID | Geen |
| Modbus/TCP Security | TCP poort 802 | Modbus TCP binnen TLS 1.2 of hoger | IP-adres plus unit ID | X.509v3-certificaten met rol |
| Modbus Plus | Eigen bekabeling, 1 Mbit/s | Propriëtair token-passing netwerk | Maximaal 32 nodes per segment | Geen |
Modbus RTU is de meest gebruikte seriële variant; ASCII is ongeveer half zo efficiënt en komt vooral nog voor in oudere installaties. Modbus Plus is strikt genomen geen open variant maar een apart Schneider-netwerk dat Modbus-berichten transporteert, en wordt nauwelijks meer nieuw toegepast.
🏭 Waar wordt Modbus gebruikt?
- Sensor- en I/O-uitlezing - temperatuur, druk, debiet en digitale statussen naar een PLC of SCADA-systeem
- Aandrijvingen - frequentieregelaars voor motoren, pompen en ventilatoren starten, stoppen en op toerental regelen
- Energiebeheer - kWh-meters, zonne-omvormers (vaak volgens het SunSpec-model op basis van Modbus) en batterijsystemen
- Gebouwautomatisering - warmtepompen, luchtbehandelingskasten en koelinstallaties, vaak naast BACnet
- PLC-PLC-communicatie - eenvoudige koppelingen tussen machines van verschillende leveranciers
- Telemetrie - RTU’s (Remote Terminal Units) in water- en energienetten die veldinstrumenten via Modbus uitlezen
In Nederlandse installaties is Modbus vaak de “gemene deler”: een waterschap, zuivelfabriek of datacenter heeft zelden één leverancier, en Modbus is het protocol dat vrijwel elk apparaat spreekt.
⚠️ Wat zijn de beperkingen van Modbus?
- Geen ingebouwde beveiliging - klassiek Modbus heeft geen encryptie, geen authenticatie en geen autorisatie
- Alleen bits en 16-bit registers - 32-bit waarden, floats en strings worden over meerdere registers verdeeld, met een woordvolgorde die per fabrikant verschilt
- Polling in plaats van events - de client moet waarden steeds opnieuw opvragen, wat bandbreedte kost en geen tijdstempels oplevert
- Beperkte snelheid - seriële netwerken draaien meestal op 9.600 of 19.200 bit/s
- Eén client per seriële bus - bij Modbus RTU en ASCII mag maar één master actief zijn
- Geen semantiek - een register is alleen een nummer; betekenis, eenheid en schaal staan in de documentatie van de fabrikant, niet in het protocol
Voor rijkere datamodellen en ingebouwde beveiliging kiezen nieuwe projecten daarom vaak voor OPC UA of MQTT, terwijl Modbus op veldniveau blijft bestaan.
🔐 Hoe beveiligt u Modbus?
Elk apparaat dat een Modbus-verzoek kan ontvangen, voert dat uit, ongeacht wie het stuurt. Wie het netwerk kan bereiken, kan dus waarden uitlezen, berichten opnemen en herhalen of setpoints wijzigen. Vooral Modbus TCP is daardoor een aantrekkelijk doelwit voor cyberaanvallen.
Dat dit geen theorie is, bewees FrostyGoop: in januari 2024 stuurde deze malware via Modbus TCP opdrachten naar ENCO-regelaars van een warmtebedrijf in Lviv (Oekraïne), waardoor ruim 600 flatgebouwen midden in de winter bijna twee dagen zonder verwarming zaten. Het netwerk was niet gesegmenteerd en de regelaars waren vanaf een gecompromitteerde router direct bereikbaar.
Maatregelen in volgorde van effect:
- Segmentatie - plaats Modbus-apparaten in een eigen zone volgens het Purdue Model, het zones-en-conduitsmodel en IEC 62443, en stel Modbus nooit direct bloot aan internet
- Firewall met protocolfiltering - sta poort 502 alleen toe vanaf bekende clients en blokkeer schrijffunctiecodes waar alleen lezen nodig is
- Veilige toegang op afstand - gebruik een VPN of jump server met MFA in plaats van port forwarding, gecombineerd met strikte toegangscontrole
- Monitoring - een OT-IDS signaleert onverwachte schrijfopdrachten, nieuwe clients en ongebruikelijke functiecodes
- Modbus/TCP Security - gebruik waar apparaten het ondersteunen TLS op poort 802 met wederzijdse certificaatauthenticatie
- Fysieke beveiliging - beperk de toegang tot kasten en seriële bussen, want ook RS-485 is zonder authenticatie
Voor organisaties die onder NIS2 en de Cyberbeveiligingswet vallen, zijn zulke maatregelen onderdeel van de verplichte zorgplicht voor netwerk- en informatiebeveiliging.
🔧 Modbus in de praktijk: gateways en typische instellingen
Veel installaties combineren seriële en Ethernet-apparaten. Een Modbus-gateway vertaalt dan Modbus TCP naar Modbus RTU: de client adresseert de gateway via IP en kiest met het unit ID in de MBAP-header welk serieel apparaat achter de gateway antwoordt. Gateways bestaan ook naar Profibus, ProfiNET, BACnet, OPC UA en MQTT, vaak als edge-apparaat.
Typische instellingen en vuistregels:
- Seriële parameters - standaard 19.200 bit/s, 8 databits, even pariteit en 1 stopbit; elke deelnemer op de bus moet exact dezelfde instellingen hebben
- RS-485-bekabeling - twisted pair met een afsluitweerstand aan beide uiteinden (in de praktijk meestal 120 Ω); standaard 32 apparaten (unit loads) per segment zonder repeater
- Polling-interval - 100 ms tot enkele seconden, afhankelijk van het aantal apparaten en de baudrate
- Time-out - vaak 0,5 tot 1 seconde per verzoek, met een beperkt aantal herhalingen
- Registermap - documenteer per apparaat adressen, datatypes, woordvolgorde, schaalfactoren en eenheden, en neem dit op in uw asset-inventaris
- Diagnose - met Wireshark of een Modbus-testtool controleert u snel of adressen en functiecodes kloppen
❓ Veelgestelde vragen
Is Modbus gratis te gebruiken?
Ja, Modbus is een open en royaltyvrij protocol. De specificaties zijn gratis te downloaden bij de Modbus Organization, die het protocol sinds de overdracht van het auteursrecht door Schneider Electric in 2004 beheert.
Wat is het verschil tussen Modbus RTU en Modbus TCP?
Modbus RTU verstuurt binaire berichten over een seriële lijn zoals RS-485, met een slave-adres van 1 tot 247 en een CRC-controle. Modbus TCP verpakt dezelfde functiecodes en hetzelfde datamodel in TCP/IP op poort 502, waarbij een MBAP-header het slave-adres en de CRC vervangt.
Is Modbus veilig?
Klassiek Modbus is niet veilig: het kent geen versleuteling, authenticatie of autorisatie, waardoor iedereen met netwerktoegang waarden kan lezen en schrijven. Bescherming komt van segmentatie, firewalls met protocolfiltering, monitoring en, waar beschikbaar, Modbus/TCP Security met TLS op poort 802.
Wat betekenen master en slave bij Modbus?
Bij Modbus is de master het apparaat dat verzoeken verstuurt en de slave het apparaat dat antwoordt. Sinds 2020 gebruikt de Modbus Organization hiervoor de termen client en server, al komen master en slave in seriële documentatie nog veel voor.
Hoeveel apparaten kunnen op één Modbus-netwerk?
Een seriële Modbus-bus ondersteunt 247 adressen, maar een RS-485-segment is standaard ontworpen voor 32 apparaten (unit loads); voor meer apparaten zijn repeaters of zenders met een lagere busbelasting nodig. Bij Modbus TCP is het aantal servers alleen begrensd door het IP-netwerk en de capaciteit van de client.
Wordt Modbus vervangen door OPC UA?
Modbus wordt in nieuwe architecturen vaak aangevuld door OPC UA of MQTT, maar zelden volledig vervangen. Op veldniveau blijft Modbus door zijn eenvoud en brede ondersteuning nog jarenlang in gebruik, vaak via een gateway gekoppeld aan modernere protocollen.
📌 Samengevat
Modbus is sinds 1979 het meest universele protocol voor industriële apparaten: eenvoudig, open en door vrijwel elke fabrikant ondersteund. De familie omvat Modbus RTU en ASCII voor seriële lijnen, Modbus TCP voor Ethernet en Modbus/TCP Security als beveiligde variant. Het datamodel met coils en registers is beperkt maar effectief, en de afwezigheid van beveiliging maakt aanvullende maatregelen zoals segmentatie onmisbaar.
Modbus is een eenvoudig, open en breed ondersteund protocol voor communicatie tussen industriële apparaten, maar zonder ingebouwde beveiliging; segmentatie, filtering en monitoring zijn daarom voorwaarde voor veilig gebruik.
