🛠 Server Modbus TCP : exposer les relais sur Ethernet

Arduino Opta (micro automate, STM32H747) · intermediaire · Schéma : IMG-opta-plc-intermediaire-1-opta-modbus-tcp.svg — Opta connectée au port Ethernet servant des coils Modbus TCP sur le port 502 à un superviseur SCADA sur le réseau industriel

Objectifs

Transformer l'Opta en esclave Modbus TCP sur son port Ethernet 10/100BASE-T intégré. Toutes les variantes possèdent ce port (RMII, MDIX) ; la bibliothèque ArduinoModbus fournit ModbusTCPServer. Vous exposerez les 4 relais comme coils 0..3, pilotables depuis n'importe quel superviseur (SCADA, automate, script Python).

Matériel

Code complet

// opta_modbus_tcp_server.ino — coils 0..3 = les 4 relais, port 502
#include <Ethernet.h>
#include <ArduinoModbus.h>

EthernetServer modbusServer(502);   // port standard Modbus TCP
ModbusTCPServer modbusTCPServer;

void setup {
  Serial.begin(9600);
  if (Ethernet.begin == 0) {      // DHCP ; sinon Ethernet.begin(ip)
    Serial.println("Echec DHCP Ethernet");
    while (1);
  }
  Serial.print("IP Opta : "); Serial.println(Ethernet.localIP);
  if (!modbusTCPServer.begin) { Serial.println("Defaillance Modbus TCP"); while (1); }
  modbusTCPServer.configureCoils(0x00, 4); // coils 0..3
  modbusServer.begin;
}

void loop {
  EthernetClient client = modbusServer.available;
  if (client) {
    modbusTCPServer.poll(client);
    while (modbusTCPServer.available) {
      uint16_t addr  = modbusTCPServer.readAddress;
      uint16_t value = modbusTCPServer.readValue;
      if (addr < 4) digitalWrite(RELAY1 + addr, value ? HIGH : LOW);
    }
    client.stop;
  }
}

Vérification attendue

L'IP de l'Opta s'affiche sur le port série. Depuis le client Modbus, connectez-vous au port 502, écrivez sur la coil 0 : le relais 1 claque. >

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels