Step 7 TCP Kommunikation mit FB63 und FB64

TESTER

Level-2
Beiträge
27
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich verwende gerade 2 TCP-Verbindungen um mit 2 Fremdgeräten zu kommunizieren. Der Verbindungsaufbau mit Hilfe des FB's 65 funktioniert problemlos und sicher.
Nun möchte ich Daten Senden um Empfangen. Dazu verwende ich die beiden FB's 63 und 64. Die Fremdgeräte verfügen über einen Befehlssatz über den diese gesteuert bzw. verschiedene Zustände abgefragt werden können. Bei einer Abfrage eines Zustands muss ich daher zunächst den entsprechenden Befehl mit Hilfe des FB's 63 senden und die dazugehörige Antwort mit dem FB 64 empfangen und anschließend auswerten. Dieser Vorgang, Befehl senden, Antwort empfangen und auswerten wird von mir mit einer Schrittkette realisiert. Das ganze funktioniert eigentlich ganz gut und stabil. Doch plötzlich bekomme ich einen Zustand bei dem ich unterschiedliche Daten empfange obwohl ich immer den gleichen Befehl sende.

Kann es sein das ich nach dem Senden die Daten nicht gleich Empfangen darf. Was passiert wenn der FB64 die Daten in dem Empfangsbereich geschrieben hat bevor das Fremdgerät die Daten vollständig gesendet hat?
Eingestellt habe ich den Ad-hoc Modus. Die BUSY, DONE und NDR Bits werden von mir ausgewertet und werden als Weiterschaltbedingung für den Folgeschritt verwendet.

Vielleicht hat jemand einen Tip.
 
Empfängst du tatsächlich unterschiedlichen Daten oder sind die Daten um x Zeichen versetzt (rolliert)?
 
Das kann ich nicht genau sagen ich erwarte eigentlich bei einer bestimmten Abfrage immer die gleich Antwort (Daten).
Es ist schon möglich das die Daten auch um x Zeichen versetzt sind.
Was wäre da die Ursache?


Das Error-Bit müsste ich im Fehlerfall nochmal gesondert betrachten.
Was ich aber sicher sagen kann ist, dass, auch immer Fehlerfall, das BUSY und NDR Bit zuverlässig gebildet wird.
Ich verwende kein bestimmtes Beispiel
 
Bin mir nicht sicher, ob bei Error immer ein NDR kommt.
Daher ist im Siemens-Beispiel, wenn ich richtig erinnere, immer NDR und Error verodert, um den Empfang von Daten auch garantiert mitzubekommen. Und das zumindest funktioniert.

Siemens hat erst bei neueren SPS (z.Bsp. PN) Bausteine, die unterschiedlich lange Telegramme empfangen können. Bei diesen wird am Empfangsbaustein bei "len" dann fest die Länge 0 eingetragen.
Ansonsten mußte man immer die Empfangslänge angeben, die man erwartet (z.Bsp. 6 für 6 Zeichen). Das führte immer dann zu schönen Verwirrspielen, wenn immer 6 Zeichen ankommen, aber z.Bsp. bei einem Fehler deines Gerätes eine Fehlermeldung aus 20 Zeichen gesendet wird. Dann kommen hintereinander 3*6+2 Zeichen rein. Nach 6 Zeichen kommt dein NDR, du liest diese aus. beim nächsten Senden, kommt sofort die Antwort (Paket 2 der vorigen Meldung), denn die liegt ja noch im Buffer. Und so kommen dann Zeichen, die nicht erwartet werden. Zusätzlich kann sich das Ganze verschieben.
 
Zuletzt bearbeitet:
Zurück
Oben