Modbus TCP/IP Entre Arduino y PLC Logo

Muchas gracias por tu respuesta y de ante mano una disculpa por el error. Después de tanta prueba y error utilicé otras librerías para el Arduino y por fin encontré una que me funcionó sin tener que hacer cambios en el LOGO. Les dejo el código que utilice y que me funciono, además con la ventaja de estar haciendo la transmisión de datos en tiempo real sin la necesidad de estar teniendo un tiempo de muestreo en la comunicación.

#include <SPI.h>
#include <Ethernet.h>
#include "MgsModbus.h"

MgsModbus Mb;

// Ethernet settings (depending on MAC and Local network)
byte mac[] = {0x90, 0xA2, 0xDA, 0x0E, 0x94, 0xB5 };
IPAddress ip(192, 168, 1, 22);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);

const int Analog = A0;

const int PinLed = 9;
const int LedCoil = 50;

void setup()
{
  Serial.begin(115200);
  Ethernet.begin(mac, ip, gateway, subnet);   // start etehrnet interface
  Serial.println("Ethernet interface started"); 
  pinMode(PinLed,OUTPUT);
  digitalWrite(PinLed,HIGH);
  // Fill MbData
 //Mb.SetBit(0,false);
  Mb.MbData[0] = 0;   //Holding Reg 1
  Mb.MbData[1] = 0;   //Holding Reg 2
//  Mb.MbData[2] = 0;
//  Mb.MbData[3] = 0;
//  Mb.MbData[4] = 0;
//  Mb.MbData[5] = 0;
//  Mb.MbData[6] = 0;
//  Mb.MbData[7] = 0;
//  Mb.MbData[8] = 0;
//  Mb.MbData[9] = 0;
//  Mb.MbData[10] = 0;
//  Mb.MbData[11] = 0;
  
}

void loop()
{
 Mb.MbData[0] = analogRead(A0);
 digitalWrite(PinLed,Mb.GetBit(LedCoil));
// Serial.print("Dato Enviado por H Registro 1: "); Serial.println(Mb.MbData[0]);
// Serial.print("Dato Recibido por H Registro 2: "); Serial.println(Mb.MbData[1]);
 Serial.print("Dato Recibido por Coil 3: "); Serial.println(Mb.GetBit(LedCoil));
  
//  Mb.MbmRun();
  Mb.MbsRun();
}

Nótese que para poder enviar datos análogos, necesitamos enviarlos mediante Holding registers que utilizan el comando " Mb.MbData[0]", (Puede usarse para Leer o escribir) y para datos digitales podemos usar "Mb.GetBit" o "Mb.SetBit" segun sea el caso.

En la programación del LOGO todo quedaría igual a lo mencionado en la pregunta del tema. Muchas gracias por su tiempo, y espero a alguien mas le sirva el aporte. Saludos.

2 Likes