Rakenduse disain RS-232-CAN-i teisendamiseks, kasutades väljasiinitehnoloogiat

Jun 27, 2026 Jäta sõnum

1 Sissejuhatus


Tööstusseadmete kommunikatsioon hõlmab tavaliselt suurt hulka riist- ja tarkvaratooteid, samuti standardsete arvutiplatvormide (personaalarvutite või tööjaamade) ühendamiseks tööstusautomaatikaseadmetega kasutatavaid protokolle. Sellest tulenevalt on enamik automatiseerimisseadmeid loodud täitma lihtsaid jadakäske, mis ühilduvad personaalarvutite või jadapordikaartide lisand-jadaportidega. RS-232 on praegu kõige laialdasemalt kasutatav jadaliides arvuti- ja tööstuskommunikatsioonisektoris. RS-232 on määratletud kui ühe-otsaga standard, mis on loodud sidekauguste pikendamiseks väikese kiirusega jadaside puhul. Kuna RS-232 jagab saatja ja vastuvõtja vahel ühist signaalimaandust, ei saa see kasutada diferentsiaalsignaale; vastasel juhul haakuks ühisrežiimi müra signaalisüsteemi. RS-232 standard määrab maksimaalseks kauguseks vaid 15 m ja maksimaalseks signaaliedastuskiiruseks 20 kbit/s.


CAN, lühend sõnadest "Controller Area Network", on üks rahvusvaheliselt enim kasutatavaid välibusse. Üks CAN-siinidest koosnev võrk on piiratud võrgu riistvara elektriliste omadustega. CAN-i kui mitme-seeria jadaside siini põhispetsifikatsioonid nõuavad suurt bitikiirust ja tugevat vastupidavust elektromagnetilistele häiretele, samuti võimet tuvastada sidesiinil esinevaid vigu. Isegi kui signaali edastuskaugus ulatub 10 km-ni, suudab CAN pakkuda andmeedastuskiirust kuni 50 kbit/s. Tabel 1 näitab seost CAN-siini mis tahes kahe sõlme vahelise maksimaalse edastuskauguse ja nende bitikiiruste vahel.

 

Maksimaalne vahemaa kahe sõlme vahel kolmnurkses konfiguratsioonis CAN siinisüsteemis

Bitikiirus/kbps 1000 500 250 125 100

Maksimaalne kaugus/m 40 130 270 530 620

Bitikiirus (kbps) 50 20 10 5

Maksimaalne kaugus (m) 1300 3300 6700 10000


Nagu näha, on CAN-siin reaalajas jõudluse, kohandatavuse, paindlikkuse ja töökindluse poolest RS{1}}232-st parem jadasiin. Kui kaks jadaseadet asuvad üksteisest kaugel ja neid ei saa RS-232 kaudu otse ühendada, saab RS-232 teisendada CAN-iks, et saavutada jadaseadmete võrguühendus CAN-siini kaudu.


RS-232 ja CAN erinevad aga oluliselt pingetasemete ja kaadrivormingute poolest. Täpsemalt:


RS-232 standard kasutab negatiivset loogikat, määratledes mis tahes pingetaseme vahemikus +3V ja +15V loogika "0"-na ja mis tahes pingetaseme vahemikus -3 V kuni -15 V kui loogika "1". CAN-signaale seevastu edastatakse diferentsiaalpinge abil. Neid kahte signaaliliini nimetatakse "CAN_H" ja "CAN_L". Staatilises olekus on mõlemad umbes 2,5 V; seda olekut kujutatakse loogilise "1"-na ja sellele viidatakse ka kui "retsessiivsele". Kui CAN_H on suurem kui CAN_L, tähistab see loogilist "0", mida tuntakse kui "dominant". Domineerivas olekus on tüüpilised pinge väärtused: CAN_H=3.5V, CAN_L=1.5V;

 

RS-232 jadapordi kaadrivorming on: üks algusbitt, kaheksa andmebitti, programmeeritav üheksas bitt (mis toimib nii edastamise kui ka vastuvõtu aadressi/andmebitina) ja üks stoppbitt. CAN andmekaadri formaat koosneb: kaadri päisest + ID + andmetest (mis võib jagada kaheks vorminguks: standardkaadrid ja laiendatud kaadrid).

基于现场总线实现RS-232到CAN转换的应用设计Seetõttu vajab disain mikrokontrollerit, et teostada teisendusi, näiteks taseme- ja kaadrivormingu teisendusi. Teisendusprotsess on näidatud joonisel 1.

 

2 Riistvarakujundus RS-232-CAN-i teisendamiseks


