2017-02-14 6 views
-1

Ich kann Daten von Siemens S7300 mit libnodave lesen, konnte aber die Daten von Siemens S71500 nicht lesen. Im Code sehen Sie, dass ich versuche, die ersten 4 Byte Daten von DB2 zu lesen. Der Code läuft erfolgreich mit S7300, wenn ich die IP-Adresse und die Slot-NummerLesen von Daten aus DB in Siemens S71500 mit libnodave und Java nicht möglich

import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.net.Socket; 
import java.net.UnknownHostException; 

import org.libnodave.Nodave; 
import org.libnodave.PLCinterface; 
import org.libnodave.S7Connection; 
import org.libnodave.TCPConnection; 

public class ConnectPLC { 

    public static void main(String[] args) { 
     S7Connection dc; 
     String ip = "192.168.0.61"; 
     Socket sock; 
     OutputStream oStream = null; 
     InputStream iStream = null; 
     PLCinterface di; 
     int slot = 1; 

     try { 
      System.out.println("Inside the try block"); 
      sock = new Socket(ip, 102); 

      if(sock != null) { 
       oStream = sock.getOutputStream(); 
       iStream = sock.getInputStream(); 
       di = new PLCinterface(
         oStream, 
         iStream, 
         "PLCInterface1", 
         0, 
         Nodave.PROTOCOL_ISOTCP); 
       di.initAdapter(); 
       dc = new TCPConnection(di, 0, slot);    
       int res = dc.connectPLC(); 
       int x = 0; 

       if (0 == res) { 
        System.out.println("++++++++++++++++++++++++++++++++++++"); 
        System.out.println("PLC is connected"); 
        System.out.println("++++++++++++++++++++++++++++++++++++"); 
        byte[] byteArray = new byte[4]; 

        x = dc.readBytes(Nodave.DB, 2, 0, 4, byteArray); 
        System.out.println("The value of x is "+x); 

        for (int i = 0; i < byteArray.length ; i++) { 
         System.out.println("The value at index "+i+" is "+byteArray[i]); 
        } 
        System.out.println(dc.getINT(0)); 
        System.out.println(dc.getINT(2)); 
        if (x == 0) { 
         //byte[] byteArray = dc.msgIn; 
         for (int i = 0; i < byteArray.length ; i++) { 
          System.out.println("The value at index "+i+" is "+byteArray[i]); 
         } 
         System.out.println(dc.getINT(0)); 
         System.out.println(dc.getINT(2)); 
        } 



       } else { 
        System.out.println("PLC is not connected"); 
       } 

       System.out.println("Now disconnecting\n"); 
       dc.disconnectPLC(); 
       di.disconnectAdapter(); 

       System.out.println(); 

      } 
     } catch (UnknownHostException e) { 
      System.out.println("Unknown Host Exception is Caught during the declaration of the socket"); 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      System.out.println("IO Exception is Caught during the declaration of the socket"); 
      e.printStackTrace(); 
     } 
    } 

} 
+0

Und welchen Fehler erhalten Sie? – pringi

+0

Kein Fehler, aber ich bekomme keinen Wert. Der Wert von x nach dem Lesen der Bytes ist nicht 0. Ich erhalte einen Wert von Der Wert von x ist 33028, Wenn ich S7 300 PLC verwende, bekomme ich 0 und die Daten, die ich gelesen habe, sind korrekt. – cricketfan

+0

Bei Verwendung der S7 1500 SPS bekomme ich 33028 und die Daten, die ich von S71500 gelesen habe, sind falsch. – cricketfan

Antwort