TCP-SOCKET Kommunikation mit WinAC RTX

Zuviel Werbung?
-> Hier kostenlos registrieren
Bei so einem Verhalten der Send-Bausteine ist es sogar durchaus sinnvoll für jeden Sendevorgang eine neue Verbindung aufzubauen, so bekommt man wenigstens beim Verbindungsaufbau eine zuverlässige Aussage über den Zustand. Löst aber nicht das eigentliche Problem dass die 1200 eigentlich kein TCP beherrscht, zumindest spricht sich das nicht bis ins SPS Programm durch.
 
Sehr Interessant,
ich mache morgen auch mal die Tests
mit Herkules, WinAC und Step 7 Classic.
Mal schauen was da heraus kommt.

Danke für die Hilfe
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Helmut,

hab das mal probiert auf einer Win AC.

Ergebnis war der T_SEND (Version 2.1) liefert sofort nach dem senden einen Fehler (ERROR = TRUE) (STATUS = 80C4).

80C4: Temporärer Kommunikationsfehler
- Die Verbindung zum Kommunikationspartner kann momentan nicht aufgebaut werden.
- Die Schnittstelle wird neu parametriert bzw. die Verbindung wird gerade aufgebaut.

Wenn der T_RECV (Version 2.2) am EN_R immer auf TRUE steht so gibt auch dieser nach ca. 30 Sekunden eine Meldung (ERROR = TRUE) (STATUS = 80C4).

Gruss Daniel
 
Zuletzt bearbeitet:
Hi Helmut,

hab das mal probiert auf einer Win AC.

Ergebnis war der T_SEND (Version 2.1) liefert sofort nach dem senden einen Fehler (ERROR = TRUE) (STATUS = 80C4).

80C4: Temporärer Kommunikationsfehler
- Die Verbindung zum Kommunikationspartner kann momentan nicht aufgebaut werden.
- Die Schnittstelle wird neu parametriert bzw. die Verbindung wird gerade aufgebaut.

Wenn der T_RECV (Version 2.2) am EN_R immer auf TRUE steht so gibt auch dieser nach ca. 30 Sekunden eine Meldung (ERROR = TRUE) (STATUS = 80C4).

Gruss Daniel

Also es ist so wenn die Gegenseite abgeschaltet ist (in meinen Testaufbau, das "Herkules" Tool) bekommt man die Fehlermeldung 80C4.
Zieht man aber den Stecker ab, werden die Daten rausgerotzt ohne Fehlermeldung und das DONE-Bit wird gesetzt. Das ist doch irgendwie
Käse.
 
Was hast du denn für einen Rechner auf dem die WinAC läuft? Mit Windows XP, oder CE? Vielleicht gibt es da betriebssystemabhängige Unterschiede.
Und mal die Bausteinversionen vergleichen, ob du da auf dem aktuellen Stand bist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Helmut,

ich hatte auch das Netzwerkkabel abgezogen. Allerdings geht es bei mir über einen Switch sollte aber eigentlich egal sein.
Was macht T_RECV kommt da ein Fehler?

Gruss Daniel
 
Also Rechner ist es ein IPC 477C mit XP, Siemens Standard, da du Thomas ja das selbe Problem
bei eine 1200er hast, würde ich auf ein Siemns Bug tippen.

Den T_REC verwende ich garnicht, da nur ich sende.
 
Ich möchte mich hier auch mal einklinken, da ich gerade mit etwas ähnlichem Beschäftigt bin.

Aufgabenstellung: HTTP-GET mit ner IM151-8F PN/DP.

Mit dem T_SEND, Wireshark und etlichen Litern Cola hat das ganze funktioniert.

Ein paar Fragen sind trotzdem hängen geblieben:

T_RECV: Wenn ich als LEN einen Wert > 0 angebe werden die Daten erst in den DB kopiert wenn sie die angegebene Größe erreichen. Wenn ich LEN = 0 angebe, wird nach jeden "Übertragung fertig" vom Partner der Datensatz übernommen.

Da die Länge bei mir variabel ist, würde ich gern LEN = 0 nutzen, aber dann kommen immer nur 280 Byte an, ganz selten mal (alle 2-3min) kommen mal die vollen rund 800 Byte... Vielleicht muss ich mir nochmal eine "Fangschaltung" bauen, und gucken ob das stimmt, oder ob ich mit meinem Beobachten einfach nur zu langsam bin. Aber kennt ggf. jemand dieses Phänomen?