RS-232-to-CAN-i teisendusseadme projekteerimisel kasutatakse mikroprotsessorina mikrokontrollerit AT89C52; SJA1000 kasutatakse CAN-mikrokontrollerina. SJA1000 integreerib CAN-protokolli füüsilise kihi ja andmesidekihi funktsioonid ning suudab passiivselt käsitleda sideandmete raamimist; AT82C250 toimib liidesena CAN-kontrolleri ja füüsilise siini vahel, pakkudes siinile diferentsiaalset edastusvõimet ja CAN-kontrolleri diferentsiaalset vastuvõtuvõimet. AT82C250 3. kontakti kaudu saab valida kolm erinevat töörežiimi (kiire{16}}kalle, kallaku juhtimine ja ooterežiim). Kui kontakt 3 on maandatud, töötab seade suure kiirusega režiimis; kiire optiline isolatsioon on rakendatud 6N137 abil, mis hoiab ära väliste signaalide häired; MAX232 kasutatakse 232-tasemeliste signaalide teisendamiseks TTL-tasemeteks mikrokontrolleri liidese kiibi jaoks. Konkreetsete riistvaraliidese vooluringide üksikasjade kohta vaadake SJA1000 vastavaid ressursse; rohkem selgitusi siin ei anta. Siiski tuleks tähelepanu pöörata järgmistele punktidele.


(1) CAN-siini mõlemasse otsa on ühendatud 120Ω takisti, et sobitada siini takistust, parandades seeläbi häiretekindlust ja andmeside usaldusväärsust. Praktikas piisab aga sellest, et CAN-võrgus on šunditakisti "CAN_H" ja "CAN_L" vahel 60Ω.


(2) SJA1000 kontakti 20 (RX1) saab maandada, kui seda ei kasutata (vaadake konkreetse põhjuse tarkvara kujundust); koos seadistusbitiga CDR.6 võib see siini pikkust oluliselt suurendada.


(3) Viikude TX0 ja TX1 ühendusmeetod määrab jadaväljundi taseme. Täpsema teabe saamiseks vaadake väljundi juhtimisregistri (OCR) sätteid.


(4) AT82C250 RS-viigu ja maanduse vahele on ühendatud kaldetakisti. Takistuse väärtust saab vastavalt siini sidekiirusele reguleerida, tavaliselt vahemikus 16 kΩ kuni 140 kΩ.


(5) MAX232 vajab nelja elektrolüütkondensaatorit -C1, C2, C3 ja C4 – mida kasutatakse ka sisemiseks võimsuse muundamiseks. Kõikidel on reiting 1 μF/25 V; Soovitatav on kasutada tantaalkondensaatoreid ja need tuleks asetada kiibile võimalikult lähedale. VCC toiteallika ja maanduse vahele tuleb ühendada 0,1 μF lahtisidestuskondensaator.


3 Tarkvara disain RS-232 konversiooniks CAN-iks


Mikroprotsessori juhtimisel võib RS-232 ja CAN-i vahelise andmevahetuse ajal jadapordi vastuvõtu ja CAN-i katkestuste kasutamine parandada töö efektiivsust. Põhiprogrammi vooskeem on näidatud joonisel 2. SJA1000 saab lähtestada ainult lähtestamisrežiimis; see hõlmab peamiselt töörežiimi, kella jaotuse ja vastuvõtufiltri registrite seadistamist, edastuskiiruse parameetrite konfigureerimist ja katkestuse lubamise registri seadistamist.

 

See, kas andmeid saab täpselt edastada, sõltub ka edastuskiirusest ja voo juhtimisest, mis on aspektid, mida tarkvara projekteerimisel tähelepanuta jätta ei saa. Seetõttu keskenduvad järgmised jaotised CAN-i andmeedastuskiiruse konfigureerimisele, jadapordi edastuskiiruste automaatsele tuvastamisele ja jadapordi andmevoo juhtimisele.

info-1-1

 

3.1 CAN-filtri kiiruse määramine


Üks CAN-protokolli põhielemente on edastuskiirus. Kasutajad saavad määrata biti diskreetimispunktide asukoha bitiperioodi piires ja proovide arvu, võimaldades neil oma rakenduste jaoks võrgu jõudlust vabalt optimeerida. Selle optimeerimisprotsessi käigus tuleb aga pöörata tähelepanu seosele biti ajastuse parameetrite jaoks kasutatava võrdlusostsillaatori tolerantsi ja süsteemisiseste erinevate signaalide levimise viivituste vahel.


