RS-485 Oversikt
I likhet med RS-232 er RS-485 en seriell kommunikasjonsstandard. Den nåværende offisielle betegnelsen er TIA-485/EIA-485-A, men den blir ofte referert til som RS-485-standarden. RS-485 er mye brukt i bransjer som industriell automasjon, bilindustri og bygningsforvaltning.
RS-485-bussen overvinner manglene til RS-232, for eksempel korte kommunikasjonsavstander og lave datahastigheter. RS-485 støtter datahastigheter på opptil 10 Mbit/s og har en teoretisk kommunikasjonsavstand på opptil 1200 meter. I motsetning til den ensidige overføringen til RS-232, bruker RS-485 differensialoverføring via et par tvunnet-par ledninger, med en ledning betegnet som A og den andre som B.
RS-485 fysisk lag
Det fysiske RS-485-laget er ansvarlig for å overføre rådata mellom enheter og det fysiske overføringsmediet. Den håndterer konverteringen av elektriske signaler til digitale data, samtidig som den definerer spenningsnivåer, timing, datahastigheter og andre parametere.
① Differensialsignaler
Lang-kabling resulterer i signaldempning og øker sannsynligheten for støy og interferens. Dette viser seg som endringer i spenningsamplitude på kablene A og B. Fordelen med å bruke differensiallinjer er imidlertid at subtrahering av forskjellen mellom de to signalene opphever interferensen, slik at et normalt signal kan sendes ut. Evnen til en differensialmottaker til å ignorere identiske spenninger på begge signallinjene kalles felles-modusavvisning.


Standarden spesifiserer at logikk 1 er +2V til +6V, og logikk 0 er -6V til -2V.
RS-485 krever ikke en spesifikk bussspenning; den tar kun hensyn til minimumsdifferensialspenningen. Over lengre kabellengder kan spenningen mottatt av mottakeren falle til +/- 200 mV, noe som fortsatt er helt akseptabelt for RS-485 – dette er en av fordelene med RS-485.
Mange transceivere oppfyller eller til og med overgår TIA/EIA-485A-standarden; i praktiske applikasjoner har imidlertid enhetens spesifiserte parametere forrang. For eksempel er minste negative inngangsterskel for en bestemt transceiver -200 mV.


② Signaldefinisjoner
Mange RS-485-omformere i dag er kompatible med RS-422, så du vil ofte se signaler merket T/R+ og T/R- på disse omformerne, som tilsvarer RS-485s A+ og B-.
For DB9-hunkontakter er RS-485-kablingsdefinisjonen som følger: Pinner 6 til 9 er N/A og skal ikke kobles til.
| DB9 | Utgangssignal | RS-422 full-dupleks kabling | RS-485 Halv-dupleks kabling |
| 1 | T/R+ | Send (A+) | RS-485(A+) |
| 2 | T/R- | Send(B-) | RS-485(B-) |
| 3 | RXD+ | Motta (A+) | Tømme |
| 4 | RXD- | Motta(B-) | Tømme |
| 5 | GND | Jordledning | Jordledning |
③ Topologi
RS-485 støtter både to-leder- og fire-lederkonfigurasjoner. Konfigurasjonen med fire-ledninger er begrenset til punkt-til-punktkommunikasjon og brukes sjelden i dag; to-trådskonfigurasjonen er mer vanlig brukt. Denne konfigurasjonen bruker en busstopologi, slik at opptil 32 noder kan kobles til på en enkelt buss.
Som I²C opererer RS-485-bussen i en master-slavemodus. Den støtter både punkt-til-punkt enkelt-slave-modus og multi-slave-modus, men støtter ikke multi-master-modus.


RS-485 sender/mottaker
RS-485 bruker differensialoverføring. Hvis du vil kontrollere en RS-485-enhet ved hjelp av en mikrokontroller, trenger du en transceiver som ligner på CAN-bussen. Følgende diagram illustrerer en MCU som styrer en RS-485-enhet.
Inne i en sender/mottaker er det en mottaker (øvre halvdel) og en sender (nedre halvdel). Nedenfor er en kort forklaring på hvordan en transceiver fungerer for å hjelpe deg å forstå hvordan en MCU kommuniserer med en 485-enhet.

Intern struktur av en RS-485 transceiver
Hvor:
A og B er bussen;
R er mottakerinngangen;
RE er mottakeraktiveringssignalet;
DE er senderens aktiveringssignal;
D er senderutgangen;
For aktiveringssignaler er de med en linje over bokstaven aktive-lav (f.eks. RE i figuren over), mens de uten linje er aktive-høye (f.eks. DE).
Sannhetstabell for mottaker
For senderen er sannhetstabellen som følger:
1. Når driveraktiveringspinne DE er på en logisk høy, følger differensialutgangene A og B den logiske tilstanden ved datainngangen D. En logisk høy ved D fører til at A går høyt og B går lavt. I dette tilfellet er differensial utgangsspenning, definert som VOD=VA – VB, positiv. Når D er lav, inverterer utgangstilstandene: B blir høy og A blir lav, og VOD er negativ.
2. Når DE er lav, blir begge utgangene høy-impedans. I dette tilfellet er den logiske tilstanden ved D irrelevant.
Følgende sannhetstabell gjelder for mottakeren:
1. Når mottakerens aktiveringspinne (RE) er på et logisk lavt nivå, aktiveres mottakeren. Når differensialinngangsspenningen, definert som VID=VA – VB, er positiv og overskrider den positive inngangsterskelen VIT+, blir mottakerens utgang R høy. Når VID er negativ og under den negative inngangsterskelen VIT-, blir mottakerutgangen R lav. Hvis VID er mellom VIT+ og VIT-, er utgangen udefinert.
2. Når RE er logisk høy eller flytende, har mottakerutgangen høy impedans, uavhengig av størrelsen eller polariteten til VID.


