Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

Autor artykułu: mgr Jerzy Wałaszek

©2024 mgr Jerzy Wałaszek
I LO w Tarnowie

Sterowanie za pomocą bitów

RS-232 - port szeregowy

SPIS TREŚCI
Podrozdziały
Słowo RS-232 pochodzi od nazwy angielskiej - Recommended Standard 232 (Polecany Standard 232).  Odnosi się on do protokołu transmisji szeregowej (ang. serial transmission), w której bity są przesyłane kolejno jeden po drugim. Już od ponad 20 lat port szeregowy RS-232 jest stosowany w komputerach PC do podłączania różnych urządzeń - najczęściej modemów i drukarek. Obecnie staje się już przestarzały (podobnie jak port Centronics) i jest systematycznie wypierany przez USB.

Podstawy portu RS-232

Dane są transmitowane tylko w jednym kierunku po danej linii transmisyjnej. Aby zatem zrealizować połączenie dwustronne musimy posiadać dwie linie transmisyjne. Te dwie linie wraz z masą dają trzy linie, co jest minimalną, niezbędną konfiguracją tego portu. Aby połączenie było bardziej stabilne, szczególnie na większych odległościach, port został wyposażony w dodatkowe linie, które służą do przesyłania potwierdzeń odbioru danych. Zatem port RS-232 może składać się z od 3 do 22 sygnałów i może pracować z szybkością od 100 bodów do 20 kilo bodów (1 kb = 1000 bitów na sekundę) . Standardowe prędkości transmisji to 2,4k, 9,6k i 19,2k. W użyciu są również wyższe prędkości transmisji - 38,4k i 57,6k, lecz standard ich nie pokrywa - mimo to mogą być stosowane. Kabel RS-232 może posiadać długość do około 17 metrów.

Dane są transmitowane szeregowo (tzn. bit po bicie) w jednym kierunku po parze przewodów. Linia danych wychodzących jest nazywana Tx (ang. transmission - nadawanie) , natomiast linia danych wchodzących ma nazwę Rx (ang. reception - odbiór) . Najprostszy, dwukierunkowy system komunikacyjny wymaga tylko trzech linii: Tx, Rx i GND (ang. ground - masa) . Skrzyżowanie linii danych Tx i Rx pomiędzy dwoma systemami pozwala im się nawzajem porozumiewać:

obrazek

Każdy bajt może być wysłany w dowolnej chwili. Nie jest on synchronizowany z odbiornikiem - mówimy, że jest to szeregowa transmisja asynchroniczna, w której nie ma sygnału zegarowego. Dlatego nadajnik i odbiornik muszą na obu końcach być ustawione w dokładnie taki sam sposób, inaczej strumień bitów zostałby źle odczytany. Bity są wysyłane poprzez odpowiednie ustawienie napięcia elektrycznego na linii Tx:

+ 12 V  - transmitowany bit 0
- 12 V  - transmitowany bit 1

Czas transmisji bitu zależy od ustalonej szybkości transmisji - ten parametr muszą zawsze wynegocjować urządzenie nadawcze z odbiorczym. Gdy nic nie jest transmitowane, linia Tx jest utrzymywana w stanie -12V. Przed rozpoczęciem transmisji bajtu wysyłany jest bit startowy o wartości 0 - linia Tx skacze do napięcia +12V. Bit ten nie wchodzi w skład transmitowanego bajtu. Jego zadaniem jest poinformowanie odbiornika, że transmisja się rozpoczęła. Po bicie startu są wysyłane kolejne bity bajtu danych - od najmłodszego do najstarszego. Liczba przesyłanych bitów zależy od wybranego rodzaju transmisji, może to być 5, 7 lub 8 bitów danych. Po przesłaniu bitów danych może być przesyłany bit parzystości lub nieparzystości:

  • bit parzystości ma wartość 0, gdy liczba bitów 1 w danych jest parzysta, lub 1, gdy liczba bitów 1 w danych jest nieparzysta:
        00111010 0
        00101010 1
  • bit nieparzystości ma wartość 0, gdy liczba bitów 1 w danych jest nieparzysta, lub 1, gdy liczba bitów 1 w danych jest parzysta
        00111010 1
        00101010 0

Na końcu transmisji bajtu przesyłany jest przynajmniej jeden bit stopu o wartości 1 - linia Tx przechodzi w stan -12V, w którym może pozostać, jeśli transmisja danych się zakończyła.

Poniższy rysunek przedstawia transmisję na linii Tx znaku K o kodzie 7510 = 010010112. Do 8 bitów został dodany bit parzystości 0. W sumie przesyłane są kolejno bity 110100100 - od najmłodszego b0 do najstarszego b7 = bit parzystości bp.

obrazek

