Tartalomjegyzék:

Egyszerű bemutató a CANBUS -hoz: 8 lépés
Egyszerű bemutató a CANBUS -hoz: 8 lépés

Videó: Egyszerű bemutató a CANBUS -hoz: 8 lépés

Videó: Egyszerű bemutató a CANBUS -hoz: 8 lépés
Videó: Diy красный вязаный браслет из 7 счастливых узлов амулет. Легкий учебник 2024, Július
Anonim
Egy egyszerű bemutató a CANBUS -hoz
Egy egyszerű bemutató a CANBUS -hoz

Három hétig tanultam a CAN -t, és most befejeztem néhány alkalmazást a tanulási eredményeim érvényesítésére. Ebben az oktatóanyagban megtudhatja, hogyan kell használni az Arduino -t a CANBUS kommunikáció megvalósításához. Ha bármilyen javaslata van, nyugodtan hagyjon üzenetet.

Kellékek:

Hardver:

  • Maduino Zero CANBUS
  • DHT11 hőmérséklet és páratartalom modul
  • 1,3 "I2C OLED 128x64- kék
  • DB9 -DB9 kábel (hüvely -nő)
  • Dupont vonal

Szoftver:

Arduino IDE

1. lépés: Mi a CANBUS

Mi az a CANBUS
Mi az a CANBUS
Mi az a CANBUS
Mi az a CANBUS

A CAN -ról

A CAN (Controller Area Network) egy soros kommunikációs hálózat, amely valós idejű elosztott vezérlést képes megvalósítani. Az autóipar számára fejlesztették ki, hogy kicseréljék a komplex kábelköteget egy kétvezetékes buszra.

A CAN protokoll határozza meg az adatkapcsolati réteget és a fizikai réteg részét az OSI modellben.

A CAN protokoll ISO szabvány szerint ISO11898 és ISO11519. Az ISO11898 a CAN nagysebességű kommunikációs szabvány, 125kbps-1Mbps kommunikációs sebességgel. Az ISO11519 a CAN alacsony sebességű kommunikációs szabványa, amelynek kommunikációs sebessége kisebb, mint 125 kbps.

Itt a nagy sebességű CAN-ra összpontosítunk.

Az ISO-11898 leírja, hogyan történik az információk továbbítása a hálózaton lévő eszközök között, és hogyan felel meg a rétegekben meghatározott nyílt rendszerek összekapcsolási modelljének (OSI). A fizikai közeggel csatlakoztatott eszközök közötti tényleges kommunikációt a modell fizikai rétege határozza meg

  • A buszhoz csatlakoztatott minden CAN egység csomópontnak nevezhető. Valamennyi CAN -egység 120 Ω -os ellenállású, mindkét végén egy buszra van kötve, hogy hálózatot alkosson. A busz CAN_H és CAN_L vonalakból áll. A CAN vezérlő a busz szintjét a két vezeték teljesítményszintjének különbsége alapján határozza meg. Az autóbusz -szintek domináns és recesszív szintekre oszlanak, amelyeknek egyike kell, hogy legyen. A feladó a busz szintjén történő változtatással elküldi az üzenetet a vevőnek. Amikor az "és" logikai sort végrehajtják a buszon, a domináns szint "0", a recesszív szint pedig "1".
  • A domináns állapotban a CAN_H feszültsége körülbelül 3,5 V, a CAN_L feszültsége pedig körülbelül 1,5 V. Recesszív állapotban mindkét vezeték feszültsége 2,5 V körül van.
  • A jel differenciál, ezért a CAN biztosítja a robosztus zajállóságot és hibatűrést. A kiegyensúlyozott differenciáljel csökkenti a zajcsatlakozást, és lehetővé teszi a nagy jelátviteli sebességet a sodrott érpáron. Az egyes jelvezetékeken az áram egyenlő, de az ellenkező irányba, és mezőszűrő hatást eredményez, amely kulcsfontosságú az alacsony zajkibocsátáshoz. A kiegyensúlyozott differenciál-vevőkészülékek és a csavart érpárú kábelezés használata fokozza a CAN-busz közös módú elutasítását és magas zajállóságát.

CAN adó -vevő

A CAN adó -vevő felelős a logikai szint és a fizikai jel közötti konverzióért. Alakítsa át a logikai jelet differenciál szintre, vagy a fizikai jelet logikai szintre.

CAN vezérlő

A CAN vezérlő a CAN alapvető összetevője, amely megvalósítja az adatkapcsolati réteg összes funkcióját a CAN protokollban, és automatikusan fel tudja oldani a CAN protokollt.

MCU

