include SPI.h
include Ethernet.h
include Modbus.h
include ModbusIP.h
//Modbus Registers Offsets (0-9999)
const int SENSOR_IREG = 100;
//Used Pins
const int sensorPin = A0;
//ModbusIP object
ModbusIP mb;
long ts;
// Set Port to 502
EthernetServer server = EthernetServer(502);
void setup() {
//Assign the modbus device ID.
regBank.setId(1);
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 177 };
mb.config(mac, ip);
// Add SENSOR_IREG register - Use addIreg() for analog Inputs
mb.addIreg(SENSOR_IREG);
ts = millis();
}
void loop() {
//Call once inside loop() - all magic here
mb.task();
if (millis() > ts + 2000) {
ts = millis();
mb.Ireg(SENSOR_IREG, analogRead(sensorPin));
}
}
I am trying to read data from the first analog pin through ModbusTCP using SimplyModbusTCP but I keep getting errors when I poll my Arduino. I am using an Arduino UNO with a Ethernet Shield W5100 and Modbus Library. I am request data from Ip address 192.168.1.177 Port:502 Slave:1 and Function Code:03. The error I get is "Error 66 occurred at TCP Read in SMT8.0.vi. LabVIEW: The network connection was closed by the peer."