Satura rādītājs:

Vienkārša apmācība CANBUS: 8 soļi
Vienkārša apmācība CANBUS: 8 soļi

Video: Vienkārša apmācība CANBUS: 8 soļi

Video: Vienkārša apmācība CANBUS: 8 soļi
Video: Kā uzlabot budžeta klases auto lukturu gaismas atdevi, kuros joprojām izmanto halogēnā tipa spuldzes 2024, Jūlijs
Anonim
Vienkārša apmācība CANBUS
Vienkārša apmācība CANBUS

Es trīs nedēļas studēju CAN, un tagad esmu pabeidzis dažus pieteikumus, lai apstiprinātu savus mācību rezultātus. Šajā apmācībā jūs uzzināsit, kā izmantot Arduino, lai ieviestu CANBUS komunikāciju. Ja jums ir kādi ieteikumi, laipni lūdzam atstāt ziņu.

Piegādes:

Aparatūra:

  • Maduino Zero CANBUS
  • DHT11 temperatūras un mitruma modulis
  • 1,3 collu I2C OLED 128x64- zils
  • Kabelis no DB9 līdz DB9 (no sievietes līdz sievietei)
  • Dupont līnija

Programmatūra:

Arduino IDE

1. darbība. Kas ir CANBUS

Kas ir CANBUS
Kas ir CANBUS
Kas ir CANBUS
Kas ir CANBUS

Par CAN

CAN (Controller Area Network) ir sērijas sakaru tīkls, kas var realizēt sadalītu reālā laika vadību. Tas ir izstrādāts automobiļu rūpniecībai, lai aizstātu sarežģīto elektroinstalāciju ar divu vadu kopni.

CAN protokols nosaka datu saites slāni un fiziskā slāņa daļu OSI modelī.

CAN protokols ir ISO standartizēts ar ISO11898 un ISO11519. ISO11898 ir CAN ātrgaitas sakaru standarts ar sakaru ātrumu 125 kb / s-1 Mb / s. ISO11519 ir CAN zema ātruma sakaru standarts, kura sakaru ātrums ir mazāks par 125 kbps.

Šeit mēs koncentrējamies uz ātrgaitas CAN.

ISO-11898 apraksta, kā informācija tiek nodota starp tīkla ierīcēm un atbilst atvērto sistēmu savienojuma modelim (OSI), kas definēts slāņu izteiksmē. Faktisko saziņu starp ierīcēm, kas savienotas ar fizisko datu nesēju, nosaka modeļa fiziskais slānis

  • Katru CAN vienību, kas savienota ar kopni, var saukt par mezglu. Lai izveidotu tīklu, visas CAN vienības ir savienotas ar kopni, kas katrā galā ir noslēgta ar 120 Ω rezistoriem. Autobuss sastāv no līnijām CAN_H un CAN_L. CAN kontrolieris nosaka kopnes līmeni, pamatojoties uz abu vadu jaudas līmeņa atšķirībām. Autobusu līmeņi ir sadalīti dominējošā un recesīvā līmenī, kuriem jābūt vienam no tiem. Sūtītājs nosūta ziņojumu saņēmējam, veicot izmaiņas kopnes līmenī. Kad kopnē tiek izpildīta loģiskā līnija "un", dominējošais līmenis ir "0" un recesīvais līmenis ir "1".
  • Dominējošajā stāvoklī CAN_H spriegums ir aptuveni 3,5 V, un CAN_L spriegums ir aptuveni 1,5 V. Recesīvā stāvoklī abu līniju spriegums ir aptuveni 2,5 V.
  • Signāls ir diferenciāls, tāpēc CAN iegūst stabilu trokšņa izturību un kļūdu toleranci. Līdzsvarots diferenciālais signāls samazina trokšņa sajūgu un nodrošina augstu signālu pārraidi pār vītā pāra kabeli. Katrā signāla līnijā esošā strāva ir vienāda, bet pretējā virzienā, kā rezultātā rodas lauka atcelšanas efekts, kas ir galvenais zema trokšņa emisijas līmenis. Izmantojot līdzsvarotus diferenciālos uztvērējus un vītā pāra kabeļus, tiek uzlabota CAN kopnes kopējā režīma noraidīšana un augsta trokšņa necaurlaidība.

CAN uztvērējs

CAN raiduztvērējs ir atbildīgs par loģikas līmeņa un fiziskā signāla pārveidošanu. Pārvērst loģisko signālu diferenciālā līmenī vai fizisku signālu loģiskā līmenī.

CAN kontrolieris

CAN kontrolieris ir CAN galvenā sastāvdaļa, kas realizē visas datu saites slāņa funkcijas CAN protokolā un var automātiski atrisināt CAN protokolu.

MCU

MCU ir atbildīgs par funkciju ķēdes un CAN kontrollera vadību. Piemēram, CAN kontrollera parametri tiek inicializēti, kad sākas mezgls, CAN rāmis tiek nolasīts un nosūtīts caur CAN kontrolieri utt.

2. darbība. Par CAN sakariem

Kad autobuss ir dīkstāvē, visi mezgli var sākt sūtīt ziņojumus (daudzmeistaru vadība). Mezgls, kas pirmo reizi piekļūst kopnei, iegūst tiesības nosūtīt (CSMA/CA režīms). Kad vairāki mezgli sāk sūtīt vienlaikus, mezgls, kas nosūta augstas prioritātes ID ziņojumu, iegūst tiesības nosūtīt.

CAN protokolā visi ziņojumi tiek nosūtīti noteiktā formātā. Kad autobuss ir dīkstāvē, visas kopnei pievienotās vienības var sākt sūtīt jaunas ziņas. Ja vienlaikus ziņojumus sāk sūtīt vairāk nekā divas šūnas, prioritāte tiek noteikta, pamatojoties uz identifikatoru. ID neatspoguļo sūtījuma galamērķa adresi, bet drīzāk ziņojuma prioritāti, kas piekļūst kopnei. Kad vienlaikus ziņojumus sāk sūtīt vairāk nekā divas šūnas, katrs bezprocentu ID bits tiek izšķirts pa vienam. Vienība, kas uzvar šķīrējtiesā, var turpināt sūtīt ziņojumus, un vienība, kas zaudē šķīrējtiesu, nekavējoties pārtrauc sūtīšanu un saņem darbu.

CAN kopne ir apraides tipa autobuss. Tas nozīmē, ka visi mezgli var “dzirdēt” visas pārraides. visi mezgli vienmēr uzņems visu satiksmi. CAN aparatūra nodrošina vietējo filtrēšanu, lai katrs mezgls varētu reaģēt tikai uz interesantajiem ziņojumiem.

3. solis: rāmji

Rāmji
Rāmji

CAN ierīces nosūta datus pa CAN tīklu paketēs, ko sauc par kadriem. CAN ir četri rāmju veidi:

  • Datu rāmis: rāmis, kas satur mezgla datus pārsūtīšanai
  • Attālais kadrs: rāmis, kas pieprasa konkrēta identifikatora pārsūtīšanu
  • Kļūdas rāmis: kadrs, ko nosūta jebkurš mezgls, atklājot kļūdu
  • Pārslodzes rāmis: rāmis, lai ievadītu aizkavi starp datiem vai attālo kadru

Datu rāmis

Ir divu veidu datu rāmji - standarta un paplašinātie.

Attēla bitu lauku nozīme ir šāda:

  • SOF - viens dominējošais kadra sākuma (SOF) bits iezīmē ziņojuma sākumu un tiek izmantots, lai sinhronizētu kopnes mezglus pēc dīkstāves.
  • Identifikators-standarta CAN 11 bitu identifikators nosaka ziņojuma prioritāti. Jo zemāka ir binārā vērtība, jo augstāka ir tās prioritāte.
  • RTR - viens attālās pārraides pieprasījuma (RTR) bits
  • IDE - dominējošais viena identifikatora paplašinājuma (IDE) bits nozīmē, ka tiek pārsūtīts standarta CAN identifikators bez paplašinājuma.
  • R0 - rezervēts bits (iespējamai izmantošanai turpmākajos standarta grozījumos).
  • DLC-4 bitu datu garuma kods (DLC) satur pārsūtāmo datu baitu skaitu.
  • Dati - var pārsūtīt līdz 64 bitu lietojumprogrammas datu.
  • CRC-16 bitu (15 biti plus norobežotājs) cikliskā atlaišanas pārbaude (CRC) satur iepriekšējo lietojumprogrammu datu kontrolsummu (nosūtīto bitu skaits) kļūdu noteikšanai.
  • ACK – ACK ir 2 biti, viens ir apstiprinājuma bits, bet otrs ir norobežotājs.
  • EOF-šis kadra beigu (EOF) 7 bitu lauks iezīmē CAN kadra (ziņojuma) beigas un atspējo bitu pildīšanu, norādot uz pildījuma kļūdu, kad tā ir dominējoša. Ja normālas darbības laikā pēc kārtas notiek 5 viena loģikas līmeņa biti, tad datos tiek iebāzts mazliet pretējs loģikas līmenis.
  • IFS-šī 7 bitu starp kadru vieta (IFS) satur laiku, kas nepieciešams kontrolierim, lai pareizi saņemtu kadru pārvietotu pareizajā vietā ziņojumu bufera zonā.

Šķīrējtiesa

Autobusa gaidīšanas režīmā vienība, kas sāk sūtīt ziņojumu, vispirms saņem sūtīšanas tiesības. Kad vairākas vienības sāk sūtīt vienlaikus, katra sūtītāja vienība sākas ar šķīrējtiesas segmenta pirmo bitu. Vienība ar lielāko nepārtrauktās produkcijas dominējošo līmeņu skaitu var turpināt sūtīt.

