Sisällysluettelo:

Yksinkertainen CANBUS -opetusohjelma: 8 vaihetta
Yksinkertainen CANBUS -opetusohjelma: 8 vaihetta

Video: Yksinkertainen CANBUS -opetusohjelma: 8 vaihetta

Video: Yksinkertainen CANBUS -opetusohjelma: 8 vaihetta
Video: Maistele teetä kotona kuin teemaistelussa | 8 VAIHEEN TEEMAISTELU | Testissä keltainen tee 2024, Marraskuu
Anonim
Yksinkertainen opetusohjelma CANBUSille
Yksinkertainen opetusohjelma CANBUSille

Olen opiskellut CAN -ohjelmaa kolme viikkoa ja nyt olen suorittanut joitakin sovelluksia oppimistulosten vahvistamiseksi. Tässä opetusohjelmassa opit käyttämään Arduinoa CANBUS -viestinnän toteuttamiseen. Jos sinulla on ehdotuksia, jätä viesti.

Tarvikkeet:

Laitteisto:

  • Maduino Zero CANBUS
  • DHT11 lämpötila- ja kosteusmoduuli
  • 1,3 "I2C OLED 128x64- sininen
  • DB9 - DB9 -kaapeli (naaras - naaras)
  • Dupont Line

Ohjelmisto:

Arduino IDE

Vaihe 1: Mikä on CANBUS

Mikä on CANBUS
Mikä on CANBUS
Mikä on CANBUS
Mikä on CANBUS

Tietoja CANista

CAN (Controller Area Network) on sarjaliikenneverkko, joka voi toteuttaa hajautetun reaaliaikaisen ohjauksen. Se on kehitetty autoteollisuudelle korvaamaan monimutkainen johtosarja kaksijohtimisella väylällä.

CAN -protokolla määrittelee datalinkkikerroksen ja osan fyysisestä kerroksesta OSI -mallissa.

CAN -protokolla on ISO -standardoitu ISO11898- ja ISO11519 -standardien mukaisesti. ISO11898 on nopea CAN-tiedonsiirtostandardi, jonka tiedonsiirtonopeus on 125 kbps-1 Mbps. ISO11519 on CAN-hidas tiedonsiirtostandardi, jonka tiedonsiirtonopeus on alle 125 kbps.

Täällä keskitymme nopeaan CANiin.

ISO-11898 kuvaa, miten tietoja välitetään verkossa olevien laitteiden välillä, ja se on kerrosten mukaan määritetyn Open Systems Interconnection -mallin (OSI) mukainen. Fyysisen tietovälineen yhdistämien laitteiden välinen todellinen tiedonsiirto määritetään mallin fyysisellä kerroksella

  • Jokaista väylään liitettyä CAN -yksikköä voidaan kutsua solmuksi. Kaikki CAN -yksiköt on kytketty väylään, joka on päättynyt kummastakin päästä 120 Ω: n vastuksilla verkon muodostamiseksi. Bussi koostuu linjoista CAN_H ja CAN_L. CAN -ohjain määrittää väylätason molempien johtimien tehotason erotuksen perusteella. Bussitasot on jaettu hallitseviin ja taantumisiin, joiden on oltava yksi niistä. Lähettäjä lähettää viestin vastaanottajalle tekemällä muutoksen väylätasolla. Kun looginen viiva "ja" suoritetaan väylällä, hallitseva taso on "0" ja resessiivinen taso on "1".
  • Hallitsevassa tilassa CAN_H -jännite on noin 3,5 V ja CAN_L -jännite on noin 1,5 V. Resessiivisessä tilassa molempien linjojen jännite on noin 2,5 V.
  • Signaali on differentiaalinen, minkä vuoksi CAN saa vahvan kohinankestoisuuden ja vikasietoisuuden. Tasapainoinen differentiaalisignaali vähentää kohinakytkentää ja mahdollistaa korkean signalointinopeuden kierrettyjen parikaapelien yli. Kunkin signaalilinjan virta on yhtä suuri, mutta päinvastainen ja johtaa kentänpoistovaikutukseen, joka on avain alhaisiin melupäästöihin. Tasapainoisten differentiaalivastaanottimien ja kierrettyjen parikaapelien käyttö parantaa CAN-väylän yhteistyyppistä hylkäämistä ja korkeaa melua.

CAN -lähetinvastaanotin

CAN -lähetinvastaanotin vastaa logiikkatason ja fyysisen signaalin välisestä muunnoksesta. Muunna looginen signaali differentiaalitasolle tai fyysinen signaali loogiselle tasolle.

CAN -ohjain

CAN -ohjain on CAN: n ydinkomponentti, joka toteuttaa kaikki CAN -protokollan datalinkkikerroksen toiminnot ja voi automaattisesti ratkaista CAN -protokollan.

MCU

MCU on vastuussa toimintopiirin ja CAN -ohjaimen ohjauksesta. Esimerkiksi CAN -ohjaimen parametrit alustetaan, kun solmu käynnistyy, CAN -kehys luetaan ja lähetetään CAN -ohjaimen kautta jne.