Az MCU felelős a funkcióáramkör és a CAN vezérlő vezérléséért. Például a CAN vezérlő paraméterei inicializálódnak, amikor a csomópont elindul, a CAN keret kiolvasásra kerül, és elküldésre kerül a CAN vezérlőn stb.

2. lépés: A CAN kommunikációról

Amikor a busz tétlen, minden csomópont elkezdheti az üzenetek küldését (multi-master vezérlés). A buszhoz először hozzáférő csomópont jogosult küldésre (CSMA/CA mód). Ha egyszerre több csomópont kezd el küldeni, akkor a magas prioritású azonosító üzenetet küldő csomópont jogosult a küldésre.

A CAN protokollban minden üzenet rögzített formátumban kerül elküldésre. Amikor a busz tétlen, a buszra csatlakoztatott összes egység elkezdhet új üzeneteket küldeni. Ha egyszerre több mint két cella kezd üzeneteket küldeni, a prioritás az azonosító alapján kerül meghatározásra. Az azonosító nem a küldés célcímét képviseli, hanem a buszt elérő üzenet prioritását. Amikor egyszerre több mint két cella kezd üzeneteket küldeni, a kamatmentes azonosító minden bitjét egyenként választják ki. A választottbíróságon győztes egység folytathatja az üzenetek küldését, és a választottbíróságot elveszítő egység azonnal leállítja a küldést, és megkapja a munkát.

A CAN busz egy sugárzott típusú busz. Ez azt jelenti, hogy minden csomópont „hallja” az összes adást. minden csomópont változatlanul felveszi az összes forgalmat. A CAN hardver helyi szűrést biztosít, így minden csomópont csak az érdekes üzenetekre reagálhat.

3. lépés: Keretek

Keretek
Keretek

A CAN -eszközök kereteknek nevezett csomagokban küldik az adatokat a CAN -hálózaton keresztül. A CAN négy kerettípussal rendelkezik:

  • Adatkeret: csomópontadatokat tartalmazó keret az átvitelhez
  • Távoli keret: egy keret, amely egy adott azonosító továbbítását kéri
  • Hibakeret: bármely csomópont által továbbított keret, amely hibát észlel
  • Túlterhelési keret: keret, amely késleltetést ad az adatok vagy a távoli keret között

Adatkeret

Kétféle adatkeret létezik, standard és kiterjesztett.

Az ábra bitmezőinek jelentése:

  • SOF - Az egyetlen domináns keretkezdet (SOF) bit jelzi az üzenet kezdetét, és tétlenség után szinkronizálja a buszon lévő csomópontokat.
  • Azonosító-A standard CAN 11 bites azonosító határozza meg az üzenet prioritását. Minél alacsonyabb a bináris érték, annál nagyobb a prioritása.
  • RTR - Az egyetlen távoli átviteli kérés (RTR) bit
  • IDE - A domináns egyazonosító -kiterjesztés (IDE) bit azt jelenti, hogy egy szabványos, kiterjesztés nélküli CAN -azonosító kerül továbbításra.
  • R0 - Fenntartott bit (a későbbi szabványmódosítás esetleges felhasználására).
  • DLC-A 4 bites adathossz kód (DLC) tartalmazza az átvitt adatok bájtjainak számát.
  • Adatok - Legfeljebb 64 bites alkalmazásadat továbbítható.
  • CRC-A 16 bites (15 bit plusz elválasztó) ciklikus redundancia-ellenőrzés (CRC) tartalmazza az előző alkalmazásadatok ellenőrző összegét (továbbított bitek száma) a hiba észlelése érdekében.
  • Az ACK – ACK 2 bites, az egyik a nyugtázó bit, a második egy határoló.
  • EOF-Ez a keretvégi (EOF), 7 bites mező jelzi a CAN keret (üzenet) végét, és letiltja a bitkitöltést, jelezve a töltési hibát, amikor domináns. Ha normál működés közben 5 bit azonos logikai szint fordul elő egymás után, akkor az ellentétes logikai szint egy bitje kerül az adatokba.
  • IFS-Ez a 7 bites interframe tér (IFS) tartalmazza azt az időt, amelyre a vezérlőnek szüksége van ahhoz, hogy egy megfelelően fogadott keretet a megfelelő pozícióba helyezzen egy üzenetpuffer területen.

Választottbíróság

Busz tétlen állapotban az az egység, amelyik először kezdi el az üzenet küldését, megkapja a küldési jogot. Ha egyszerre több egység kezdi a küldést, minden küldő egység a választottbírósági szegmens első bitjéről indul. A legnagyobb számú folyamatos kimeneti domináns szinttel rendelkező egység továbbra is küldhet.

4. lépés: Sebesség és távolság

Sebesség és távolság
Sebesség és távolság

