TCP Verbindungsprobleme

Hallo
ich habe mit einem Arduino Yun eine TCP Verbindung zu einer SPS erstellt.
Das Arduino baut hierbei aktiv die Verbindung zur SPS auf. Dies funktioniert auch soweit.
Wenn allerdings die SPS nicht erreichbar ist hört das arduino Programm auf die Loop schleife zu durchlaufen. Die konnte ich feststellen da ich eine LED Blinken lies. Was kann hierfür die Ursache sein?

  #include <SPI.h>
  #include <Wire.h> 
  #include <Bridge.h>
  #include <YunServer.h>
  #include <YunClient.h>
  #include <Console.h>
  #include <DHT22.h>
  #include "IRremote.h"
  
  // SPS Port und IP 
  #define PORT 2500
  IPAddress PLC(192,168,178,30); // PLC Address
 // YunServer server(PORT);
  
  // Temperatursensor PIN
  #define DHT22_PIN 4
  DHT22 myDHT22(DHT22_PIN);
  
  // Zeitlicher Funktionsaufruf
  long previousMillis = 0; 
  long interval = 2500; 
  unsigned long currentMillis;
  
  
  // IR Empfenger
  int receiver = 3;
  IRrecv irrecv(receiver);           // create instance of 'irrecv'
  decode_results results; 
  
  
   void setup() {
    
    irrecv.enableIRIn(); // Start the receiver
    Bridge.begin();      // Sarte Bridge
    digitalWrite(13, HIGH);
    Console.begin();     // Starte Console
   //  server.begin();     // Starte Server
    // while (!Console); // warte bis Console run
    delay(1000);
     
     
   }
   
   //******************************************************************Hautprogramm********************************************************
   void loop()
   {
    // listen for incoming clients
    YunClient client;// = server.accept(); 
    // LED aus wenn Client nicht verbunden
    digitalWrite(13, HIGH); 
    delay(50);
    digitalWrite(13, LOW);
    delay(300);
        //Verbindungsaufbaue wenn Client verfügbar
    if (client.connect(PLC,PORT)){
        Console.println("connected");    
      while (client.connected()) {
        //LED an wenn Connected
        digitalWrite(13, HIGH);
        
        // Zeit für Zeitliche aufruf              
         unsigned long currentMillis = millis();
         
        //  Temperaturwerte alle 2,5sec senden
         if(currentMillis - previousMillis > interval) {
            previousMillis = currentMillis; 
            TempFeuchte (client);  
         }
            
          if (irrecv.decode(&results)) {// have we received an IR signal?
             translateIR(client); 
             irrecv.resume(); // receive the next value
            }  
    
      }  
        
      
      delay(1000);
      // close the connection:
      client.stop();
      client.flush();
    
    }
     }
   
  //***********************************************
  //**     Funktion Temperatur Feuchtw           **
  //***********************************************
   
   // Temperatur und Feuchte abfragen und senden
   void TempFeuchte (YunClient client) {
   
   DHT22_ERROR_t errorCode;  
   errorCode = myDHT22.readData();  
   int value;
   String cString;
   
   switch(errorCode) 
   { 
    case DHT_ERROR_NONE:  
    value = myDHT22.getTemperatureC()*100;
    
   // Value nur senden wenn nicht 0
        if (value != 0) { 
           cString ="GV/01"+String(value,DEC);
           client.write((uint8_t*)&cString[0], cString.length());
           Console.println(cString);
         }
   
    value = myDHT22.getHumidity()*100; 
        // Value nur senden wenn nicht 0
        if (value > 0) {
           cString ="GV/02"+String(value,DEC);
           client.write((uint8_t*)&cString[0], cString.length());
           Console.println(cString);
           }
    break;
    }
   }
   
   //***********************************************
  //**     Funktion IR Empfänger                 **
  //***********************************************
  void translateIR(YunClient client) {
    String cString;
    int i;
    
    switch(results.value)
    
    {
  
    case 0x2A0:  
      Console.println("Rollo AUF");
      i=1;
      break;
  
    case 0x2A1:  
      Console.println("Rollo ZU"); 
      i=2;
      break;
  
    case 0xAA1:  
      Console.println("Rollo ZU"); 
      i=2;
      break;
  
    case 0xAA0:  
      Console.println("Rollo AUF"); 
      i=1;
      break;
    
    
    default:
      i=0; 
      //Console.println(" other button   ");
  
    }
    if(i>0) {
      Console.println(i);
      cString ="IR/"+String(i,DEC)+"/1";
      client.write((uint8_t*)&cString[0], cString.length());
      Console.println(cString);  
      delay(1000);
      cString ="IR/"+String(i,DEC)+"/0";
      client.write((uint8_t*)&cString[0], cString.length());
      Console.println(cString); 
      i=0;
    }
    
    }