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