Wat is Modbus RTU?
Modbus RTU is de seriële, binaire transmissiemodus van het Modbus-protocol, waarmee één master via een RS-485- of RS-232-lijn tot 247 slaves zoals PLC’s, sensoren, actuatoren, HMI’s en energiemeters bevraagt met korte berichten die door stilte worden gescheiden en met een CRC-16 worden gecontroleerd. De naam komt van de Remote Terminal Unit-modus uit de oorspronkelijke specificatie van Modicon (nu Schneider Electric); met het apparaat RTU heeft het protocol alleen de herkomst van die naam gemeen. De actuele regels staan in de Modbus over Serial Line Specification and Implementation Guide V1.02 van december 2006.
Modbus RTU is de standaardmodus voor serieel Modbus: elk serieel Modbus-apparaat moet RTU ondersteunen, terwijl de tekstgebaseerde ASCII-modus optioneel is. Omdat de Modbus-specificaties openbaar en licentievrij zijn, ondersteunt vrijwel elke fabrikant het, en daarom is Modbus RTU nog altijd een veelgebruikt protocol op veldniveau in industriële automatisering en gebouwautomatisering.
🧠 Hoe werkt Modbus RTU?
Modbus RTU volgt een strikt vraag-antwoordprincipe. De master (in de terminologie van de Modbus Organization sinds 2020: de client) stuurt een verzoek naar één slave (server), die binnen een time-out antwoordt. Slaves nemen nooit zelf het initiatief en praten niet met elkaar. Op de bus mag altijd maar één apparaat tegelijk zenden.
- Unicast - de master adresseert één slave met een adres van 1 tot en met 247; alleen die slave antwoordt
- Broadcast - adres 0 bereikt alle slaves tegelijk; dit mag alleen voor schrijfopdrachten en niemand antwoordt
- Gereserveerd - adressen 248 tot en met 255 zijn niet in gebruik voor apparaten
Het datamodel (coils, discrete inputs, input registers en holding registers) en de functiecodes zijn gelijk aan die van Modbus TCP; alleen de verpakking verschilt. Een RTU-bericht bestaat uit een adresbyte, een functiecodebyte, maximaal 252 databytes en twee CRC-bytes, samen hooguit 256 bytes.
🔧 Hoe ziet een Modbus RTU-frame eruit?
Elke byte gaat over de lijn als teken van 11 bits: één startbit, acht databits (minst significante bit eerst), één pariteitsbit en één stopbit. Zonder pariteit is een tweede stopbit verplicht, zodat het teken 11 bits blijft. Even pariteit is verplicht en de standaardinstelling.
Er is geen begin- of eindteken. Een frame begint en eindigt met een stilte van minstens 3,5 tekentijden (t3.5). Valt er binnen een frame een pauze van meer dan 1,5 tekentijd (t1.5), dan beschouwt de ontvanger het frame als onvolledig en gooit het weg. Boven 19.200 bit/s schrijft de specificatie vaste waarden voor: 750 µs voor t1.5 en 1,75 ms voor t3.5.
| Veld | Lengte | Voorbeeld | Betekenis |
|---|---|---|---|
| Stilte | ≥ 3,5 tekens | - | Markeert begin van het frame |
| Adres | 1 byte | 01 |
Slave 1 |
| Functiecode | 1 byte | 03 |
Lees holding registers |
| Data | 0–252 bytes | 00 00 00 0A |
Startadres 0, aantal 10 registers |
| CRC | 2 bytes | C5 CD |
CRC-16, lage byte eerst |
| Stilte | ≥ 3,5 tekens | - | Markeert einde van het frame |
De CRC-16 start met een register vol enen (0xFFFF), verwerkt elke databyte met het polynoom 0xA001 en wordt met de lage byte eerst achter het bericht gezet. Start-, stop- en pariteitsbits tellen niet mee. Klopt de berekende CRC niet, dan negeert de slave het bericht en stuurt hij geen antwoord; de master merkt dat pas aan de time-out.
🔄 Wat is het verschil tussen Modbus RTU, Modbus ASCII en Modbus TCP?
| Aspect | Modbus RTU | Modbus ASCII | Modbus TCP |
|---|---|---|---|
| Fysieke laag | RS-485 (2- of 4-draads), kort RS-232 | RS-485 of RS-232 | Ethernet met TCP/IP, poort 502 |
| Codering | Binair, 8 databits | Hexadecimale tekens, 7 databits | Binair met MBAP-header |
| Framegrenzen | Stilte van 3,5 tekentijden | : aan begin, CR LF aan eind |
TCP-segment met lengteveld |
| Foutcontrole | CRC-16 | LRC (8 bits) | Door TCP |
| Adressering | 1–247, 0 = broadcast | 1–247, 0 = broadcast | IP-adres plus unit ID |
| Snelheid | Typisch 9.600–115.200 bit/s | Zelfde baudrates, maar berichten ongeveer twee keer zo lang | 10/100 Mbit/s of meer |
| Clients per netwerk | Eén master | Eén master | Meerdere clients tegelijk |
| Topologie | Lijn (daisy chain) | Lijn | Ster of geswitcht netwerk |
Modbus TCP vervangt adresbyte en CRC door een header van zeven bytes, maar gebruikt dezelfde functiecodes. Een gateway kan daarom eenvoudig vertalen: de unit ID in het TCP-bericht bepaalt welk serieel apparaat achter de gateway wordt aangesproken.
🧱 Welke eisen gelden voor bekabeling en instellingen?
De serieel-lijnspecificatie stelt naast de protocolregels ook concrete eisen aan de fysieke installatie:
| Onderwerp | Eis of vuistregel |
|---|---|
| Baudrate | 9.600 en 19.200 bit/s verplicht; 19.200 bit/s is de standaardinstelling |
| Tekenformaat | 8 databits, even pariteit, 1 stopbit (8E1); zonder pariteit 2 stopbits |
| Aantal apparaten | 32 per segment zonder repeater altijd toegestaan; meer met transceivers van een lagere busbelasting |
| Kabellengte | Tot 1.000 m bij 9.600 bit/s met AWG26 of dikker; aftakkingen nooit langer dan 20 m |
| Afsluiting | Aan beide uiteinden van de hoofdkabel: 150 Ω, of 120 Ω in serie met 1 nF bij polarisatie |
| Polarisatie | Op één plek, meestal bij de master: pull-up op D1 en pull-down op D0 van 450–650 Ω |
| Signaalnamen | D0 (A), D1 (B) en Common; Common op één punt aan de beschermingsaarde |
| Kabel | Afgeschermd getwist paar; afscherming aan één zijde geaard |
Een klassieke valkuil is de A/B-aanduiding: fabrikanten wisselen de betekenis van A en B onderling om. Wie geen communicatie krijgt, verwisselt daarom eerst de twee datadraden. De specificatie schrijft juist D0 en D1 voor om die verwarring te voorkomen.
🏭 Hoe zet u Modbus RTU in de praktijk in?
Modbus RTU zit in kWh-meters, frequentieregelaars, temperatuurregelaars, zonne-omvormers, warmtepompen, HVAC-installaties, flowmeters en I/O-modules met relaisuitgangen, van fabrikanten als Schneider Electric, Siemens, WAGO en ABB. Een PLC of SCADA-systeem leest ze cyclisch uit, vaak naast andere veldbussen zoals Profibus, BACnet of M-Bus.
Een werkwijze die storingen bij inbedrijfstelling voorkomt:
- Inventariseer de apparaten - noteer per apparaat adres, baudrate, pariteit en de registermap van de fabrikant, en neem dit op in uw asset-inventaris
- Kies één set parameters - bijvoorbeeld 19.200 bit/s 8E1 voor de hele bus, want een apparaat met afwijkende instellingen herkent de frames niet en blijft stil
- Bekabel als lijn - geen sterpunten, afsluiting alleen op de twee uiteinden en polarisatie op één plek
- Test per apparaat - lees met een Modbus-testtool eerst één register, controleer schaal en woordvolgorde, en voeg dan de volgende slave toe
- Bereken de cyclustijd - reken het aantal verzoeken per ronde uit voordat u de pollingtijd in de PLC vastlegt
De beperkte bandbreedte bepaalt hoeveel apparaten u per bus kunt bevragen. Een rekenvoorbeeld: bij 19.200 bit/s duurt één teken 0,57 ms. Het lezen van tien registers kost een verzoek van 8 bytes en een antwoord van 25 bytes, samen 33 bytes of ongeveer 19 ms, plus twee stiltes van 2 ms en de verwerkingstijd van de slave. Reken in de praktijk met 30 tot 50 ms per transactie. Dertig meters met elk één verzoek geven dus een cyclus van ongeveer één tot anderhalve seconde. Bij 9.600 bit/s verdubbelt de zendtijd, zodat de cyclus bijna twee keer zo lang wordt. De specificatie noemt bij 9.600 bit/s een gebruikelijke time-out van één tot enkele seconden; die moet u dus ruim kiezen, maar een slave die niet antwoordt vertraagt zo wel de hele cyclus.
🔐 Hoe beveiligt u Modbus RTU?
Modbus RTU kent geen versleuteling, geen authenticatie en geen autorisatie. Elk apparaat op de bus voert een geldig verzoek uit, ongeacht de afzender. Op de seriële lijn zelf beperkt dat het risico tot wie fysiek bij de kabel of een aansluitklem kan, maar dat verandert zodra een serieel-naar-Ethernetgateway de bus via Modbus TCP bereikbaar maakt. Dat de Modbus-familie in de praktijk wordt misbruikt, bewees FrostyGoop in januari 2024: via Modbus TCP werden regelaars van een warmtebedrijf in Lviv aangestuurd.
Maatregelen:
- Segmentatie - plaats gateways in een eigen zone volgens het Purdue Model en IEC 62443, nooit direct aan internet
- Firewall met protocolfiltering - sta poort 502 alleen toe vanaf bekende clients en blokkeer schrijffunctiecodes waar lezen volstaat
- Gatewayconfiguratie - schakel ongebruikte webinterfaces uit, wijzig standaardwachtwoorden en beperk welke unit ID’s bereikbaar zijn
- Monitoring - een OT-IDS of passieve monitoring signaleert onverwachte schrijfopdrachten aan de TCP-kant
- Fysieke beveiliging - sluit kasten af en beperk toegang tot klemmenstroken en servicepoorten
Voor organisaties onder NIS2 en de Cyberbeveiligingswet, zoals waterschappen en energiebedrijven, valt het beheersen van zulke koppelingen onder de zorgplicht voor netwerk- en informatiebeveiliging.
❓ Veelgestelde vragen
Wat betekent RTU in Modbus RTU?
RTU staat voor Remote Terminal Unit en is de naam van de binaire transmissiemodus in de seriële Modbus-specificatie. De naam verwijst naar de oorsprong in telemetrie, maar Modbus RTU wordt gebruikt door elk type serieel apparaat, niet alleen door RTU’s.
Welke instellingen zijn standaard bij Modbus RTU?
De standaardinstelling van Modbus RTU volgens de specificatie is 19.200 bit/s, 8 databits, even pariteit en 1 stopbit. Elk apparaat moet ook 9.600 bit/s ondersteunen, en alle deelnemers op één bus moeten exact dezelfde instellingen hebben.
Hoeveel apparaten kunnen op een Modbus RTU-bus?
Modbus RTU kent 247 slave-adressen, maar een RS-485-segment is standaard berekend op 32 apparaten zonder repeater. Met transceivers die de bus minder belasten of met repeaters zijn meer apparaten mogelijk, tot het adresmaximum van 247.
Hoe lang mag een Modbus RTU-kabel zijn?
De Modbus-specificatie noemt maximaal 1.000 meter hoofdkabel bij 9.600 bit/s met AWG26 of dikker, met aftakkingen van hooguit 20 meter. De vaak genoemde 1.200 meter is een algemene RS-485-vuistregel, niet de Modbus-eis. Bij hogere baudrates neemt de maximale lengte af, en via RS-232 is Modbus RTU alleen geschikt voor korte punt-tot-puntverbindingen.
Kan ik Modbus RTU en Modbus TCP koppelen?
Ja, een Modbus-gateway vertaalt Modbus TCP naar Modbus RTU omdat beide varianten dezelfde functiecodes en hetzelfde datamodel gebruiken. De TCP-client kiest met de unit ID welk serieel apparaat achter de gateway antwoordt.
Waarom antwoordt mijn Modbus RTU-apparaat niet?
Een Modbus RTU-slave zonder antwoord heeft meestal een afwijkende baudrate of pariteit, een verkeerd adres, verwisselde A- en B-draden of een ontbrekende afsluiting. Omdat een slave een bericht met een foute CRC stil negeert, ziet de master alleen een time-out.
📌 Samengevat
Modbus RTU is de binaire, seriële modus van Modbus, vastgelegd in de serieel-lijnspecificatie V1.02 uit 2006. Frames worden door stilte begrensd en met een CRC-16 gecontroleerd, één master bevraagt tot 247 slaves over RS-485, en de specificatie schrijft baudrate, afsluiting, polarisatie en kabellengte concreet voor. Het protocol is eenvoudig en universeel, maar zonder beveiliging; via gateways komt het ook op het Ethernet-netwerk terecht.
Modbus RTU is de standaardmodus voor serieel Modbus: compact, robuust en door vrijwel elke fabrikant ondersteund, mits u de bus volgens de specificatie bekabelt en de koppeling met Ethernet net zo streng beveiligt als elk ander OT-netwerk.
