/* Ethernet Modbus TCP Client Toggle This sketch toggles the coil of a Modbus TCP server connected on and off every second. Circuit: - Any Arduino MKR Board - MKR ETH Shield created 16 July 2018 by Sandeep Mistry */ #include #include #include // ArduinoModbus depends on the ArduinoRS485 library #include // Enter a MAC address for your controller below. // Newer Ethernet shields have a MAC address printed on a sticker on the shield // The IP address will be dependent on your local network: byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192, 168, 1, 177); EthernetClient ethClient; ModbusTCPClient modbusTCPClient(ethClient); IPAddress server(192, 168, 1, 10); // update with the IP Address of your Modbus server void setup() { //Initialize serial and wait for port to open: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only } // start the Ethernet connection and the server: Ethernet.begin(mac, ip); // Check for Ethernet hardware present if (Ethernet.hardwareStatus() == EthernetNoHardware) { Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); while (true) { delay(1); // do nothing, no point running without Ethernet hardware } } if (Ethernet.linkStatus() == LinkOFF) { Serial.println("Ethernet cable is not connected."); } } void loop() { if (!modbusTCPClient.connected()) { // client not connected, start the Modbus TCP client Serial.println("Attempting to connect to Modbus TCP server"); if (!modbusTCPClient.begin(server, 502)) { Serial.println("Modbus TCP Client failed to connect!"); } else { Serial.println("Modbus TCP Client connected"); } } else { // client connected // write the value of 0x01, to the coil at address 0x00 if (!modbusTCPClient.coilWrite(0x00, 0x01)) { Serial.print("Failed to write coil! "); Serial.println(modbusTCPClient.lastError()); } // wait for 1 second delay(1000); // write the value of 0x00, to the coil at address 0x00 if (!modbusTCPClient.coilWrite(0x00, 0x00)) { Serial.print("Failed to write coil! "); Serial.println(modbusTCPClient.lastError()); } // wait for 1 second delay(1000); } }