Vaihe 2: Tietoja CAN -viestinnästä

Kun väylä on käyttämättömänä, kaikki solmut voivat aloittaa viestien lähettämisen (monen isäntäohjauksen). Solmu, joka käyttää väylää ensimmäisen kerran, saa lähetysoikeuden (CSMA/CA -tila). Kun useita solmuja alkaa lähettää samanaikaisesti, korkean prioriteetin tunnusviestin lähettävä solmu saa lähetysoikeuden.

CAN -protokollassa kaikki viestit lähetetään kiinteässä muodossa. Kun väylä on käyttämättömänä, kaikki väylään yhdistetyt yksiköt voivat aloittaa uusien viestien lähettämisen. Kun useampi kuin kaksi solua alkaa lähettää viestejä samanaikaisesti, prioriteetti määritetään tunnisteen perusteella. Tunnus ei edusta lähetyksen kohdeosoitetta, vaan pikemminkin väylälle saapuvan viestin prioriteetti. Kun useampi kuin kaksi solua alkaa lähettää viestejä samanaikaisesti, jokainen korottoman tunnuksen bitti sovitetaan yksitellen. Välimiesmenettelyn voittanut yksikkö voi edelleen lähettää viestejä, ja välimiesmenettelyn menettänyt yksikkö lopettaa välittömästi lähettämisen ja vastaanottaa työn.

CAN -väylä on yleislähetysväylä. Tämä tarkoittaa, että kaikki solmut voivat "kuulla" kaikki lähetykset. kaikki solmut vastaanottavat aina kaiken liikenteen. CAN -laitteisto tarjoaa paikallisen suodatuksen, jotta jokainen solmu voi reagoida vain mielenkiintoisiin viesteihin.

Vaihe 3: Kehykset

Kehykset
Kehykset

CAN -laitteet lähettävät dataa CAN -verkon kautta paketteina, joita kutsutaan kehyksiksi. CANissa on neljä kehystyyppiä:

  • Datakehys: kehys, joka sisältää solmutietoja lähetettäväksi
  • Etäkehys: kehys, joka pyytää tietyn tunnisteen lähettämistä
  • Virhekehys: minkä tahansa solmun lähettämä kehys, joka havaitsee virheen
  • Ylikuormituskehys: kehys, joka antaa viiveen datan tai etäkehyksen välille

Datakehys

Datakehyksiä on kahdenlaisia, vakio- ja laajennettuja.

Kuvan bittikenttien merkitys on seuraava:

  • SOF - Yksittäinen hallitseva kehyksen alku (SOF) -bitti merkitsee viestin alkua, ja sitä käytetään synkronoimaan väylän solmut käyttämättömyyden jälkeen.
  • Identifier-Standard CAN 11-bittinen tunniste määrittää viestin prioriteetin. Mitä pienempi binääriarvo, sitä suurempi sen prioriteetti.
  • RTR - yksittäinen etälähetyspyyntö (RTR) -bitti
  • IDE - Hallitseva yhden tunnisteen laajennus (IDE) -bitti tarkoittaa, että vakiomuotoinen CAN -tunniste, jolla ei ole laajennusta, lähetetään.
  • R0 - Varattu bitti (mahdollista käyttöä myöhemmässä standardimuutoksessa).
  • DLC-4-bittinen datapituuskoodi (DLC) sisältää lähetettävän datan tavujen määrän.
  • Data - Jopa 64 bittiä sovellustietoja voidaan lähettää.
  • CRC-16-bittinen (15 bittiä ja erotin) syklinen redundanssitarkistus (CRC) sisältää edellisen sovellustiedon tarkistussumman (lähetettyjen bittien määrä) virheiden havaitsemiseksi.
  • ACK – ACK on 2 bittiä, yksi on kuittausbitti ja toinen erotin.
  • EOF-Tämä kehyksen lopun (EOF), 7-bittinen kenttä merkitsee CAN-kehyksen (viestin) lopun ja poistaa bittitäytön käytöstä, mikä osoittaa täyttövirheen, kun se on hallitseva. Kun 5 saman logiikkatason bittiä esiintyy peräkkäin normaalikäytön aikana, dataan täytetään vähän vastakkaista logiikkatasoa.
  • IFS-Tämä 7-bittinen kehystenvälinen tila (IFS) sisältää ajan, jonka ohjain tarvitsee siirtääkseen oikein vastaanotetun kehyksen oikeaan paikkaansa sanomapuskurialueella.

Välimiesmenettely

Väylän valmiustilassa yksikkö, joka aloittaa viestin lähettämisen ensin, saa lähetysoikeuden. Kun useat yksiköt alkavat lähettää samanaikaisesti, jokainen lähettävä yksikkö alkaa välimiessegmentin ensimmäisestä bitistä. Yksikkö, jolla on eniten jatkuvan tuotannon hallitsevia tasoja, voi edelleen lähettää.

Vaihe 4: Nopeus ja matka

Nopeus ja etäisyys
Nopeus ja etäisyys

