Het Modbus-communicatieprotocol werd in 1979 door Modicon ontwikkeld en is het oudste busprotocol ter wereld dat in de industriële sector wordt gebruikt. Omdat het protocol gratis en openbaar beschikbaar is gesteld, hoeven fabrikanten die het protocol gebruiken geen licentiekosten te betalen, waardoor het Modbus-protocol wereldwijd op grote schaal wordt toegepast.
Het Modbus-communicatieprotocol kent meerdere varianten, waarvan Modbus RTU en Modbus TCP de meest gangbare zijn.
De twee protocollen lijken sterk op elkaar. Laten we het uitlezen van meerdere opslagregisters als voorbeeld nemen om het verschil tussen beide te illustreren:
Het verzendformaat voor Modbus RTU-communicatie is: slave-adres 01 (duidt het slave-adres aan) functiecode 03 (het uitlezen van één of meerdere holdingregisters) startadres van de gegevens 00 00 (duidt aan dat er wordt begonnen bij 40001) aantal gegevens 00 02 (duidt op het uitlezen van twee woorden) CRC-controlecode xx xx (de CRC-controlecode is hier C4 0B), wat samen 01 03 00 00 00 02 C4 0B oplevert. Na verzending zal het slave-station gegevens terugsturen. Het gegevensformaat is: 01 03 04 01 02 03 04 5B 3C, waarbij 01 het adres van het slavestation is, 03 de functiecode voor lezen, 04 het aantal gegevensbytes, 01 02 03 04 de gegevensinhoud en 5B 3C de CRC-controlecode.

Het Modbus TCP-protocol voegt een MBAP-header toe aan het Modbus RTU-protocol. Aangezien TCP een dienst is die gebaseerd is op betrouwbare verbindingen, is de CRC-controlecode in het RTU-protocol niet langer nodig; daarom is er geen CRC-controle in het Modbus TCP-protocol. Uit onderzoek blijkt dat de MBAP-header zeven bytes lang is. Behalve de vijfde en zesde byte zijn de overige bytes in principe ongewijzigd. Om de bovenstaande bewerking bijvoorbeeld met Modbus TCP uit te voeren, moet je 00 01 00 00 00 06 ff 03 00 00 00 02 verzenden. De vijfde en zesde byte zijn 00 06, wat betekent dat er 6 bytes volgen op 00 06. Zie de onderstaande afbeelding voor specifieke bewerkingen

De retourwaarde is 00 01 00 00 00 07 ff 03 04 01 02 03 04. De eerste 7 bytes vormen de MBAP-berichtkop, 03 is de functiecode voor het uitlezen, 04 zijn de gegevensbytes, en 01 02 03 04 vertegenwoordigen de gegevensinhoud.
Het Modbus TCP-protocol is dus in feite het Modbus RTU-protocol, waarbij de CRC-controlecode en de code van het vorige slave-adres zijn verwijderd en vervolgens een MBAP-header van 7 bytes aan het begin is toegevoegd.

Modbus TCP is voortgekomen uit Ethernet, en de fysieke interface bepaalt de communicatiesnelheid en de verificatiemethode.
Dit is het belangrijkste verschil tussen de Modbus RTU- en Modbus TCP-protocollen. Het wordt hier duidelijker uitgelegd en ik hoop dat dit ieders twijfels kan wegnemen.



