RS-232

Z Wikipedii, wolnej encyklopedii
(Przekierowano z RS232C)
RS-232C
Ilustracja
Wtyczka DE-9 używana do połączeń szeregowych wg standardu RS-232
Typ interfejsu

szeregowy

Transfer

typ. do 115,2 kb/s (w niektórych implementacjach, np. modemy jako karty wewn., do 230,4 kb/s), w trybie synchronicznym do 1 Mb/s

Długość magistrali

do ok. 15 m (nie określono w standardzie)

Liczba portów

typowo 1 lub 2

Liczba urządzeń

jedno na każdy port

Rodzaj złącza

DE-9 lub DB-25

Zasilanie przez interfejs

nie

Hot plugging

nie

Zastosowanie
modemy, telefony komórkowe, łączenie dwóch komputerów kablem null modem, starsze drukarki, Tunery satelitarne, sprzęt specjalistyczny, diagnostyka samochodowa, programowanie układów logicznych
Port szeregowy (RS-232) gniazdo męskie
Wtyk żeński RS-232

RS-232 lub EIA-232 – standard szeregowej transmisji danych między urządzeniami elektronicznymi[1][2]. Opisuje sposób połączenia urządzeń DTE (ang. Data Terminal Equipment) tj. urządzeń końcowych danych (np. komputer) oraz urządzeń DCE (ang. Data Communication Equipment), czyli urządzeń komunikacji danych (np. modem).

Standard określa nazwy styków złącza oraz przypisane im sygnały a także specyfikację elektryczną obwodów wewnętrznych. Standard ten definiuje normy wtyczek i przewodów portów szeregowych typu COM.

Standard RS-232 (ang. Recommended Standard) opracowano w 1962 roku na zlecenie amerykańskiego stowarzyszenia producentów urządzeń elektronicznych (Electronic Industries Alliance) w celu ujednolicenia parametrów sygnałów i konstrukcji urządzeń zdolnych do wymiany danych cyfrowych za pomocą sieci telefonicznej[3].

RS-232 jest magistralą komunikacyjną przeznaczoną do szeregowej transmisji danych. Najbardziej popularna wersja tego standardu, RS-232C pozwala na transfer na odległość nie przekraczającą 15 m z szybkością maksymalną 20 kb/s[3].

W przypadku komputerów PC porty RS-232 początkowo obsługiwane były przez układy 8250 (PC, XT), później 16450 (AT, 80386, pierwsze i486), następnie przez zintegrowane z płytą główną 16550A. Układy te są ze sobą wstecznie zgodne, jednak kolejne wersje mają coraz większy bufor FIFO. Układ 16550A ma standardowo bufor 2×16 bajtów. Zwiększenie długości kolejki FIFO skutkowało obniżeniem częstotliwości przerwań generowanych przez port przy przesyłaniu danych. Na potrzeby zastosowań profesjonalnych (np. równoczesna obsługa wielu szybkich modemów w systemach typu BBS) stosowano często specjalizowane karty RS-232 z jeszcze większymi buforami (np. 16650 czy karty procesorowe). Znane były rozwiązania pozwalające na podłączenie do 1024 urządzeń RS-232, przy zachowaniu pełnej prędkości przez port i buforami rzędu 1024 bajty na port. Część kart tego typu pozwalała także na ustawianie wyższego zegara wskutek czego prędkości układu był większe niż ustawienia standardowe – przy dużej wielkości kolejki FIFO pozwalało to na uzyskiwanie dużych (często niestandardowych – jak w przypadku modemów ZyXel 76800 b/s) prędkości. Spotkać można było na rynku modemy komunikujące się z portem RS-232 z prędkościami do 421 kb/s, a nawet 921,6 kb/s (np. Yuko, Goramo).

Specyfikacja napięcia definiuje „1” logiczną jako napięcie -3 V do -15 V, zaś „0” to napięcie +3 V do +15 V[4]. Poziom napięcia wyjściowego natomiast może przyjmować wartości -12 V, -10 V, +10 V, +12 V, zaś napięcie na dowolnym styku nie może być większe niż +25 V i mniejsze niż -25 V. Zwarcie dwóch styków RS-232 nie powinno powodować jego uszkodzenia. W praktyce warunek ten nie zawsze jest przestrzegany.

Sygnały w PC[edytuj | edytuj kod]

