Probleme mit AG_LSEND & AG_LRECV

???

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo allerseits,

für die Ankopplung eines Fremdgerätes an die Simatic S7-400 setzen wir die TCP-Kommunikation ein. Im Einsatz stehen die CPU 414-2DP mit Ethernet-CP 443-1 V2.6 (Firmware V2.6.7).
Für die Kommunikation werden die beiden Bausteine AG_LSEND und AG_LRECV eingesetzt. Folgende zwei Probleme treten bei der Kommunikation zwischen dem Fremdgerät und der Simatic S7-400 auf:

(1)
Das erste Telegramm (jedes Telegramm hat eine feste Länge von13 Bytes), dass vom Fremdsystem an die Simatic S7-400 gesendet wird, wird in der richtigen Reihenfolge in den DB geschrieben/gespeichert. Wird nun das nächste Telegramm empfangen, so verschiebt sich das empfangene Telegramm (im Vergleich zum vorherigen Empfangstelegramm) um eine Position nach oben. Dieser Effekt tritt bei jedem weiteren empfang eines Telegramms auf. Die empfangenen Telegramme fangen im DB an zu „Laufen“. Somit ist eine Auswertung der Telegramme schwierig und fehleranfällig.

(2)
Wenn ein Request-Telegramm (A) von der Simatic S7-400 an das Fremdsystem gesendet wird, so wird dieses Request-Telegramm (A) erst bei der Sendung des Request-Telegramms (B) beantwortet. Die Anfrage A wird also erst mit der Anfrage B beantwortet! Somit ergibt sich ein zeitlicher Versatz, der in diesem Fall vermieden werden muss.

Request-Telegramm: A B C D usw.
Response-Telegramm: - A B C D usw.


Vielen Dank!

Gruß
 
Hi,
zu 1:
Würde sagen an deinem Receive ist die falsche länge angegeben.
Probiers mal mit 12 oder 14 Bytes.

Zu2:
Sicher dass das 1. Telegramm nicht erst mit dem 2. Sendeanstoss mitgeschickt wird?
Nochmal den Sendebaustein checken...

Mehr fällt mir im moment nicht ein...
 
Hallo,

ich habe mir heute den Datenverkehr mit Wireshark angeguckt und folgendes festgestell:

(1)Sobald der AG_LSEND das Versenden des Paketes mit DONE bestätigt hat, wird das Telegramm versendet und kann mittels Wireshark ausgelesen werden. Daher gehe ich davon aus, dass der Fehler auf der Gegenseite liegt.

(2)Da es sich bei den Telegrammen um Modbus/TCP-Telegrammpakete handelt, erhalte ich zum einen Telegramme mit Wortgrenzen(12 Byte) und zum anderen Telegramme mit Bytegrenzen (13 Byte). Bei den Telegrammen mit Wortgrenze tritt der Effekt des "Laufens" im DB nicht auf!
Bei den Telegrammen mit Bytegrenze tritt der Effekt des "Laufens" im DB auf!
Der AG_LRECV wir für jede Anfrage auf die erwartete Telegrammgöße eingestellt und der Empfangspuffer hat die passende Bytegröße.



Schonmal vielen Dank für die Beratung!

Gruß
 
Ich habe genau das selbe Problem und hab kein Lösungsansatz - kann mir da jemand weiterhelfen?? Der Empfangs-DB hat die Richtige länge und wird auch richtig verschickt nur im DB wird gewandert.
Winterliche Grüsse an Alle
 
Zurück
Oben