4. solis: ātrums un attālums

Ātrums un attālums
Ātrums un attālums

CAN kopne ir kopne, kas vienlaikus savieno vairākas vienības. Kopējais savienojamo vienību skaits teorētiski nav ierobežots. Tomēr praksē savienojamo vienību skaitu ierobežo autobusa laika aizture un elektriskā slodze. Samaziniet sakaru ātrumu, palieliniet savienojamo vienību skaitu un palieliniet saziņas ātrumu, savienojuma vienību skaits samazinās.

Sakaru attālums ir apgriezti saistīts ar sakaru ātrumu, un, jo tālāk ir sakaru attālums, jo mazāks ir sakaru ātrums. Garāks attālums var būt 1 km vai vairāk, bet ātrums ir mazāks par 40 kps.

5. solis: aparatūra

Aparatūra
Aparatūra

Maduino Zero CAN-BUS modulis ir Makerfabs izstrādāts rīks CANbus komunikācijai-tas ir balstīts uz Arduino, ar CAN kontrolieri un CAN raiduztvērēju, lai izveidotu lietošanai gatavu CAN kopnes portu.

  • MCP2515 ir atsevišķs CAN kontrolieris, kas īsteno CAN specifikāciju. Tas spēj pārraidīt un saņemt gan standarta, gan paplašinātus datus un attālos kadrus.
  • MAX3051 ir saskarne starp CAN protokola kontrolieri un kopņu līniju fiziskajiem vadiem kontroliera zonas tīklā (CAN). MAX3051 nodrošina diferenciālo pārraides spēju uz kopni un diferenciālo uztveršanas iespēju CAN kontrolierim.

6. darbība: savienojums

Savienojums
Savienojums

Savienojiet DHT11 moduli ar Maduino Zero CAN-BUS moduli ar vadiem, kas tiks izmantoti kā instruments CAN sakaru atbalstam. Līdzīgi pievienojiet displeju modulim, lai saņemtu datus un parādītu tos.

Savienojums starp Maduino Zero CANBUS un DHT11.

Maduino Zero CANBUS - DHT11

3v3 ------ VCC GND ------ GND D10 ------ DATI

Savienojums starp Maduino Zero CANBUS un OLED.

Maduino Zero CANBUS - OLED

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

Izmantojiet DB9 kabeli, lai savienotu divus Maduino Zero CANBUS moduļus.

7. solis: kods

MAX3051 pabeidz diferenciālo līmeņu pārveidošanu par loģiskiem signāliem. MCP2515 pabeidz CAN funkciju, piemēram, datu kodēšanu un dekodēšanu. MCU ir nepieciešams tikai inicializēt kontrolieri un nosūtīt un saņemt datus.

  • Github:
  • Pēc Arduino instalēšanas nav nevienas paketes, kas atbalstītu tāfeles (Arduino zero), kas ir jāinstalē.
  • Atlasiet rīkus -> Padome -> Valdes pārvaldnieks, meklējiet "Arduino zero" un instalējiet "Arduino SAMD Boards".
  • Atlasiet Rīki -> Dēlis -> Arduino Zero (vietējais USB ports), izvēlieties Rīki -> Ports -> com…
  • Pēc programmas iegūšanas no GitHub jums jāpārliecinās, vai visi faili atrodas projektu direktorijā, kurā ir bibliotēkas faili, kas atbalsta CANBUS.
  • Instalējiet Adafruit DHT sensoru bibliotēku, ko izmanto, lai vadītu DHT11, lai iegūtu temperatūru un mitrumu.
  • Izmantojiet dažādas adreses, lai atsevišķi nosūtītu temperatūru un mitrumu kodā Test_DHT11.ino.

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

kavēšanās (500); CAN.sendMsgBuf (0x11, 0, stmp2.length (), stmp_send2); kavēšanās (500);

“0x10” nozīmē ziņojuma ID, “0” ir vidējais standarta kadrs, “stmp1.length ()” ir ziņojuma garums, “stmp_send1” ir nosūtītie dati.

  • Kodā Test_OLED.ino visi CANBUS ziņojumi tiek saņemti pēc vaicājuma, un nepieciešamā informācija tiek parādīta OLED.
  • Augšupielādējiet programmu Maduino-CANbus-RS485/Test_DHT11_OLED/Test_DHT11/Test_DHT11.ino modulī, kas pievienots sensoram, un augšupielādējiet programmu Maduino-CANbus RS485/Test_DHT11_OLED/Test_OLED/Test_OLED.ino citā modulī, kas pievienots OLED.

8. solis: parādīt

Rādīt
Rādīt
Rādīt
Rādīt

Ieslēdziet divus moduļus, displejā parādīsies temperatūra un mitrums.

Ieteicams: