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).
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 | |
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 |
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
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][uwaga 1] |
5 | 7 | DCE – DTE | GND | Signal Ground | masa sygnałowa[5] |
6 | 6 | DCE → DTE | DSR | Data Set Ready | gotowość DCE[5][uwaga 1] |
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[uwaga 2] |
Zworki na wtyku kontrolnym
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
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
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
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
- 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.
- 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
Bibliografia
Linki zewnętrzne
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.