TIA PTP Kommunikation

PLCanna

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

Ich habe die CPU 1516-3 und ET200 SP (Wie im Bild1).
Ich möchte eine serielle Verbindung zwischen der CPU und einem Gerät über das Modul CM PTP (6ES7 137-6AA0-0BA0) mit RS-232 aufbauen.
ich habe das Modul erstmal so konfiguriert (Wie im Bild2). Diese Konfiguration stimmt überein mit der von dem zu verbindenden Gerät. Ich habe dann zum Testen ein FB erstellt und aus dem Reiter PTP communication die Blocks Send_PTP und Recive_PTP verwendet.(Bild3)
Bei Send_PTP:
-bei REQ habe ich einen Sensor angeschlossen um den Trigger zu geben.
-Bei Port habe ich die HW-Kennung wie im Bild ausgewählt.
-Bei Buffer habe eine Variable gesetzt, die von Typ string ist und enthält das zu sendende Zeichen und zwar 'M 1'.
Bei Recive_PTP:
-bei Port die selbe HW_Kennung wie bei Send_TPT
-bei Buffer habe ich eine Variable von typ string gesetzt.
Das Gerät soll eine String zurücksenden wenn das Gerät was erhalten hat.
Wenn ich den Trigger setzte ändert sich nichts. es werden keine Daten geschickt oder empfangen.
Kann mir jemanden dabei helfen und sagen wo ich möglich was falsches gemacht bzw. was ich übersehen habe?bild1.PNGbild2.jpgbild3.PNG
 
ich habe nur 3 Pins und zwar TX RX und GND bei dem CM angeschlossen weil das zu verbindende Gerät nur die 3 Pins benutzt.
Hat das einen Einfluss drauf?
 
Ich hab RS232 noch nicht benutzt, aber muss da nicht noch CTS und RTS sowie DTR und DSR gebrückt werden?
Was sagt der Status wenn du den Req triggerst?

Ist dir klar, dass wenn du Länge 0 mit gibst, dein ganzer Sendebereich gesendet wird? Das heisst zu dem String den du da drin hast, noch den rest des Sendebereichs den du vielleicht garnicht beschrieben hast. 0en werden auch gesendet. Kann dein Ziel mit sowas umgehen?
 
Zuletzt bearbeitet:
Hallo,

bitte mach mal ein Netzwerk nach deinem SEND_P2P, und parametriere #done auf einen Schliesser, und setze (S) damit einen Merker deiner Wahl.
Dann starte erneut einen REQ, und teile uns mit, ob der Merker nun gesetzt ist.

Auf Seite 95 siehst du, wie der Ablauf ist wenn alles funktioniert, oder wenn ein Fehler ausgegeben wird.
https://cache.industry.siemens.com/...0sp_manual_collection_de-DE.pdf?download=true

Ausserdem kannst du mal schauen, ob die TX LED kurz blinkt, wenn du ein Telegramm schickst.

Wichtig ist, dass dein RX mit dem TX auf der anderen Seite verbunden ist, und TX auf RX.
Dann müssen die Parameter alle mit der Gegenseite übereinstimmen.

Ausserdem kann es sein, dass der andere Teilnehmer nur reagiert, wenn dein Start- und Ende-Zeichen korrekt ist.

Ich habe mir einen RS232 Stecker mit Schraubkontakten, und einen USB Adapter für mein Laptop besorgt, und damit getestet, das hilft ungemein.

MfG.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
Danke erstmal für deine Antwort.

Mit dem Done habe ich es gemacht. Done wird ein Zyklus true. Die TX LED blinkt wenn ich REQ trigge.
Die Pins habe ich angeschlossen, genau wie sie in der Pinsbelegung von den beiden Geräten steht.

Ich soll dann eigentlich eine Antwort vom Teilnehmer bekommen was nicht passiert.
Die Daten, die ich sende sind strings jeweils eine oder mehrere Buchstaben mit einer Eins und ein Leerzeichen in der Mitte z.B 'M 1' oder 'JN 1'.

Wie kann ich den Teilnehmer fordern dass er reagiert?


LG.
 
Ich habe noch mal in der Doku gesucht und habe diese Tabelle gefunden.
Ich habe es so verstanden dass ich nach dem Befehl <CR> und <LF> senden muss als Ende des Telegrammes.
Ist es so richtig?bild4.PNG
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit dem PC funktioniert über einen Terminal. Aber über das CM nicht
Hängt das Terminalprogramm vielleicht Endezeichen an bzw es sendet auch den Enter-Tastendruck?

Messe mal den Ruhepegel des TX des anderen Teilnehmers am RX des CM. Vielleicht hat der nur einen "Stromspar"-Sendepegel von wenigen Volt? Meine Erfahrung mit Siemens-RS232-Baugruppen: die legen Wert auf Pegel > 10V.
Die Verdrahtung überprüfen, RX/TX testweise kreuzen, testweise brücken RTS---CTS und DSR---DTR, Einstellung Baudrate, Parität ... überprüfen.

Harald
 
ich habe verschiedene Sachen probiert. Ich habe testweise RTS---CTS und DSR---DTR überbrückt. TX und RX vertauscht (das komische ist hier dass in den beiden Fällen Done von Send-PTP true wird wenn ich REQ trigge).
Ich habe auch alle möglichen Kombinationen von <CR> und <LF> probiert. Es kommt nichts von dem Teilnehmer zurück. Die Einstellung der Parameter habe ich auch überprüft sie stimmen so.
 
das zu sendendes Datenpaket habe ich als string deklariert und mit den Zeichen 'M 1<CR>' belegt. 'M 1' ist das zu sendende Befehl (command).
 
Du darfst nicht die Zeichenfolge '<CR>' senden, sondern nur das Zeichen mit dem Code 16#0D (13 dez)
Die Schreibweise '<CR>' ist nur zum Niederschreiben im Handbuch, weil 16#0D ein "unsichtbares" nicht druckbares Steuerzeichen ist.
In einer Beobachtungstabelle müsste Deine Sendezeichenfolge so aussehen:
Code:
MyString[1]  Zeichen  'M'
MyString[2]  Zeichen  ' '
MyString[3]  Zeichen  '1'
MyString[4]  Hex      16#0D

oder

MyString[1]  Zeichen  'M'
MyString[2]  Zeichen  ' '
MyString[3]  Zeichen  '1'
MyString[4]  Zeichen  '$R'
Die Länge der Zeichenfolge (des Strings) ist 4 Zeichen (4 Bytes)

Harald
 
Zuletzt bearbeitet:
Zurück
Oben