Jaka jest różnica między kontrolą przepływu DTR / DSR i RTS / CTS?


82

Jaka jest różnica między sprzętową kontrolą przepływu DTR / DSR i RTS / CTS? Kiedy są używane? Dlaczego potrzebujemy więcej niż jednego rodzaju sprzętowej kontroli przepływu? :)

Odpowiedzi:


69
  • DTR - Data Terminal Ready
  • DSR - zestaw danych gotowy
  • RTS - Request To Send
  • CTS - Clear To Send

Jest wiele sposobów na zrobienie tego, ponieważ nigdy nie było żadnych protokołów wbudowanych w standardy. Używasz dowolnych „standardowych” ad-hoc narzędzi.

Opierając się na nazwach, RTS / CTS wydaje się być naturalnym dopasowaniem. Jednak jest to odwrotne od potrzeb, które rozwinęły się w czasie. Sygnały te powstały w momencie, gdy terminal wysyłał partiami ekran pełen danych, ale odbiornik mógł nie być gotowy, a zatem potrzeba kontroli przepływu. Później problem zostałby odwrócony, ponieważ terminal nie mógł nadążyć za danymi pochodzącymi z hosta, ale sygnały RTS / CTS idą w złym kierunku - interfejs nie jest ortogonalny i nie ma odpowiadających sygnałów idących w drugą stronę. Producenci sprzętu dostosowali się najlepiej, jak mogli, w tym wykorzystując sygnały DTR i DSR.

EDYTOWAĆ

Aby dodać więcej szczegółów, jest to dwupoziomowa hierarchia, więc „oficjalnie” oba muszą mieć miejsce, aby komunikacja miała miejsce. Zachowanie jest zdefiniowane w oryginalnym standardzie CCITT (obecnie ITU-T) V.28.

wprowadź opis obrazu tutaj

DCE to modem łączący terminal z siecią telefoniczną. W sieci telefonicznej znajdowało się kolejne urządzenie, które odłączyło się do sieci danych, np. X.25.

Modem ma trzy stany: wyłączony, gotowy (stan gotowości zestawu danych to prawda) i podłączony ( wykrywanie nośnika danych )

Terminal nie może nic zrobić, dopóki modem nie zostanie podłączony.

Gdy modem chce wysłać dane, podnosi RTS, a modem udziela żądania z CTS. Modem obniża CTS, gdy jego wewnętrzny bufor jest pełny.

Taka nostalgiczna!


1
Ładnie podsumowane. Wtedy pojawiło się „miękkie” sterowanie przepływem xOn / xOff.
n8wrl

Uwaga: DTR / DSR stało się mniej powszechne niż RTS / CTS po połowie lat 80-tych. Jądro Linuksa nigdy nie obsługiwało DTR / DSR: do czasu, gdy jądro Linuksa obsługiwało DTR / DSR, port szeregowy 232 stał się przestarzały.
david

8
@david Te sygnały nie są ograniczone do RS232, ale są również używane w TTL UART. A te wcale nie są przestarzałe.
glglgl

Tak więc pod względem DTE (komputer) i DCE (modem) RTS / CTS zapewnia, że ​​DCE (modem) nie jest przeciążony danymi, a DTR / DSR zapewnia, że ​​DTE (komputer) nie jest przeciążony danymi. Czy to jest poprawne?
skinnedKnuckles

@skinnedKnuckles, zgodnie z moją najlepszą pamięcią. Minęło zbyt wiele lat, odkąd musiałem się tym martwić.
Mark Ransom

30

Różnica między nimi polega na tym, że używają różnych pinów. Poważnie, to wszystko. Powodem ich istnienia jest to, że pierwotnie RTS / CTS nigdy nie miał być mechanizmem kontroli przepływu; było to dla modemów półdupleksowych, aby koordynować, kto nadawał i kto odbierał. RTS i CTS były tak często wykorzystywane do kontroli przepływu, że stały się standardem.


1
Zupełnie zapomniałem o półdupleksie. Niewyraźnie pamiętam, jak widziałem to w akcji, na drukarce / czytniku kart. Dzięki za odpowiedź.
Mark Ransom

Teraz superuser.com istnieje i mówi nam, że w momencie pytania jądro Linuksa nie obsługiwało sygnalizacji DTR / DSR. superuser.com/questions/345005/… . Co wskazuje na inną różnicę: sygnalizacja DTR / DSR jest mniej powszechna / nie była używana przez inteligentne modemy.
david

1

Ważną różnicą jest to, że niektóre UART (szczególnie 16550) przestaną odbierać znaki natychmiast, jeśli ich host poinstruuje je, aby ustawić DSR jako nieaktywne. W przeciwieństwie do tego, znaki będą nadal odbierane, jeśli CTS jest nieaktywny. Uważam, że intencją tutaj jest to, że DSR wskazuje, że urządzenie już nie nasłuchuje, a więc wysyłanie dalszych znaków jest bezcelowe, podczas gdy CTS wskazuje, że bufor się zapełnia; ta ostatnia dopuszcza pewien stopień „poślizgu”, w którym linia sterowania przepływem zmieniała stan między próbkowaniem przez DTE a następnym przesyłanym znakiem. W (względnie) późniejszych urządzeniach obsługujących sprzętowe FIFO możliwe jest, że pewna liczba znaków może zostać przesłana po tym, jak DCE ustawił CTS jako nieaktywny.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.