Inleiding tot het Modbus-protocol en de berekeningsmethode van de Modbus RTU CRC-controlecode

Het Modbus-protocol is een communicatieprotocol dat in 1979 is ontwikkeld door het Amerikaanse bedrijf Modicon (tegenwoordig Schneider Electric). Het is bedoeld om via een getwist paar communicatie tot stand te brengen tussen meerdere apparaten. Modbus werd al snel de de facto-standaard in de automatiseringsindustrie, en Modicon stelde het protocol openbaar beschikbaar zonder patentkosten in rekening te brengen. Via het Modbus-protocol kan eenvoudig communicatie tot stand worden gebracht tussen besturingsapparaten (zoals PLC's, frequentieomvormers en DCS-systemen) van verschillende fabrikanten.

DTU/Edge-gateway/IoT-platform/gatewaymodule/Modbus-protocol

Communicatiemethode volgens het Modbus-protocol

Het Modbus-protocol maakt gebruik van een vraag-en-antwoord-communicatiemethode, die als voordelen heeft dat het eenvoudig is, goedkope hardware vereist, zeer veelzijdig is, gebruiksvriendelijk is en gemakkelijk te ontwikkelen en te implementeren is. Modbus RTU is vrijwel het voorkeurscommunicatieprotocol geworden voor PLC’s en frequentieomvormers voor huishoudelijk gebruik.

Voor het Modbus-protocol is geen speciale communicatiemodule nodig. De voor de communicatie benodigde stack en protocolmechanismen zijn in software geïmplementeerd en behoren tot laag 7 van het ISO-OSI-referentiemodel. Een ander voordeel is dat het via elk transmissiemedium kan communiceren, waaronder twisted pair-kabels, draadloze communicatie, glasvezel, Ethernet, telefoonmodems, mobiele telefoons en microgolven. Dit maakt het eenvoudig om een Modbus-verbinding tot stand te brengen in een nieuwe of bestaande installatie.

Modbus ASCII, Modbus RTU en Modbus TCP

Er zijn momenteel drie versies van Modbus in gebruik: Modbus ASCII, Modbus RTU en Modbus TCP. Bij het Modbus ASCII-protocol moet één byte aan gegevens worden omgezet in twee bytes ASCII-code voordat deze worden verzonden. De gegevens van het Modbus RTU-protocol zijn binair gecodeerd, en elke byte aan gegevens vereist slechts één byte aan communicatie.

Modbus RTU-communicatie maakt gebruik van de master-slave-modus en kan tot 255 bytes aan gegevens verzenden. Een master-apparaat communiceert met één of meer slave-apparaten. Typische master-apparaten zijn PLC’s, pc’s, DCS’en (gedistribueerde besturingssystemen) of RTU’s (remote terminal units). Modbus RTU-slave-apparaten zijn doorgaans veldapparaten.

Wanneer een Modbus RTU-masterapparaat gegevens van een slave-apparaat wil opvragen, verstuurt het masterapparaat een bericht dat het stationadres van het slave-apparaat, de gevraagde gegevens en een CRC-controlecode bevat die wordt gebruikt om fouten op te sporen. Alle andere apparaten op het netwerk kunnen dit bericht ontvangen, maar alleen het slave-apparaat waarvan het adres is opgegeven, zal reageren. Slave-apparaten op een Modbus-netwerk kunnen zelf geen communicatie initiëren; ze kunnen alleen reageren wanneer het master-apparaat hen aanspreekt.

Modbus

Modbus TCP kan worden gezien als Modbus via Ethernet. Modbus TCP maakt gewoon gebruik van de TCP/IP-standaard om Modbus-informatiepakketten eenvoudig te verpakken en te comprimeren. Hierdoor kunnen Modbus TCP-apparaten verbinding maken en communiceren via Ethernet- en glasvezelnetwerken. In vergelijking met de RS-485-interface maakt Modbus TCP ook het gebruik van meer adressen mogelijk, kan het een multi-master-architectuur ondersteunen en kan de overdrachtssnelheid het GB/s-niveau bereiken. Het aantal slave-stations in het Modbus TCP-netwerk wordt alleen beperkt door de capaciteiten van de fysieke laag van het netwerk. Meestal ligt het aantal slave-stations rond de 1024.

Modbus RTU maakt gebruik van een 16-bits cyclische redundantiecontrolecode (CRC). Via een complexe procedure van OR-bewerkingen en het verschuiven van de gegevens wordt de CRC door het masterapparaat gegenereerd en door het ontvangende apparaat gecontroleerd. Als de door beide partijen berekende CRC-waarden niet overeenkomen, vraagt het slave-apparaat om herverzending van de informatie. Het Modbus RTU-protocol is onderverdeeld in het Modbus RTU-masterprotocol en het Modbus RTU-slaveprotocol. Modbus-communicatie wordt aangestuurd door functiecodes, en het hoofdstation heeft rechtstreeks toegang tot het gegevensgebied van het slavestation.

Berekeningsmethode voor de CRC-controlecode bij Modbus RTU

Bij de CRC-berekening worden slechts 8 databits, het startbit en het stopbit gebruikt. Als er een pariteitsbit is, worden deze bits – inclusief het pariteitsbit – niet meegenomen in de CRC-berekening.

De berekeningsmethode voor de CRC is:

  1. Laad een 16-bits register met de waarde 0XFFFF. Dit register is het CRC-register.
  2. Voer een XOR-bewerking uit tussen de eerste 8-bits binaire gegevens (d.w.z. de eerste byte van het communicatie-informatieframe) en het 16-bits CRC-register; het resultaat van de XOR-bewerking wordt nog steeds opgeslagen in het CRC-register.
  3. Verschuif de inhoud van het CRC-register één bit naar rechts, vul het hoogste bit met een 0 en bepaal of het verschoven bit een 0 of een 1 is.
  4. Als het verschoven bit nul is, herhaal dan de derde stap (weer één bit naar rechts verschuiven); als het verschoven bit 1 is, wordt het CRC-register met 0XA001 XOR’d.
  5. Herhaal stap 3 en 4 totdat de verschuiving naar rechts 8 keer is uitgevoerd, zodat de volledige 8-bits gegevens zijn verwerkt.
  6. Herhaal stap 2 en 5 om de volgende byte van het communicatie-informatieframe te verwerken.
  7. Nadat alle bytes van het communicatie-informatieframe volgens de bovenstaande stappen zijn berekend, worden de hoogste en laagste bytes van het verkregen 16-bits CRC-register omgewisseld.
  8. De uiteindelijke inhoud van het CRC-register is: CRC-controlecode.
About Me
e87d0ef219292bb40d6f120e7d321bcb?s=150&d=mp&r=g
More Posts