Da wie schon mal erwähnt ca. 800 Byte ankommen, zwingt die Auswerterei meine CPU in die Knie. Bis jetzt hab ich es sehr unelegant gemacht: Eine FOR-Schleife die von 0..799 durch mein Array of CHAR wuselt und dann mit IF CHAR(for_var) = 'a' THEN etc. nach bestimmten Zeichenfolgen gesucht und Anschließend in einer weiteren Schleife zu einem String zusammengebaut. Ein weiterer Ansatz wäre es dieses Array of Char mit einer AT-Ansicht auf mehrere String aufzuteilen und dann einen FIND(); drauf loszulassen. Gibt es hier einen eleganteren Ansatz (in SCL?).

Ach noch ne Info hinten dran:

Gegenseite Ausschalten gibt bei mir 80C4, Kabel ziehen habe ich noch nicht probiert, sollte aber auch das gleiche Verhalten haben (kann ich ggf. Morgen früh schnell nachstellen).

Grüße

Marcel
 
Hallo Marcel,
ich habe mir deinen Beitrag noch einmal durchgelesen, also da ich ja weiß das du
auch den IPC einsetzt würde ich die String Auswertung nach Flex verlegen und das ganze
in einen Script machen, da sind die Möglichkeiten ganz andere, wie auf Steuerungsseite.

Zu den Problem mit deinen Datenhandling, da du ja beide Steuerungen hast. Kannst du nicht
Zwei Telegramme schicken, das erste mit 'Hallo gleich kommt ein Telegramm mit 3xyz Zeichen'
und dieses bestätigst du mit 'ja Schick mal los', dann wird erst das eigentliche Telegramm gesendet.
 
Hallo Helmut,

leider ist das nicht so einfach wie ich es gern hätte!

Die IM151-8F PN/DP ist an einer Maschine mit einem Webserver, aus welcher ich bestimmte Stati auslesen möchte.
Der IPC wird "nur" mitverkauft, wenn der Kunde eine Roboterzelle mit Palettierung etc. erwirbt. Somit habe ich nicht
immer den IPC zur Verfügung, und versuche meinen Weg direkt in der IM151-8F PN/DP zu gehen.

Wenn das nicht zufriedenstellend klappen sollte, wird dieses "Feature" nur für Anlagen mit IPC zur Verfügung stehen, aber ich versuche es erstmal so!

Grüße

Marcel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber das mit den Handshake würde ich mir mal überlegen, also das du im einen ersten Telegramm, erstmal die
zu erwartenede Länge schreibst und dann das zweite eigentliche Telegramm. Ich könnte mir vorstellen das dann
das DONE-Bit erst kommt wenn das ganze Telegramm eingeflogen ist.

Und schon den Stecker gezogen....?
 
Guten Morgen,

mein Partner ist fix, an dem kann ich nix schrauben... leider!

Stecker ist noch nicht gezogen, bin Heute per Alarmstart unterwegs und werde das Geschäft gleich nur vom Parkplatz aus sehen...

Grüße

Marcel
 
jetzt mal wieder zu meinen Problem, weiß den jemand wie man feststellen kann ob eine Verbindung noch besteht, vlt. irgend einen schönen SFB / SFC.
Was ich sehen kann ist das die Busfehler LED kommt, die könnte man ja zb auch auswerten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So jetzt habe ich es auch einmal mit dem Siemens Support versucht....betonung liegt auf Versucht.

