http://rsc.hyperlinx.cz/casio/rs4xx_old.php | |
[ Archaikum.cz > CASIO > RS485 - Zakladni informace ] |
Úvodem:
Jste jedni z těch bastlířů, elektroniků, či budoucích profesionálů, kteří chtějí postavit nějaké to elektronické zařízení ? Pokud bude složené z více celků na různých místech potom asi potřebujete, aby všechny části spolu komunikovali, ale nevíte, nebo hledáte
nejvhodnější způsob přenosu informací mezi těmito jednotlivými prvky. Zajímáte se o problematiku přenosu dat v mikroprocesorových a počítačových aplikacích ? Zajímá vás komunikace po RS 232, RS 422 a RS 485, přenosové protokoly atd..? Pak vězte, že tento článeček je určen právě pro vás.
Poděkování:
Janu Řehákovi to, že mě přemlouval tak dlouho, až jsem konečně pochopil jak to na světě chodí, usedl k počítači a po strašném přemáhání vyplodil těchto pár řádek. Jinak bych totiž asi skončil na dně morálního bastlířského bahna a zůstal tam na věky věků. Amen. Takže ještě jednou - To že tohle čtete, je zásluha Jana Řeháka, zvaného Fredy. Hlavně mu nic neslibujte, že mu něco napíšete, protože potom už to na vás zůstane jako kainovo znamení, pokud to neuděláte.
Bez záruky:
Tento článek vychází s informací, které jsem si asi před rokem sehnal když jsme pracovali na projektu využívajícím RS 485 sběrnici a z mých osobních skušeností s touto problematikou. Je tudíž možné, že narazíte na nesrovnalosti, nebo jiné chyby. Budu velmi vdečný za mail a přiložím jej k tomuto článku.
Pojem RS 232 je vzhledem k popularitě dnešních PC velice známý. U RS 422 & 485 je situace poněkud odlišná: používá se spíše v průmyslovém prostředí a v systémech pro řízení a přenos dat (maloobjemových, žádné stovky Mb/s).
Jaký je tedy mezi RS 232 a RS 422 & 485 rozdíl ? Signály RS 232 jsou reprezentovány napěťovými úrovněmi vzhledem k zemi. Pro každý signál jeden vodič + společný zemní vodič, vůči němuž jsou napěťové urovně vztaženy. Tento způsob je vhodný pro point-to-point komunikaci při nízkých rychlostech. Například na port COM 1 u pc může být připojená myš, na COM 2 modem atd. To je příklad point-to-point komunikace, jeden port, jedno zařízení. Zapojení signálů vyžaduje společnou zem, tudíž se dostáváme k omezené délce vodičů - maximálně cca 30 až 60 metrů (hlavní roli hraje odpor dlouhého vedení a snadná zarušitelnost). V krátkosti tedy, RS 232 bylo vyvinuto pro komunikaci lokálních zařízení a podporuje jeden vysílač a jeden přijímač.
RS 422 & 485 používá poněkud odlišný princip: pro každý signál používá jedno twistedpair (TP) vedení, tj. 2 vodiče smotané kolem sebe. Z elektrického hlediska mluvíme tzv. Balanced data transmision, nebo také Differential voltage transmission. Laicky řečeno, označíme-li si jeden vodič z TP jako A druhý jako B, pak je-li signál neaktivní, je napětí na A záporné a na B kladné. V opačném případě, signál je aktivní, je A kladné a B záporné. Pochopitelně se jedná o rozdíl (diferenci) mezi vodiči A a B. Pro RS 422 & 485 může délka vedení dosahovat až 4000 stop (cca 1200 metrů) a běžně vyráběné obvody dosahují přenosových rychlostí 2.5 MB/s.
Jaký je rozdíl mezi RS 422 a RS 485 ? Elektrický princip je stejný: Obojí používá diferenční vysílače s alternujícím napětím 0 a 5V. RS 422 je však určena, podobně jako RS 232 pro point-to-point komunikaci. RS 422 používá dva oddělené TP vodiče a data mohou být přenášena v obou směrech současně. RS 422 se často používá na prodloužení vedení RS 232, nebo v průmyslovém prostředí.
RS 485 se používá pro multipoint komunikaci, více zařízení může být připojeno na jedno signálové vedení. Stejně jako například sítě ETHERNET, vedené po koaxiálním kabelu. Většina RS 485 systémů používá Master/Slave architekturu, kde má každá slave jednotka svojí unikátní adresu a odpovídá pouze na jí určené pakety. Tyto pakety generuje Master (například PC) a periodicky obesílá všechny připojené slave jednotky.
V tomto článku budeme hovořit především o Master/Slave architektuře, protože na 95% aplikací to stačí. Ve speciálních případech (zabezpečovací systém atd..) se však používá vylepšená obdoba tzv. multiprocesorové komunikace známé z procesorů 8X51. Tento systém používá pouze jedno vedení na obousměrnou komunikaci, ale není určen žádný Master. Všechna zařízení ohlašují odeslání paketu o určité délce a zároveň poslouchají, zda byla data v pořádku odeslána. Pokud se tak nestalo, zastaví komunikaci a čekají, co se stalo. V té době je možno po lince přenést urgentní pakety. Tento systém se výborně hodí např. pro zařízení, která potřebují ihned přenést zařízení velmi důležitá a aktuální data, aniž by čekaly, až na něj přijde řada a Master mu dá příležitost. V praxi je však přenos užitečných dat výrazně menší, než v prvním případě (cca o 30% méně efektivní).
V Master/Slave architektuře slave nikdy nezačíná komunikaci. Je tedy pochopitelné, že master musí vysílat správné adresy.
RS 485 existuje ve dvou variantách: 1 TwistedPair a 2 TwistedPairs
Nejprve uvedu výhody a nevýhody RS 422/485. Pro základní zapojení RS 422/485 systému potřebujeme IO budič s diferenciálními výstupy a IO přijímač s diferenciálními vstupy. Do přenosového vedení se indukuje šum a rušení. Protože se však signál přenáší twisted párem vodičů jdoucích stejnou trasou, je napětová diference (rozdíl napětí mezi A a B) tohoto rušení téměř nulová. Vzhledem k
diferenciální funkci vstupního zesilovače RS 422/485 přijímače je toto rušení eliminováno. Platí to také pro přeslechy ze sousedních vodičů, a pro jakékoli jiné zdroje šumů, dokud nejsou překročeny napěťové hranice vstupních obvodů přijímacího IO. Diferenciální vstup také eliminuje rozdíl zemních potenciálů vysílače a přijímače. Tato vlastnost je velmi důležitá pro komunikaci mezi různorodými systémy, kde by jinak vznikaly veliké problémy např. pro různé zdroje napájecího napětí atd... Použití TwistedPair kabelů a korektní terminace (pro
eliminovaní odrazů) dovoluje rychlost přenosu dat vetší než 10Mbit/s a délky kabelů až 1 Km.
Všechny tyto výhody přinášejí i některé nevýhody. Z důvodu vyšší složitosti obvodů pro RS 422/485 je poněkud vyšší i jejich cena. Vyšší rychlosti přenosu dat vyžaduje korektně zapojenou a přizpůsobenou terminaci vedení, což způsobuje problém u zapojení, kde se mění počet připojených zařízení. A konečně nutnost použít TwistedPair vodiče.
Každý signál v RS 232 unbalanced data transmission systému je reprezentován jako napěťová úroveň vzhledem k zemi. Například TXD signál z COMx portu běžného PC má v klidovém stavu zápornou úroveň a při vysílání dat se střídá mezi zápornou a kladnou úrovní. Amplituda se pohybuje v záporném stavu mezi -15 až -5V a v kladném mezi +5 a +15V.
V Balanced differential systému generuje vysílač napětí od 2 do 7V (přibližně) mezi A a B výstupy. Vysílač i přijímač jsou sice spojeny vodičem GND (zem), ale nepoužívá se pro určení logického stavu na AB vodičích. Z toho tedy vyplývá již uvedená tolerance rozdílného zemního potenciálu u vysílače a přijímače. Vysílače RS 485 mají Enable vstup, umožňující nastavit výstupy do stavu vysoké impedance a tím sdílet na jednom TP několik zařízení. RS 422 vysílače tento vstup většinou nemají (ale mít mohou). Napěťová úroveň většiny běžně prodávaných vysílačů je 0 a 5V. V klidovém stavu je na B vodiči +5V a na A 0V.
RS 422/485 přijímače reagují na rozdíl napětí mezi A a B. Je-li Vab větší než 200mV, pak je na výstupu přijímače definovaná logická úroveň. Pro Vab menší 200mV je log. úroveň opačná.
Na obrázku je zjednodušené zapojení vstupů přijímače pro twisted pair vedení a diagram rozhodovacích úrovní.
EIA STANDARD RS 422 a RS 485
Existují dva standarty popisující Balanced interface obvody: EIA-RS 422 (mezinárodní standard ITU-T V.11) definuje point-to-point rozhraní, kde může být zapojeno maximálně 10 příjímačů na jeden vysílač. Limitující parametr je vstupní impedance přijímače Ri = 4kOhm. Zapojení 10ti přijímačů + terminační odpor 100 Ohm dává maximální zátěž vysílače.
EIA-RS 485 (ISO 8482) definuje vstupní impedanci RS 485 obvodů Ri = 12kOhm. Proto je možné zapojit na
jedno vedení až 32 vysílačů, přijímačů, nebo jejich kombinace. Protože se jedná o obousměrný přenos dat, vedení musí být zakončeno terminačním odporem na obou koncích.
Tento obrázek porovnává normy R 485 a RS 422, shrnuje jednotlivé hodnoty a zobrazuje připojení terminačních odporů k vedení, pro minimalizaci odrazů.
Rozdíl zemního potenciálu mezi různými zařízeními je maximálně +- 7V dle EIA-RS 422 specifikace. EIA-RS 485 definuje maximální napěťový rozsah na vstupu přijímače (rozdíl zemnících potenciálů + alternující signálové napětí) od -7V do +12V. Obvody pro RS 422/485 jsou vybaveny ochranou proti zkratu. Point-to-point (EIA-RS 422) definuje zkrat jako proud větší než 150mA mezi A a B, nebo proti zemi. Pro multipoint (EIA-RS 485) platí 150mA proti zemi, ale pro A nebo B signály platí za zkratový proud 250mA.
Zapojení země u RS 422/485
Správná funkce vysílače a přijímače vyžaduje přítomnost zpětné signálové cesty mezi uzemněním jednotlivých zařízení. Tu můžeme realizovat např. třetím vodičem, nebo uzemněním každého zařízení na zem (nulový kolík v zásuvce 220V). Je-li použito třetího - zemního vodiče, měli by být do série zapojeny odpory cca 100Ohm pro eliminování nežádoucích proudů
vznikajících z rozdílu zemních potenciálů.
Terminace RS 422/485 vedení je velice podstatná hlavně při vyšších rychlostech a delších kabelech. Hlavní důvody pro korektní terminaci jsou především odrazy na konci vedení, definování úrovně na vedení a podmínka minimálního zatížení vysílače. Pro RS 422 je terminace poměrně jednoduchá (obr porovnávající RS 422 a RS 485). Na konec vedení připojíme terninační odpor 100 Ohmů. Je-li na vedení připojeno více RS 422 přijímačů, můžeme odpor trochu zvětšit. Hodnota se dá přesně spočítat, známe totiž vstupní impedanci přijímačů.
Pro RS 485 je terminace poněkud složitější (opět obr. porovnávající RS 422 a RS 485). Jelikož každé zařízení komunikuje (Single TP varianta) obousměrně, nejsme schopni určit, kde je vysílač a kde přijímač. To se mění podle toho, které zařízení právě vysílá. Proto musíme na oba konce RS 485 vedení připojit 100 Ohmový terminátor. Bohužel, situace problémy okolo terminace RS 485 tímto ještě
nekončí. Jelikož všechny zařízení mají třístavové výstupy, nastávají (a to velice často - při každé změně komunikujícího zařízení, nebo směru toku dat) situace, kdy jsou všechny vysílače ve stavu vysoké impedance a na vedení, díky terminačním odporům, není definovaný
žádný stav (Vab<200mV).V tomto stavu je ale žádoucí aby napětí definovalo klidový stav, tedy Vab<-200mV.
Zapojení řešící tento problém pomocí hodnot terminačních odporů je na obr. porovnávající RS 422 a RS 485. Hodnoty jsou spočítány tak, aby zapojení vyhovělo maximálnímu počtu zařízení o vstupní impedanci 12kOhm, tj. 32, na jednom vedení. Důležité je aby odpory Rt byly pouze dva a to nakonci kabelu (mohou být součástí posledního zařízení na vedení).
Maximální rychlost přenosu dat
Graf ukazuje závislost přenosové rychlosti na několika základních podmínkách.
1) maximální rychlost přenosu na krátké vzdálenosti, kde můžeme vliv vedení zanedbat, je dána výstupními parametry vysílače. Jedná se o rychlost, resp. dobu trvání náběžných a sestupných hran. Standard předpokládá rychlost 10Mbit/s. Současné nejrychlejší obvody, jako např. SN76ALS176 jsou schopny dosáhnout až 25Mbit/s.
2) překročí-li délka vedení 10m, musíme brát v úvahu ztráty způsobené kapacitami, a tzv. skin efektem při kterém se proud začíná šířit pouze po obvodu vodičů. Pravidlem pro standardní TP kabely je, že rychlost přenosu (Mbit/s) krát délka vedení (m) je menší než 10^8 . Například pro 100m dlouhý kabel dostáváme maximální rychlost 1Mbit/s.
3) Poslední omezení se týká velmi dlouhých vedení. Rychlost je limitovaná ohmickým odporem vedení a následnému útlumu signálu. Maximální délka kabelu vyplývá z jeho odporu, který by neměl být vetší než impedance vedení, tedy 100Ohm . Standardní TP kabel o průměru 2x0,6mm má odpor cca 100W /Km. Nezanedbatelná je také kapacita vedení.
Tato tabulka je vskutku orientační, ale užitečné vodítko:
Rychlost přenosu dat | 1200bd | 2400bd | 4800bd | 9600bd | 19200bd | 38400bd | 57600bd | 115200bd |
Max. kapacita vedení | 250nF | 120nF | 60nF | 30nF | 15nF | 750pF | 500pF | 250pF |
Této kapitole se budu věnovat jem v krátkosti, jelikož software se šije na míru té které aplikaci, včetně přenosového protokolu. Pro RS 422, coby point-to-point zapojení, platí zhruba totéž co pro sériový port RS 232. Ovšem z podstaty RS 485 vyplývají jisté specifika, které musí software zajišťovat. Především se jedná o programové přidělování komunikačního média (TP vedení) jednotlivým stanicím tak, aby nedocházelo ke vzájemným kolizím a zároveň aby byla odezva stanic dostatečně rychlá.
Uvědomme si, že máme k dispozici pouze jeden kanál pro přenos informací. Musíme přenést jak data, tak i bitovou a bytovou synchronizaci. Pro přenos jednotlivých bitů je tedy vhodná jedna z modulací používaných v datových sítích, např. kódováni NRZ, NRZI, fázová modulace NRZ, nebo diferenciální fázová modulace. Tyto modulace však nebudu podrobně rozebírat, protože to je teorie sítí, a jejich přenosových protokolů. Toť k fyzické vrstvě referenčního OSI modelu. Pro zajištění bytové synchronizace máme opět několik možností. Asi nejjednodušší je definování jednoho specifického byte jako synchronizační znak. Software však musí zajišťovat konverzi datových bytů shodných se synchronizačním znakem na posloupnost odlišných byte. Můžeme také využít přenosových protokolů SDLC/HDLC, vhodných pro vysokorychlostní přenosy dat. Spokojíme-li se s menší rychlostí přenosu (115200bd, se speciálními UART obvody až 2Mb/s), můžeme s výhodou použít RS 232 formát a to jak pro bitovou tak pro bytovou synchronizaci. Toto řešení ušetří vskutku hodně námahy, obzvláště používáme-li PC jako Master a jako Slave zařízení osazené mikrokontrolérem s vlastním UART obvodem, např. 8051 kompatibilním.
Ze síťového hlediska se u RS 485 jedná o sběrnicovou topologii. Jelikož Slave stanice nemají žádnou možnost, jak začít bez možné kolize vysílat, musí jim být přiděleno právo vysílat Master stanicí. Mluvíme tedy o centrálním přidělování, konkrétně přidělování na výzvu (pooling) ,kde se centrální (Master) stanice periodicky dotazuje všech Slave stanic, zda mají data k odeslání. Pakliže ano, dotazovaná stanice je ihned odešle. Nemá-li data k odeslání, odpoví pouze potvrzovacím paketem, nebo neodpoví vůbec. Tato metoda se jeví jako nejvýhodnější pro Multipoint zapojení s menší počtem slave stanic (cca do 100). Pro více stanic by se začala zpomalovat doba odezvy. Samozřejmě záleží na konkrétních potřebách systému. Uvedená hodnota 100 stanic je pro potřeby "on-line" systému, kde stanice musí interaktivně reagovat na požadavky uživatele, a doba odezvy tudíž musí být max. 0.5 sec (uvažováno pro rychlost 115200bd, která je v průmyslovém prostředí k dispozici jen málokdy).
Nutno podotknout, že v systémech, kde Master stanice nemá prioritní funkci, nebo z jiných důvodů (příklad velký počet stanic s malou frekvencí přenášených dat) je možné použít i jiné přístupové metody. Např. metoda náhodného přístupu ALOHA. Jakákoliv stanice vyšle svoje data bez ohledu na stav přenosového kanálu. Dojde-li ke kolizi, pak tato stanice nedostane potvrzení o doručení a opakuje vysílání. Tato metoda však využije průměrně 18% přenosové kapacity a přivětším objemu dat propustnost díky většímu množství kolizí rapidně klesá. U RS 485, jelikož přijímače mohou neustále "naslouchat" stavu přenosového kanálu je také možné implementovat metodu ALOHA vylepšenou opříposlech "nosné" - v tomto případě datové aktivity kanálu. Stanice v tomto případe zahájí vysílání pouze v případě, je-li kanál v klidovém stavu. U obou těchto metod je nezbytně nutný přenosový protokol s detekcí chyb.
U jakéhokoliv přenosu dat nemůžeme stoprocentně zaručit, že vyslaný paket dorazí do cílové stanice bez chyby, RS 485 nevyjímaje. Obzvláště u ALOHA metod může docházet ke kolizím, rušení, délka vedení atd. způsobuje chyby. Je tedy vhodné aby komunikační software řešil i tyto možnosti. U metody centrálního přidělování je výhodné, pokud slave stanice vysílá jako odpověď paket s
potvrzovací informací o posledním přijatém paketu. Možností je několik a záleží na konkrétním použití, jaký systém zvolit.
Pokud se vyskytne aplikace, kde 32 zařízení nedostačuje, máme v zásadě dvě možnosti. Jednoduší z nich je použít, v současnosti již běžně dostupné, vysílače se 4 násobnou vstupní impedancí (48k ), umožňující připojit současně až 128 zařízení. V tomto případě je nutné přizpůsobit celou terminační soustavu. Druhou možností je použít RS 485 repeater. Jedná se o zařízení se dvěmi TP porty. Pokud se na jednom z těchto portů vyskytnou data, jsou vyslána na druhý port a opačně. Takto můžeme připojit dalších 31 (resp.127) stanic. Detekce datové aktivity může být provedena jednoduše podle definice RS 485 - Vab>200mV, nebo může mít takovýto repeater vlastní procesor a fungovat i jako router, obdobně jako tomu je v počítačových sítích.
Jako jednu z posledních věcí uvedu u nás dostupné součástky pro RS 422/485. Osobně mám zkušenost s obvody firmy MAXIM, ta vyrábí asi deset mutací lišících se rychostí (0.25 a2.5 Mbit/s), typem provozu (half/full duplex), počtem zařízení (32,128) a několika dalšími parametry. Jedná se o obvody MAX481, 485, 487, 491 atd. Dále tyto odvody vyrábí National Semiconductors pod označením DS3695A. Předpokládám, že každý větší výrobce čipů má RS 422/485 v nabídce, ale podrobnosti nemám zjištěny. Informace z tomto článku jsou čerpány z vynikající publikace firmy Texas Instrument, která disponuje celou rodinou obvodů pro tento účel pod označením SN 7517X kde X je jedno nebo dvoumístné označení specifikace typu.
Na závěr několik typů:
A co říci úplným závěrem ?
O vhodnosti či nevhodnosti RS 422/485 si musíte udělat představu sami. Doufám, že jsem Vám k tomu poskytl dostatek základních informací. Máte-li o problematiku bližší zájem, doporučuji zejména [1] a katalogové listy od MAXima. Upozornění pro neangličtináře - tyto dokumenty jsou pochopitelně v anglickém jazyce. Rozhodujete se-li jaký typ komunikace zvolit právě pro váš projekt, doufám že vám
tento článek přinesl inspiraci a možná ušetřil spoustu času a tápání. Samozřejmě, v případě zájmu se na mne můžete, prostřednictvím Emailu obrátit.
Použitá literatura:
Zkratky:
TP TwistedPair Dva stejné vodiče smotané okolo sebe.
Dodatečně byl na toto téma uveřejněn ještě článek ing. Pouchy z firmy PaPoch elektronika - ZDE
Sestavil Jan Staněk - Hst@ein.cz Opravil a doplnil Jan Řehák - Rehak@hw.cz