MODBUS RTU
An Introduction to Modbus RTU Addressing, Function Codes, and Modbus RTU Networking Overview
Modbus RTU is een open serieel protocol afgeleid van de Master/Slave architectuur oorspronkelijk ontwikkeld door Modicon (nu Schneider Electric). Het is een algemeen aanvaard serieel niveau protocol omwille van zijn gebruiksgemak en betrouwbaarheid. Modbus RTU wordt veel gebruikt binnen Building Management Systems (BMS) en Industrial Automation Systems (IAS).
Modbus RTU berichten zijn een eenvoudige 16-bit structuur met een CRC (Cyclic-Redundant Checksum). De eenvoud van deze berichten is om de betrouwbaarheid te waarborgen. Door deze eenvoud kan de basis 16-bit Modbus RTU register structuur gebruikt worden om floating point, tabellen, ASCII tekst, wachtrijen en andere niet-gerelateerde data in te verpakken.
Dit protocol gebruikt primair een RS-232 of RS-485 seriële interfaces voor communicatie en wordt ondersteund door bijna elk commercieel SCADA, HMI, OPC Server en data acquisitie software programma op de markt. Dit maakt het zeer eenvoudig om Modbus-compatibele apparatuur te integreren in nieuwe of bestaande bewakings- en besturingstoepassingen.
Een beetje Modbus RTU geschiedenis
Je zou het Modbus protocol de grootvader van industriële netwerken kunnen noemen. Het is echt zo oud als de heuvels en heeft de snorharen om het te bewijzen. In het huidige tijdperk van Internet connectiviteit en Web Services, zijn Modbus’ niet-verbonden bericht en eenvoudige request-response communicatiestructuur bijna ouderwets. Bijna net zo oud als de eerste Programmable Logic Controller, de Modicon 084, die in die dagen een PC voor Programmable Controller werd genoemd.
Modbus RTU is een open standaard, wat betekent dat fabrikanten het in hun apparatuur kunnen inbouwen zonder royalty’s te hoeven betalen. Het is het meest verspreide communicatieprotocol in de industriële automatisering en is nu de meest beschikbare manier om industriële elektronische apparaten te verbinden.
Modbus wordt op grote schaal gebruikt door vele fabrikanten in vele industrieën. Modbus wordt meestal gebruikt om gegevens van controle-instrumenten naar een logische controller of een systeem voor het archiveren van gegevens te verzenden. In de gebouwautomatisering bijvoorbeeld worden temperatuur en vochtigheid vaak doorgegeven aan een computer voor opslag op lange termijn. Modbus wordt vaak gebruikt om een toezichthoudende computer te verbinden met een remote terminal unit (RTU) in toezichthoudende controle en data acquisitie (SCADA) systemen.
Waarom is Modbus zo Populair?
Eenvoud is de reden dat Modbus zo wijdverbreid is. Het deed ook geen pijn dat Modbus is gemaakt door een van de grootste PLC-fabrikanten van dat moment en het open en algemeen beschikbaar maakte. Modbus vereist ook zeer weinig processorcode of RAM-geheugen. Hoewel dit vandaag de dag niet meer zo belangrijk is gezien de krachtige processoren en technologie die we tot onze beschikking hebben, was het erg belangrijk in de beginjaren van industriële automatisering toen processoren 8-bit technologie gebruikten en middelen zoals RAM en ROM extreem duur en schaars waren.
Boodschapscontrole is een andere reden waarom Modbus zo populair is geworden. CRC en LRC controle betekent dat transmissie fouten worden gecontroleerd tot 99% nauwkeurigheid.
Modbus Communicatie
Het Modbus RTU protocol gebruikt een Master/Slave techniek om te communiceren tussen apparaten. Dit betekent dat elke toepassing die gebruik maakt van het Modbus RTU protocol een Modbus Master en tenminste één Modbus Slave heeft. Een Modbus Master is meestal een host toezichthoudende computer met software die communiceert met een of meer Modbus Slave apparaten.
Modbus maakt Master/Slave communicatie mogelijk tussen apparaten die via bussen of netwerken met elkaar zijn verbonden. In het OSI-model bevindt Modbus zich op niveau 7. Modbus is bedoeld als een verzoek/antwoord-protocol en levert diensten die worden gespecificeerd door functiecodes. De functiecodes van Modbus zijn elementen van de Modbus request/reply PDUs (Protocol Data Unit).
Om de Modbus application data unit op te bouwen, moet de client een Modbus transactie initiëren. Het is de functie die de server informeert over het type actie dat moet worden uitgevoerd. Het formaat van een door een Master geïnitieerde aanvraag wordt bepaald door het Modbus applicatieprotocol. Het veld van de functiecode wordt dan gecodeerd in één byte. Alleen codes binnen het bereik van 1 tot en met 255 worden als geldig beschouwd, waarbij 128-255 is gereserveerd voor uitzonderingsreacties. Wanneer de Master een bericht naar de Slave stuurt, is het het functiecode-veld dat de server informeert over het type actie dat moet worden uitgevoerd.
Vindt u het leuk wat u leest?
Abonneer u op onze e-mailserie Automation Education om wekelijks per byte de ins en outs van de belangrijkste industriële protocollen te leren!
Om meerdere acties te definiëren, worden aan sommige functies sub-functiecodes toegevoegd. Zo kan de Master bijvoorbeeld de AAN/UIT-status van een groep discrete uitgangen of ingangen lezen. Hij kan ook de data-inhoud van een groep MODBUS-registers lezen/schrijven. Wanneer de Master het antwoord van de Slave ontvangt, wordt het functiecodeveld door de Slave gebruikt om aan te geven dat het een foutloos antwoord of een uitzonderingsantwoord is. De Slave echoot naar het verzoek van de initiële functiecode in het geval van een normaal antwoord.
Modbus RTU Data Representation
Zoals al het andere aan Modbus, is de data representatie eenvoudig. In feite worden gegevens eenvoudiger weergegeven in Modbus dan in enig ander industrieel protocol dat u ooit zult vinden. Het minst belangrijke bit wordt eerst verzonden en ontvangen. Alle apparaten binnen het netwerk moeten elke verzonden byte op deze manier analoog interpreteren.
Er zijn geen methoden voor automatische herkenning van baudrates. De Slave(s) en Master die op de bus zijn aangesloten moeten dezelfde baud-rate gebruiken. Er wordt geen specifieke baudrate gespecificeerd door de Modbus: typische baudrates zijn 9600 of 19200.
Er zijn slechts twee datatypes in Modbus: spoelen en registers. Spoelen zijn gewoon afzonderlijke bits. De bits kunnen AAN (1) of UIT (0) zijn. Sommige coils vertegenwoordigen ingangen, wat betekent dat ze de status van een fysieke discrete ingang bevatten. Of zij vertegenwoordigen uitgangen, hetgeen betekent dat zij de toestand van een of ander fysiek discreet uitgangssignaal bevatten. Registers zijn eenvoudigweg 16-bits niet-ondertekende registergegevens. Registers kunnen een waarde hebben van 0 tot 65535 (0 tot FFFF hexadecimaal). Er is geen weergave voor negatieve waarden, geen weergave voor waarden groter dan 65535, en geen weergave voor echte gegevens zoals 200,125.
Registers worden gegroepeerd in Input Registers en Holding Registers. Net als ingangsspoelen geven ingangsregisters de toestand van een externe ingang weer als een waarde tussen 0 en 65535. De oorspronkelijke bedoeling van een Input Register was de waarde van een analoge ingang weer te geven. Het is een digitale weergave van een analoog signaal zoals een spanning of een stroom. De meeste Modbus apparaten zijn tegenwoordig geen I/O apparaten, en Input Registers functioneren gewoon identiek aan Holding Registers.
Holding Registers waren oorspronkelijk ontworpen als tijdelijke programma-opslag voor apparaten zoals Modbus controllers. Vandaag de dag fungeren Holding Registers als data-opslag voor apparaten.
Modbus RTU-pakketten zijn alleen bedoeld om gegevens te verzenden; ze hebben niet de mogelijkheid om parameters zoals puntnaam, resolutie, eenheden, enz. te verzenden. Als de mogelijkheid om dergelijke parameters te verzenden nodig is, moet men een BACnet, EtherNet/IP, of andere moderne protocollen te onderzoeken.
Modbus RTU Adres Eisen en Station Identificatie
Standaard Modbus RTU node adressen zijn 1-255, met 0 is gereserveerd voor broadcast berichten en alleen schrijven. Het 0 adres wordt echter zelden gebruikt omdat er geen bevestiging is dat het bericht correct werd ontvangen op de slave node. Dit heeft niet veel invloed als uw fysieke laag RS-232 is, omdat er toch maar één node kan worden geïmplementeerd. RS-485 beperkt het aantal nodes tot 32, hoewel sommige drivers dit aantal kunnen uitbreiden.
Seriële Modbus Slave apparaten worden geïdentificeerd door een stationnummer dat voorafgaat aan de algemene berichtstructuur. Over het algemeen worden maximaal 32 stations ondersteund, omdat dat de limiet is die door de meeste RS485 seriële drivers wordt opgelegd. Er is geen softwarematige limiet voor het aantal stations dat kan worden ondersteund. Geldige Slave adressen worden toegewezen in het bereik van 1 tot 255 met station nummer 0 gereserveerd voor broadcast berichten, berichten die door alle Slaves worden verwerkt.
Transport Lagen
Er zijn verschillende standaard transporten die worden gebruikt om Modbus protocol berichten te verplaatsen: RS232 en RS485. U kunt andere gebruiken, maar dit zijn de meest gebruikte.
RS485 is een opvolger van RS232. Het werkt op een vergelijkbare manier wat betreft de synchronisatiebits die de overdracht van bits van een zendend naar een ontvangend station synchroniseren. Er zijn echter twee karakteristieke kenmerken die RS485 anders maken dan RS232. De eerste is de mogelijkheid om meerdere bestemmingen aan te sturen. RS485 zenders kunnen tot 32 bestemmingsapparaten elektrisch aansturen. Dat maakt RS485 de aangewezen manier om Modbus berichten serieel te transporteren.
De andere karakteristiek van RS485 is de verbeterde ongevoeligheid voor ruis. RS485 gebruikt niet de elektrische common als referentie voor zijn elektrisch signaal. In plaats daarvan gebruikt RS485 een paar draden en stuurt een signaal door een spanningspotentiaal over het paar te zetten. Op die manier heeft elektrische ruis uit de omgeving op beide draden evenveel invloed en wordt het potentiaal over de twee draden niet veranderd.
Modbus RTU Data Codering
Een coderingsmechanisme beschrijft hoe bitpatronen worden gevormd uit de besturings- en datawaarden die in het pakket worden gecodeerd. Zowel de verzender als de ontvanger moeten dezelfde codering gebruiken om de inhoud van de gegevens correct te kunnen begrijpen. Er zijn twee mechanismen voor het coderen van Modbus-berichten: ASCII en RTU.
RTU codering is het veel meer voorkomende coderingsmechanisme dat op Modbus wordt gebruikt. RTU betekent gewoon dat waarden worden gecodeerd als standaard big-endian binair. Dat betekent dat in het geval van 16-bits waarden, de Most Significant Byte (MSB) wordt gecodeerd vóór de Least Significant byte (LSB). Een 8-bits waarde zoals decimaal 41 (29 hex) wordt eenvoudig gecodeerd als 0010 1001. Terwijl een 16-bit waarde zoals decimaal 300 (12C hex) wordt gecodeerd als 0000 0001 0010 1100. De MSB van 01 wordt gecodeerd en verzonden vóór de LSB van 2C.
MODBUS RTU Memory Map
Modbus RTU Data Type |
Common name |
Startadres |
Modbus Coils | Bits, binaire waarden, vlaggen | 00001 |
Binaire ingangen | 10001 | |
Binaire ingangen | 30001 | |
Modbus Registers | Analoge waarden, variabelen | 40001 |
Het verschil tussen Modbus RTU en Modbus TCP
Het meest fundamentele verschil tussen Modbus RTU en Modbus TCP (ook bekend als Modbus IP, Modbus EtherNet, en Modbus TCP/IP) is dat Modbus TCP op een Ethernet fysieke laag draait en Modbus RTU een serieel niveau protocol is. Modbus TCP gebruikt ook een 6-byte header om routing mogelijk te maken.
Een Modbus RTU Master is een enkele Master bus. Het zendt een bericht naar een RTU slave apparaat en krijgt een antwoord. Modbus RTU is beperkt tot een enkele master. Er kan slechts één set signalen tegelijkertijd op de RS485 link zijn. Of de enkele RTU Master is aan het zenden of een van de RTU Client apparaten is aan het zenden.
Met de introductie van Modbus TCP, werd alles eenvoudiger en gemakkelijker. Met Modbus TCP, kunnen controllers veel efficiënter gebruik maken van de bandbreedte op Ethernet om de Master te zijn voor honderden Modbus TCP apparaten. Modbus TCP maakt meerdere Clients mogelijk. Waar RS485 een elektrische beperking had van 32 apparaten, is Ethernet onbeperkt. Het RAM geheugen is de enige praktische beperking. Met Modbus TCP kan een netwerkontwerper meerdere Clients/Masters gebruiken als hij dat wil.
Bij Modbus TCP (Ethernet) moet je een dure switch inschakelen. Met Modbus RTU (serieel), kunt u gewoon alle apparaten in serie schakelen. Apparaten met oude 8-bit processoren en een klein beetje geheugen kunnen gemakkelijk Modbus serieel doen, maar je hebt een duurder platform nodig om Ethernet te doen.
Wist u dat?
De grondlegger van Real Time Automation, John S. Rinaldi, schreef een heel boek over Modbus? Kijk dan eens naar The Everyman’s Guide to Modbus, nu beschikbaar op Amazon!
Voor meer informatie over onze Modbus RTU producten en diensten bel 1-800-249-1612 of email ons op [email protected].
Wilt u Modbus RTU aan uw project toevoegen?
Zie Modbus RTU Solutions
Wilt u deze pagina in PDF-formaat? Klik hier!