Applikationsdesign til RS-232-til-CAN-konvertering ved hjælp af Fieldbus-teknologi

Jun 27, 2026 Læg en besked

1 Indledning


Industrielt udstyrskommunikation involverer typisk en bred vifte af hardware- og softwareprodukter samt protokoller, der bruges til at forbinde standardcomputerplatforme (personlige computere eller arbejdsstationer) til industrielle automationsenheder. Derfor er de fleste automatiseringsenheder designet til at udføre simple serielle kommandoer, der er kompatible med de serielle standardporte, der findes på personlige computere eller tilføjede-serieportkort. RS-232 er i øjeblikket den mest udbredte serielle grænseflade i pc- og industriel kommunikationssektorer. RS-232 er defineret som en enkelt-ended standard designet til at forlænge kommunikationsafstande i lavhastigheds seriel kommunikation. Fordi RS-232 deler en fælles signaljord mellem sender og modtager, kan den ikke bruge differentielle signaler; ellers ville common-mode støj koble sig ind i signalsystemet. RS-232-standarden specificerer en maksimal afstand på kun 15 m og en maksimal signaltransmissionshastighed på 20 kbit/s.


CAN, forkortelse for "Controller Area Network", er en af ​​de mest udbredte feltbusser internationalt. Et enkelt netværk bestående af CAN-busser er begrænset af netværkets hardwares elektriske egenskaber. Som en multi-master seriel kommunikationsbus kræver CANs grundlæggende designspecifikationer høje bithastigheder og stærk modstand mod elektromagnetisk interferens, samt evnen til at detektere eventuelle fejl, der opstår på kommunikationsbussen. Selv når signaltransmissionsafstanden når 10 km, kan CAN stadig levere datatransmissionshastigheder på op til 50 kbit/s. Tabel 1 viser forholdet mellem den maksimale transmissionsafstand mellem to vilkårlige noder på en CAN-bus og deres bithastigheder.

 

Maksimal afstand mellem to knudepunkter i en trekantet konfiguration i et CAN-bussystem

Bithastighed/kbps 1000 500 250 125 100

Maksimal afstand/m 40 130 270 530 620

Bithastighed (kbps) 50 20 10 5

Maksimal afstand (m) 1300 3300 6700 10000


Som det kan ses, er CAN-bussen en overlegen seriel bus i forhold til RS-232 med hensyn til realtidsydelse, tilpasningsevne, fleksibilitet og pålidelighed. Når to serielle enheder er placeret langt fra hinanden og ikke kan forbindes direkte via RS-232, kan RS-232 konverteres til CAN for at opnå netværksforbindelse af de serielle enheder via CAN-bussen.


RS-232 og CAN adskiller sig dog væsentligt med hensyn til spændingsniveauer og rammeformater. Specifikt:


RS-232-standarden bruger negativ logik, der definerer ethvert spændingsniveau mellem +3V og +15V som en logisk "0" og ethvert spændingsniveau mellem -3V og -15V som en logisk "1". CAN-signaler transmitteres på den anden side ved hjælp af differentialspænding. De to signallinjer kaldes "CAN_H" og "CAN_L." I statisk tilstand er begge ca. 2,5V; denne tilstand er repræsenteret som et logisk "1" og omtales også som "recessiv". Når CAN_H er højere end CAN_L, repræsenterer det et logisk "0", kendt som "dominant". I den dominerende tilstand er de typiske spændingsværdier: CAN_H=3.5V, CAN_L=1.5V;

 

Rammeformatet for den serielle RS-232-port er: én startbit, otte databit, en programmerbar niende bit (som fungerer som adresse/databit for både transmission og modtagelse) og én stopbit. CAN-datarammeformatet består af: frame header + ID + data (som kan opdeles i to formater: standardframes og udvidede frames).

基于现场总线实现RS-232到CAN转换的应用设计Derfor kræver designet en mikrocontroller til at udføre konverteringer såsom niveau- og rammeformatkonverteringer. Konverteringsprocessen er vist i figur 1.

 

2 Hardwaredesign til RS-232-til-CAN-konvertering