Widok gniazda PC (męskiego) typu DE-9
Numer Kierunek Oznaczenie Nazwa angielska Nazwa polska
9 pin 25 pin
1 8 DCE → DTE DCD Data Carrier Detected poziom sygnału odbieranego[5]
2 3 DCE → DTE RxD Receive Data dane odbierane[5]
3 2 DCE ← DTE TxD Transmit Data dane nadawane[5]
4 20 DCE ← DTE DTR Data Terminal Ready gotowość DTE[5][a]
5 7 DCE – DTE GND Signal Ground masa sygnałowa[5]
6 6 DCE → DTE DSR Data Set Ready gotowość DCE[5][a]
7 4 DCE ← DTE RTS Request to Send Data żądanie nadawania[5]
8 5 DCE → DTE CTS Clear to Send Data gotowość do nadawania[5]
9 22 DCE → DTE RI Ring Indicator wskaźnik wywołania[5]
  9-19; 21; 23-25   NC   niewykorzystane[b]

Zworki na wtyku kontrolnym[edytuj | edytuj kod]

9 pin 25 pin
2--3 2--3
7--8 4--5
1--4--6 6--8--20

Podłączenie do PC (lub innego DTE) tak wykonanego wtyku powoduje, że dostaje on z powrotem wszystkie wysłane dane – taki wtyk służy do testowania poprawności działania portu RS-232 w DTE.

Protokoły transmisji danych[edytuj | edytuj kod]

Asynchroniczny: stan nieaktywny linii odpowiada logicznej 1, każdy bajt jest przesyłany niezależnie, jest poprzedzony bitem START (stan 0), po którym są przesyłane bity danych począwszy od najmniej znaczącego[3] (stosuje się bajt od 5 do 9 bitów), po nich opcjonalnie bit parzystości [3] (do wyboru: tak, by łączna liczba jedynek w danych i tym bicie była parzysta (Even Parity), albo nieparzysta (Odd Parity), albo by miał określoną wartość 0 albo 1 (Stick Parity) - łącznie 4 możliwości), na koniec bit (lub bity) STOP[3] (stan 1; dla słowa 5-bitowego 1 lub 1,5 bitu, dla dłuższych 1 lub 2; jest to gwarantowany odstęp przed bitem START następnego bajtu, może on jednak być dowolnie długi); bity mają jednakowy czas trwania określony przez stronę wysyłającą, strona odbierająca odmierza czas od zbocza 1→0 na początku bitu start i próbkuje stan w połowie długości bitu; wykrycie wartości '1' w połowie bitu START jest interpretowane jako „fałszywy start”; wykrycie wystąpienia '0' pół odstępu czasu po rozpoczęciu bitu STOP jest interpretowane jako „błąd ramki” (framing error).

Synchroniczny: DCE (modem) podaje sygnały TxC (nie musi go podawać, lub może być nieprawidłowy, kiedy nie daje CTS) i RxC (nie musi go podawać, lub może być nieprawidłowy, gdy nie daje DCD), a DTE (terminal) wysyła (TxD) lub odbiera (RxD) kolejne bity danych; żeby ustalić przy odbieraniu, gdzie jest granica bajtów, dane są poprzedzone serią bajtów SYN (0x16 - DTE musi analizować je i wykryć, o ile bitów trzeba przesunąć dane, by uzyskać taką wartość), po których następuje znak rozpoczynający pakiet danych (np. SOH - 0x01) i kolejne bajty, bez możliwości „zaczekania” (najwyżej z możliwością wysłania danych nieznaczących); dane mają strukturę określającą ich przeznaczenie (np. dane do wyświetlenia, dane do wydrukowania, sterowanie terminalem – to, co w protokole TCP/IP określa „port”), i gdzie jest ich koniec; zwykle dla kontroli poprawności transmisji pakiet zawiera dodatkowe dane do jej sprawdzenia, czasem jest to różnica symetryczna wszystkich bajtów, częściej CRC; z powodu konieczności synchronizacji przesyłanie danych wyłącznie pakietami; liczba bitów pomiędzy pakietami nie musi być wielokrotnością bajta.

Modemy half- i full-duplex[edytuj | edytuj kod]

RS-232 (niesymetryczny) został przedstawiony w roku 1962 i pomimo pogłosek o jego przedwczesnym wycofaniu, pozostał szeroko używany w przemyśle. Według specyfikacji RS-232 zezwala na przesyłanie danych od nadajnika do odbiornika ze stosunkowo niskim transferem (do 20 kb/s), z maksymalną prędkością na krótkich odcinkach (do 15 m) W celu nawiązania komunikacji full-duplex ustalane są niezależne kanały transmisyjne. Sygnały RS-232 są przedstawione za pomocą poziomów napięcia, mierzone względem wspólnego poziomu masy. Stan nieaktywny „idle" („MARK”) ma ujemny poziom sygnału, natomiast stan aktywny „active” („SPACE”) ma dodatni poziom sygnału. RS-232 posiada sporą liczbę linii synchronizujących transmisję (głównie używane z modemami), oraz określony protokół komunikacyjny. Podłączenie urządzenia do modemu bez wyłączenia obsługi linii synchronizujących (programowo lub sprzętowo) może przysporzyć wiele problemów. Sygnał RTS (żądanie nadawania) jest użyteczny w pewnych określonych aplikacjach.

