Le protocole de communication Modbus a été inventé par Modicon en 1979 et est le premier protocole de bus au monde utilisé dans les domaines industriels. En raison de sa diffusion publique gratuite, les fabricants qui utilisent le protocole n'ont pas besoin de payer de droits, ce qui explique que le protocole Modbus ait été largement utilisé dans le monde entier.
Le protocole de communication Modbus a de multiples variantes, les plus courantes étant les protocoles Modbus RTU et Modbus TCP.
Les deux protocoles sont très similaires. Prenons l'exemple de la lecture de plusieurs registres de maintien pour illustrer la différence entre les deux :
Le format d'envoi de la communication Modbus RTU est le suivant : adresse de l'esclave 01 (indiquant l'adresse de l'esclave) code de fonction 03 (lecture de registres de maintien simples/multiples) adresse de départ des données 00 00 (indiquant le départ de 40001) numéro des données 00 02 (indiquant la lecture de deux mots) code de contrôle CRC xx xx (le code de contrôle CRC est ici C4 0B), ce qui correspond à 01 03 00 00 00 02 C4 0B. Après l'envoi, la station esclave renvoie les données. Le format des données est le suivant : 01 03 04 01 02 03 04 5B 3C, où 01 adresse de la station esclave, 03 code de fonction de lecture, 04 nombre d'octets de données, 01 02 03 04 contenu des données, 5B 3C est le code de contrôle CRC.
Le protocole Modbus TCP ajoute un en-tête MBAP au protocole Modbus RTU. Le protocole TCP étant un service basé sur des connexions fiables, le code de contrôle CRC du protocole RTU n'est plus nécessaire, de sorte qu'il n'y a pas de contrôle CRC dans le protocole Modbus TCP. La vérification montre que l'en-tête MBAP a une longueur de sept octets. À l'exception des cinquième et sixième octets, le reste est pratiquement inchangé. Par exemple, en utilisant Modbus TCP pour effectuer l'opération ci-dessus, il faut envoyer 00 01 00 00 00 06 ff 03 00 00 00 02. Les cinquième et sixième octets sont 00 06, ce qui signifie qu'il y a 6 octets après 00 06.
La valeur de retour est 00 01 00 00 00 07 ff 03 04 01 02 03 04. Les 7 premiers octets sont l'en-tête du message MBAP, 03 la lecture du code de fonction, 04 les octets de données, 01 02 03 04 représentent le contenu des données.
Le protocole Modbus TCP est donc en fait le protocole Modbus RTU auquel on a retiré le code de vérification CRC et le code d'adresse de l'esclave précédent, et auquel on a ajouté un en-tête MBAP de 7 octets à l'avant.
Modbus TCP a évolué sur la base d'Ethernet, et l'interface physique détermine son taux de communication et sa méthode de vérification.
Ce qui précède est la différence fondamentale entre les protocoles Modbus RTU et Modbus TCP. Elle est décrite plus clairement et j'espère qu'elle permettra de lever les doutes de chacun.