RS-485 apžvalga
Kaip ir RS-232, RS-485 yra nuoseklaus ryšio standartas. Dabartinis oficialus jo pavadinimas yra TIA-485/EIA-485-A, tačiau jis paprastai vadinamas RS-485 standartu. RS-485 plačiai naudojamas tokiose pramonės šakose kaip pramonės automatizavimas, automobilių pramonė ir pastatų valdymas.
RS-485 magistralė įveikia RS-232 trūkumus, pvz., trumpus ryšio atstumus ir mažą duomenų perdavimo spartą. RS-485 palaiko duomenų perdavimo spartą iki 10 Mbit/s, o teorinis ryšio atstumas yra iki 1200 metrų. Skirtingai nuo vieno galo RS-232 perdavimo, RS-485 naudoja diferencialinį perdavimą per porą vytos poros laidų, kurių vienas laidas žymimas A, o kitas B.
RS-485 fizinis sluoksnis
RS-485 fizinis sluoksnis yra atsakingas už neapdorotų duomenų perdavimą tarp įrenginių ir fizinės perdavimo terpės. Jis tvarko elektros signalų konvertavimą į skaitmeninius duomenis, taip pat apibrėžia įtampos lygius, laiką, duomenų perdavimo spartą ir kitus parametrus.
① Diferencialiniai signalai
Ilgo{0}}atstumo kabeliai silpnina signalą ir padidina triukšmo bei trukdžių tikimybę. Tai pasireiškia kaip įtampos amplitudės pokyčiai kabeliuose A ir B. Tačiau diferencialinių linijų naudojimo pranašumas yra tas, kad atėmus skirtumą tarp dviejų signalų, trikdžiai panaikinami, o tai leidžia išvesti normalų signalą. Diferencialinio imtuvo gebėjimas nepaisyti identiškų įtampų abiejose signalo linijose vadinamas bendrojo-režimo atmetimu.


Standartas nurodo, kad logika 1 yra nuo +2V iki +6V, o loginė 0 yra nuo -6 V iki -2 V.
RS-485 nereikalauja konkrečios magistralės įtampos; atsižvelgiama tik į mažiausią skirtingą įtampą. Jei kabelis ilgesnis, imtuvo gaunama įtampa gali nukristi iki +/- 200 mV, o tai vis dar yra visiškai priimtina RS-485 – tai vienas iš RS-485 privalumų.
Daugelis siųstuvų-imtuvų atitinka ar net viršija TIA/EIA-485A standartą; tačiau praktikoje pirmenybė teikiama nurodytiems įrenginio parametrams. Pavyzdžiui, tam tikro siųstuvo-imtuvo minimalus neigiamas įvesties slenkstis yra -200 mV.


② Signalo apibrėžimai
Daugelis RS-485 keitiklių šiandien yra suderinami su RS-422, todėl šiuose keitikliuose dažnai matysite signalus, pažymėtus T/R+ ir T/R-, kurie atitinka RS-485 A+ ir B-.
DB9 moteriškų jungčių atveju RS-485 laidų apibrėžimas yra toks: 6–9 kaiščiai yra N/A ir neturėtų būti prijungti.
| DB9 | Išvesties signalas | RS-422 dvipusis laidas | RS-485 pusiau dvipusis laidas |
| 1 | T/R+ | Siųsti (A+) | RS-485(A+) |
| 2 | T/R- | Siųsti (B-) | RS-485(B-) |
| 3 | RXD+ | Gauti (A+) | Tuščia |
| 4 | RXD- | Gauti (B-) | Tuščia |
| 5 | GND | Įžeminimo laidas | Įžeminimo laidas |
③ Topologija
RS-485 palaiko dviejų-laidų ir keturių{4} laidų konfigūracijas. Keturių-laidų konfigūracija apsiriboja ryšiu tarp taško-to{7}} ir šiandien retai naudojama; dažniau naudojama dviejų laidų konfigūracija. Ši konfigūracija naudoja magistralės topologiją, leidžiančią vienoje magistralėje sujungti iki 32 mazgų.
Kaip ir I²C, RS-485 magistralė veikia pagrindiniu-pavaldiniu režimu. Jis palaiko ir taškas{4}}to-vieno-pagalbos režimą, ir kelių-pagalbinį režimą, bet nepalaiko kelių šeimininkų režimo.


RS-485 siųstuvas-imtuvas
RS-485 naudoja diferencialinę transmisiją. Jei norite valdyti RS-485 įrenginį naudodami mikrovaldiklį, jums reikės siųstuvo-imtuvo, panašaus į CAN magistralę. Toliau pateiktoje diagramoje parodytas MCU, valdantis RS-485 įrenginį.
Siųstuvo-imtuvo viduje yra imtuvas (viršutinė pusė) ir siųstuvas (apatinė pusė). Toliau pateikiamas trumpas siųstuvo-imtuvo veikimo paaiškinimas, padedantis suprasti, kaip MCU bendrauja su 485 įrenginiu.

Vidinė RS-485 siųstuvo-imtuvo struktūra
Kur:
A ir B yra autobusas;
R yra imtuvo įvestis;
RE yra imtuvo įjungimo signalas;
DE yra siųstuvo įjungimo signalas;
D yra siųstuvo išvestis;
Įgalinimo signalams tie, kurių linija yra virš raidės, yra aktyvūs-žemai (pvz., RE aukščiau esančiame paveikslėlyje), o tie, kurie neturi linijos, yra aktyvūs-aukšti (pvz., DE).
Imtuvo tiesos lentelė
Siųstuvo tiesos lentelė yra tokia:
1. Kai tvarkyklės įjungimo kaištis DE yra logikos aukštyje, diferencialiniai išėjimai A ir B atitinka duomenų įvesties D loginę būseną. Aukšta logika, esanti ties D, A pakyla aukštai, o B – žemai. Šiuo atveju diferencinė išėjimo įtampa, apibrėžta kaip VOD=VA – VB, yra teigiama. Kai D yra žemas, išvesties būsenos keičiasi: B pakyla aukštai, A žemėja, o VOD yra neigiamas.
2. Kai DE žema, abu išėjimai tampa didelės-varža. Šiuo atveju loginė būsena D yra nesvarbi.
Imtuvui taikoma ši tiesos lentelė:
1. Kai imtuvo įjungimo kaištis (RE) yra žemo loginio lygio, imtuvas aktyvuojamas. Kai diferencinė įvesties įtampa, apibrėžta kaip VID=VA – VB, yra teigiama ir viršija teigiamą įvesties slenkstį VIT+, imtuvo išvestis R pakyla. Kai VID yra neigiamas ir mažesnis už neigiamą įvesties slenkstį VIT-, imtuvo išvestis R sumažėja. Jei VID yra tarp VIT+ ir VIT-, išvestis neapibrėžta.
2. Kai RE yra logiškai aukšta arba slankioji, imtuvo išvestis yra didelės varžos, nepriklausomai nuo VID dydžio ar poliškumo.


RS-485 duomenų jungtis
Aukščiau aptarę RS-485 siųstuvo-imtuvo veikimo principus, dabar trumpai apibūdinsime RS-485 duomenų ryšį. Pirmiausia galite pažvelgti į lengvai suprantamą UART protokolo kadro formatą.
Nepriklausomai nuo to, ar pagrindinis kompiuteris siunčia duomenis į pavaldinį, ar pagalbinis siunčia duomenis į pagrindinį įrenginį, naudojamos ir A, ir B linijos; todėl RS-485 paprastai naudojamas pusiau dvipusiu režimu.
Pagrindinio kompiuterio GPIO valdo RS-485 siųstuvo-imtuvo DE kaištį, kad nustatytų perdavimo režimą. Vienas baitas siunčiamas iš UART TXD linijos į RS-485 siųstuvo-imtuvo duomenų (D arba DI) liniją. Siųstuvas-imtuvas konvertuoja vieno galo UART bitų srautą į diferencinį bitų srautą A ir B linijose. Kai duomenys palieka siųstuvą-imtuvą, pagrindinis kompiuteris iš karto perjungia siųstuvą-imtuvą į priėmimo režimą.
Vergas veikia panašiai kaip pagrindinis. Vergas valdo RS-485 siųstuvo-imtuvo /RE kaištį, kad įjungtų priėmimo režimą, priima pagrindinio įrenginio siunčiamą bitų srautą, konvertuoja jį į vieno galo signalą ir priima jį per vergo UART RXD liniją. Kai vergas yra pasirengęs reaguoti, jis perduoda duomenis taip pat, kaip ir pagrindinis, o pagrindinis persijungia į priėmimo režimą.
RS-232 konvertavimas į RS-485
Galima konvertuoti tarp RS-232 ir RS-485. Vienas iš būdų yra konvertuoti RS-232 į TTL, o tada konvertuoti TTL į RS-485. Žinoma, yra ir lustų, kurie palaiko tiesioginį konvertavimą iš RS-232 į RS-485, o daug tokių modulių galima rasti internete.
RS-232 į RS-485 konvertavimo moduliai
Skirtumai tarp RS-485 ir CAN
Nors RS-485 neturi standartizuoto duomenų protokolo formato, jis turi daug panašumų su CAN magistrale. Pavyzdžiui, tiek A&B, tiek CANH&CANL yra diferencialiniai signalai; abiem komunikacijai reikalingi siųstuvai-imtuvai; ir abu naudoja 120 omų galinius rezistorius, be kitų panašumų.
| Autobuso charakteristikos | CAN autobusas | Autobusas RS-485 |
| Aparatinės įrangos išlaidos | Šiek tiek aukščiau | Nebrangus |
| Autobusų naudojimas | Automatinis prioritetinis arbitražas, didelis panaudojimas | Naudoja apklausas; mažas panaudojimas |
| Duomenų perdavimo sparta | Aukštas | Žemas |
| Klaidų aptikimo mechanizmai | Valdiklyje yra kontrolinės sumos mechanizmas, užtikrinantis žemo lygio{0}}duomenų perdavimo tikslumą | Tik fizinio sluoksnio specifikacijos; nėra duomenų ryšio sluoksnio specifikacijų |
| Vieno{0}}mazgo gedimo poveikis | Jokio poveikio autobusui | Autobuso paralyžius |
| Plėtros išlaidos | Lankstus programinės įrangos kūrimas, mažos laiko sąnaudos | Sunku vystytis |
| Sistemos kaštai | Santykinai žemas | Aukštas |
Įprastos RS-485 grandinės
Čia yra įprasta RS-485 grandinė, kurią radau internete. Reikia atkreipti dėmesį į du dalykus:
1. Įjungimo signalus RE ir DE galima valdyti vienu GPIO, kad būtų taupomi ištekliai. Kai GPIO25 išveda aukštą lygį, RE ir DE yra 0 V, o įrenginys pereina priėmimo režimu; kai GPIO25 išveda žemą lygį, RE ir DE yra 3,3 V, o įrenginys persijungia į perdavimo režimą.
2. Kai kuriose grandinėse prie kaiščio A pridedamas traukimo-rezistorius, o prie B kaiščio - ištraukiamasis aukštas arba žemas lygis. UART turi išlaikyti aukštą lygį neveikiant; jei siųstuvas-imtuvas šiuo metu išveda žemą lygį, UART interpretuoja jį kaip pradžios bitą, o tai gali sukelti ryšio klaidų. Konkrečios R_u ir R_d reikšmės čia nebus išsamiai aptariamos; Ateityje planuoju parašyti išsamų straipsnį šia tema.

Kalbant apie antrąjį punktą, atkreipkite dėmesį į šiuos dalykus:
① Jei A kaiščiui pritaikysite ištraukiamąjį-rezistorių, o B kaiščiui – ištraukiamąjį
② Jei siųstuvas-imtuvas turi įmontuotus -įtraukiamus-aukščiausius ir ištraukiančius-žemyn rezistorius, nereikia pridėti išorinių.




