Standard RS-232 (Recommended Standard) został wprowadzony w 1962 roku. Został on opracowany na potrzeby obsługi modemów (o czym świadczą nazwy sygnałów sterujących) przez amerykańskie stowarzyszenie EIA ( Electronic Industries Assocation ). W sierpniu 1969 roku wprowadzono zrewidowaną normę oznaczoną RS-232C, która reprezentuje powszechnie akceptowany sposób transmisji danych na nieduże odległości (do 15m) , z szybkością do 115 kbitów/s.Standard RS-232C został później przyjęty w Europie przez komitet normalizacyjny CCITT i otrzymał oznaczenie V24. W komputerach osobistych stał się on standardem łącza szeregowego. W systemach operacyjnych portom takim przyznano nazwy logiczne COMn ( gdzie n oznacza numer portu). Oprócz obsługi modemów , interfejs umożliwia podłączenie takich urządzeń jak mysz czy drukarka. Może posłużyć również do połączenia bezpośrednio dwóch komputerów (przez tzw. Kabel Null-Modem)
Sposób transmisji RS-232
Transmisja odbywa się szeregowo asynchronicznie ,tzn informacja jest przesyłana w “paczkach” o z góry określonym formacie , wyposażonych w sygnały początku i końca paczki
Czas trwania pojedynczego bitu nazywany jest odstępem jednostkowym. Jego odwrotność określa szybkość transmisji w bodach ( bitach na sekundę ). Typowe prędkości transmisji wynoszą : 300,1200,2400,9600,14400,28800,56600
Długość pola danych może wynosić od 5 do 8 bitów
Opcjonalny bit kontroli transmisji może pracować według jednej z dwóch zasad: kontrola parzystości (even parity ) lub kontrola nieparzystości (odd parity)
Transmisje kończą jeden lub dwa bity stopu.
Parametry elektryczne RS-232
Poziomy logiczne interfejsu różnią się od poziomów zastosowanych wewnątrz komputera. Zastosowano napięcia wyższe i o różnym znaku. Logiczna “1” to napięcie z zakresu -3 do -15V Logiczne “0” to napięcie od +3 do +15V
Zwiększenie wartości napięć i zastosowanie napięć o obydwu znakach pozwoliło zwiększyć odporność sygnału na zakłócenia i przesyłać informacje na większe odległości.
Typy urządzeń
Ponieważ interfejs RS232 wywodzi się od modemów ,przy jego opisie stosowana jest terminologia związana z transmisją informacji pomiędzy komputerami przy użyciu modemów. Stąd też wyróżnia się dwa rodzaje urządzeń:
urządzenia DTE (Data Terminal Equipment) będące końcowymi urządzeniami dla przesyłanej informacji (np. komputer)
urządzenia DCE (Data Communication Equipment) pośredniczące między urządzeniem DTE a siecią telekomunikacyjną (modem)
Magistrala Interfejsu
W interfejsie RS-2 32C najczęściej stosowane jest 25-stykowe złącze szufladkowe typu CANNON DB-25P lub DB-25S. Często spotyka się również 9-stykowe złącze szufladkowe typu DB-9, na które wyprowadzono tylko najważniejsze sygnały przeznaczone do asynchronicznej transmisji metodą start-stop.
Topografia wyprowadzeń sygnałów dla łącza RS-232C
Wtyk DB-25 Wtyk DB-9 Nazwa sygnału Kierunek sygnału
1 – Masa ochronna –
2 3 Dane wysyłane (TxD) wy
3 2 Dane otrzymywane (RxD) we
4 7 Gotowość wysłania danych (RTS) wy
5 8 Gotowość przyjęcia danych (CTS) we
6 6 Gotowy zestaw danych (DSR) we
7 5 Masa sygnałowa (SG) –
8 1 Wybrany (RLSD) we
20 4 Urządzenie gotowe (DTR) wy
22 9 Sygnał dzwonienia (RI) we
W magistrali interfejsu RS-232C można wyróżnić kilka grup linii:
linie danych,
linie sterujące,
linie synchronizacji,
linie masy.
Dalej opisano krótko wszystkie linie interfejsu z podziałem na poszczególne grupy. Przy omawianiu linii posługiwano się najczęściej używanymi ich oznaczeniami oraz podawano numer wyprowadzenia w złączu 25-stykowym.
Linie danych RS-232
Do dwukierunkowego przesyłania danych przeznaczone są 4 linie. Dwie z nich (TxD, RxD) tworzą kanał podstawowy, dwie pozostałe (STxD, SRxD) – kanał powrotny, nie wykorzystywany w przypadkach bezpośredniej współpracy komputer-terminal. Funkcje linii kanału podstawowego są następujące:
TxD (2) – dane nadawane. Linia wykorzystywana jest do przesyłania danych przez DTE. Standard wymaga, aby w odstępach między przesyłanymi danymi linia była w stanie logicznym “1 “. Transmisja może odbywać się tylko wtedy, gdy aktywne są sygnały CTS. DSR, DTR i RTS .
RxD (3) – dane odbierane:- Linia wykorzystywana jest do przesyłania danych przez DCE. Linia ta powinna być w stanie logicznym “1”, gdy linia DCD jest w stanie pasywnym. W przypadku jednej linii transmisyjnej między urządzeniami, po której oba urządzenia mogą przesyłać dane (oczywiście nie równocześnie), linia RxD powinna być w stanie “1”, gdy aktywny jest RTS.
Linie sterujące
W tej grupie linii najistotniejsze ze względu na połączenie komputer-terminal są linie przekazujące syąnały gotowości urządzeń do pracy (DSR. DTR) oraz sygnały gotowości do transmijii (RTS, CTS)
DSR (6) – gotowość DCE. Stan aktywny oznacza gotowość DCE do współpracy, tzn. gotowość do wymiany dalszych sygnałów sterujących w celu dokonania transmisji danych. Nie oznacza to jednak, że istnieje gotowy zbiór danych, które DCE chce przesłać do DTE. Jest to jedynie informacja o braku przeszkody do transmisji (nie zaistniał żaden defekt).
DTR l20) – gotowość DTE. Stan aktywny oznacza gotowość DTE do współpracy z DCE, rozumianej podobnie jak dla linii DSR.
RTS (4) – żądanie nadawania. Stan aktywny tej linii oznacza, że DTE zgłasza do DCE żądanie wysyłania danych. Powoduje to załączenie przez DCE sygnału CTS. Dane nie mogą być przesyłane, jeśli nie została aktywnie ustawiona linia CTS. Po przejściu sygnału RTS w stan pasywny nie powinien on zostać powtórnie załączony, dopóki DCE nie wycofa aktywnego sygnału CTS.
CTS (5) – Gotowość do nadawania. Za pomocą tej linii DCE może zgłaszać do DTE swoją gotowość do odbioru danych z DTE. Przy bezpośredniej współpracy terminal-komputer stan aktywny tej linii oznacza gotowość komputera do przyjmowania danych, a przy pracy z modemem – gotowość do nadawania przez DCE informacji do odległego urządzenia DCE.
Linie RTS i CTS mają swoje odpowiedniki wśród linii kanału powrotnego (SRTS i SCTS), nie wykorzystywanego przy bezpośredniej współpracy komputer-terminal.
Na uwagę zasługują również dwie linie związane z poprawnością sygnałów odbieranych: DCD i CG (ozn. zgodnie z RS-232C).
DCD (8) – poziom sygnału odbieranego. Linia ta jest wykorzystywana zasadniczo tylko przy współpracy z modemem. Stan aktywny jest generowany przez modem (DCE) i przekazywany do DTE w przypadku odebrania przez modem poprawnego sygnału częstotliwości nośnej z kanału transmisyjnego, co oznacza, że sygnał odbierany z tego kanału przez DCE znajduje się w zakresie wartości prawidłowych. Przy współpracy komputera z terminalem (urządzeniem) może jednak zachodzić konieczność załączenia stanu aktywnego na tej linii.
Linia DCD (ozn. również RLSD) ma swój odpowiednik w kanale powrotnym: SRLSD (12).
CG (21 ) – jakość sygnału odbieranego. Linią tą są przekazywane dla DTE informacje o jakości sygnału odbieranego z linii transmisyjnej przez DCE. Stan aktywny linii CG informuje, że transmisja danych prawdopodobnie odbywa się bez błędów. Natomiast stan nieaktywny oznacza, że istnieje duże prawdopodobieństwo przekłamania danych.
Pozostałe linie sterujące nie są w zasadzie wykorzystywane w systemach pomiarowych. Dotyczą one wyboru szybkości transmisji przez DTE lub DCE (ozn. CH/CI zgodnie z RS-232C) oraz wskaźnika wywołania RI.
CH/CI (23) – wybór szybkości transmisji. Linia CH/CI służy do wyboru prędkości transmisji między dwiema szybkościami, które mogą być dostępne w przypadku transmisji synchronicznej lub dwoma zestawami prędkości, które mogą być dostępne w przypadku transmisji asynchronicznej. Linia ta może być sterowana albo przez DTE albo przez DCE. DCE może określać szybkość transmisji DTE, natomiast DTE – szybkość transmisji (nadawania i odbioru) realizowanej przez DCE. Jeśli źródłem sygnału jest DTE, a odbiorcą DCE, to linia nosi nazwę CH; w przeciwnym przypadku – CI. Stan aktywny sygnału oznacza wybój większej z dwu dostępnych prędkości lub większego z dwu dostępnych zestawów.
RI (22) – wskaźnik wywołania. Za pomocą tej linii DCE może informować DTE o tym, czy odbiera sygnał z oddalonego DCE.
Linie synchronizacji
Przesyłanie informacji po liniach danych może być realizowane asynchronicznie lub synchronicznie. Przy transmisji synchronicznej wykorzystuje się linie podstawy czasu, którymi przesyłane są tzw. sygnały zegarowe. .
Na złączu 25-stykowym występują trzy linie tego typu, oznaczone zgodnie z RS-232C jako:
DA (24) – podstawa czasu z DTE dla elementów nadawanych,
DB ( 25) – podstawa czasu z DCE dla elementów nadawanych,
DD (17) – elementowa podstawa czasu wytwarzana w DCE.
Pierwsza z nich sterowana jest przez DTE, pozostałe – przez DCE. Linie te umożliwiają:
nadawanie przez DTE danych linią TxD w rytmie własnego zegara (z wykorzystaniem linii DA),
nadawanie przez DTE danych linią TxD w rytmie zegara pochodzącego z DCE (z wykorzystaniem linii DB),
odbieranie przez DTE danych z linii RxD w rytmie zegara DCE (z wykorzystaniem linii DD)
Przy nadawaniu danych przez DTE nie jest oczywiście możliwe wykorzystanie jednoczesne linii DA i DB.
Na liniach DA i DD przejście ze stanu “1”, do stanu “0” powinno wskazywać środek bitu nadawanego odpowiednio przez DTE i DCE, i w ten sposób określać optymalny moment próbkowania bitu przez urządzenie odbierające. Na linii DB przejście ze stanu “0” do “1” powinno wskazywać chwilę, w której urządzenie nadające informację ma zacząć przekazywać nowy bit, czyli określać dla urządzenia nadającego rytm wysyłania bitów.
Wykorzystując linię DA do synchronizacji transmisji należy generować na niej sygnały zegarowe (na przemian “0” i “I” przez równe odcinki czasu) co najmniej wtedy, gdy aktywna jest linia DSR (6) informująca o gotowości DCE do współpracy z DTE. Korzystanie z linii DB i DD wymaga zapewnienia istnienia na nich sygnałów zegarowych w przypadku aktywnego stanu linii DCD, sygnalizującego poprawność sygnału odbieranego.
Linie synchronizacji zwykle nie są konieczne przy transmisji szeregowej między komputerem a przyrządem pomiarowym.
Linie masy
W interfejsie RS-232C rozróżnia się dwie masy:
PG (1 ) – masa ochronna,
SG (7) – masa sygnałowa.
Piersza z nich jest masą zabezpieczającą (ang. Protective Ground), łączoną z obudową urządzenia; druga – masą sygnałową (ang. Signal Ground), stanowiącą odniesienie dla wszystkich pozostałych sygnałów interfejsu.
Złącza RS-232
W komputerach PC używane są dwa rodzaje złącz RS-232. Są to złącza męskie dziewięcio i dwudziestopięcio pinowe typu DB9 i DB25
Łączenie urządzeń
Ujawniły się dwa podstawowe problemy związane z transmisją RS-232.
a) Z punktu widzenia złącza zdefiniowano dwa rodzaje urządzeń w ten sposób, że wejścia urządzenia jednego rodzaju odpowiadają wyjściom urządzenia drugiego rodzaju i na odwrót. praktyce można więc chcieć połączyć ze sobą urządzenia jednakowe lub urządzenia komplentarne.
b) Zdefiniowano pięć sygnałów potwierdzenia (ang. handshaking signals). Niektóre urządzenia wysyłają je i oczekują odpowiedzi na te sygnały, natomiast inne ignorują sygnały handshakingu prowadzane do ich wejść i same ich nie wysyłają. Aby uporać się z tymi problemami, trzeba zrozumieć wszelkie ich niuanse. Przedstawimy teraz
RS-232 wprowadzono w celu znormalizowania połączeń między urządzeniami typu DTE (data terminal equipment”) i urządzeniami typu DCE (“data communication equipment”) Terminal jest zawsze urządzeniem DTE, natomiast modem jest zawsze urządzeniem CDE.
Niestety, inne urządzenia, miedzy innymi mikrokomputery, mogą być jednym i drugim. IBM PC jest urządzeniem typu DTE wyposażonym w męską część złącza, natomiast większość dużych komputerów zachowuje się jak urządzenie typu DCE. Połączenie DTE z DCE jest rozumiane jako złożenie ze sobą obu połówek złącza DB-25 (które mogą być zarówno męskie, jak i żeńskie, i to po obu stronach!). Przy odrobinie szczęścia może się zdarzyć, że łącze będzie działać. Ten łut szczęścia jest potrzebny ze względu na to, że nie wiemy, które linie handshakingu i w jaki sposób wykorzystuje jedno i drugie urządzenie. Oprócz problemów sprzętowych mogą tu jeszcze odegrać swoją rolę problemy z oprogramowaniem, tzn. nawet po pomyślnym rozwiązaniu problemu z kablem trzeba uzgodnić szybkość transmisji, sposób reakcji na bit parzystości itp. Przy łączeniu ze sobą urządzeń tego samego typu nie można zwyczajnie złożyć obu połówek złącza razem, gdyż wtedy zostaną zwarte ze sobą wyjścia obu urządzeń: urządzenie typu DTE ma wyjście na wyprowadzeniu 2, a wejście na wyprowadzeniu 3 złącza, natomiast urządzenie typu DCE – odwrotnie. Dlatego trzeba zastosować specjalny kabel (nazywany “modemem zerowym”), w którym skrzyżowano przewody prowadzące do wyprowadzeń 2 i 3. Niestety, nie wyczerpuje to koniecznych w tym przypadku działań.
Gdyby wszystkie urządzenia pracujące według standardu RS-232 wysyłały i odbierały cały komplet sygnałów, do poprawnej pracy łącza wystarczałoby proste połączenie urządzenia DTE z urządzeniem DCE lub skrzyżowane połączenie urządzeń DTE z DTE lub DCE z DCE. Jeśli jednak połączy się urządzenie całkowicie ignorujące handshaking z urządzeniem oczekującym na sygnały potwierdzeń, transmisja danych nie jest możliwa. Tak więc trzeba przyjąć strategię postępowania odpowiadającą rzeczywistości, co czasami wymaga użycia podstępu. Na rysunku pokazano, w jaki sposób należy wykonać kable, które umożliwią transmisję w każdej sytuacji (ściślej mówiąc, prawie w każdej sytuacji). Połączenia przedstawione na rys. a dotyczą urządzeń DTE i DCE, wymagających pełnego handshakingu. RTS i CTS stanowią jedną parę linii potwierdzeń, a DTR i DSR drugą. Taki sam przypadek, dotyczący dwóch urządzeń z pełnym handshakingiem, lecz obu typu DTE, przedstawiono na rys. c. Tym razem trzeba użyć “modemu zerowego” w celu skrzyżowania odpowiednich linii sygnałowych dwu urządzeń tego samego typu. Kabel wykonany według tego rysunku będzie również odpowiedni do łączenia dwóch urządzeń typu DCE, przy czym dla zachowania porządku należałoby na rysunku odwrócić kierunki strzałek i usunąć połączenia z wyprowadzeniami 8. Kable te nie będą pracować w przypadku, gdy jedno urządzenie wymaga doprowadzenia sygnałów potwierdzających, a drugie ich nie wysyła. Najprostszym sposobem rozwiązania problemu sygnałów potwierdzających jest takie wykonanie kabla, aby każde urządzenie wysyłało i odbierało własne sygnały handshakingu, czyli aby samo sobie zezwalało na transmisję. Jak to należy zrobić, pokazano na rys. b dla pary urządzeń DTE i DCE oraz na rys. d dla . pary urządzeń DTE, DTE (taki kabel jest również dobry dla pary DCE, DCE, lecz należy usunąć połączenia z wyprowadzeniami 8).
Tryby pracy RS-232
Wyróżnić możemy 3 tryby pracy:
Simpleks – transmisja odbywa się tylko w jednym kierunku
Półdupleks – transmisja odbywa się w obu kierunkach na przemian
Dupleks (Pełny dupleks) – transmisja odbywa się w obu kierunkach jednocześnie
Kontrola przepływu danych
Kontrolę przepływu możemy podzielić na :
Sprzętową – za pomocą sygnałów RTS/CTS – urządzenie, które nie może chwilowo odebrać danych (np. ma pełny bufor odbiorczy) dezaktywuje sygnał CTS, co powoduje zatrzymanie transmisji kolejnych znaków ,do czasu ponownego przejścia sygnału CTS w stan aktywny. Wykorzystywane są wszystkie opisane sygnały.
Programową – protokół XON/XOFF – urządzenie aby wstrzymać lub zatrzymać transmisje wysyła do urządzenia transmitującego specjalny znak sterujący. Przy takim rozwiązaniu do transmisji wystarczą tylko linie TxD i RxD , lecz transmisja musi się odbywać w trybie pełnego dupleksu.
Podsumowanie
Interfejs RS-232c powstał spory kawał czasu temu, lecz dzięki dobrym parametrom i sporej popularności przetrwał do dziś. Obecnie jednak widać tendencję odejścia od budowy urządzeń pod ten interfejs na rzecz takich standardów jak USB zapewniających większą prędkość transmisji ,ujednolicenie złącza dla różnych urządzeń oraz możliwość ich łączenia w szereg.