Süsteemi bitikiirus fBil tähistab ajaühikus edastatud andmebittide arvu, st edastuskiirust fBit=1/tBit. Nominaalne bitiajastus koosneb kolmest mitte-kattuvast segmendist: SYNC_SEG, TSEG1 ja TSEG2. Neid kolme ajasegmenti tähistatakse vastavalt kui tSYNC_SEG, tTSEG1 ja tTSEG2. Seetõttu on nominaalne bitiperiood tBit nende kolme ajasegmendi summa.


tBit=tSYNC_SEG + tTSEG1 + tTSEG2


Bitiperioodi piires väljendatakse neid segmente põhiajaühiku täisarvulistena. Seda ajaühikut nimetatakse ajakvoodiks (TQ) ja ajakvoodi kestus on üks CAN-süsteemi kella (tSCL) tsükkel, mis tuletatakse ostsillaatori kella perioodist (tCLK). CAN-süsteemi kella saab reguleerida, programmeerides eelskaalateguri (boodikiiruse eelseadistatud väärtus, BRP). Täpsemalt:


tSCL=BRP × 2tCLK=2BPR/fCLK


Teine väga oluline ajavahemik CAN-biti ajastuse arvutuste jaoks on sünkroonimishüppe laius (SJW), mille kestus on tSJW. SJW segment ei ole osa bititsüklist; pigem määratleb see maksimaalse TQ-de arvu, mille võrra bititsüklit resünkroniseerimissündmuse ajal pikendatakse või lühendatakse. Lisaks võimaldab CAN-protokoll kasutajatel määrata biti diskreetimisrežiimi (SAM), mis võib olla kas üksik-proovirežiim või kolme-proovirežiim (valides ühe tulemuse kolmest proovist). Ühe-proovi režiimis on proovivõtupunkt TSEG1 segmendi lõpus. Kolme-proovi režiimis võetakse kaks täiendavat proovivõtupunkti võrreldes ühe-proovi režiimiga; need asuvad enne TSEG1 segmendi lõppu, eraldatuna ühe TQ-ga.

 

info-1-1

Eespool mainitud BPR, SJW, SAM, TESG1 ja TESG2 saab kasutaja defineerida CAN-kontrolleri sisemiste registrite BTR0 ja BTR1 kaudu. Üksikasjad on näidatud joonisel 3. Pärast BTR0 ja BTR1 seadistamist on tegelik edastuskiiruse vahemik:
Maksimaalne=1/(tBit - tSJW), minimaalne=1/(tBit + tSJW)

 

3.2 Jadapordi edastuskiiruse tuvastamine


Kui jadaseade toimib hostina, siis kui teil on vaja tuvastada konversiooniseadme jadapordi edastuskiirus sel ajal, saate esmalt määrata hosti vastuvõtmise boodikiiruse (näiteks 9600 boodi) ja saata terminalist konkreetse märgi (näiteks käru tagasisaatmine). Sel viisil saab host vastuvõetud märgiteabe põhjal määrata teisendusseadme side boodikiiruse. Käru tagastusmärgi ASCII väärtus on 0DH; erinevatel andmeedastuskiirustel vastuvõetud väärtused on loetletud tabelis 2.


Erinevate voosagedustega vastuvõetud baidid


Baadisagedus (bit/s) vastuvõetud baitid (kuueteistkümnendsüsteem) edastuskiirus (bit/s) vastuvõetud baidid (kuueteistkümnendsüsteem)


1200 80 4800 E6

1800 F0 9600 0D

2400 78 19200 F*


3.3 Jadapordi voo juhtimine


Siin kasutatav mõiste "voog" viitab andmevoogudele. Kahe jadapordi vahelise edastuse ajal tekib sageli andmete kadu. Kuna mikrokontrolleri puhvri mahutavus on piiratud, siis kui puhver on andmete vastuvõtmise ajal täis, lähevad kõik sel ajal saatmist jätkavad andmed kaotsi. Voo juhtimine lahendab selle probleemi tõhusalt: kui vastuvõttev ots ei saa andmeid õigeaegselt töödelda, saadab voojuhtimissüsteem "ei saa vastu" signaali, mille tõttu saatmisots peatab saatmise, kuni saab vastu "edastuse jätkamise" signaali. Seetõttu juhib vookontroll andmeedastusprotsessi ja hoiab ära andmete kadumise. Kaks sagedamini kasutatavat voojuhtimise tüüpi on riistvaraline voo juhtimine (sh RTS/CTS, DTR/CTS jne) ja tarkvara voo juhtimine (XON/XOFF{6}}continue/stopp). Järgmine selgitus keskendub ainult riistvaralise voo juhtimise meetodile, kasutades RTS/CTS-i.


