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.197
irgendwann - 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