RS-485 Översikt
Liksom RS-232 är RS-485 en seriell kommunikationsstandard. Dess nuvarande officiella beteckning är TIA-485/EIA-485-A, men den kallas vanligtvis för RS-485-standarden. RS-485 används ofta i industrier som industriell automation, fordonsindustri och byggnadsförvaltning.
RS-485-bussen övervinner bristerna i RS-232, såsom korta kommunikationsavstånd och låga datahastigheter. RS-485 stöder datahastigheter på upp till 10 Mbit/s och har ett teoretiskt kommunikationsavstånd på upp till 1 200 meter. Till skillnad från den ensidiga överföringen av RS-232, använder RS-485 differentialöverföring via ett par tvinnade-par-trådar, med en ledning betecknad som A och den andra som B.
RS-485 fysiskt lager
Det fysiska lagret RS-485 ansvarar för att överföra rådata mellan enheter och det fysiska överföringsmediet. Den hanterar omvandlingen av elektriska signaler till digital data, samtidigt som den definierar spänningsnivåer, timing, datahastigheter och andra parametrar.
① Differentialsignaler
Långa-kablar resulterar i signaldämpning och ökar sannolikheten för brus och störningar. Detta visar sig som förändringar i spänningsamplituden på kablarna A och B. Fördelen med att använda differentiallinjer är dock att subtrahering av skillnaden mellan de två signalerna eliminerar störningen, vilket gör att en normal signal kan matas ut. Förmågan hos en differentialmottagare att ignorera identiska spänningar på båda signallinjerna kallas vanlig-modavvisning.


Standarden anger att logik 1 är +2V till +6V, och logik 0 är -6V till -2V.
RS-485 kräver ingen specifik bussspänning; den tar bara hänsyn till den minsta differentialspänningen. Över längre kabellängder kan spänningen som tas emot av mottagaren sjunka till +/- 200 mV, vilket fortfarande är helt acceptabelt för RS-485 - detta är en av fördelarna med RS-485.
Många transceivrar uppfyller eller till och med överträffar TIA/EIA-485A-standarden; i praktiska tillämpningar har dock enhetens specificerade parametrar företräde. Till exempel är den minsta negativa ingångströskeln för en viss transceiver -200 mV.


② Signaldefinitioner
Många RS-485-omvandlare idag är kompatibla med RS-422, så du kommer ofta att se signaler märkta T/R+ och T/R- på dessa omvandlare, vilket motsvarar RS-485:s A+ och B-.
För DB9-honkontakter är RS-485-kabeldefinitionen som följer: Stift 6 till 9 är N/A och ska inte anslutas.
| DB9 | Utsignal | RS-422 full-duplex kabeldragning | RS-485 halvduplexkabel |
| 1 | T/R+ | Skicka (A+) | RS-485(A+) |
| 2 | T/R- | Skicka(B-) | RS-485(B-) |
| 3 | RXD+ | Ta emot (A+) | Tömma |
| 4 | RXD- | Ta emot(B-) | Tömma |
| 5 | GND | Jordtråd | Jordtråd |
③ Topologi
RS-485 stöder både två-tråds- och fyra-trådskonfigurationer. Fyr-trådskonfigurationen är begränsad till punkt-till-punktkommunikation och används sällan idag; tvåtrådskonfigurationen är vanligare. Denna konfiguration använder en busstopologi, vilket gör att upp till 32 noder kan anslutas på en enda buss.
Precis som I²C fungerar RS-485-bussen i ett master-slavläge. Den stöder både punkt-till-punkt en-slavläge och multi-slavläge, men stöder inte multimasterläge.


RS-485 Transceiver
RS-485 använder differentialväxling. Om du vill styra en RS-485-enhet med hjälp av en mikrokontroller, behöver du en transceiver liknande CAN-bussen. Följande diagram illustrerar en MCU som styr en RS-485-enhet.
Inuti en transceiver finns en mottagare (övre halvan) och en sändare (nedre halvan). Nedan finns en kort förklaring av hur en transceiver fungerar för att hjälpa dig förstå hur en MCU kommunicerar med en 485-enhet.

Intern struktur hos en RS-485-sändtagare
Där:
A och B är bussen;
R är mottagaringången;
RE är mottagarens aktiveringssignal;
DE är sändarens aktiveringssignal;
D är sändarens utgång;
För aktiveringssignaler är de med en linje ovanför bokstaven aktiva-låg (t.ex. RE i figuren ovan), medan de utan en linje är aktiva-höga (t.ex. DE).
Mottagarens sanningstabell
För sändaren är sanningstabellen följande:
1. När drivenhetens aktiveringsstift DE är på en logisk hög, följer differentialutgångarna A och B det logiska tillståndet vid dataingången D. En logisk hög vid D gör att A går högt och B blir låg. I detta fall är differentialutgångsspänningen, definierad som VOD=VA – VB, positiv. När D är låg, inverteras utgångstillstånden: B blir hög och A blir låg, och VOD är negativ.
2. När DE är låg blir båda utgångarna hög-impedans. I detta fall är det logiska tillståndet vid D irrelevant.
Följande sanningstabell gäller för mottagaren:
1. När mottagarens aktiveringsstift (RE) är logiskt låg, aktiveras mottagaren. När differentialingångsspänningen, definierad som VID=VA – VB, är positiv och överskrider den positiva ingångströskeln VIT+, blir mottagarens utgång R hög. När VID är negativ och under den negativa ingångströskeln VIT- blir mottagarutgången R låg. Om VID är mellan VIT+ och VIT- är utgången odefinierad.
2. När RE är logiskt hög eller flytande är mottagarens utgång hög impedans, oavsett storleken eller polariteten på VID.


RS-485 datalänk
Efter att ha diskuterat funktionsprinciperna för RS-485-transceivern ovan, kommer vi nu kort att beskriva RS-485-datalänken. Du kan först ta en titt på det lättförståeliga UART-protokollets ramformat.
Oavsett om mastern skickar data till slaven eller slaven skickar data till mastern, används både A- och B-linjerna; därför används RS-485 vanligtvis i halvduplexläge.
Värdens GPIO styr DE-stiftet på RS-485-sändtagaren för att ställa in överföringsläget. En enda byte skickas från UART TXD-linjen till datalinjen (D eller DI) på RS-485-transceivern. Transceivern omvandlar den enkeländade UART-bitströmmen till en differentiell bitström på A- och B-linjerna. När data lämnar transceivern växlar värden omedelbart transceivern till mottagningsläge.
Slaven fungerar på samma sätt som mastern. Slaven styr /RE-stiftet på RS-485-sändtagaren för att ställa in den i mottagningsläge, tar emot bitströmmen som sänds av mastern, konverterar den till en ensidig signal och tar emot den via slavens UART RXD-linje. När slaven är redo att svara, sänder den data på samma sätt som mastern, medan mastern växlar till mottagningsläge.
Konvertering RS-232 till RS-485
Det är möjligt att konvertera mellan RS-232 och RS-485. En metod är att konvertera RS-232 till TTL och sedan konvertera TTL till RS-485. Naturligtvis finns det även chips som stöder direktkonvertering från RS-232 till RS-485, och många sådana moduler finns tillgängliga online.
RS-232 till RS-485 konverteringsmoduler
Skillnader mellan RS-485 och CAN
Även om RS-485 inte har ett standardiserat dataprotokollformat, delar den många likheter med CAN-bussen. Till exempel är både A&B och CANH&CANL differentialsignaler; båda kräver transceivrar för kommunikation; och båda använder 120 ohm termineringsmotstånd, bland andra likheter.
| Bussegenskaper | CAN-buss | RS-485 buss |
| Hårdvarukostnader | Något högre | Billig |
| Bussutnyttjande | Automatisk prioriterad skiljedom, högt utnyttjande | Använder polling; lågt utnyttjande |
| Dataöverföringshastighet | Hög | Låg |
| Mekanismer för feldetektering | Kontrollanten inkluderar en kontrollsummemekanism för att säkerställa noggrannheten för dataöverföring på låg-nivå | Endast fysiska lagerspecifikationer; inga specifikationer för datalänkslager |
| Effekten av ett enda-nodfel | Ingen påverkan på bussen | Bussförlamning |
| Utvecklingskostnader | Flexibel mjukvaruutveckling, låg tidskostnad | Svårt att utveckla |
| Systemkostnader | Relativt låg | Hög |
Vanliga RS-485-kretsar
Här är en vanlig RS-485-krets jag hittade på nätet. Det finns två punkter att notera:
1. Aktiveringssignalerna RE och DE kan styras av en enda GPIO för att spara resurser. När GPIO25 matar ut en hög nivå är RE och DE 0 V, och enheten går in i mottagningsläge; när GPIO25 matar ut en låg nivå är RE och DE 3,3 V, och enheten går in i sändningsläge.
2. I vissa kretsar läggs ett pull-upp-motstånd till stift A och ett pull--ner-motstånd till stift B. Den främsta anledningen till detta är att när RS-485-bussen är i viloläge är spänningsnivån inte fixerad-det vill säga att den fluktuerar mellan -200 mV} och antingen -mV}-utgången och låg nivå. UART måste hålla en hög nivå när den är inaktiv; om transceivern matar ut en låg nivå vid denna tidpunkt tolkar UART det som en startbit, vilket kan orsaka kommunikationsfel. De specifika värdena för R_u och R_d kommer inte att diskuteras i detalj här; Jag planerar att skriva en detaljerad artikel om detta ämne i framtiden.

Angående den andra punkten, observera följande:
① Om du applicerar ett pull-upp-motstånd på stift A och ett pull--ned-motstånd på stift B, kan datakommunikation misslyckas på grund av omvända anslutningar.
② Om en transceiver har inbyggda-uppdrag-upp- och neddragningsmotstånd- behöver du inte lägga till externa.




