Modbus tcp client e server

Buongiorno !
Ecco il codice che ho usato , in questo caso ho provato a fare si che Arduino facesse sia da Clien che da Server, funziona solo la parte Server.

Se però elimino la parte server allora funziona anche solo il client.

#include <Ethernet.h>
#include <ArduinoModbus.h>

bool _1s;
int stato_spezzata;
unsigned long  HodingResult, InputResult, i, StartingAddr;
long Cmd;


EthernetServer EthServer(502);
ModbusTCPServer modbusTCPServer;
EthernetClient ethClient;
ModbusTCPClient modbusTCPClient(ethClient);
IPAddress server(192, 168, 0, 154); // update with the IP Address of your Modbus server
void setup() {
  // Ethernet Settings
  byte mac[] = { 0x4E, 0xA0, 0xBE, 0x3F, 0xFE, 0x0F };  // Define MAc address
  byte ip[] = { 192, 168, 0, 155 };                      // Define IP address
  byte subnet[] = { 255, 255, 255, 0 };                 // Define SubNEt mask



  // initialize the ethernet device
  Ethernet.begin(mac, ip, subnet);                      // Assign MAC, IP, and subnet mask
  Serial.begin(9600);
  EthServer.begin();          // start listening for clients
  modbusTCPServer.begin();    // start listening for clients

  // Define Holding register:
  HodingResult = modbusTCPServer.configureHoldingRegisters(0, 10);
  InputResult = modbusTCPServer.configureInputRegisters(0, 10);

}

void loop() {
  // Modbus server accept incoming connections
  EthernetClient client = EthServer.available();

  if (client.connected()) {
    modbusTCPServer.accept(client);
    // poll for Modbus TCP requests, while client connected
    modbusTCPServer.poll();
    // Serial.print("poll");
  }



  // Modbus server  :

  // holding resgiter 40001:  (FC3)
  modbusTCPServer.holdingRegisterWrite(0x01, 45); //registro 2 su Logo



  modbus_leggi();

}

void modbus_leggi()
{
  if (!modbusTCPClient.connected()) {
    // client not connected, start the Modbus TCP client
    Serial.println("Attempting to connect to Modbus TCP server");

    if (!modbusTCPClient.begin(server, 503)) {
      Serial.println("Modbus TCP Client failed to connect!");
    } else {
      Serial.println("Modbus TCP Client connected");
    }
  }

  stato_spezzata = (modbusTCPClient.holdingRegisterRead(0, 0x02));
  Serial.print("spezzata ");
  Serial.println (stato_spezzata);
  delay(500);

}