Voo juhtimiseks riistvara kasutamisel ühendatakse jadaterminali RTS- ja CTS-viigud mikrokontrolleri I/O-portidega ning käivitus-/seiskamissignaalid võetakse vastu ja edastatakse, seades I/O-pordid väärtusele 1 või 0. Andmeterminali seade (nt arvuti) kasutab RTS-i mikrokontrolleri poolt saadetava andmevoo algatamiseks ja mikrokontrollerilt andmete voo käivitamiseks ja pauside kasutamiseks. Selle riistvaralise käepigistuse meetodi rakendamiseks määratakse programmeerimise ajal kõrge-taseme lipp ja madala-taseme lipp, mis põhinevad vastuvõtupuhvri suurusel. Kui puhvris olevate andmete hulk jõuab kõrge-taseme läveni, määratakse vastuvõtuotsa CTS-rida madalaks (loogika 0). Kui saateotsas olev programm tuvastab, et CTS on madal, peatab see andmete edastamise seni, kuni andmemaht vastuvõtupuhvris langeb alla madala-taseme läve ja CTS on seatud kõrgeks. RTS-i kasutatakse näitamaks, kas vastuvõttev seade on andmete vastuvõtmiseks valmis.


3.4 VÕIB vastu võtta alamprogrammi


PeliCAN-vorming toetab nii standardseid kui ka laiendatud kaadreid. CAN-režiimi saab konfigureerida kellajaguri registris oleva CDR.7 abil (0 BasicCAN-i jaoks, 1 PeliCAN-i jaoks). CAN-andmete vastuvõtmisel kasutatakse FF-bitti kaadri teabes, et teha kindlaks, kas tegemist on standardse või laiendatud kaadriga, ja RTR-bitti kasutatakse kaugkaadri ja andmekaadri eristamiseks. Järgmine on CAN-vastuvõtu alamprogramm:

 

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

;//CAN-andmete vastuvõtt/ühendatud 2-baidise ID-ga kaadrivormingusse//

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

 

RECAN:

MOV R0, #C_RE ; Mikrokontrolleri sisepuhvri algusaadress

MOV DPTR, #RXBUF ; Lugege ja salvestage vastuvõtupuhvri sisu

MOVX A, @DPTR ; Lugege CAN-puhvri teist baiti

MOV @R0, A ; Salvesta

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

MOV R2, nr 0

SJMP SFF_RE ; Olenevalt ID-numbrist on "andmebaidi" hõivamise koht erinev

EFF_RE: MOV R2, #2

SFF_RE: MOV R2, #2

SFF_RE:

JB ACC.6, EXIT_RECAN ; Kontrollige RTR-bitti; kui 1 (kaugkaader), hüppa välja

ANL A, #0FH

MOV R3, A ; Sel hetkel tähistavad keskmised 4 bitti andmete pikkust

MOV C_NUM, A ; Salvestage vastuvõetud kaadri pikkus R3 ja R5

RDATA0:

INC DPTR; 2-baidine 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; EFF-i puhul jätke kahe-baidi ID vahele

JZ DRATA1

INC DPTR

INC DPTR

ANDMED1: ; Andmebaidid

INC DPTR

INC R0

MOVX A, @DPTR

MOV @R0, A

DJNZ R3, RDATA1

EXIT_RECAN:

RET

 

4 Järeldus


Arvutite miniaturiseerimine on loonud vajalikud tingimused mõõtmis- ja juhtimisseadmete intelligentseks arendamiseks, võimaldades mikroprotsessoril{0}}põhinevatel lõppseadmetel omada suurepäraseid digitaalseid sidevõimalusi. Üha suurema arvu nutikate terminalide ilmumisega seatakse kõrgemad nõudmised võrguarhitektuurile, protokollidele, reaalajas-jõudlusele, aga ka rakendatavusele, paindlikkusele, töökindlusele ja isegi kuludele. Järelikult on väljasiinitehnoloogial palju lubadusi edaspidiseks arenguks. CAN-siini raami struktuur sisaldab identifikaatorit (ID), mis võimaldab seadmevõrgus omada mitut võrguhosti; ehk nende võrguhostide kaudu saab jälgida kogu seadmevõrgu tööolekut ja teha vastavaid juhtimisotsuseid. See seade on nüüdseks täielikult välja töötatud ja saavutanud praktilistes rakendustes suurepäraseid tulemusi.

Küsi pakkumist

whatsapp

Telefoni

E-posti

Küsitlus