{{ wiki:comm:rs232_1.png|RS-232 cable}} ====== RS-232 ====== {{tag>busz rs_232}} en: Recommanded Standard 232 ===== Alapok ===== Az RS-232 szabványt az Electronic Industries Association (EIA), az USA Villamosipari Szövetsége fejlesztette ki. A szabvány nevében az RS betűk a Recommanded Standard, azaz Ajánlott Szabvány kezdőbetűit jelentik, a végén lévő betű pedig az ajánlás különböző módosított, felújított változatait jelenti. Az RS-232 szabvány első változatát 1962-ben vezették be, majd ezt követték a módosítások, melyek közül a harmadik a legismertebb, az EIA **RS-232-C** szabvány 1986-ból. Ezt felváltotta a TIA/EIA-232-E (**RS-232-E**) melynek megjelentek az európai megfelelői a CCIT/ITU V.24 illetve DIN 66020 valamint az ISO IS2110. A legújabb ajánlás a TIA/EIA-232-F (**RS-232-F**), ennek Európában a ITU-T V.24, és az ISO/IEC 2110 felel meg. Gyakorlatilag az RS-232 a legrégebben használt, de máig „kiirthatatlan” szabvány a kommunikációban. Az RS-232 jellemzően duplex kommunikációt biztosít a pont - pont ([[hu:comm:start#p2p|p2p]]) kapcsolatban résztvevő két állomás között. Az RS-ek (232, 422, 485) paramétereinek összevetését [[bus_rs|itt találja]]. ==== Az RS 232 előnyei és hátrányai ==== **előnyei** * olcsó * széles körben elterjedt **hátrányai** * többszörös test-potenciálok: sokszor potenciálban jelentősen eltérő készülékeket kell összekötni; ilyenkor a GND vezetéken jelentős feszültség(különbség)ek kóvályoghatnak. Érdemes ezekben az esetekben opto-t iktatni a kommunikációba. * érzékeny a zajokra: Ez a probléma jelentősen csökkenthető a közös GND-re a vezeték mindkét végén lekötött árnyékolással. * rövid távolságra alkalmazható: Jellemzően (ajánlás szerint) 15m-ig alkalmazható, de árnyékolt vezetékkel (és zavarmentes környezetben) ez kihúzható 30 méterig is. Alacsony kapacitású vezetékkel akár a 100 méterre is rá lehet próbálkozni (lásd [[hu:comm:start#baudrata|baudráta]]). Klasszikus megoldás még az RS-232-t RS422-re átkonvertálni (majd a másik oldalon visszakonvertálni), így a távolság 1200 m-re emelhető; ennek hivatalos neve: V.35 interface. * lassú ==== Az RS 232 jellemzői ==== Az RS szabványok összehasonlítását [[bus_rs|itt találja]]. ^ ^RS-232| ^Működési mód|[[hu:comm:start#asszinkron|asszinkron átvitel]]| ^Meghajtók és vevők\\ száma egy vonalon|1 meghajtó\\ 1 vevő (pont-pont)| ^Adatátvitel módja|[[hu:comm:start#half_duplex|félduplex]],\\ [[hu:comm:start#full_duplex|full-duplex]]| ^Adatátvitel|[[hu:comm:start#p2p|p2p]]| ^Max. kábelhosszúság|15 m| ^Max. adatátvitel\\ 12 m\\ 1200 m|\\ 20 kbps\\ (1 kbps)| ^Max. jelváltozási\\ sebesség (slew rate)|30 V/μs| ^Vevő bemeneti\\ ellenállás|3..7 kΩ| ^Meghajtó terhelés-\\ impedancia|3..7 kΩ| ^Vevő "holtsáv"|±3 V| ^Vevő feszültségszint|±15 V| ^Meghajtó kimenő\\ feszültség max.|±25 V| ^Meghajtó kimenő\\ feszültség min. (terheléssel)|±5 V| ^Meghajtó kimeneti\\ rövidzárási áram limit|500 mA\\ Vcc vagy Test felé| ^Vevő hiszterézis|1,15 V| ===== RS-232 OSI modell ===== ^Szint^Magyarul^Németül^Angolul| |7|Alkalmazási réteg|Anwendungsschicht|Application layer| |6|Megjelenítési réteg|Darstellungsschicht|Presentation layer| |5|Viszonylati réteg|Kommunikationssteuerungsschicht|Session layer| |4|Forgalmazási réteg|Transportschicht|Transport layer| |3|Hálózati réteg|Vermittlungsschicht|Network layer| |2|Adatkapcsolati réteg|Sicherungsschicht|Data Link layer| |1|Fizikai réteg|Physikalische Schicht|Physical layer| Az RS-232 átvitel - csakúgy, mint az összes, RS-ben definiált protokoll - a fizikai réteg szerepét tölti be, a jelprotokoll nem kerül ebben definiálásra - meglehetősen sok protokoll esetében ([[file:///D:/www.ob121.com/bus_collection.html#abb_procontic_t200|ABB  Procontic T200]], [[bus_collection#bacnet|BACnet]], [[file:///D:/www.ob121.com/bus_collection.html#buep19|BÜEP19]], [[file:///D:/www.ob121.com/bus_collection.html#melsec_a|Melsec]],.. [[bus_view|ezekről bővebben itt talál áttekintést]]). Az RS-232-öt magában, "csupaszon" is lehet alkalmazni, de ebben az esetben a fizikai réteg feletti feladatok megvalósítását nekünk kell megoldanunk. ==== Maximális adatátviteli távolság ==== A lenti értékek [[bus_cable_connectors#utp|UTP]] [[bus_cable_connectors#eiatia_568|CAT-5]] vezetékkel - 55 pF/m - rel valósíthatók meg. |maximális [[hu:comm:start#baudrate|baud]][[hu:comm:start#baudrate|ráta]]|  2.400|4.800 |9.600 |19.200 |57.600 |115.200 | |maximális távolság|900 m|300 m|152 m|15 m|5 m|< 2 m| Nagyobb áthidalandó távolság esetén érdemes olyan hálózati eszközt beiktatni a két végpont közé, ami alkalmas annak átvitelére. Egyszerű és kézenfekvő, hogy a két végpontban [[bus_ethernet#tcpip|TCP/IP]]-re konvertáljuk az RS-232-nket, így viszonylag olcsón, gyakorlatilag bármekkora távolságra (akár az interneten is) átvihetjük a szükséges jeleket. ==== RS 232 jelrátája ==== Az átviteli ráta / távolság hányadosa jelentősen függ az alkalmazott vezeték minőségétől és a vonali erősítők ([[bus_units#repeater|repeater]]-ek) számától. A lenti görbék pusztán jellemző értékeket jelenítenek meg. {{wiki:comm:rs_signal_rate.png?562x383|RS-232, RS-422, RS-485 compare signal rates }}  ==== Adatjel állapotok ==== ^ ^{{wiki:comm:rs232_jelszint.png?346x299|RS-232 signal levels}}^{{wiki:comm:rs232_2.png?236x149|space / mark level}}| * Adatjel (TXD) Space, feszültségszint **+3V** - **+15V**Logikai **0** jel, ellenőrző jel (RTS, DTR): ON * Adatjel (TXD) Mark, feszültségszint **-3V** - **-15V**Logikai **1** jel, ellenőrző jel (RTS, DTR): OFF * Holtsáv, feszültségszint **-3V** - **+3V** Az RS-232 kommunikációba a szabvány szerint beépítettek egy holtsávot, ez a +3V - -3V tartomány. Ennek feladata a zajelnyelés, a voltaképpeni jeleket csak az ebből a sávból kimozduló feszültségszintek produkálnak. A pozitív irányba kimozduló feszültség logikai "0" jelet, un. space-t hoz létre, negatív irányban pedig logikai "1"-et, mark-ot generál. A feszültségszint mindkét irányban 15V-ig terjedhet, de jellemzően a készülékek nagy része +/- 5V feszültséggel kommunikál. ==== Adatátvitel ==== Az RS-232 [[bus_rs232#szinkron_asszinkron|aszinkron adatátvitel]]t alkalmaz, ezért az átvitelhez szükséges a start-, stopbit alkalmazása. Ennek menetét egy példán keresztül szeretném bemutatni: {{wiki:comm:rs232startstop.png?456x166|RS-232 data transfer}}A fenti ábrán egy [[raktar#ascii_tabla|ASCII]] "G" betű átvitelét próbálom szemléltetni. Ebben az esetben a G betű a távirat tartalma, így ezt határolják a stop- és start bitek. Az RS-232 beállítása : **8O1**. (a jellemző alapbeállítás 8N1) 1: Nyugalmi helyzetben a vonal "SPACE", logikai 1 állapotban található. 2: A táviratokat mindig a szinkronizációhoz szükséges startbit vezeti be, ez egy "MARK", logikai 0 alkalmazása 3: Itt következik a tartalom átvitele. Mivel minden byte-ot az LSB-vel (least significant bit) kell kezdeni és az MSB-vel (most significant bit) zárni, így a bitsorrend megfordul ("G" - hex 47 - "01000111" → "11100010") 4: A paritás bit alkalmazása opcionális (és nem is ad túl nagy biztonságot), mindenesetre * "**O**" (odd - páros) beállítás esetén, ha az átvitt 1-esek száma páros - mint fent - a paritás értéke 1 lesz. * "**E**" (even - páratlan) beállítás esetén ha az átvitt 1-esek száma páratlan - lesz a paritás értéke 1. A fenti példán "E" beállítás esetén a paritás 0 lett volna. * "**N**" (none - nincs) beállítás esetén a telegram nem tartalmaz paritás bitet. Jellemzően alapbeállítás. 5: A stopbit vagy stopbitek zárják a telegramot egy "SPACE" logikai 1-gyel. A stopbiteknél az alábbi opciókból választhatunk: * 1 Stopbit : A telegramot egy "SPACE" zárja. Alapértelmezett. * 2 Stopbit : A telegramot két "SPACE" zárja. Olyankor szokták alkalmazni, ha a telegramot azonnal fel kell dolgoznia a vevőnek, így adnak a feldolgozásra egy kicsivel több időt. 6: Ismét nyugi. A fenti esetben 1 [[hu:comm:start#baudrate|baud]] = 11 bit. ==== Portkiosztás ==== ^megnevezés\\ EIA/TIA^megnevezés\\ CCITT^megnevezés\\ DIN^csatlakozó\\ 9 pólusú^csatlakozó\\ 25 pólusú| ^DCD\\ (Data Carrier Detect)|1090|M5|1|8| ^RXD (Receive Data)|104|D2|2|3| ^TXD (Transmit Data)|103|D1|3|2| ^DTR (Data Terminal Ready)|1082|S1.2|4|20| ^GND (Ground)|102|E2|5|7| ^DSR (Data Set Ready)|107|M1|6|6| ^RTS (Request To Send)|105|S2|7|4| ^CTS (Clear To Send)|106|M2|8|5| ^RI (Ring Indicator)|125|M3|9|22| ==== Csatlakozó típusok, lábkiosztással ==== A lábakhoz tartozó funkciókat egy fejezettel feljebb (Portkiosztás) találja meg (a táblázat utolsó két oszlopa). ^SUB D9^SUB D25| | {{wiki:comm:csat_sub_d9_papa.png?172x103|SUB D-9 connector }} | {{wiki:comm:csat_sub_d25_papa.png?378x116|SUB D-25 connector }} | | {{wiki:comm:csat_sub_d9_mama.png?172x103|SUB D-9 plug-in}} | {{wiki:comm:csat_sub_d25_mama.png?378x116|SUB D-25 plug-in}} |==== Nullmodem RS-232 csatlakozó ==== A - talán második - leggyakrabban felbukkanó RS-232 kommunikációs eszköz a nullmodem. Ezzel a vezetékkel jellemzően két, teljes értékű kommunikációra képes állomást szokás összekötni. Ha a két állomás esetleg nem kér a különböző kézfogásokból ([[#handshake|handshake]]), semmi gond, mert a következő pontban ismertetésre kerülő "minimál" rs232 funkcionalitást (2,3,5) így is el tudja látni. {{wiki:comm:rs232_3.png?453x261|RS-232 nullmodem}} \\ ==== Minimál RS-232 csatlakozó ==== A jellemző minimális kivitele az rs232-nek. Nincs se kézfogás (handshake), meg semmi laca-faca, csak az adatok jönnek-mennek. A rendkívül sérülékeny adatátvitel ellenére a leggyakrabban ezt alkalmazzák mérésekre, paraméterek feltöltésére. Három vezetékes rs232-nek is szokás nevezni. {{wiki:comm:rs232_minimal.png?453x114|RS-232 "minimal"}} \\ ==== Handshake ==== hu: kézfogás, en: handshake === Szoftver handshake === X-ON / X-OFF protokoll néven is szokott futni - jellemzően beállítások esetén ezen a néven hivatkoznak rá. Mindaddig, amíg a hardver handshake extra portokat használ az átvitel vezénylésére, a szoftveres változat nem igényli ezt, ezért akár a minimál RS-232 csatlakozón is megvalósítható ez. Az ASCII táblázat első 32 jelét vezénylő karakterek foglalják el, ebből 4 (DC1 - DC4; DC:Device Control) az átvitel vezénylésre lett elkülönítve, ezekből jellemzően kettőt használunk: * DC1 (X-ON, Hex 11) az átvitel kezdetét jelzi * DC3 (X-OFF, Hex 13) az átvitel lezárását jelzi Ez a verérlés meglehetősen korlátozott módon vehető igénybe, ugyanis ha bináris adatokat akarunk továbbítani, azokban gyakran felbukkanhatnak a fenti vezénylő karakterek, amik megbolondítják, de legalábbis ellehetetlenítik az adatátvitelt. A módszer továbbfejlesztett változata például az x-modem protokoll, ami az átvitt adatmennyiséget blokkokba rendezi és egyszerre csak adott mennyiségű byte információt továbbít. === Hardver handshake === A kézfogásnak két fajtája van: * DTR / DSR : kapcsolat létrehozását biztosítja, modem-módnak is szokás nevezni * RTS / CTS : adatfolyam (adatátvitel) vezénylése Amennyiben az adatátvitel során mindkét handshake-et alkalmazzuk, ennek menete a következő: {{wiki:comm:rs232handshake.png?659x179|RS-232 handshake}}1: Az adó jelzi a vevő felé a DTR (Data Terminal Ready) jellel, hogy készen áll a forgalmazásra. 2: A vevő a DSR (Data Set Ready) jellel visszajelez, hogy szintén készen áll a kommunikációra. 3: Az adó az RTS (Request To Send) jellel jelzi, hogy adatot kíván küldeni. 4: A vevő a CTS (Clear To Send) jellel visszajelez, hogy készen áll az adat fogadására, illetve a kommunikációra. 5: Megkezdődik a kétirányú (duplex) forgalmazás a RxD (Receive Data) / TxD (Transmit Data) vonalakon 6: A vevő visszavonja a CTS-t, mert nem tud adatokat fogadni (pl. a puffere megtelt). 7: A CTS jel ismételt kiadásával a forgalmazás újraindul 8: Az adó az RTS jel megvonásával jelzi, hogy szüneteltetni akarja a kommunikációt.