Daten mit Hyperterminal an CP343-1 TCP senden

hubert

Level-2
Beiträge
391
Reaktionspunkte
25
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

ich bin etwas am verzweifeln. Das senden von der SPS an das Hyperterminal funktioniert einwand frei. Nur bekomme ich keine Daten vom Hyperterminal an die SPS geschickt. am Baustein "AG_RECV" (FC6) steht der Status immer am 8180 => Es liegen noch keine Daten vor. Mit was stoße ich den Sendeauftrag zur SPS im Hyperterminal an? Kann mir das mal einer erklären?
 
Das bei Windows mitgelieferte Hyperterminal sendet die Daten sofort beim Eintippen der Buchstaben an die verbundene Gegenstelle. Es lässt sich auch ein lokales Echo aktivieren, dann sieht man im Ausgabefenster auch was eingetippt wurde.

Wie groß ist denn dein Empfangspuffer auf der SPS-Seite dimensioniert? Ich meine den Parameter RECV am AG_RECV Baustein?

Der AG_RECV ändert seinen Status erst wenn die angegebene Anzahl an Zeichen im Puffer angekommen ist. Mal angenommen dein Puffer ist 10 Byte groß, dann musst du in Hyperterminal 10 Zeichen tippen bis der AG_RECV einen Empfang meldet.
Die Status-Anzeigen des Bausteins sind jedoch immer nur für einen Zyklus gültig! Also mit reinem Beobachten des Bausteins im Online-Modus wirst du nicht viel sehen können.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Thomas,

ich hatte dein Eingangspuffer auf 256 Byte gehabt. Nun habe ich diesen Puffer auf 6 Byte reduziert. Die Daten werden also nur in den Puffer geschrieben, geschrieben, wenn die Anzahl der Daten die Pufferlänger erreicht habe. Kann man den Puffer auch wieder zurücksetzen. Soll heißen, wenn weniger als die angegebenen Byte übertragen wurden. Oder kann man auch weniger Daten übertragen als die Pufferlänge ist? Wo kann ich z.B. beim hyperterminal angeben, das z.B. nur 9 Byte statt 15 Byte übertragen werden. Beim AG_Send kann ich ja eine länge angeben, ist die die länger die den AG_RECV veranlasst auch weniger Daten zu empfangen als der Puffer lang ist?
Danke schon mal für die erste Erklärung.
 
TCP ist erstmal ein reiner Datenstrom. Du musst dir schon eine Art Protokoll überlegen damit die Daten in der SPS später korrekt ausgewertet werden können. Sonst weißt du nämlich nie wann ein Telegramm anfängt und wann es endet.
Du kannst die Empfangspuffergröße beim AG_RECV auch im laufenden Betrieb ändern, aber nur wenn gerade kein Empfang läuft.

Auf der Siemens Support Seite ist das an einem Beispiel erklärt:
http://support.automation.siemens.com/WW/view/de/8707570

Das Beispiel ist kostenpflichtig, aber der Artikel erklärt eigentlich recht gut die Vorgehensweise wie man die Übertragung mit einem TCP-Datenstrom realisiert.

Was du mit Hyperterminal vorhast will mir noch nicht ganz einleuchten. Das Programm schickt so viele Zeichen wie du im Terminalfenster eingibst - nicht mehr und nicht weniger. Willst du das Programm nur zum Testen benutzen, oder soll das die eigentliche Anwendung sein?
 
Hallo Thomas,

das Hyperterminal soll nur ein Test für eine Applikation sein. Wie nur sehen, wenn ich ein Telegramm über die beiden Bausteine "AG_SEND" bzw. "AG_RECV" sende bzw. von einem Teilnehmer bekommen. Mehr hatte ich damit nicht vor. Danke für den Link, werd in mir mal genauer anschauen.
Außerdem danke schon mal für deine Hilfe.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zum Testen von TCP Verbindungen eignet sich auch ein Tool namens Herkules ganz gut.
http://new.hwg.cz/download/sw/version/hercules_3-2-3.exe.

Betriebsart(Server oder Client) einstellen, IP-Adresse, Port-Adresse einstellen und los gehts.


Ansonsten gilt schon wie von Thomas erwähnt, dass der Empfang von reinem TCP nicht so ganz ohne ist. Vorallem wenn man unterschiedliche Telegrammlängen zu verarbeiten hat, muss man da noch einiges drum rum basteln.

Gruss
Reini
 
Zurück
Oben