🛠 Server Modbus TCP : exposer les relais sur Ethernet

Arduino Opta (micro PLC, 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

Objetivos

Transformar el Opta en un esclavo Modbus TCP en su puerto Ethernet 10/100BASE-T integrado. Todas las variantes poseen este puerto (RMII, MDIX); la biblioteca ArduinoModbus proporciona ModbusTCPServer. Expondrá los 4 relés como bobinas (coils) 0..3, controlables desde cualquier supervisor (SCADA, autómata, script Python).

Material

Código completo

// 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;
  }
}

Verificación esperada

La IP del Opta se muestra en el puerto serie. Desde el cliente Modbus, conéctese al puerto 502, escriba en la bobina (coil) 0: el relé 1 hace clic. >

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales