String ueber TCP verbindung senden

Snoopy123123

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

Ich will via CP343-Lean einen String an eine PC Anwendung (integrierter TCP Server) senden. Ich habe einen in Netpro eine TCP Verbindung projektiert und IP und Portadressen angegeben. Im DB6 habe ich eine Stringvariable der laenge 20 deklariert. Samt Header also eine Gesamtlaenge von 22Byte. Wenn ich nun mit M21.5 das senden anstosse sehe ich das sich die Anwendung verbindet, aber der String kommt nicht an. Wenn ich mich mit Telnet mit der PC Anwendung verbinde kommen meine gendeten Strings an, also liegts nicht an der Verbindung oder Firewall oder aehnlichem. Muss ich in der SPS noch irgendwas beachten um wie z.b. mit Telnet einen String an einen TCP Server zu schicken?

Folgenden code nutze ich um den String zu senden:
CALL "AG_SEND"
ACT :=M21.5
ID :=1
LADDR :=W#16#100
SEND :=DB6.Stringvariable
LEN :=22
DONE :=M15.0
ERROR :=M15.1
STATUS:=MW16

U M 15.0
R M 21.5
 
Hallo,

mit welchem Programm empfängst Du den String?

Ich hab das schon mit VB mit "Winsock" erledigt.
In jüngster Zeit mit PHP (auch mit winsock) auf Kommandozeile.

Gruß

S7_Programmer
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, es handelt sich um einen Beschriftungslaser, der fakt das ich mit Telnet die Kommandos verschicken kann zeigt mir halt das ich irgendwas auf der Siemens Seite falsch mache. Habe gestern noch mit Wireshark versucht die Kommunikation mitzulesen aber der Zeigt mir nur an das ein "malformed Package" versendet wurde. Aber das zeigt Wiresahrk auch bei Telnet an und da funktioniert es trotzdem.

GRUEBEL..........
 
Malformed packed kann man meist ignorieren

Hallo,

Snoopy123123 schrieb:
Aber das zeigt Wiresahrk auch bei Telnet an und da funktioniert es trotzdem.

Das zeigt Wireshark auch öfters bei S7 Telegrammen an. Das liegt aber meist daran, das eben noch kein perfekter Filter für Wireshark zum entsprechenden Protokoll existiert. Das "malformed package" kann man meist getrost ignorieren.

Gruß

Question_mark
 
Hallo QM,
Im Netpro ist aber ganz klar eine TCP-Verbindung eingestellt, und die sollte Wireshark doch kennen oder etwa nicht ? Obwohl Wireshark scheint ja auch das Telnet Protokoll nicht zu kennen und das ist doch ganz klar TCP. Zumindest hoert die Anwendung auf Telnet und nicht auf die S7. Jemand ne Idee was bei der S7 anders ist, oder ob ich vielleicht irgendwas an der Konfiguration falsch gemacht haben koennte ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

soweit ich mitbekommen habe, kommen Zeichen am Laser an.
Dieser weigert sich aber.

Ich hatte schon mit Haas/Trumph Laser zu tun, jedoch mit V24; da war aber im Protokoll ein BCC-Zeichen (Block-Check-Character) zu brücksichtigen. Könnte es daran liegen?

Weiterhin viel Erfolg!

S7_Programmer
 
Hallo,

soweit ich mitbekommen habe, kommen Zeichen am Laser an.
Dieser weigert sich aber.

Ich hatte schon mit Haas/Trumph Laser zu tun, jedoch mit V24; da war aber im Protokoll ein BCC-Zeichen (Block-Check-Character) zu brücksichtigen. Könnte es daran liegen?

Weiterhin viel Erfolg!

S7_Programmer

Nicht ganz am Laser kommt halt nur was an wenn es mit Telnet gesendet wird.
Habe am WE mal ein bissjen rumprobiert und mir nen TCP Server mit den INDY Komponenten zusammengebaut. HIer verhaelt es sich genau so. Wenn der String von Telnet kommt dann empfaengt ihn der Indy Server, wenn der String von der S7 kommt dann verbindet der Server sich zwar mit dem client, aber empfaengt leider kein String. Bin jezt mit meinem Latein am ende. Werde wohl mal den Siemens Support bemuehen muessen :confused:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wechselt beim ersten verbinden zwischen 8181 (Auftrag laeuft) und 8183 (Die Projektierung fehlt oder der Dienst im Ethernet-CP ist noch nicht gestartet), und sobald der client verbindet auf 0000 (Auftrag fertig).
 
8183 hört sich erst mal nicht gerade gut an.

Prinzipiell ist ja eigentlich so, das sich dein CP automatisch mit dem Server verbindet, und nicht erst, wenn du ein Telegramm versenden willst.


Mit diesem Tool (....und wahrscheinlich 1000 anderen)

http://www.sps-forum.de/showpost.php?p=246121&postcount=18

kannst du sehen, was empfangen wurde. Ausserdem wird angezeigt, ob eine Verbindung aufgebaut wurde. Das müsste eigentlich schon passieren, bevor du ein Telegramm versendest.

Vielleicht passt doch noch was in der Parametrierung des CP nicht.
 
Hallo,

kannst Du anstatt des Lasers einen PC mit entsprechender IP-Adresse
reinhängen? Oder IP in Konfig umstellen, dann kannst Du eventuell auch Dein PG nutzen.
Dann kannst Du mit Netcat die empfangenen Daten auffangen.
nc -l -pnnnn (nc für netcat, -L für Listening Mode. -Pnnnn für PortNummer)

Info netcat siehe auch:http://de.wikipedia.org/wiki/Netcat
Ich habe die Windowsversion nach ins attachment gestellt.

Vielleicht kommst Du hiermit der Sache auf den Grund.

Viel Erfolg!
S7_Programmer
 

Anhänge

  • nc111nt.zip
    104,4 KB · Aufrufe: 33
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Danke erst mal fuer das connect Tool. Bin eben dazu gekommen das ganze mal auszuprobieren. Also das sich der CP erst verbindet wenn das senden Bit aktiviert wird scheint normal zu sein. Das verhaelt sich alles genau so wie mit dem anderen TCP Server. Aber, das connect tool zeigt die die anzahl der empfangenen Telegramme und die Laenge sowie alle bytes auch an. Soweit ist das ja schonmal ganz gut und die Simatic seite scheint ja auch zu funktionieren. Dann hab ich versucht mich mit via Telnet mit dem Connect Tool zu verbinden aber das geht nicht (Telnet ging ja mit der Laser anwendung und auch mit den Indys).
Koennte es sein das hier ein Problem mit den Protokollen vorliegen kann ? Eigentlich handelt es sich ja bei allen Tools um das TCP Protokoll !

@S7Programmer: Werde das jezt auch mit deinem Tool ausprobieren.
 
Hallo,

Ich will via CP343-Lean einen String an eine PC Anwendung (integrierter TCP Server) senden. Ich habe einen in Netpro eine TCP Verbindung projektiert und IP und Portadressen angegeben.
...

Das ist vermutlich der Fehler.
Der CP arbeitet dann als TCP-Server und wartet auf reinkommende Verbindungen???
Probier doch einfach mal die Verbindung in Netpro zu löschen.

Eine Alternative (so machen es gängige Visualisierungen): Verbindung lassen, und den PC die Daten abholen lassen.
Der FB-Aufruf fiele dann weg.
 
Hallo,

du kannst auch NetCat sowohl als Server als auch als Client betreiben.
Du kannst auch auf einer Seite das Telnet, auf der anderen Seite Netcat
(-l option) auch einem einzigen Windows-PC ausführen (2x cmd öffnen).
Probiers erst mal rein PC, dann mit SPS.

Ich hoffe Dir weitergeholfen zu haben.

Viele Grüße
S7_Programmer
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist vermutlich der Fehler.
Der CP arbeitet dann als TCP-Server und wartet auf reinkommende Verbindungen???
Probier doch einfach mal die Verbindung in Netpro zu löschen.

Eine Alternative (so machen es gängige Visualisierungen): Verbindung lassen, und den PC die Daten abholen lassen.
Der FB-Aufruf fiele dann weg.

Also der CP sollte eigentlich als TCP-Client arbeiten. Das Haeckchen fuer Aktiver Verbindungsaufbau ist gesetzt und so wie ich das kenne baut immer der Client die Verbindung auf. Aber das der CP die Verbindung aufbaut sehe ich auch also denke ich im moment nicht das es daran liegt. Und Telnet verbindet sich ja auch mit meinem TCP Server was die Aussage bekraeftigt.

Bin jetzt noch auf eine andere sache aufmerksam geworden. Kann es sein das der CP keinen TCP-String sondern einen String Stream sendet ?
 
Hallo,

du kannst auch NetCat sowohl als Server als auch als Client betreiben.
Du kannst auch auf einer Seite das Telnet, auf der anderen Seite Netcat
(-l option) auch einem einzigen Windows-PC ausführen (2x cmd öffnen).
Probiers erst mal rein PC, dann mit SPS.

Ich hoffe Dir weitergeholfen zu haben.

Viele Grüße
S7_Programmer


NC wirft mir einen fehler wenn ich es wie folgt starte

nc -l -p2000 // Sprich listening mode auf Port 2000, damit sollte nc als TCP Server laufen, richtig ?

Nach ca 5 sekunden bekomme ich die Meldung: forward host lookup failed: H_errno 11004: No Data
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich lass mal Kommentare zu nc weg, super Programm von Hobbit.

Vielleicht hast Du ja auch nur in Netpro das falsche TCP-Protokoll angeklickt (TCP-native, ISO-ON-TCP).

Rührt die Fehlermeldung von nc etwa daher, dass auf dem selben PC schon der erwähnte "TCP-Server" auf dem gleichen Port läuft?
 
Ich lass mal Kommentare zu nc weg, super Programm von Hobbit.

Vielleicht hast Du ja auch nur in Netpro das falsche TCP-Protokoll angeklickt (TCP-native, ISO-ON-TCP).

Rührt die Fehlermeldung von nc etwa daher, dass auf dem selben PC schon der erwähnte "TCP-Server" auf dem gleichen Port läuft?

Protokolltyp ist TCP-Verbindung. Mit dem Connect Tool von Grubba funktioniert es auch und ich sehe die Daten von der S7. Ich denke es liegt nun wirklich am Format der gesendeten Daten.
 
Sende doch mal mit der S7 das Telegramm an das Connect Tool,
dann mit Telnet.

Kannst du dann evtl. Unterschiede erkennen?
 
Zurück
Oben