CAN -väylä on väylä, joka yhdistää useita yksiköitä samanaikaisesti. Yhdistettävien yksiköiden kokonaismäärää ei teoriassa ole rajoitettu. Käytännössä liitettävien yksiköiden määrää rajoittavat väylän aikaviive ja sähkökuorma. Vähennä tiedonsiirtonopeutta, lisää liitettävien yksiköiden määrää ja lisää tiedonsiirtonopeutta. Yhdistettävien yksiköiden määrä vähenee.

Tiedonsiirtoetäisyys on käänteisessä suhteessa tiedonsiirtonopeuteen, ja mitä pidempi tiedonsiirtoetäisyys, sitä pienempi tiedonsiirtonopeus. Pidempi matka voi olla 1 km tai enemmän, mutta nopeus on alle 40 km / h.

Vaihe 5: Laitteisto

Laitteisto
Laitteisto

Maduino Zero CAN-BUS -moduuli on Makerfabsin kehittämä työkalu CANbus-tiedonsiirtoon-se perustuu Arduinoon, jossa on CAN-ohjain ja CAN-lähetin-vastaanotin, käyttövalmiin CAN-väyläportin luomiseksi.

  • MCP2515 on itsenäinen CAN-ohjain, joka toteuttaa CAN-spesifikaation. Se pystyy lähettämään ja vastaanottamaan sekä vakio- että laajennettua dataa ja etäkehyksiä.
  • MAX3051 on rajapinta CAN -protokollaohjaimen ja ohjainalueverkon (CAN) väyläjohtojen fyysisten johtojen välillä. MAX3051 tarjoaa differentiaalisen lähetyskyvyn väylälle ja differentiaalivastaanottokyvyn CAN -ohjaimelle.

Vaihe 6: Yhteys

Yhteys
Yhteys

Liitä DHT11-moduuli Maduino Zero CAN-BUS -moduuliin johdoilla, joita käytetään CAN-viestinnän tukena. Samoin kytke näyttö moduuliin vastaanottamaan tiedot ja näyttämään ne.

Yhteys Maduino Zero CANBUSin ja DHT11: n välillä

Maduino Zero CANBUS - DHT11

3v3 ------ VCC GND ------ GND D10 ------ TIEDOT

Yhteys Maduino Zero CANBUSin ja OLEDin välillä :

Maduino Zero CANBUS - OLED

3v3 ------ VCC GND ------ GND SCL ------ SCL SDA ------ SDA

Liitä kaksi Maduino Zero CANBUS -moduulia DB9 -kaapelilla.

Vaihe 7: Koodi

MAX3051 suorittaa differentiaalitason muuntamisen loogisiksi signaaleiksi. MCP2515 suorittaa CAN -toiminnon, kuten datan koodauksen ja dekoodauksen. MCU tarvitsee vain alustaa ohjaimen ja lähettää ja vastaanottaa tietoja.

  • Github:
  • Arduinon asentamisen jälkeen ei ole pakettia, joka tukee asennettavaa levyä (Arduino zero).
  • Valitse työkalut -> Hallitus -> Hallituksen johtaja, etsi "Arduino zero" ja asenna "Arduino SAMD Boards".
  • Valitse Työkalut -> Hallitus -> Arduino Zero (natiivi USB -portti), valitse Työkalut -> Portti -> com…
  • Kun olet hankkinut ohjelman GitHubista, sinun on varmistettava, että kaikki tiedostot ovat projektihakemistossa, joka sisältää CANBUS -tekniikkaa tukevat kirjasto tiedostot.
  • Asenna Adafruitin DHT -anturikirjasto, jota käytetään DHT11: n ajamiseen lämpötilan ja kosteuden saavuttamiseksi.
  • Käytä eri osoitteita lähettääksesi lämpötilan ja kosteuden erikseen koodissa Test_DHT11.ino.

CAN.sendMsgBuf (0x10, 0, stmp1.length (), stmp_send1);

viive (500); CAN.sendMsgBuf (0x11, 0, stmp2.length (), stmp_send2); viive (500);

"0x10" tarkoittaa viestin tunnusta, "0" on keskimääräinen vakiokehys, "stmp1.length ()" tarkoittaa viestin pituutta, "stmp_send1" on lähetetty data.

  • Koodissa Test_OLED.ino kaikki CANBUS -viestit vastaanotetaan kyselyllä ja vaaditut tiedot näytetään OLED -näytöllä.
  • Lataa ohjelma Maduino-CANbus-RS485/Test_DHT11_OLED/Test_DHT11/Test_DHT11.ino anturiin liitettyyn moduuliin ja lataa ohjelma Maduino-CANbus RS485/Test_DHT11_OLED/Test_OLED/Test_OLED.ino toiseen OLED-laitteeseen kytkettyyn moduuliin.

Vaihe 8: Näytä

Näytä
Näytä
Näytä
Näytä

Kytke kaksi moduulia päälle, lämpötila ja kosteus näkyvät näytössä.

Suositeltava: