Sovellussuunnittelu RS-232-CAN-muunnokselle kenttäväylätekniikkaa käyttämällä

Jun 27, 2026 Jätä viesti

1 Johdanto


Teollisuuslaitteiden viestintä sisältää tyypillisesti monenlaisia ​​laitteisto- ja ohjelmistotuotteita sekä protokollia, joita käytetään yhdistämään standarditietokonealustoja (henkilökohtaisia ​​tietokoneita tai työasemia) teollisuusautomaatiolaitteisiin. Tästä syystä useimmat automaatiolaitteet on suunniteltu suorittamaan yksinkertaisia ​​sarjakomentoja, jotka ovat yhteensopivia henkilökohtaisten tietokoneiden tai sarjaporttikorttien lisäosien-standardien kanssa. RS-232 on tällä hetkellä eniten käytetty sarjaliitäntä PC- ja teollisuusviestintäaloilla. RS-232 on määritelty yksipäiseksi{10}}standardiksi, joka on suunniteltu pidentämään viestintäetäisyyksiä hitaassa sarjaliikenteessä. Koska RS-232 jakaa yhteisen signaalimaan lähettimen ja vastaanottimen välillä, se ei voi käyttää differentiaalisignaaleja; muuten yhteismoodin kohina kytkeytyisi signaalijärjestelmään. RS-232-standardin mukaan maksimietäisyys on vain 15 m ja signaalin enimmäissiirtonopeus 20 kbit/s.


CAN, lyhenne sanoista "Controller Area Network", on yksi kansainvälisesti eniten käytetyistä kenttäväylistä. Yksittäistä CAN-väylistä koostuvaa verkkoa rajoittavat verkkolaitteiston sähköiset ominaisuudet. Multi-master-sarjatietoliikenneväylänä CAN:n perussuunnitteluvaatimukset edellyttävät suuria bittinopeuksia ja vahvaa sähkömagneettisten häiriöiden kestävyyttä sekä kykyä havaita tietoliikenneväylällä esiintyvät virheet. Vaikka signaalin lähetysetäisyys saavuttaisi 10 km, CAN voi silti tarjota tiedonsiirtonopeudet jopa 50 kbit/s. Taulukko 1 esittää CAN-väylän kahden solmun välisen maksimisiirtoetäisyyden ja niiden bittinopeuksien välisen suhteen.

 

Maksimietäisyys minkä tahansa kahden solmun välillä kolmiomaisessa konfiguraatiossa CAN-väyläjärjestelmässä

Bittinopeus/kbps 1000 500 250 125 100

Suurin etäisyys/m 40 130 270 530 620

Bittinopeus (kbps) 50 20 10 5

Suurin etäisyys (m) 1300 3300 6700 10000


Kuten voidaan nähdä, CAN-väylä on ylivoimainen sarjaväylä RS-232:een verrattuna reaaliaikaisen suorituskyvyn, mukautuvuuden, joustavuuden ja luotettavuuden suhteen. Kun kaksi sarjalaitetta sijaitsevat kaukana toisistaan, eikä niitä voida yhdistää suoraan RS-232:n kautta, RS-232 voidaan muuntaa CAN:ksi sarjalaitteiden verkkoliittämiseksi CAN-väylän kautta.


RS-232 ja CAN eroavat kuitenkin merkittävästi jännitetasojen ja kehysmuotojen suhteen. Erityisesti:


RS-232-standardi käyttää negatiivista logiikkaa ja määrittelee minkä tahansa jännitetason välillä +3V ja +15V loogiseksi "0":ksi ja minkä tahansa jännitetason välillä -3 V ja -15 V loogiseksi "1". CAN-signaalit sen sijaan lähetetään differentiaalijännitteellä. Näitä kahta signaalilinjaa kutsutaan nimellä "CAN_H" ja "CAN_L". Staattisessa tilassa molemmat ovat noin 2,5 V; tämä tila esitetään loogisena "1" ja sitä kutsutaan myös "resessiiviseksi". Kun CAN_H on suurempi kuin CAN_L, se edustaa loogista "0", joka tunnetaan nimellä "dominantti". Dominoivassa tilassa tyypilliset jännitearvot ovat: CAN_H=3.5V, CAN_L=1.5V;

 

RS-232-sarjaportin kehysmuoto on: yksi aloitusbitti, kahdeksan databittiä, ohjelmoitava yhdeksäs bitti (joka toimii osoite/databittinä sekä lähetyksessä että vastaanotossa) ja yksi lopetusbitti. CAN-datakehysmuoto koostuu: kehyksen otsikosta + ID + tiedoista (joka voidaan jakaa kahteen muotoon: vakiokehykset ja laajennetut kehykset).

基于现场总线实现RS-232到CAN转换的应用设计Siksi suunnittelu vaatii mikro-ohjaimen muunnoksia, kuten taso- ja kehysmuotomuunnoksia, suorittamiseen. Muunnosprosessi on esitetty kuvassa 1.

 

2 Laitteiston suunnittelu RS-232-CAN-muunnokselle


Suunniteltaessa RS-232-to-CAN-muunnoslaitetta mikroprosessorina käytetään AT89C52-mikro-ohjainta. SJA1000:ta käytetään CAN-mikro-ohjaimena. SJA1000 integroi CAN-protokollan fyysisen kerroksen ja datalinkkikerroksen toiminnot ja pystyy käsittelemään passiivisesti viestintädatan kehystystä; AT82C250 toimii liitäntänä CAN-ohjaimen ja fyysisen väylän välillä ja tarjoaa differentiaalisen lähetyskyvyn väylälle ja differentiaalisen vastaanottokyvyn CAN-ohjaimelle. Kolme erilaista toimintatilaa (nopea{16}}nopeus, kaltevuussäätö ja valmiustila) voidaan valita AT82C250:n nastan 3 kautta. Kun nasta 3 on maadoitettu, laite toimii nopeassa tilassa; nopea optinen eristys toteutetaan 6N137:llä, joka estää ulkoisten signaalien aiheuttamat häiriöt; MAX232:ta käytetään 232-tason signaalien muuntamiseen TTL-tasoiksi mikro-ohjaimen liitäntäsirulle. Katso erityisiä laitteistorajapintapiirejä koskevia tietoja SJA1000:n asianmukaisista resursseista. tässä ei anneta lisäselvityksiä. Seuraavat seikat on kuitenkin huomioitava.


(1) CAN-väylän molempiin päihin on kytketty 120 Ω:n vastus sovittamaan väylän impedanssi, mikä parantaa häiriönsietoa ja tiedonsiirron luotettavuutta. Käytännössä kuitenkin riittää, että shunttivastus "CAN_H" ja "CAN_L" välillä CAN-verkossa on 60Ω.


(2) SJA1000:n nasta 20 (RX1) voidaan maadoittaa, kun sitä ei käytetä (katso ohjelmiston suunnittelu erityisestä syystä); yhdistettynä asetusbittiin CDR.6, tämä voi pidentää merkittävästi väylän pituutta.


(3) Nastan TX0 ja TX1 kytkentätapa määrittää sarjalähdön tason. Katso tarkempia tietoja Output Control Register (OCR) -asetuksista.


(4) Kaltevuusvastus on kytketty AT82C250:n RS-nastan ja maan väliin. Resistanssiarvoa voidaan säätää sopivasti väylän tiedonsiirtonopeuden perusteella, tyypillisesti välillä 16 kΩ - 140 kΩ.


(5) MAX232 vaatii neljä elektrolyyttikondensaattoria -C1, C2, C3 ja C4, joita käytetään myös sisäiseen tehonmuuntoon. Kaikkien luokitus on 1 μF/25 V; tantaalikondensaattoreita suositellaan, ja ne tulee sijoittaa mahdollisimman lähelle sirua. VCC-virtalähteen ja maan väliin on kytkettävä 0,1 μF:n erotuskondensaattori.


3 Ohjelmistosuunnittelu RS-232-CAN-muunnokselle


Mikroprosessoriohjauksessa sarjaporttivastaanoton ja CAN-keskeytysten käyttö RS-232:n ja CAN:n välisen tiedonsiirron aikana voi parantaa toiminnan tehokkuutta. Pääohjelman vuokaavio on esitetty kuvassa 2. SJA1000 voidaan alustaa vain nollaustilassa; tämä sisältää ensisijaisesti toimintatilan, kellonjaon ja hyväksyntäsuodatinrekisterien asettamisen, baudinopeusparametrien konfiguroinnin ja keskeytyksen sallimisrekisterin asettamisen.

 

Se, voidaanko tietoja siirtää tarkasti, riippuu myös tiedonsiirtonopeudesta ja virtauksen ohjauksesta, joita ei voida jättää huomiotta ohjelmiston suunnittelussa. Siksi seuraavat osiot keskittyvät CAN-siirtonopeuden konfigurointiin, sarjaportin tiedonsiirtonopeuksien automaattiseen tunnistamiseen ja sarjaportin tiedonkulun ohjaukseen.

info-1-1

 

3.1 CAN-suodatusnopeuden asettaminen


Yksi CAN-protokollan avainelementeistä on tiedonsiirtonopeus. Käyttäjät voivat asettaa bittinäytteenottopisteiden sijainnin bittijakson sisällä ja näytteiden lukumäärän, jolloin he voivat vapaasti optimoida verkon suorituskykyä sovelluksilleen. Tässä optimointiprosessissa on kuitenkin kiinnitettävä huomiota bittiajoitusparametreihin käytetyn referenssioskillaattorin toleranssin ja järjestelmän eri signaalien etenemisviiveiden väliseen suhteeseen.


