Was ist der Unterschied zwischen DTR / DSR- und RTS / CTS-Flusskontrolle?

82

Was ist der Unterschied zwischen der Hardware-Flusskontrolle von DTR / DSR und RTS / CTS? Wann wird jeder verwendet? Warum benötigen wir mehr als eine Art von Hardware-Flusskontrolle? :) :)

Gili
quelle

Antworten:

69
  • DTR - Data Terminal Ready
  • DSR - Datensatz bereit
  • RTS - Anfrage zum Senden
  • CTS - Clear To Send

Es gibt mehrere Möglichkeiten, Dinge zu tun, da in den Standards nie Protokolle eingebaut waren. Sie verwenden den Ad-hoc-Standard, den Ihre Geräte implementieren.

Nur basierend auf den Namen scheint RTS / CTS eine natürliche Passform zu sein. Es ist jedoch rückwärts von den Bedürfnissen, die sich im Laufe der Zeit entwickelt haben. Diese Signale wurden zu einem Zeitpunkt erzeugt, zu dem ein Terminal einen Bildschirm voller Daten stapelweise sendete, der Empfänger jedoch möglicherweise nicht bereit war, sodass eine Flusskontrolle erforderlich war. Später würde sich das Problem umkehren, da das Terminal nicht mit den vom Host kommenden Daten Schritt halten konnte, die RTS / CTS-Signale jedoch in die falsche Richtung weisen - die Schnittstelle ist nicht orthogonal und es gibt keine entsprechenden Signale in die andere Richtung. Die Gerätehersteller passten sich so gut sie konnten an, einschließlich der Verwendung der DTR- und DSR-Signale.

BEARBEITEN

Um ein bisschen mehr Details hinzuzufügen, ist es eine zweistufige Hierarchie, so dass "offiziell" beide stattfinden müssen, damit die Kommunikation stattfinden kann. Das Verhalten ist im ursprünglichen CCITT-Standard (jetzt ITU-T) V.28 definiert.

Geben Sie hier die Bildbeschreibung ein

Das DCE ist ein Modem, das eine Verbindung zwischen dem Terminal und dem Telefonnetz herstellt. Im Telefonnetz befand sich ein weiteres Gerät, das sich zum Datennetz abspaltete, z. X.25.

Das Modem hat drei Zustände: Ausschalten, Bereit ( Datensatz bereit ist wahr) und verbunden ( Datenträgererkennung )

Das Terminal kann nichts tun, bis das Modem angeschlossen ist.

Wenn das Modem Daten senden möchte, löst es RTS aus und das Modem gewährt die Anforderung mit CTS. Das Modem senkt CTS, wenn sein interner Puffer voll ist.

So nostalgisch!

Mark Ransom
quelle
1
Schön zusammengefasst. Dann entstand die 'weiche' Flusskontrolle xOn / xOff.
n8wrl
Hinweis: DTR / DSR wurde nach Mitte der 80er Jahre seltener als RTS / CTS. Linux-Kernel unterstützte DTR / DSR nie: Als der Linux-Kernel DTR / DSR unterstützte, war 232 serial veraltet.
David
8
@david Diese Signale sind nicht auf RS232 beschränkt, sondern werden auch in TTL-UARTs verwendet. Und diese sind keineswegs veraltet.
glglgl
In Bezug auf DTE (Computer) und DCE (Modem) stellt RTS / CTS sicher, dass das DCE (Modem) nicht mit Daten überfordert ist, und DTR / DSR stellt sicher, dass das DTE (Computer) nicht mit Daten überfordert ist. Ist das korrekt?
SkinnedKnuckles
@skinnedKnuckles, das ist nach bestem Wissen und Gewissen richtig. Es ist zu viele Jahre her, seit ich mir um dieses Zeug Sorgen machen musste.
Mark Ransom
30

Der Unterschied zwischen ihnen besteht darin, dass sie unterschiedliche Stifte verwenden. Im Ernst, das war's. Der Grund, warum beide existieren, ist, dass RTS / CTS ursprünglich nie ein Flusskontrollmechanismus sein sollte; Es war für Halbduplex-Modems, zu koordinieren, wer sendete und wer empfing. RTS und CTS wurden so oft für die Flusskontrolle missbraucht, dass sie zum Standard wurden.

Chaos
quelle
1
Ich habe Halbduplex völlig vergessen. Ich erinnere mich vage, dass ich das in Aktion auf einem Combo-Zeilendrucker / Kartenleser gesehen habe. Danke für diese Antwort.
Mark Ransom
Jetzt existiert superuser.com und es sagt uns, dass der Linux-Kern zum Zeitpunkt der Anfrage die DTR / DSR-Signalisierung nicht unterstützt hat. superuser.com/questions/345005/… . Was auf einen weiteren Unterschied hinweist: DTR / DSR-Signalisierung ist weniger verbreitet / wurde von Smart-Modems nicht verwendet.
David
1

Ein wichtiger Unterschied besteht darin, dass einige UARTs (insbesondere 16550) den Empfang von Zeichen sofort einstellen, wenn ihr Host sie anweist, DSR auf inaktiv zu setzen. Im Gegensatz dazu werden weiterhin Zeichen empfangen, wenn CTS inaktiv ist. Ich glaube, dass die Absicht hier ist, dass DSR anzeigt, dass das Gerät nicht mehr lauscht und das Senden weiterer Zeichen sinnlos ist, während CTS anzeigt, dass ein Puffer voll wird; Letzteres ermöglicht eine bestimmte Menge an "Schleudern", bei der die Flusssteuerungsleitung ihren Zustand zwischen der DTE-Abtastung und dem nächsten übertragenen Zeichen geändert hat. In (relativ) späteren Geräten, die ein Hardware-FIFO unterstützen, ist es möglich, dass eine Anzahl von Zeichen übertragen wird, nachdem die DCE CTS auf inaktiv gesetzt hat.

Frosch
quelle