S7-200. Senden via RS232 und gleichzeitig empfangen

SiO2

Level-1
Beiträge
23
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hätte mal wieder ne kleine Anfängerfrage. Wenn ich, sobald ein bestimmtes Ereignis eintritt, eine Nachricht über RS232 (PPI-Kabel) sende und gleichzeitig (sobald die SPS in der Mitte der zu sendenden Daten angekommen ist) sendet aber der HostPC (SPS ist mit diesem Kabel an einen PC angeschlossen) eine Nachricht an die SPS, was Passiert dann? Gehen Daten verloren, die die SPS senden wollte?

Danke
 
Diese Frage grabe ich noch mal aus: Ich habe heute ähnliches Problem: Kann es sein, dass die S7-200 nicht vollduplex-fähig ist?
Sobald ich empfange (RCV-Baustein enabled), funktioniert bei mir das Senden mit XMT überhaupt nicht mehr! Auch nicht wenn das Empfangen bereits beendet ist.
Hat jemand schon mit der RS232 Schnittstelle bidirektional gearbeitet. Ich möchte das gerne erst mal OHNE Interruptsteuerung hinbekommen, indem Zyklus für Zyklus polle.
Ich möchte nur ein einfaches Terminalprogramm anschalten (mit dem PPI-Adapter), so dass ich in beide Richtungen kommunizieren kann. Ich hätte gerne erst mal ein Echo von der SPS, so das ich meine Eingaben am Terminal lesen kann.
Mit dem RCV Baustein kann ich bereits problemlos empfangen:
Dazu habe ich SMB30 auf 00001010 (9600bps) und SMB87 auf 10011100 gesetzt
Die Zeiten (SMW 90,92) habe ich auf je 5ms gesetzt und die Zeichenanzahl (SMB94) auf 2. Den RCV-Baustein enable ich (einmalig durch Flanke) und prüfe ob SMB86 ungleich 0 ist. Wenn ungleich 0, kann ich die String-Tabelle an der angegebenen Startvariable bei RCV auswerten (Bsp. VB0 bei RCV angegeben, dann erhält VB0 die Zeichenanzahl (2) und VB1 das vom Terminal aus gesendet Zeichen).
Um ein weiteres Zeichen empfangen zu können, muss ich noch einmal RCV auf enable setzen. Aber selbst wenn ich das nicht tue, funktioniert das Senden mit XMT nicht mehr! Und zwar sobald RCV ein einziges mal enabled war. Ohne RCV-Bausteine funktioniert das Senden zum Terminal mit dem XMT-Baustein immer bestens. Ich warte zudem bis SM4.5 wieder auf 1 ist, bevor ich wieder sende. Nur sobald RCV auch nur ein einzige mal enabled war funktiontiert das Senden überhaupt nicht mehr! Ich habe auch schon einfach mal SM87.7 auf 0 gesetzt, nachdem ich was empfangen habe und bevor ich senden wollte. Hat leider auch nichts gebracht.
In den Beispielen in der Hilfe wird immer nur mit Interrupts gearbeitet. Das muss aber doch auch ohne gehen?

Wenn ich RCV durch ein Impuls einmal enabled habe: Wie kann ich es dann wieder abschalten, wenn ich doch nichts empfangen will?

Nachtrag: Beim Siemens PPI-Kabel muss man wohl 10ms warten, um nach dem Empfang etwas zu senden (ist auch in dem Interrupt-Beispiel so). Die habe ich locker gewartet, da ich das Senden immer manuell über eine (Taster-)flanke ausgelöst habe!


TIA,
Dominik
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hätte mal wieder ne kleine Anfängerfrage. Wenn ich, sobald ein bestimmtes Ereignis eintritt, eine Nachricht über RS232 (PPI-Kabel) sende und gleichzeitig (sobald die SPS in der Mitte der zu sendenden Daten angekommen ist) sendet aber der HostPC (SPS ist mit diesem Kabel an einen PC angeschlossen) eine Nachricht an die SPS, was Passiert dann? Gehen Daten verloren, die die SPS senden wollte?

Danke
Die 200er hat eine RS485-Schnittstelle. RS485 ist nicht vollduplex-fähig. Da es sich hier um einen Bus handelt, kann immer nur einer senden und alle anderen empfangen.
 
ok, ich ging davon aus, das die "frei programmierbare Kommunikation" auch Vollduplex unterstützen würde (zumindest bei Punkt-zu-Punkt Verbindungen wie zwischen dem PPI-Adapterkabel und PC), da man ja laut Handbuch sogar RS232-Modems anschließen kann.
Schön wäre es, wenn der PPI-Adapter einfach das RS232seitige Vollduplex-Signal puffern würde und in ein RS485 Halbduplex-Signal umsetzen würde. Dem scheint dann aber auch nicht zu sein. Da ist ja jeder billige uController deutlich leichter an Geräte mit RS232-Schnittstelle anpassbar als die SPS :(
 
RS422 ist vollduplex, RS485 nicht. Wenn die Schnittstelle entsprechend konfiguriert werden kann (für PTP), dann kann das klappen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielleicht habe ich die Lösung zu meinem Programmierproblem nun selber gefunden. Bei Siemens gibt es eine Datei mit vielen nützlichen Programmiertipps für die S7-200: Sie heißt ALL_TIPS_1208_D.zip
Die Tipps sind (zumindest die Beispielprogramme, die ich mir bisher angeschaut habe) leider alle nur in AWL. Aber darüber habe ich zumindest herausgefunden, dass man, nachdem man das Bit SM87.7 gelöscht hat, noch einmal den RCV-Baustein triggern muss, um den Empfang wirklich abzuschalten. Vielleicht ist das schon die Lösung. Werde das demnächst mal ausprobieren.
 
Zurück
Oben