Step 7 TCP / ASCII Kommunikation S7-400 mit CP

Astralavista

Level-1
Beiträge
799
Reaktionspunkte
112
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich stehe bei einem kleinen Problem gerade etwas auf dem Schlauch und hoffe ihr könnt mir den notwendigen Denkanstoss geben.

Ich kommuniziere mit einem Bizerba-Wägeterminal über eine im NetPro angelegte TCP-Verbindung.
Wenn ich der Waage einen Befehl sende, wie z.B. "q%" gefolgt von CR und LF, sendet mir die Waage entsprechend eine Antwort. Dazu habe ich vorerst zum testen einen Sende- und einen Empfangs-DB erstellt.

Mein Problem:
Im Empfangs-DB wandern die empfangenen Zeichen komplett durch den DB durch. Das heißt das empfangene Gewicht steht nie an der gleichen Stelle. Noch schlimmer wird es wenn die Waage den Befehl nicht abarbeiten kann, dann sendet sie z.B. nur ein kurzes "w1" gefolgt von CR und LF zurück. Dann ist mein DB voll mit w1, obwohl ich nur alle 2 Sekunden einmal den Befehl abgebe.
Ich habe in der Hilfe schon gesehen, dass beim Einsatz von S7-400 und TCP-Verbindung der AG_RECV durch den AG_LRECV (Long) ersetzt werden muss, aber das brachte auch keine Abhilfe.

Meine Frage:
Wie bekomme ich es hin, dass die Antwort der Waage immer am Anfang des DB geschrieben wird?

Folgende Hardware / Software wird eingesetzt:
PCS7 V8.2
TCP-Verbindung Port 1025
417-4 mit CP443-1
Bausteine AG_SEND / AG_RECV bzw. AG_LSEND / AG_LRECV


VAT.jpg

MfG
Astralavista
 
Wenn die Antworten des Kommunikationspartners unterschiedlich lang sein können, dann darfst Du mit AG_RECV immer nur 1 Zeichen vom CP abholen (und mußt AG_RECV evtl. mehrmals im Zyklus aufrufen) und mußt die Empfangsmessages einzelzeichenweise zusammenbasteln/ausrichten, indem Du den Zeichen-Stream auf vereinbarte markante Zeichen/Trennzeichen/Endezeichen untersuchst.

Du kannst sehr wahrscheinlich nicht das Protokoll der Waage beeinflussen, aber vielleicht ist dieses Siemens-Beispiel eine Anregung oder hilft das Problem zu verstehen:
Übertragung von Daten mit variabler Telegrammlänge über das TCP Protokoll

Harald
 
Zurück
Oben