ESP32 - Modbus

Ce tutoriel vous explique comment utiliser l'ESP32 avec le protocole Modbus.

À propos de Modbus

Modbus est un protocole qui permet la communication de dispositif à dispositif, de dispositif à logiciel/application et de dispositifs à IHM. Il est largement utilisé dans les appareils industriels.

Nous pouvons imaginer que Modbus est un langage de communication entre les dispositifs, les logiciels/applications et les interfaces homme-machine (IHM).

Il existe trois types de Modbus largement utilisés : Modbus RTU, Modbus ASCII et Modbus TCP.

  • Modbus RTU et Modbus ASCII sont utilisés sur ligne série (RS-232/RS-422/RS-485)
  • Modbus TCP est utilisé sur Ethernet ou WiFi

Pourquoi utiliser Modbus ?

Prenons un cas spécifique comme exemple :

  • Un ESP32 n°1 connecté à un interrupteur
  • Un ESP32 n°2 connecté à une LED
  • ESP32 n°1 et ESP32 n°2 sont éloignés l'un de l'autre
  • Lorsque l'interrupteur est mis en position ON, allumez la LED.
  • Lorsque l'interrupteur est mis en position OFF, éteignez la LED.
contrôle du LED via Modbus par bouton

Le moyen le plus simple de mettre en œuvre l'exemple ci-dessus est de définir un protocole simple par nous-mêmes :

  • ESP32 #1 envoie un octet de données pour informer ESP32 #1 du changement d'état de l'interrupteur. La valeur de l'octet de données est :
    • 1 : Lorsque l'interrupteur est mis en position ON
    • 0 : Lorsque l'interrupteur est mis en position OFF
  • Lorsque ESP32 #2 reçoit un octet de données de ESP32 #1, si la valeur est :
    • 1 : Allumez la LED
    • 0 : Éteignez la LED

    La définition ci-dessus fait en sorte que l'interrupteur sur ESP32 #1 contrôle la LED sur ESP32 #2. Cependant, imaginons quelques cas :

    • L'ESP32 #1 souhaite obtenir une confirmation de la réception et de l'exécution réussie de la commande par l'ESP32 #2
    • L'ESP32 #1 souhaite contrôler plusieurs LED sur l'ESP32 #2
    • L'ESP32 #2 souhaite lire activement l'état des interrupteurs sur l'ESP32 #1
    • L'ESP32 #2 souhaite utiliser un interrupteur pour contrôler une LED sur l'ESP32 #1
    • Et bien d'autres cas.

    Il n'est pas facile de prendre en charge tous les cas d'utilisation par nous-mêmes.

    Un autre problème survient lorsque nous utilisons un protocole par nous-mêmes. L'ESP32 ne peut pas communiquer avec d'autres dispositifs qui utilisent un autre protocole.

    ⇒ Nous avons besoin d'un protocole standard qui résout tous les problèmes mentionnés ci-dessus ⇒ Le protocole Modbus est un protocole standard que nous pouvons utiliser.

    L'avantage du protocole Modbus sur un protocole auto-défini :

    • Nous n'avons PAS besoin de définir les commandes, Modbus les a définies pour tous les cas d'utilisation.
    • L'ESP32 peut fonctionner avec n'importe quel dispositif/logiciel utilisant Modbus.

Quand utiliser et ne PAS utiliser Modbus

Parce que le protocole Modbus n'est pas facile à comprendre et à mettre en œuvre, même si la bibliothèque Modbus est disponible. Vous pouvez utiliser un protocole simple défini par vous-même comme décrit ci-dessus lorsque :

  • Le système est simple, un interrupteur sur ESP32 #1 contrôle une LED sur ESP32 #2
  • L'ESP32 n'a pas besoin de fonctionner avec d'autres appareils/logiciels

Nous devrions utiliser Modbus lorsque :

  • Le système est compliqué
  • Le système nécessite une grande fiabilité
  • L'ESP32 doit fonctionner avec d'autres dispositifs/logiciels

Comment fonctionne le protocole Modbus

Concepts

Il y a six concepts importants dans Modbus :

  • Maître et Esclave
  • Requête et Réponse
  • Code de Fonction (FC) et Adresse

Lorsque deux ESP32 communiquent entre eux en utilisant Modbus :

  • Un ESP32 fonctionne comme un Maître
  • L'autre ESP32 fonctionne comme un Esclave.

Le Maître envoie une demande au Esclave, et l'Esclave envoie une réponse au Maître.

Maître Esclave Modbus

Une demande envoyée d'un Maître à un Esclave contient les informations suivantes :

  • Code de fonction (FC) : 1 octet, est la commande qui indique au esclave quoi faire. Par exemple, lit l'état d'une broche d'entrée numérique, d'une broche de sortie numérique ou d'une broche d'entrée analogique, contrôle une broche de sortie numérique.
  • Adresse : 2 octets, est l'adresse qui indique au esclave où agir. Par exemple, chaque broche d'entrée/sortie numérique et broche d'entrée analogique se voit attribuer une adresse unique.
  • Données (par ex. valeur de contrôle)

Lors de la réception d'une demande d'un Maître, l'Esclave prend l'action correspondante et renvoie le résultat dans une réponse

Code de fonction

La norme Modbus définit de nombreux codes de fonction. Pour ne pas surcharger les débutants, abordons quelques codes de fonction essentiels :

  • FC 01 (Lire les bobines) : est une commande qui lit l'état des broches de sortie numériques
  • FC 02 (Lire les entrées discrètes) : est une commande qui lit l'état des broches d'entrée numériques
  • FC 05 (Écrire une seule bobine) : est une commande qui contrôle (écrit) l'état des broches de sortie numériques

FC 01 indique que la valeur du Code de Fonction est 0x01.

Lorsque vous utilisez la bibliothèque Modbus ESP32, vous devez déterminer :

  • Quel code de fonction utiliser
  • Quelle adresse utiliser

Réalisons l'exemple que nous avons mentionné au début :

  • ESP32 Maître est connecté à LED #M, INTERRUPTEUR #M
  • ESP32 Esclave est connecté à LED #S, INTERRUPTEUR #S
  • Faisons en sorte que l'INTERRUPTEUR #M contrôle LED #S, et que l'INTERRUPTEUR #S contrôle LED #M
Commutateur à LED modbus ESP32

Comment faire :

  • ESP32 Maître lit l'état de l'INTERRUPTEUR #M → envoie une demande au Esclave pour contrôler la LED #S ⇒ Esclave contrôle la LED #S et envoie la réponse
  • ESP32 Maître envoie une demande à Esclave pour lire l'état de l'INTERRUPTEUR #S ⇒ Esclave répond avec l'état de l'INTERRUPTEUR #S → Maître contrôle la LED #M

Modbus RTU/ASCII et Modbus TCP

Comme mentionné au début, il existe trois types de Modbus largement utilisés : Modbus RTU, Modbus ASCII et Modbus TCP.

  • Schéma du système
Modbus TCP vs Modbus RTU/ASCII
  • Pile de protocoles
Modbus TCP vs Modbus RTU/ASCII

La bibliothèque Modbus pour ESP32 est disponible. Les instructions détaillées pour utiliser la bibliothèque Modbus seront présentées dans un autre tutoriel, aimez notre page Facebook pour obtenir la mise à jour.

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!