Järjestelmän bittinopeus fBil edustaa lähetettyjen databittien määrää aikayksikköä kohti, eli siirtonopeutta fBit=1/tBit. Nimellinen bittiajoitus koostuu kolmesta ei--päällekkäisestä segmentistä: SYNC_SEG, TSEG1 ja TSEG2. Nämä kolme aikasegmenttiä on merkitty tSYNC_SEG, tTSEG1 ja tTSEG2, vastaavasti. Siksi nimellinen bittijakso tBit on näiden kolmen aikasegmentin summa.


tBitti=tSYNC_SEG + tTSEG1 + tTSEG2


Bittijakson sisällä nämä segmentit ilmaistaan ​​perusaikayksikön kokonaislukukerroina. Tätä aikayksikköä kutsutaan aikakiintiöksi (TQ), ja aikakiintiön kesto on yksi CAN-järjestelmän kellon (tSCL) jakso, joka on johdettu oskillaattorin kellojaksosta (tCLK). CAN-järjestelmän kelloa voidaan säätää ohjelmoimalla esiskaalaaja (baud rate preset value, BRP). Erityisesti:


tSCL=BRP × 2tCLK=2BPR/fCLK


Toinen erittäin tärkeä aikaväli CAN-bittiajoituslaskelmille on synkronoinnin hyppyleveys (SJW), jonka kesto on tSJW. SJW-segmentti ei ole osa bittisykliä; pikemminkin se määrittelee TQ:iden maksimimäärän, jolla bittijaksoa pidennetään tai lyhennetään uudelleensynkronointitapahtuman aikana. Lisäksi CAN-protokollan avulla käyttäjät voivat määrittää bittinäytteenottotilan (SAM), joka voi olla joko yksi-näytetila tai kolme-näytetila (valitsemalla yksi tulos kolmesta näytteestä). Yksi-näytteenottotilassa näytteenottopiste on TSEG1-segmentin lopussa. Kolmen-näytteen tilassa otetaan kaksi ylimääräistä näytteenottopistettä verrattuna yhden-näytteen tilaan; nämä sijaitsevat ennen TSEG1-segmentin loppua yhden TQ:n erottamana.

 

info-1-1

Käyttäjä voi määrittää edellä mainitut BPR, SJW, SAM, TESG1 ja TESG2 CAN-ohjaimen sisäisten rekistereiden BTR0 ja BTR1 kautta. Yksityiskohdat näkyvät kuvassa 3. Kun BTR0 ja BTR1 on asetettu, todellinen baudinopeusalue on:
Suurin=1/(tBit - tSJW), minimi=1/(tBit + tSJW)

 

3.2 Sarjaportin siirtonopeuden tunnistus


Kun sarjalaite toimii isäntänä, jos sinun on tunnistettava muunnoslaitteen sarjaportin siirtonopeus tuolloin, voit ensin asettaa isännän vastaanottonopeuden (esim. 9600 baudia) ja lähettää tietyn merkin (esim. vaunun palautus) päätteestä. Tällä tavalla isäntä voi määrittää muunnoslaitteen tiedonsiirtonopeuden vastaanotetun merkkiinformaation perusteella. Carriage return -merkin ASCII-arvo on 0DH; eri siirtonopeuksilla vastaanotetut arvot on lueteltu taulukossa 2.


Vastaanotetut tavut eri siirtonopeuksilla


Tiedonsiirtonopeus (bit/s) Vastaanotetut tavut (heksadesimaali) Tiedonsiirtonopeus (bit/s) Vastaanotetut tavut (heksadesimaali)


1200 80 4800 E6

1800 F0 9600 0D

2400 78 19200 F*


3.3 Sarjaportin virtauksen ohjaus


Tässä käytetty termi "virtaus" viittaa tietovirtaan. Tietojen häviäminen tapahtuu usein kahden sarjaportin välisen siirron aikana. Koska mikro-ohjaimen puskurin kapasiteetti on rajoitettu, jos puskuri on täynnä dataa vastaanotettaessa, kaikki sillä hetkellä lähetettävät tiedot menetetään. Vuonohjaus ratkaisee tehokkaasti tämän ongelman: kun vastaanottava pää ei pysty käsittelemään dataa ajoissa, vuonohjausjärjestelmä lähettää "ei vastaanota" -signaalin, jolloin lähetyspää lopettaa lähettämisen, kunnes se vastaanottaa "jatka lähetystä" -signaalin. Siksi vuonhallinta hallitsee tiedonsiirtoprosessia ja estää tietojen häviämisen. Kaksi yleisesti käytettyä vuonohjaustyyppiä ovat laitteiston vuonohjaus (mukaan lukien RTS/CTS, DTR/CTS jne.) ja ohjelmistovuon ohjaus (XON/XOFF{6}}jatka/pysäytys). Seuraava selitys keskittyy yksinomaan RTS/CTS:ää käyttävään laitteistovuon ohjausmenetelmään.