RS-485 Data Link
Etter å ha diskutert driftsprinsippene til RS-485-transceiveren ovenfor, vil vi nå kort beskrive RS-485-datakoblingen. Du kan først ta en titt på det lettfattelige UART-protokollrammeformatet.
Enten masteren sender data til slaven eller slaven sender data til masteren, brukes både A- og B-linjene; derfor brukes RS-485 vanligvis i halvdupleksmodus.
Vertens GPIO kontrollerer DE-pinnen til RS-485-transceiveren for å stille inn overføringsmodus. En enkelt byte sendes fra UART TXD-linjen til datalinjen (D eller DI) til RS-485-transceiveren. Transceiveren konverterer den enkeltendede UART-bitstrømmen til en differensiell bitstrøm på A- og B-linjene. Når dataene forlater transceiveren, bytter verten umiddelbart transceiveren til mottaksmodus.
Slaven fungerer på samme måte som masteren. Slaven kontrollerer /RE-pinnen til RS-485-transceiveren for å sette den til mottaksmodus, mottar bitstrømmen sendt av masteren, konverterer den til et enkelt-endet signal og mottar den via slavens UART RXD-linje. Når slaven er klar til å svare, sender den data på samme måte som masteren, mens masteren bytter til mottaksmodus.
Konvertering RS-232 til RS-485
Det er mulig å konvertere mellom RS-232 og RS-485. En metode er å konvertere RS-232 til TTL, og deretter konvertere TTL til RS-485. Selvfølgelig finnes det også brikker som støtter direkte konvertering fra RS-232 til RS-485, og mange slike moduler er tilgjengelig på nett.
RS-232 til RS-485 konverteringsmoduler
Forskjeller mellom RS-485 og CAN
Selv om RS-485 ikke har et standardisert dataprotokollformat, deler den mange likheter med CAN-bussen. For eksempel er både A&B og CANH&CANL differensialsignaler; begge krever transceivere for kommunikasjon; og begge bruker 120 ohm termineringsmotstander, blant andre likheter.
| Bussegenskaper | CAN buss | RS-485 buss |
| Maskinvarekostnader | Litt høyere | Rimelig |
| Bussutnyttelse | Automatisk prioritert voldgift, høy utnyttelse | Bruker meningsmåling; lav utnyttelse |
| Dataoverføringshastighet | Høy | Lav |
| Feildeteksjonsmekanismer | Kontrolleren inkluderer en kontrollsummekanisme for å sikre nøyaktigheten av dataoverføring på lavt-nivå | Kun fysiske lagspesifikasjoner; ingen datalinklagsspesifikasjoner |
| Virkningen av en enkelt-nodefeil | Ingen innvirkning på bussen | Busslammelse |
| Utviklingskostnader | Fleksibel programvareutvikling, lave tidskostnader | Vanskelig å utvikle |
| Systemkostnader | Relativt lavt | Høy |
Vanlige RS-485-kretser
Her er en vanlig RS-485-krets jeg fant på nettet. Det er to punkter å merke seg:
1. Aktiveringssignalene RE og DE kan styres av en enkelt GPIO for å spare ressurser. Når GPIO25 gir ut et høyt nivå, er RE og DE 0 V, og enheten går inn i mottaksmodus; når GPIO25 gir ut et lavt nivå, er RE og DE 3,3 V, og enheten går inn i sendemodus.
2. I noen kretser legges en pull-opp-motstand til pinne A og en pull-ned-motstand til pinne B. Hovedårsaken til dette er at når RS-485-bussen er i tomgangstilstand, er spenningsnivået ikke fast-, det vil si at det svinger mellom -200 mV og kan enten -mV} og lavt nivå. UART må holde et høyt nivå når den er inaktiv; hvis transceiveren sender ut et lavt nivå på dette tidspunktet, tolker UART det som en startbit, noe som kan forårsake kommunikasjonsfeil. De spesifikke verdiene til R_u og R_d vil ikke bli diskutert i detalj her; Jeg planlegger å skrive en detaljert artikkel om dette emnet i fremtiden.

Når det gjelder det andre punktet, vær oppmerksom på følgende:
① Hvis du bruker en pull-opp-motstand til pinne A og en pull--ned-motstand til pinne B, kan datakommunikasjon mislykkes på grunn av omvendte tilkoblinger.
② Hvis en sender/mottaker har innebygde-opptrekk-opp- og nedtrekksmotstander-, er det ikke nødvendig å legge til eksterne.




