29.04.2008 11:31 | |
Beiträge: 5822 Bewertung: (412)
|
Hallo Eleu, um ehrlich zu sein würde ich persönlich nie einen well known Port für die TCP Kommunikation nutzen, dass führt zu oft zu massiven Problemen. Der Port 102, als open Port, ist im SIMATIC Umfeld sehr oft gebraucht, aber im "normalen" PC-Betrieb eher selten angewendet. Wegen des Keep Alive gibt es im Internet einige Angebote, schau Dir vielleicht mal den Foliensatz der UNI in Berlin an: http://www2.informatik.hu-berlin.de/~schrape/downloads/srk/TCP-Folien-Druck.pdf Vielleicht wird es da etwas klarer. Viele Grüße J_Bell |
29.04.2008 13:11 | |
Beigetreten: 06.03.2006 Letzter Bes: 13.09.2024 Beiträge: 369 Bewertung: (101) |
So, ich hab jetzt mal was ausprobiert. Bei mir kommunizieren ein Field-PG als PC und TCP-Client (140.140.140.60) und eine CPU 315-2 PN/DP mit T-Bausteinen als TCP-Server (140.140.140.64)miteinander. Auf dem PC habe ich den TCP-Client aus dem FAQ http://support.automation.siemens.com/WW/view/de/19553230 Auf S7-Seite musste ich ein bisschen umbauen, um sie dazu zu bringen, nicht ständig Daten zu senden. Ich habe da meine eigenen SCL-Quellen, die ich mir mal entwickelt habe. Die S7 ist der aktive Partner der Verbindung. Das bedeutet, dass der PC zwar seinen Client startet, danach aber nicht mehr weiter aktiv ist. Erst wenn ich auf der S7-Seite Connect aufrufe, erwacht die Kommunikation zum Leben Frame 1 S7-PC SYN 2 PC-S7 SYN ACK 3 S7-PC ACK --- Ende des Verbindungsaufbaus 6S7-PC TCP Keep-Alive nach ungefähr 60s 7PC-S7 TCP Keep-Alive ACK 8S7-PC TCP Keep-Alive nach ungefähr 60s 9PC-S7 TCP Keep-Alive ACK .. das geht dann so weiter. Ich habe die Verbindung auch wieder ab- und wieder aufgebaut und auch mal Daten übertragen. Sobald ich die offene Verbindung wieder stehen lassen habe, ging die S7 dazu über, Keep-Alive zu senden und der PC hat jedes mit Keep-Alive ACK quittiert. Im Anhang mein Ethereal-Protokoll des Versuchs. Der entscheidende Unterschied zwischen meinem und Deinem Trace sind die fehlenden TCP Keep-Alive ACK, die der PC an den Scanner senden müsste. Ich habe keine Ahnung, warum er das nicht tut :-( Wer ist denn in Deiner Applikation der aktive Part? Viele Grüße Thomas DateianhangAuswertung_1.pdf (87 Downloads) |
29.04.2008 16:56 | |
Beigetreten: 06.03.2006 Letzter Bes: 13.09.2024 Beiträge: 369 Bewertung: (101) |
Ich habe noch mal die Windows-Entwicklerhilfe bemüht. DateianhangWin32_DevelopersReferences_Errorcodes.pdf (86 Downloads) |
30.04.2008 09:34 | |
Beigetreten: 01.08.2007 Letzter Bes: 29.08.2024 Beiträge: 1698 Bewertung: (84) |
Hallo Thomas, hallo J_Bell, beim aller ersten Mal bin ich nicht dabei stehengeblieben, sondern hab 6 Sdt. später nachgesehen ob das Herkules Programm die Verbindung abgebaut hat. Dann erst habe ich die Daten über "wireshark" exportiert. Mittlerweile habe ich jetztam IPC die Fehlermeldung "connecton refused..." bekommen. Herkules hat die Verbindung abgebaut. Jetzt sind auch jede Menge "keep alive" vom Scannerdabei (Datei anbei). Es kommt mir so vor,als obdie keep alive - Telegramme vom Scanner erst danngesendet werden, wenn die Fehlermeldung "connecton refused..." erfolgt. Bin mir aber nicht sicher, weil ich es auch diesmal beim IPCnicht live miterlebt habe. Die Verbindung vom Field - PG zum Scanner steht noch. Merkwürdigerweisesind kein keep alive beim Field -PG angekommen ("wireshark") ? Gruß Eleu Dateianhangdata_ipc_-_Editor.pdf (87 Downloads) |
30.04.2008 09:59 | |
Beigetreten: 01.08.2007 Letzter Bes: 29.08.2024 Beiträge: 1698 Bewertung: (84) |
Hallo, jetzt hat auch das Field - PG die Verbindung abgebrochen. Dateianbei. Gruß Eleu Dateianhangdata_field_pG_-_Editor.pdf (106 Downloads) |
Folgen Sie uns auf