A CAN busz egy busz, amely egyszerre több egységet is összeköt. Elméletileg nincs korlátozás a csatlakoztatható egységek teljes számára. A gyakorlatban azonban a csatlakoztatható egységek számát korlátozza a buszon lévő késleltetés és az elektromos terhelés. Csökkentse a kommunikáció sebességét, növelje a csatlakoztatható egységek számát, és növelje a kommunikáció sebességét, a csatlakoztatható egységek száma csökken.

A kommunikációs távolság fordítottan függ a kommunikációs sebességtől, és minél távolabb van a kommunikációs távolság, annál kisebb a kommunikációs sebesség. A hosszabb távolság 1 km vagy több lehet, de a sebesség kevesebb, mint 40 kps.

5. lépés: Hardver

Hardver
Hardver

A Maduino Zero CAN-BUS modul a Makerfabs által a CANbus kommunikációra kifejlesztett eszköz-Arduino-n alapul, a CAN vezérlővel és a CAN adó-vevővel, hogy készen álljon a használatra kész CAN-busz portra.

  • Az MCP2515 egy önálló CAN vezérlő, amely megvalósítja a CAN specifikációt. Képes szabványos és kiterjesztett adatok és távoli keretek továbbítására és fogadására.
  • A MAX3051 interfészek a CAN protokollvezérlő és a buszvonalak fizikai vezetékei között egy vezérlőterületi hálózatban (CAN). A MAX3051 differenciális átviteli képességet biztosít a buszhoz, és differenciális vételi lehetőséget a CAN vezérlőhöz.

6. lépés: Csatlakozás

Kapcsolat
Kapcsolat

Csatlakoztassa a DHT11 modult a Maduino Zero CAN-BUS modulhoz a CAN kommunikációt támogató vezetékekkel ellátott vezetékekkel. Hasonlóképpen csatlakoztassa a kijelzőt a modulhoz az adatok fogadásához és megjelenítéséhez.

A kapcsolat a Maduino Zero CANBUS és a DHT11 között

Maduino Zero CANBUS - DHT11

3v3 ------ VCC GND ------ GND D10 ------ ADATOK

A kapcsolat a Maduino Zero CANBUS és az OLED között

Maduino Zero CANBUS - OLED

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

DB9 kábellel csatlakoztassa a két Maduino Zero CANBUS modult.

7. lépés: Kód

A MAX3051 befejezi a differenciálszintek logikai jelekké alakítását. Az MCP2515 elvégzi a CAN funkciót, például az adatok kódolását és dekódolását. Az MCU -nak csak inicializálnia kell a vezérlőt, és adatokat kell küldenie és fogadnia.

  • Github:
  • Az Arduino telepítése után nincs olyan csomag, amely támogatja a táblát (Arduino zero), amelyet telepíteni kell.
  • Válassza ki az eszközöket -> Tábla -> Fórumkezelő, keresse meg az "Arduino zero" -t, és telepítse az "Arduino SAMD Boards" -t.
  • Válassza az Eszközök -> Tábla -> Arduino Zero (natív USB -port) lehetőséget, majd válassza az Eszközök -> Port -> com…
  • Miután megszerezte a programot a GitHub -ról, meg kell győződnie arról, hogy minden fájl a projektkönyvtárban található, amely a CANBUS -t támogató könyvtári fájlokat tartalmazza.
  • Telepítse az Adafruit DHT szenzortárát, amely a DHT11 hajtására szolgál a hőmérséklet és a páratartalom eléréséhez.
  • Különféle címek használatával küldje el külön a hőmérsékletet és a páratartalmat a Test_DHT11.ino kódban.

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

késleltetés (500); CAN.sendMsgBuf (0x11, 0, stmp2.length (), stmp_send2); késleltetés (500);

A „0x10” az üzenet azonosítóját jelenti, a „0” az átlagos szabványos keretet, az „stmp1.length ()” az üzenet hosszát jelenti, az „stmp_send1” az elküldött adatokat.

  • A Test_OLED.ino kódban a CANBUS -on lévő összes üzenet lekérdezéssel érkezik, és a szükséges információk megjelennek az OLED -en.
  • Töltse fel a Maduino-CANbus-RS485/Test_DHT11_OLED/Test_DHT11/Test_DHT11.ino programot az érzékelőhöz csatlakozó modulba, és töltse fel a Maduino-CANbus RS485/Test_DHT11_OLED/Test_OLED/Test_OLED.ino programot egy másik, OLED-hez csatlakozó modulba.

8. lépés: Mutasd meg

Előadás
Előadás
Előadás
Előadás

Kapcsolja be a két modult, a hőmérséklet és a páratartalom megjelenik a kijelzőn.

Ajánlott: