RS-232-Pufferschaltung

Ich wollte die Kommunikation zwischen zwei RS232-Geräten schnüffeln. Dieser Link stellt eine einfache Lösung dar, aber ich möchte sicherstellen, dass mein 'Sniffer' den Kommunikationslink nicht lädt.

Zu diesem Zweck habe ich mich gefragt, ob ich einen MAX-232 als "Looping" -Puffer verwenden könnte:

RS232-Eingang -> TTL-Ausgang -> TTL-Eingang -> RS232-Ausgang

Der MAX-232 wird von einer externen 5-V-Stromversorgung versorgt. Ist dies eine idiotensichere Methode zum Sniffen, ohne die Leitung zu laden? Funktioniert der MAX232 in dieser Konfiguration überhaupt als Puffer? Wenn nicht. Gibt es preiswerte RS232-Puffer-ICs? Alle Puffer-ICs der 74xx-Reihe scheinen nur mit TTL-Pegeln zu funktionieren.

Meine Kommunikationsverbindung ist nur Halbduplex.

UPDATE: Ich glaube, ich war mit meiner Beschreibung nicht klar. Bitte sehen Sie sich das Bild an:Alt-Text

Meine beiden Geräte sind bereits auf RS232-Pegel. Ich wollte die Daten einfach über einen COM-Port des PCs auslesen, dachte aber, ein MAX-232 dazwischen (der Schleifenpuffer, von dem ich sprach) könnte als Puffer dienen. Aber andererseits könnte sogar der COM-Port des PCs per se einen MAX-232 enthalten ...

PS: Ich habe die Kondensatoren etc für den max232 in der obigen Abbildung nicht angegeben.

Antworten (5)

fwiw Ich hatte Erfolg mit der minimalistischen Zwei-Dioden-Schaltung, die Sie verlinkt haben. Der einzige Unterschied besteht darin, dass ich den TX-Pin des „Sniffer“-Geräts als praktische Quelle von -12 V verwendet habe, um es über einen 47-K-Pulldown zu verwenden, um sicherzustellen, dass der eigene RX des Sniffers nicht schwebt, wenn keines der Geräte schnüffelt sendete.

Wenn Sie nicht mehrere zehn Meter Kabel fahren oder mit schnelleren Raten wie 115,2 kbps arbeiten, sollte das Dioden- und Widerstandsding die Schaltung nicht zu sehr beeinflussen.

Wenn Sie die Signale wirklich zu TTL und zurück puffern möchten, gibt es natürlich die MAX-Chips und sogar einfache alte Chips vom Typ Leitungstreiber/Leitungsempfänger wie der 1488-Quad-Treiber und der 1489-Quad-Empfänger, die die Arbeit erledigen würden.

Wenn ich das richtig verstehe, hier ist deine Schaltung:

RS232-Eingang -> TTL-Ausgang -> [Sniffer circuit]TTL-Eingang -> RS232-Ausgang

mit anderen Worten:

[device1] <--> MAX232 <--> [sniffer circuit] <--> MAX232 <--> [device2]

Das sieht gut aus für mich. Die Tatsache, dass jede Seite der Schaltung direkt mit einem MAX232 spricht, sollte Ihnen viel "Isolation" geben. Möglicherweise müssen Sie die Leitungen überqueren (oder einfach eine Nullmodemverbindung auf einer Seite verwenden), wenn Sie CPE-CPE oder Computer zu Computer sprechen.

Ansonsten sehe ich keine Probleme.

Tatsächlich befinden sich "RS232 in -> TTL out -> TTL in -> Rs232 out" alle auf demselben MAX-232-Chip, wie in der Abbildung gezeigt.

Hm, interessante Schaltung. Vielleicht möchten Sie einen tatsächlichen MAX232 als Puffer zwischen den Zeilen, die Sie lesen, und Ihrem Zwei-Dioden-Setup verwenden. Es hat einen Eingangswiderstand von 5 kOhm, was bedeutet, dass Sie unter der Annahme, dass die Empfänger den gleichen haben, einen Widerstand von 2,5 kOhm auf dem Bus sehen. Vielleicht ist ein Spannungsfolger mit einem höheren Eingangswiderstand in Ordnung - es ist möglich, serielle Schnittstellen zu unterbrechen, indem man dumme Dinge versucht (ich habe es getan). Testen Sie zuerst etwas, das Sie gerne zerstören möchten.

Ich habe die in meiner Abbildung gezeigte Konfiguration (mit eingeschleiftem max232) und ohne (direkt an den COM-Ports meines PCs) ausprobiert. Beide funktionieren gut. Braucht man zwischendurch jetzt wirklich einen MAX-232? Bietet es überhaupt eine Pufferwirkung?
Ich glaube nicht, dass Sie den MAX-232 benötigen - der Eingang zu Ihrem PC-COM-Anschluss ist wahrscheinlich dem auf dem MAX-232-Chip ziemlich ähnlich, sodass die Last dieselbe wäre.

Angenommen, Ihre beiden Geräte sprechen TTL miteinander, könnte eine gute Möglichkeit zum „Isolieren“ etwa die folgende ASCII-Schaltung sein:

         Tx --------------x------------------------------- Rx
                          |              
Device1  Rx --------------------x------------------------- Tx  Device2
                          |     |                          
         Gnd -------------------------x------------------ Gnd
                          |     |     |    
                          |     |     |
                         Rx1   Rx2   Gnd

                            Sniffer (say an XMEGA with 3+ UARTS)

                         Tx1
                          |
                          x-----TX_IN-[MAX232]-TX_OUT----- Rx Computer Terminal

Mit einer kreativen Firmware könnte so etwas wie dieses Setup die Vollduplex-Kommunikation zwischen zwei Geräten ausspionieren und die Konversation dem Benutzer auf „nette“ Weise melden. Tut mir leid, wenn das nicht ganz das ist, was Sie gefragt haben, aber ich musste die ASCII-Art-Gelegenheit nutzen :).

Die Geräte sind bereits auf RS232. Ich möchte keine MCU dazwischen stecken; wollte es nur einfach halten :)

Sie können die gesamte "Elektronik" vollständig vermeiden, wenn Sie zwei serielle Schnittstellen zum Schnüffeln verwenden können. Jeder der Sniffer-Ports liest die TX-Leitung von einem Ende der Verbindung. Dies gibt Ihnen auch zusätzliche Statuseingangspins, um alle Statusausgänge auf überwachter Kommunikation zu lesen.

  Tx --------------x------------------------------- Rx
                   |              
  Rx --------------|-----x------------------------- Tx
                   |     |                          
                   |     |         
                   |     |     
                   |     x------------ PC COM 1 Rx
                   |
                   x-------------------PC COM 2 Rx
Wir verwenden diese Art von RS323-Sniffing seit über 15 Jahren ohne Probleme
@Tim, nun, wenn du dir meine Figur ansiehst, mache ich genau das, aber mit einem max232 dazwischen (was nicht notwendig ist, wie ich herausgefunden habe und wie andere darauf hingewiesen haben).