Sygnały RS-232 są przedstawione za pomocą poziomów napięcia, mając na względzie wspólny poziom masy. Ten typ sygnałów sprawdza się dobrze w komunikacji pomiędzy dwoma stacjami (point to point) przy niskiej prędkości przesyłania danych. Porty RS-232 w komputerze PC są przypisane do pojedynczego urządzenia. Port COM1 może być portem myszki, a port COM2 może być użyty do podłączenia modemu. Jest to przykład komunikacji między dwoma stacjami (point to point) (jeden port komunikuje się z jednym urządzeniem). Sygnały RS-232 wymagają wspólnego „zera” pomiędzy komputerem PC a przyłączonym urządzeniem. Długość przewodów powinna być ograniczona do 30–60 m przy przesyłaniu asynchronicznym oraz 15 m przy przesyłaniu synchronicznym (co w pewnych przypadkach może powodować zakłócenia). Przesyłanie synchroniczne posiada zegar nadawania i odbierania, który ogranicza maksymalną długość linii synchronizującej. Pokrótce, port RS-232 został stworzony do komunikacji z urządzeniami lokalnymi i obsługuje jedno urządzenie transmisyjne (DCE) i jedno końcowe (DTE).

Modem full-duplex może jednocześnie odbierać i wysyłać, DTE współpracujący z takim modemem zwykle włącza na stałe sygnał RTS, aby uniknąć opóźnień na synchronizację modemów.

Modem half-duplex nie może robić obu tych rzeczy naraz – podanie RTS powoduje odczekanie na przerwę w sygnale nośnym (DCD) i wysłanie sygnału nośnego – po uzyskaniu stabilnego połączenia do wysyłania z modemem z drugiej strony modem podaje sygnał CTS; po zakończeniu wysyłania danych (ale nie wcześniej) DTE musi wyłączyć RTS, aby modem przestał wysyłać sygnał nośny i pozwolił, by modem z drugiej strony mógł rozpocząć wysyłanie.

Różne warianty złącz[edytuj | edytuj kod]

Sygnał Nadawca DB-25 DE-9
(TIA-574)
8P8C („RJ45”) 10P10C („RJ50”) Alternatywne funkcje
Nazwa Oznacz. DTE DCE TIA-561 Yost MMJ Cisco[6] Hirsch- mann Cycla- des[7] National Instr[8]. Cycl- ades[7] Digi[9]
Common Ground G 7 5 4 4,5 3,4 4,5 4 4 6 5 7 -
Protective Ground PG 1 - - - - - - - - 1 4 -
Transmitted Data TxD 2 3 6 3 2 3 3 3 8 4 5 -
Received Data RxD 3 2 5 6 5 6 5 6 9 7 6 -
Data Terminal Ready DTR 20 4 3 2 1 2 - 2 7 3 9 -
Data Set Ready DSR 6 6 1 7 6 7 - 8 5 9 2 (alt 10) -
Request To Send RTS 4 7 8 1 - 1 (tylko Aux) - 1 4 2 3 Ready To Receive (RTR)
Clear To Send CTS 5 8 7 8 - 8 (tylko Aux) - 5 3 6 8 -
Carrier Detect DCD 8 1 2 7 - - - 7 10 8 10 (alt 2) -
Ring Indicator RI 22 9 1 - - - - - 2 10 1 -

Uwagi[edytuj | edytuj kod]

  1. a b Nazwa sygnału DSR bywa mylnie tłumaczona jako „wypełniony bufor (gotowość transmisji)”, a DTR jako „przetworzono dane (gotowość odbioru)” – w rzeczywistości oznaczają one gotowość urządzeń do pracy (czyli, że mają włączone zasilanie i wykonały reset po włączeniu) – angielskie nazwy „Data Set” i „Data Terminal” oznaczają urządzenia, a nie ich stany.
  2. Sygnały te nie są wykorzystywane przy łączności asynchronicznej (standardowy PC miał tylko taką) – łączność synchroniczna używała jeszcze innych sygnałów, np. zegarowych do odbioru i wysyłania danych (RxC i TxC), które przy łączności asynchronicznej są zbędne.

Przypisy[edytuj | edytuj kod]

Bibliografia[edytuj | edytuj kod]

  • Burkhard Kainka, Messen, Steuern, Regeln über die RS 232-Schnittstelle, Franzis Verlag, 1997, ISBN 3-7723-6058-0.
  • Joe Campbell, V 24 / RS-232 Kommunikation, Sybex-Verlag, 1984, ISBN 3-88745-075-2.
  • Wojciech Mielczarek, Szeregowe interfejsy cyfrowe, Gliwice: Helion, 1993, ISBN 83-85701-23-0.

Linki zewnętrzne[edytuj | edytuj kod]