Dort war ein sehr unfreundlicher Herr der noch nicht einmal meine Sprache gesprochen hat, es war
eine Mischung aus Bayerisch und Fachidiotie. Ich habe ihn versucht mein Problem auf Hochdeutsch
zu erklären, ich glaube nicht das er mich richtig verstanden hat. Das was ich verstanden habe das
die TCP Verbindung Normen Komform wäre und der Baustein das 'DONE' Bit setzt wenn das Telegramm
abgesetzt wurde. Als ich den Einwand bringen wollte, das der Baustein erkennen würde das wenn die
Anwendung auf der Gegenseite nicht bereit ist, eine Fehlermeldung bringt, dieses aber nicht tut wenn
ich den Stecker ziehe, hörte ich wieder das alles Normenkomform sei, woher soll der Baustein wissen
das der Stecker gezogen würde und das die Fehlermeldung kommen würde weil wahrscheinlich der
Sendepufffer voll ist. Ich sagte, das ich aber nur ein kurzes Telegramm von 50 Zeichen habe, das müsste
er doch locker speichern können und die Fehlermeldung* sagt doch etwas völlig anderes aus, des weiteren
bekommt doch die Steuerung mit das etwas nicht stimmt und zeigt dieses durch einen Busfehler an,
aber er ließ meinen Einwand nicht gelten.
Meine Frage war, ob er mir bei meinen Problem auch nicht weiterhelfen kann, er erwiderte Nein.
Dann habe ich mich verabschiedet und das Gespräch beendet.

*
Fehler hex 80C4

Temporärer Kommunikationsfehler:· Die Verbindung zum Kommunikationspartner kann momentan nicht aufgebaut werden.

Die Schnittstelle wird neu parametriert bzw. die Verbindung wird gerade aufgebaut.


Danke sehr ..... :evil:
 
Aber nicht das du jetzt auch noch einen "so langsam reicht es"-Thread aufmachst ... :ROFLMAO:

In dem Fall wäre jetzt vielleicht doch ein Handshake angebracht.
So würdest du dann ja dadurch, dass du nach Zeit x keine Antwort erhältst, dann doch wissen, dass etwas nicht stimmt ...

Gruß
Larry
 
neh Ralf,
das mit den Thread lass ich mal...mit den Handshake wird auch wohl nichts werden, die
Gegenseite ist ein größerer Maschinenbauer die eine Standardanwendung am laufen haben,
die werden nicht auf meine Probleme eingehen.

Ich werde versuchen das ständige Verbindung auf und wieder Abbauen raus zu nehmen, wie du
es mir schon empfholen hast. Ich denke da liegt der Hase begraben, ich baue dann immer in
der Initalisierungsphase der Schrittkette die Verbindung auf, wenn Sie schon steht bekomme
ich ja durch den Status des TCON eine rückmeldung ob Sie schon aufgebaut ist und baue Sie erst
garnicht mehr ab. Und dann heißt es beobachten.....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Helmut,

ja die BF Lampe kann man auch auswerten.
Das geht mit dem SFC51 "RDSYSST" SZL_ID W#16#19 INDEX 0.

Rufe doch einfach den T_RECV mit dauer TRUE auf dieser sollte zwar etwas verzögert auch einen Fehler bringen.

Gruss Daniel
 
Ich habe nochmal das Verhalten bei der 1200 überprüft, nach einiger Zeit kommt dort auch ein Fehler beim Senden wenn die Verbindung nicht mehr steht.
Das ist am PC bei einer winsock Verbindung vom Prinzip her sogar genauso, wobei man dort die Zeiten und das Verhalten genauer einstellen kann. Ist also durchaus Ansichtssache wie sich die T-Bausteine verhalten sollten.

Wenn du eine Verbindung aufbaust, den Tsend aufrufst und danach direkt wieder abbaust bekommst du einen Fehler beim Tsend wahrscheinlich nie zu Gesicht.
Ob das Ganze mit einer dauerhaften Verbindung zuverlässiger wird, hängt davon ab wie oft du Daten sendest und wie lange es letztendlich dauert bis der Tsend einen Timeout meldet.
Wenn du beispielsweise auf der Dauerverbindung sekündlich ein Telegramm abschickst, aber erst nach 30 Sekunden einen Timeout gemeldet bekommst sind schon 30 Telegramme verloren gegangen.
Wenn du nur minütlich schickst geht maximal eines verloren. Ein Telegramm geht auf jeden Fall immer flöten, da der Tsend ja erstmal mit Done Erfolg meldet und du davon ausgehst dass die Daten erfolgreich abgeschickt wurden.

Wenn das wichtig ist dass jedes Telegramm auf alle Fälle ankommen muss, kommst du wohl nicht umhin auf Anwendungsebene noch ein Handshake einzurichten.
 
Zurück
Oben