Ved udformningen af ​​RS-232-til-CAN-konverteringsenheden bruges AT89C52-mikrocontrolleren som mikroprocessor; SJA1000 bruges som CAN mikrocontroller. SJA1000 integrerer CAN-protokollens fysiske lag og datalinklagsfunktioner og kan passivt håndtere indramning af kommunikationsdata; AT82C250 fungerer som grænsefladen mellem CAN-controlleren og den fysiske bus, der giver differentiel transmissionskapacitet for bussen og differentiel modtagelseskapacitet for CAN-controlleren. Tre forskellige driftstilstande (høj-hastighed, hældningskontrol og standby) kan vælges via ben 3 på AT82C250. Når ben 3 er jordet, fungerer enheden i højhastighedstilstand; højhastigheds optisk isolering er implementeret ved hjælp af 6N137, som forhindrer interferens fra eksterne signaler; MAX232 bruges til at konvertere 232-niveausignaler til TTL-niveauer for mikrocontroller-interface-chippen. For specifikke hardware-interfacekredsløbsdetaljer henvises til de relevante ressourcer for SJA1000; yderligere forklaring er ikke givet her. Dog skal følgende punkter bemærkes.


(1) En 120Ω modstand er tilsluttet i begge ender af CAN-bussen for at matche busimpedansen, og derved forbedre immuniteten over for interferens og pålideligheden af ​​datakommunikation. I praksis er det dog tilstrækkeligt at sikre, at shuntmodstanden mellem "CAN_H" og "CAN_L" i CAN-netværket er 60Ω.


(2) Ben 20 (RX1) på SJA1000 kan jordes, når den ikke er i brug (se softwaredesignet for den specifikke årsag); kombineret med indstilling af bit CDR.6 kan dette øge buslængden betydeligt.


(3) Tilslutningsmetoden for benene TX0 og TX1 bestemmer niveauet for den serielle udgang. Se indstillingerne i Output Control Register (OCR) for specifikke detaljer.


(4) En hældningsmodstand er forbundet mellem RS-benet på AT82C250 og jord. Modstandsværdien kan justeres passende baseret på buskommunikationshastigheden, typisk fra 16 kΩ til 140 kΩ.


(5) MAX232 kræver fire elektrolytiske kondensatorer-C1, C2, C3 og C4 - som også bruges til intern strømkonvertering. Alle har en rating på 1 μF/25 V; tantal kondensatorer anbefales, og de bør placeres så tæt på chippen som muligt. En 0,1 μF afkoblingskondensator skal tilsluttes mellem VCC-strømforsyningen og jord.


3 Softwaredesign til RS-232 til CAN-konvertering


Under mikroprocessorkontrol kan brug af seriel portmodtagelse og CAN-afbrydelser under dataudveksling mellem RS-232 og CAN forbedre driftseffektiviteten. Hovedprogrammets flowchart er vist i figur 2. SJA1000 kan kun initialiseres i nulstillingstilstand; dette omfatter primært indstilling af driftstilstand, clock division og acceptfilterregistre, konfiguration af baudhastighedsparametre og indstilling af afbrydelsesaktiveringsregistret.

 

Hvorvidt data kan transmitteres præcist afhænger også af baudhastigheden og flowstyringen, som er aspekter, der ikke kan overses under softwaredesign. Derfor vil de følgende sektioner fokusere på konfiguration af CAN-baudrate, automatisk detektering af serielle port-baudrate og kontrol af serielports dataflow.

info-1-1

 

3.1 Indstilling af CAN-filterhastigheden


Et af nøgleelementerne i CAN-protokollen er baudraten. Brugere kan indstille positionen for bitsamplingpunkterne inden for bitperioden og antallet af samples, hvilket giver dem mulighed for frit at optimere netværkets ydeevne til deres applikationer. Under denne optimeringsproces skal der imidlertid lægges vægt på forholdet mellem tolerancen af ​​referenceoscillatoren, der anvendes til bittimingsparametre, og udbredelsesforsinkelserne af forskellige signaler i systemet.


Systemets bithastighed, fBil, repræsenterer antallet af databits transmitteret pr. tidsenhed, dvs. baudhastigheden fBit=1/tBit. Den nominelle bittiming består af tre ikke-overlappende segmenter: SYNC_SEG, TSEG1 og TSEG2. Disse tre tidssegmenter er betegnet som henholdsvis tSYNC_SEG, tTSEG1 og tTSEG2. Derfor er den nominelle bitperiode tBit summen af ​​disse tre tidssegmenter.


tBit=tSYNC_SEG + tTSEG1 + tTSEG2


Inden for bitperioden er disse segmenter udtrykt som heltals multipla af en grundlæggende tidsenhed. Denne tidsenhed kaldes tidskvoten (TQ), og varigheden af ​​en tidskvote er én cyklus af CAN-systemets ur (tSCL), som er afledt af oscillatorens clock-periode (tCLK). CAN-systemets ur kan justeres ved at programmere præskaleringsfaktoren (forudindstillet baudrateværdi, BRP). Specifikt:


tSCL=BRP × 2tCLK=2BPR/fCLK


Et andet meget vigtigt tidsinterval for CAN bit timing beregninger er synkroniseringsspringbredden (SJW), som har en varighed på tSJW. SJW-segmentet er ikke en del af bit-cyklussen; snarere definerer den det maksimale antal TQ'er, hvormed bitcyklussen forlænges eller forkortes under en resynkroniseringsbegivenhed. Derudover giver CAN-protokollen brugere mulighed for at specificere bitsampling-tilstanden (SAM), som enten kan være enkelt-sample-tilstand eller tre-sample-tilstand (ved at vælge ét resultat fra tre samples). I enkelt-sampletilstand er samplingspunktet i slutningen af ​​TSEG1-segmentet. I tre-prøvetilstand tages der yderligere to prøveudtagningspunkter sammenlignet med enkelt-prøvetilstand; disse er placeret før slutningen af ​​TSEG1-segmentet, adskilt af en TQ.

 

info-1-1

BPR, SJW, SAM, TESG1 og TESG2 nævnt ovenfor kan alle defineres af brugeren via de interne registre BTR0 og BTR1 i CAN-controlleren. Detaljer er vist i figur 3. Efter at BTR0 og BTR1 er indstillet, er det faktiske baudrateområde:
Maksimum=1/(tBit - tSJW), Minimum=1/(tBit + tSJW)

 

3.2 Seriel Port Baud Rate Detektion


Når en seriel enhed fungerer som vært, hvis du har brug for at detektere den serielle port-baudrate for konverteringsenheden på det tidspunkt, kan du først indstille værtens modtagelses-baudhastighed (f.eks. 9600 baud) og sende et bestemt tegn (f.eks. en vognretur) fra terminalen. På denne måde kan værten bestemme kommunikationsbaudraten for konverteringsindretningen baseret på den modtagne tegninformation. ASCII-værdien af ​​vognreturtegnet er 0DH; værdierne modtaget ved forskellige baud-hastigheder er anført i tabel 2.


Bytes modtaget til forskellige Baud-rater


Baud-hastighed (bit/s) Modtagne bytes (hexadecimal) Baud-hastighed (bit/s) Modtagne bytes (hexadecimal)


1200 80 4800 E6

1800 F0 9600 0D

2400 78 19200 F*


3.3 Seriel port flowkontrol


Udtrykket "flow" brugt her refererer til dataflow. Datatab forekommer ofte under transmission mellem to serielle porte. Da mikrocontrollerens buffer har begrænset kapacitet, vil alle data, der fortsætter med at blive sendt på det tidspunkt, gå tabt, hvis bufferen er fuld, når data modtages. Flowkontrol løser effektivt dette problem: Når den modtagende ende ikke kan behandle dataene i tide, sender flowkontrolsystemet et "modtag ikke"-signal, hvilket får afsenderenden til at stoppe med at sende, indtil den modtager et "genoptag transmission"-signal. Derfor styrer flowkontrol datatransmissionsprocessen og forhindrer datatab. De to almindeligt anvendte typer flowkontrol er hardwareflowkontrol (inklusive RTS/CTS, DTR/CTS osv.) og softwareflowkontrol (XON/XOFF-fortsæt/stop). Den følgende forklaring fokuserer udelukkende på hardwareflowstyringsmetoden ved hjælp af RTS/CTS.


Ved brug af hardware til flowstyring forbindes RTS- og CTS-pindene på den serielle terminal til mikrocontrollerens I/O-porte, og start/stop-signaler modtages og transmitteres ved at indstille I/O-portene til 1 eller 0. Dataterminaludstyret (såsom en computer) bruger RTS til at starte den datastrøm, der sendes af mikrocontrolleren, mens CTS-mikrocontrolleren bruger til at starte og pausere computeren. For at implementere denne hardware-handshaking-metode indstilles et flag på højt-niveau og et flag på lavt-niveau under programmering baseret på størrelsen af ​​den modtagende buffer. Når mængden af ​​data i bufferen når den høje-tærskelværdi, er CTS-linjen i den modtagende ende sat lavt (logisk 0). Når programmet i sendeenden registrerer, at CTS er lav, stopper det med at transmittere data, indtil mængden af ​​data i den modtagende buffer falder under tærsklen for lavt-niveau, og CTS er sat højt. RTS bruges til at angive, om den modtagende enhed er klar til at modtage data.


3.4 KAN modtage subrutine


PeliCAN-formatet understøtter både standard- og udvidede rammer. CAN-tilstanden kan konfigureres ved hjælp af CDR.7 i clock divider-registeret (0 for BasicCAN, 1 for PeliCAN). Når der modtages CAN-data, bruges FF-bitten i rammeinformationen til at bestemme, om det er en standardramme eller en udvidet ramme, og RTR-bitten bruges til at skelne mellem en fjernramme og en dataramme. Følgende er CAN-modtage-underrutinen:

 

;//////////////////////////////////////////////////////////////////

;//CAN-datamodtagelse/forenet til et rammeformat med et 2-byte-id//

;///////////////////////////////////////////////////////////////////////

 

GENTAG:

MOV R0, #C_RE ; Startadresse på mikrocontrollerens interne buffer

MOV DPTR, #RXBUF ; Læs og gem indholdet af modtagebufferen

MOVX A, @DPTR ; Læs den anden byte af CAN-bufferen

MOV @R0, A ; Spare

JB ACC.7, EFF_RE ; FF bit: 0=SFF, 1=EFF

MOV R2, #0

SJMP SFF_RE ; Afhængigt af ID-nummeret varierer positionen, hvor "databyten" er fanget

EFF_RE: MOV R2, #2

SFF_RE: MOV R2, #2

SFF_RE:

JB ACC.6, EXIT_RECAN ; Tjek RTR-bitten; hvis 1 (fjernramme), spring ud

ANL A, #0FH

MOV R3, A; På dette tidspunkt repræsenterer de midterste 4 bits datalængden

MOV C_NUM, A ; Gem længden af ​​den modtagne ramme i R3 og R5

RDATA0:

INC DPTR ; 2-byte ID

INC R0

MOVX A, @DPTR

MOV @R0, A

INC DPTR

MOVX A, @R0, A

INC DPTR

MOVX A, @DPTR

MOV @R0, A

MOV A, R2; Hvis EFF, spring to-byte-id'et over

JZ DRATA1

INC DPTR

INC DPTR

DATA1: ; Data bytes

INC DPTR

INC R0

MOVX A, @DPTR

MOV @R0, A

DJNZ R3, RDATA1

EXIT_RECAN:

RET

 

4 Konklusion


Miniaturiseringen af ​​computere har givet de nødvendige betingelser for intelligent udvikling af måle- og kontrolinstrumenter, hvilket gør det muligt for mikroprocessor-baserede terminalenheder at besidde overlegne digitale kommunikationsevner. Med fremkomsten af ​​et stigende antal smarte terminaler stilles der højere krav til netværksarkitektur, protokoller, realtidsydelse samt anvendelighed, fleksibilitet, pålidelighed og endda omkostninger. Feltbusteknologien lover derfor meget for den fremtidige udvikling. CAN-bussens rammestruktur inkluderer en identifikator (ID), som gør det muligt at have flere netværksværter inden for et enhedsnetværk; det vil sige, at gennem disse netværksværter kan driftsstatus for hele enhedsnetværket overvåges, og tilsvarende kontrolbeslutninger kan træffes. Denne enhed er nu fuldt udviklet og har opnået fremragende resultater i praktiske applikationer.

Send forespørgsel

whatsapp

Telefon

E-mail

Undersøgelse