Käytettäessä laitteistoa vuon ohjaukseen sarjapäätteen RTS- ja CTS-nastat kytketään mikro-ohjaimen I/O-portteihin ja käynnistys-/pysäytyssignaalit vastaanotetaan ja lähetetään asettamalla I/O-portit arvoon 1 tai 0. Päätelaite (kuten tietokone) käynnistää RTS:n avulla mikro-ohjaimen lähettämän tietovirran, kun taas mikro-ohjain käyttää datavirtaa ja käyttää sitä. Tämän laitteiston kättelymenetelmän toteuttamiseksi korkean-tason lippu ja matalan-tason lippu asetetaan ohjelmoinnin aikana vastaanottavan puskurin koon perusteella. Kun puskurissa olevan datan määrä saavuttaa korkean-tason kynnyksen, CTS-linja vastaanottopäässä asetetaan matalaksi (looginen 0). Kun lähetyspäässä oleva ohjelma havaitsee, että CTS on alhainen, se lopettaa datan lähettämisen, kunnes datamäärä vastaanottopuskurissa putoaa matalan-tason kynnyksen alapuolelle ja CTS on asetettu korkeaksi. RTS:ää käytetään osoittamaan, onko vastaanottava laite valmis vastaanottamaan dataa.


3.4 VOI vastaanottaa aliohjelman


PeliCAN-muoto tukee sekä tavallisia että laajennettuja kehyksiä. CAN-tila voidaan konfiguroida käyttämällä CDR.7:ää kellojakajarekisterissä (0 BasicCANille, 1 PeliCANille). Kun vastaanotetaan CAN-dataa, kehystiedon FF-bittiä käytetään määrittämään, onko kyseessä standardi vai laajennettu kehys, ja RTR-bittiä käytetään erottamaan etäkehys ja datakehys. Seuraava on CAN-vastaanotto-alirutiini:

 

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

;//CAN-tietojen vastaanotto/Yhdistetty kehysmuotoon 2-tavuisella tunnuksella//

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

 

RECAN:

MOV R0, #C_RE ; Mikro-ohjaimen sisäisen puskurin aloitusosoite

MOV DPTR, #RXBUF ; Lue ja tallenna vastaanottopuskurin sisältö

MOVX A, @DPTR ; Lue CAN-puskurin toinen tavu

MOV @R0, A ; Tallentaa

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

MOV R2, #0

SJMP SFF_RE ; Tunnusnumerosta riippuen paikka, jossa "datatavu" kaapataan, vaihtelee

EFF_RE: MOV R2, #2

SFF_RE: MOV R2, #2

SFF_RE:

JB ACC.6, EXIT_RECAN ; Tarkista RTR-bitti; jos 1 (etäkehys), hyppää ulos

ANL A, #0FH

MOV R3, A; Tässä vaiheessa keskimmäiset 4 bittiä edustavat datan pituutta

MOV C_NUM, A ; Tallenna vastaanotetun kehyksen pituus R3:een ja R5:een

RDATA0:

INC DPTR; 2-tavuinen tunnus

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; Jos EFF, ohita kahden-tavun tunnus

JZ DRATA1

INC DPTR

INC DPTR

DATA1: ; Datatavut

INC DPTR

INC R0

MOVX A, @DPTR

MOV @R0, A

DJNZ R3, RDATA1

EXIT_RECAN:

RET

 

4 Johtopäätös


Tietokoneiden miniatyrisointi on tarjonnut tarvittavat edellytykset mittaus- ja ohjauslaitteiden älykkäälle kehitykselle, mikä mahdollistaa mikroprosessori{0}}pohjaisten päätelaitteiden ylivertaisen digitaalisen viestintäkyvyn. Yhä useamman älypäätteen ilmaantumisen myötä verkkoarkkitehtuurille, protokollille, reaaliaikaiselle-suorituskyvylle sekä soveltuvuudelle, joustavuudelle, luotettavuudelle ja jopa kustannuksille asetetaan korkeampia vaatimuksia. Tästä johtuen kenttäväyläteknologialla on suuri lupaus tulevaisuuden kehitykselle. CAN-väylän kehysrakenne sisältää tunnisteen (ID), joka mahdollistaa useiden verkkoisäntien käytön laiteverkossa; eli näiden verkkoisäntien kautta voidaan valvoa koko laiteverkon toimintatilaa ja tehdä vastaavia ohjauspäätöksiä. Tämä laite on nyt täysin kehitetty ja on saavuttanut erinomaisia ​​tuloksia käytännön sovelluksissa.

Lähetä kysely

whatsapp

Puhelin

Sähköposti

Tutkimus