Odstęp czasu pomiędzy poszczególnymi bitami jest dla odbiornika bardzo ważny i musi być utrzymywany. To na jego podstawie odbiornik próbkuje stan swojej linii Rx w połowie okresu przesyłania bitu. Odstęp ten zależy od wybranej szybkości transmisji. Na przykład dla 19200 bodów czas transmisji pojedynczego bitu to:

tbit = 1 sekunda / 19200 = 0,000052 sek = 52 µs

Aby obliczyć szybkość transmisji portu RS-232 w bajtach, należy wziąć pod uwagę kilka czynników:

Załóżmy, że szybkość transmisji wynosi 19200 bodów (bitów na sekundę). Transmisja odbywa się bez bitu parzystości oraz z jednym bitem stopu. Zatem przesłanie pojedynczego bajtu wymaga przesłania 10 bitów: 1 bit startu, 8 bitów danych oraz 1 bit stopu. Otrzymujemy:

19200 / 10 = 1920 bajtów na sekundę

Teraz załóżmy, iż w transmisji wykorzystujemy bit parzystości/nieparzystości. Liczba transmitowanych bitów wzrasta do 11. Zatem

19200 / 11 = 1745 bajtów na sekundę

Jeśli w transmisji dodatkowo wymagane są dwa bity stopu przed rozpoczęciem kolejnej transmisji, to liczba przesyłanych bajtów wzrasta do 12 i otrzymujemy:

19200 / 12 = 1600 bajtów na sekundę

Na początek:  podrozdziału   strony 

Złącze RS-232

Komunikacja poprzez złącze RS-232 odbywa się najczęściej pomiędzy terminalem a modemem. Terminal jest urządzeniem aktywnym, które tworzy i przyjmuje dane. W terminologii telekomunikacyjnej oznacza się go skrótem DTE (ang. Data Terminal Equipment). W naszym przypadku terminalem jest komputer PC lub stacja robocza. Modem jest urządzeniem komunikacyjnym i oznacza się go skrótem DCE (ang. Data Communication Equipment). Modem jest urządzeniem biernym, podporządkowanym terminalowi. Rozróżnienie to jest istotne z tego powodu, iż sygnały w porcie RS-232 są oznaczane z punktu widzenia urządzenia DTE. Na przykład linia TxD (ang. transmitted data) na urządzeniu DTE jest wyjściem danych, a na urządzeniu DCE jest wejściem danych. Z kolei linia RxD (ang. received data) jest na urządzeniu DTE wejściem danych, a na urządzeniu DCE wyjściem.

obrazek

Jak sprawdzić, czy nasz port RS-232 jest w trybie DTE? Wystarczy zmierzyć napięcie na końcówce TxD. Dla DTE powinno wynosić około -12V (stan nieaktywny). W przypadku DCE końcówka ta jest wejściem i nie produkuje napięcia - zmierzone napięcie będzie w granicach 0V. Nie polecam tej operacji osobom początkującym - łatwo można coś uszkodzić w komputerze - OSTRZEGŁEM!

Złącze RS-232 pierwotnie zaprojektowano dla wtyku i gniazda 25 końcówkowego DB25. W standardzie uwzględniony został drugi kanał komunikacyjny. W praktyce jednak stosuje się pojedynczy kanał wraz z jego sygnałami potwierdzeń. Na komputerach osobistych PC stosowana jest wersja 9 końcówkowa DB9 i nią się tutaj głównie zajmiemy. Po stronie komputera stosuje się wtyczki DB9 typu male (męskie) z bolcami. Kable posiadają wtyki DB9 female (żeńskie) z otworami na wtyki. Numerki wtyku/otworu są zwykle umieszczane na wtyczce - czasami należy posłużyć się lupą, aby je poprawnie odczytać.

obrazek obrazek
Gniazdo DB25 Female Wtyczka DB25 Male
obrazek obrazek
Gniazdo DB9 Male Wtyczka DB9 Female

Na początek:  podrozdziału   strony 

RS-232 DB25

obrazek   1. FGND (Frame Ground)  - wspólna masa
  2. TxD (Transmit Data)  - wysyłane dane
  3. RxD (Receive Data)  - odbierane dane
  4. RTS (Request To Send)  - żądanie wysłania danych
  5. CTS (Clear To Send)  - gotowość na przyjęcie danych
  6. DSR (Data Set Ready)  - zestaw danych gotowy
  7. SGND (Signal Ground)  - masa sygnałowa
  8. CD (Carrier Detect)  - wykrycie sygnału nośnego
  12. SDCD (Secondary Carrier Detect)  - wykrycie sygnału nośnego w drugim kanale
  13. SCTS (Secondary Clear to Send)  - gotowość na przyjęcie danych w drugim kanale
  14. STxD (Secondary Transmit Data)  - wysyłane dane w drugim kanale
  15. TCLK (Transmit Clock)  - nadawczy sygnał zegarowy dla transmisji synchronicznej
  16. SRxD (Secondary Receive Data)  - odbierane dane w drugim kanale
  17. RCLK (Receive Clock)  - odbiorczy sygnał zegarowy dla transmisji synchronicznej
  19. SRTS (Secondary Request To Send)  - żądanie wysłania danych w drugim kanale
  20. DTR (Data Terminal Ready)  - gotowość terminalu
  21. RL/SQ (Signal Quality detector)  - czujnik jakości sygnału
  22. RI (Ring Indicator)  - wskaźnik dzwonka dla modemu telefonicznego
  23. CH/CI (Signal Rate Selector)  - wybór szybkości sygnału
  24. ACLK (Auxiliary Clock)  - zegar pomocniczy dla drugiego kanału

Na początek:  podrozdziału   strony 

RS-232 DB9

obrazek 1. CD (Carrier Detect)  - wykrycie sygnału nośnego
2. RxD (Receive Data)  - odbierane dane
3. TxD (Transmit Data)  - wysyłane dane
4. DTR (Data Terminal Ready)  - gotowość terminalu
5. SGND (Signal Ground)  - masa sygnałowa
6. DSR (Data Set Ready)  - zestaw danych gotowy
7. RTS (Request To Send)  - żądanie wysłania danych
8. CTS (Clear To Send)  - gotowość na przyjęcie danych
9. RI (Ring Indicator)  - wskaźnik dzwonka dla modemu telefonicznego
  FGND (Frame Ground)  - wspólna masa

Na początek:  podrozdziału   strony 

Wtyczka testowa RS232 z pętlą zwrotną

Poniższe połączenie złącza RS-232 female (żeńskie) może być stosowane do testów portu szeregowego na twoim komputerze. Linie danych i potwierdzeń zostały połączone. W ten sposób wysyłane dane trafią natychmiast z powrotem do portu. Test można wykonać za pomocą standardowego oprogramowania komunikacyjnego.

obrazek

Druga wersja umożliwia pełne przetestowanie portu RS-232 za pomocą programów diagnozujących - np. Norton Diagnostics lub Chekit.

obrazek

Testowanie odbywa się w kilku krokach. Dane zostają wysłane przez linię TxD, a odebrana informacja z linii RxD jest następnie porównywana z danymi wysłanymi. Zaletą drugiej wersji jest możliwość przetestowania linii RI, która służy do reakcji na sygnał dzwonka w modemie telefonicznym, który pojawia się przy próbie nawiązania połączenia zewnętrznego.


Na początek:  podrozdziału   strony 

Kable modemu zerowego RS-232

Najprostszym sposobem połączenia ze sobą dwóch komputerów PC przez złącze RS-232 jest wykorzystanie tzw. kabla modemu zerowego (ang. null modem cable). Nazwa pochodzi stąd, iż fizycznie w tym połączeniu nie występuje żaden modem - wystarczają same kable. Najprostsze połączenie wymaga jedynie trzech linii: TxD, RxD oraz GND. Nie są używane sygnały potwierdzające.

obrazek

Złącze 1 Złącze 2 Funkcja
2 3 Rx ← Tx
3 2 Tx → Rx
5 5 Masa sygnałowa

Jeśli oprogramowanie komunikacyjne wymaga obecności sygnałów potwierdzających, można zastosować poniższy kabel modemu zerowego, w którym zostały zapętlone sygnały potwierdzeń. Zaletą jest stosowanie tylko trzech przewodów do transmisji danych.

obrazek

Złącze 1 Złącze 2 Funkcja
2 3 Rx ← Tx
3 2 Tx → Rx
5 5 Masa sygnałowa
1 = 4 = 6 - DTR → CD = DSR
- 1 = 4 = 6 DTR → CD = DSR
7 = 8 - RTS → CTS
- 7 = 8 RTS → CTS

Kolejny kabel tworzy modem zerowy z częściowym potwierdzeniem transmisji.

obrazek

Złącze 1 Złącze 2 Funkcja
1 7 = 8 RTS2 → CTS2 = CD1
2 3 RxD ← TxD
3 2 TxD → RxD
4 6 DTR → DSR
5 5 Masa sygnałowa
6 4 DSR ← DTR
7 = 8 1 RTS1 → CTS1 = CD2

I na koniec kabel modemu zerowego ze wszystkimi sygnałami potwierdzającymi.

obrazek

Złącze 1 Złącze 2 Funkcja
2 3 RxD ← TxD
3 2 TxD → RxD
4 6 DTR → DSR
5 5 Masa sygnałowa
6 4 DSR ← DTR
7 8 RTS → CTS
8 7 CTS ← RTS

Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2024 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.