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.