mogel
Level-1
- Beiträge
- 68
- Reaktionspunkte
- 3
-> Hier kostenlos registrieren
Moin, endgültig am Verzweifeln,
ich habe eine S7-200 über UMTS (Ping im Schnitt 300 bis 600 ms) ... die Anbindung erfolgt bisher über S7 Beans API - also rein Java ... nachdem nun eine zweite S7-200 ins Netz gesteckt wurde, muss die S7 Beans API raus ... da bei einer Fehlfunktion zu einer SPS die andere ebenfalls mit in den Abgrund gerissen wird ... und am rumzicken ist nur die SPS hinter der UMTS-Verbindung
das Auslesen via libnodave oder S7.Net funktioniert - aber auch nicht so wirklich richtig ... die Verbindung ist irgendwie instabil ... schreiben kann ich gar keine Werte
der Verbindungsaufbau erfolgt so:
	
	
	
		
dabei ist das Interessante das in der Console steht das er die Verbindung aufgebaut hat ... aber dc.connectPLC liefert einen Fehler
	
	
	
		
als Fehler kommt statt der -1 auch -1025 ... was ja bedeutet das die SPS nicht erreichbar ist - aber kurz vorher sagt er ja das die TCP-Verbindung steht ... wenn ich via telnet die Verbindung aufbaue, dann kommt auch eine Antwort -.-
irgendwann - wenn der Netzwerkgott es will, funktioniert auch ein dc.connectPLC ... dann lese ich wie folgt alle Werte aus der SPS
	
	
	
		
was auch super funktioniert ... nur das Schreiben funktioniert gar nicht
	
	
	
		
liefert mir als Fehlercode immer -1025 ... das Auslesen der Werte nach ca. 1 Sekunde erfolgt aber wiederum Problemlos
ich habe also eine instabile Verbindung und kann keine Werte schreiben ... was mache ich falsch?
danke, mogel
	
		
			
		
		
	
				
			ich habe eine S7-200 über UMTS (Ping im Schnitt 300 bis 600 ms) ... die Anbindung erfolgt bisher über S7 Beans API - also rein Java ... nachdem nun eine zweite S7-200 ins Netz gesteckt wurde, muss die S7 Beans API raus ... da bei einer Fehlfunktion zu einer SPS die andere ebenfalls mit in den Abgrund gerissen wird ... und am rumzicken ist nur die SPS hinter der UMTS-Verbindung
das Auslesen via libnodave oder S7.Net funktioniert - aber auch nicht so wirklich richtig ... die Verbindung ist irgendwie instabil ... schreiben kann ich gar keine Werte
der Verbindungsaufbau erfolgt so:
		Code:
	
	        private void ConnectSPS()
        {
            fds.rfd = libnodave.openSocket(102, this.ip);
            fds.wfd = fds.rfd;
            di = new libnodave.daveInterface(fds, "IF1", 0, libnodave.daveProtoISOTCP243, libnodave.daveSpeed187k);
            di.setTimeout(5000);
            dc = new libnodave.daveConnection(di, 0, rack, slot);
            int res = dc.connectPLC();
            if (res != 0)
            {
                logger.warn("Konnte nicht mit SPS verbinden -> Error:" + res);
                CloseSPS();
            }
            else
            {
                connected = true;
                Program.BroadCast(CreateStatusUpdate());
            }
        }
		Code:
	
	openSocketw.c: Connected to host: 192.168.1.197 
system 26.08.2011 23:26:47.055 0000000C(192.168.1.197-23:26:46) SPS ConnectSPS WAR - Konnte nicht mit SPS verbinden -> Error:-1
openSocketw.c: Connected to host: 192.168.1.197 
system 26.08.2011 23:26:49.170 0000000C(192.168.1.197-23:26:46) SPS ConnectSPS WAR - Konnte nicht mit SPS verbinden -> Error:-1
openSocketw.c: Connected to host: 192.168.1.197irgendwann - wenn der Netzwerkgott es will, funktioniert auch ein dc.connectPLC ... dann lese ich wie folgt alle Werte aus der SPS
		Code:
	
	                int res = dc.readBytes(libnodave.daveFlags, 0, 10, 18, null);
                logger.info("lese MW10.0 bis MW26.0 -> " + libnodave.daveStrerror(res));
                int m0 = dc.getS16();   // MW10.0
                dc.getS16();            // MW12.0
                int v = dc.getS16();    // MW14.0
                int status = (v & 0xff00) >> 8;     // M14.0
                int errors = (v & 0x00ff);          // M15.0
                dc.getS16();                // MW16.0
                dc.getS16();                // MW18.0
                int height = dc.getS16();   // MW20.0
                dc.getS16();                // MW22.0
                int m1 = dc.getS16();       // MW24.0
                int m2 = dc.getS16();       // MW26.0
                logger.info("MW10.0: " + m0 + " - MW24.0: " + m1 + " - MW26.0: " + m2);
		Code:
	
	                            int res = dc.writeBytes(libnodave.daveFlags, 0, 10, 2, new byte[] { (byte)ui, 0 });
                            logger.info("Result -> " + res);ich habe also eine instabile Verbindung und kann keine Werte schreiben ... was mache ich falsch?
danke, mogel
 
	 
  
 
		 
  
 
		