Obsah:

Jednoduchý návod pro CANBUS: 8 kroků
Jednoduchý návod pro CANBUS: 8 kroků

Video: Jednoduchý návod pro CANBUS: 8 kroků

Video: Jednoduchý návod pro CANBUS: 8 kroků
Video: Magický kroužek - Návod pro začátečníky 2024, Červenec
Anonim
Jednoduchý návod pro CANBUS
Jednoduchý návod pro CANBUS

Studuji CAN tři týdny a nyní jsem dokončil několik aplikací k ověření výsledků učení. V tomto tutoriálu se naučíte, jak pomocí Arduina implementovat komunikaci CANBUS. Pokud máte nějaké návrhy, zanechte zprávu.

Zásoby:

Hardware:

  • Maduino Zero CANBUS
  • Modul teploty a vlhkosti DHT11
  • 1,3 "I2C OLED 128x64- modrá
  • Kabel DB9 až DB9 (zásuvka - zásuvka)
  • Dupont Line

Software:

Arduino IDE

Krok 1: Co je CANBUS

Co je CANBUS
Co je CANBUS
Co je CANBUS
Co je CANBUS

O CAN

CAN (Controller Area Network) je sériová komunikační síť, která dokáže realizovat distribuované řízení v reálném čase. Je vyvinut pro automobilový průmysl, aby nahradil složitý kabelový svazek dvouvodičovou sběrnicí.

Protokol CAN definuje vrstvu datového spojení a část fyzické vrstvy v modelu OSI.

Protokol CAN je standardizován ISO s ISO11898 a ISO11519. ISO11898 je vysokorychlostní komunikační standard CAN s komunikační rychlostí 125 kb / s-1 Mb / s. ISO11519 je nízkorychlostní komunikační standard CAN s komunikační rychlostí nižší než 125 kb / s.

Zde se zaměřujeme na vysokorychlostní CAN.

ISO-11898 popisuje, jak jsou předávány informace mezi zařízeními v síti a odpovídá modelu propojení otevřených systémů (OSI), který je definován z hlediska vrstev. Vlastní komunikace mezi zařízeními připojenými fyzickým médiem je definována fyzickou vrstvou modelu

  • Každou jednotku CAN připojenou ke sběrnici lze nazvat uzlem. Všechny jednotky CAN jsou připojeny ke sběrnici zakončené na každém konci odpory 120 Ω, aby vytvořily síť. Sběrnice se skládá z linek CAN_H a CAN_L. Řadič CAN určuje úroveň sběrnice na základě rozdílu v úrovni výkonu na obou vodičích. Úrovně autobusů jsou rozděleny na dominantní a recesivní úrovně, které musí být jednou z nich. Odesílatel odešle zprávu příjemci provedením změny na úrovni sběrnice. Když je na sběrnici spuštěn logický řádek „a“, dominantní úroveň je „0“a recesivní úroveň je „1“.
  • V dominantním stavu je napětí CAN_H asi 3,5 V a napětí CAN_L je asi 1,5 V. V recesivním stavu se napětí obou vedení pohybuje kolem 2,5V.
  • Signál je diferenciální, proto CAN odvozuje svou robustní odolnost proti rušení a odolnost proti chybám. Vyvážený diferenciální signál snižuje hlukovou vazbu a umožňuje vysokou rychlost signalizace přes kroucený pár kabelů. Proud v každém signálním vedení je stejný, ale v opačném směru a vede k efektu rušení pole, který je klíčem k nízkým emisím hluku. Použití vyvážených diferenciálních přijímačů a kroucené dvojlinky zlepšuje odmítnutí běžného režimu a vysokou odolnost proti rušení sběrnice CAN.

Transceiver CAN

Transceiver CAN je zodpovědný za převod mezi logickou úrovní a fyzickým signálem. Převeďte logický signál na diferenciální úroveň nebo fyzický signál na logickou úroveň.

Ovladač CAN

CAN Controller je základní komponentou CAN, která realizuje všechny funkce vrstvy datového spojení v protokolu CAN a dokáže automaticky vyřešit protokol CAN.

MCU

MCU je zodpovědný za řízení funkčního obvodu a řadiče CAN. Například parametry řadiče CAN jsou inicializovány při spuštění uzlu, rámec CAN je načten a odeslán prostřednictvím řadiče CAN atd.

Krok 2: O komunikaci CAN

Když je sběrnice nečinná, všechny uzly mohou začít odesílat zprávy (ovládání více masterů). Uzel, který jako první přistupuje ke sběrnici, má právo odeslat (režim CSMA/CA). Když začne odesílat více uzlů současně, uzel, který odesílá zprávu s vysokou prioritou ID, má právo odeslat.

V protokolu CAN jsou všechny zprávy odesílány v pevném formátu. Když je sběrnice nečinná, všechny jednotky připojené ke sběrnici mohou začít odesílat nové zprávy. Když více než dvě buňky začnou odesílat zprávy současně, priorita je určena na základě identifikátoru. ID nepředstavuje cílovou adresu odeslání, ale spíše prioritu zprávy přistupující ke sběrnici. Když více než dvě buňky začnou odesílat zprávy současně, každý bit bezúročného ID je rozhodován jeden po druhém. Jednotka, která vyhraje arbitráž, může pokračovat v odesílání zpráv a jednotka, která arbitráž prohraje, okamžitě zastaví odesílání a přijímá práci.

Sběrnice CAN je přenosový typ sběrnice. To znamená, že všechny uzly mohou „slyšet“všechny přenosy. všechny uzly vždy zachytí veškerý provoz. Hardware CAN poskytuje místní filtrování, takže každý uzel může reagovat pouze na zajímavé zprávy.

Krok 3: Rámečky

Rámy
Rámy

Zařízení CAN odesílají data přes síť CAN v paketech nazývaných rámce. CAN má čtyři typy rámců:

  • Datový rámec: rámec obsahující data uzlu pro přenos
  • Vzdálený rámec: rámec požadující přenos konkrétního identifikátoru
  • Chybový rámec: rámec přenášený jakýmkoli uzlem, který detekuje chybu
  • Přetížení rámec: rámec pro vložení zpoždění mezi daty nebo vzdáleným rámcem

Datový rámec

Existují dva typy datových rámců, standardní a rozšířené.

Význam bitových polí na obrázku je:

  • SOF - Jeden dominantní bit začátku rámce (SOF) označuje začátek zprávy a slouží k synchronizaci uzlů na sběrnici poté, co byl nečinný.
  • Identifikátor-Standardní 11bitový identifikátor CAN určuje prioritu zprávy. Čím nižší je binární hodnota, tím vyšší je její priorita.
  • RTR - bit RTR (Single Remote Transaction Request)
  • IDE - bit s IDE (Dominant Single Identifier Extension) znamená, že se přenáší standardní identifikátor CAN bez rozšíření.
  • R0 – Rezervovaný bit (pro případné použití budoucí standardní změnou).
  • DLC-4bitový kód délky dat (DLC) obsahuje počet bajtů přenášených dat.
  • Data - Lze přenášet až 64 bitů dat aplikace.
  • CRC-16bitová (15 bitů plus oddělovač) kontrola cyklické redundance (CRC) obsahuje kontrolní součet (počet přenesených bitů) předchozích aplikací pro detekci chyb.
  • ACK – ACK jsou 2 bity, jeden je potvrzovací bit a druhý je oddělovač.
  • EOF-Toto 7bitové pole na konci rámce (EOF) označuje konec rámce (zprávy) CAN a deaktivuje bitstuffing, což indikuje chybu výplně, když je dominantní. Když se během normálního provozu postupně vyskytuje 5 bitů stejné logické úrovně, je do dat vložen kousek opačné logické úrovně.
  • IFS-Tento 7bitový meziprostorový prostor (IFS) obsahuje čas požadovaný řadičem k přesunutí správně přijatého rámce do správné polohy v oblasti vyrovnávací paměti zpráv.

Arbitráž

V klidovém stavu sběrnice dostane jednotka, která jako první začne odesílat zprávu, odesílací právo. Když začne odesílat více jednotek současně, každá odesílací jednotka začíná na prvním bitu rozhodčího segmentu. Jednotka s největším počtem dominantních úrovní spojitého výstupu může pokračovat v odesílání.

Krok 4: Rychlost a vzdálenost

Rychlost a vzdálenost
Rychlost a vzdálenost

Sběrnice CAN je sběrnice, která spojuje více jednotek současně. Celkový počet jednotek, které lze připojit, teoreticky není omezen. V praxi je však počet jednotek, které lze připojit, omezen časovým zpožděním na sběrnici a elektrickým zatížením. Snižte rychlost komunikace, zvyšte počet připojitelných jednotek a zvyšte rychlost komunikace, počet připojitelných jednotek se sníží.

Komunikační vzdálenost nepřímo souvisí s komunikační rychlostí a čím dál komunikační vzdálenost, tím menší komunikační rychlost. Delší vzdálenost může být 1 km nebo více, ale rychlost je menší než 40 kps.

Krok 5: Hardware

Hardware
Hardware

Modul Maduino Zero CAN-BUS je nástroj vyvinutý společností Makerfabs pro komunikaci CANbus-je založen na Arduinu s řadičem CAN a přijímačem CAN k vytvoření portu CAN-bus připraveného k použití.

  • MCP2515 je samostatný řadič CAN, který implementuje specifikaci CAN. Je schopen vysílat a přijímat standardní i rozšířená data a vzdálené rámce.
  • Rozhraní MAX3051 mezi řadičem protokolu CAN a fyzickými vodiči sběrnicových linek v síti řídicí oblasti (CAN). MAX3051 poskytuje schopnost diferenciálního přenosu na sběrnici a schopnost diferenciálního příjmu do řadiče CAN.

Krok 6: Připojení

Spojení
Spojení

Připojte modul DHT11 k modulu Maduino Zero CAN-BUS pomocí vodičů, které budou použity jako nástroj pro podporu komunikace CAN. Podobně připojte displej k modulu pro příjem dat a jejich zobrazení.

Spojení mezi Maduino Zero CANBUS a DHT11 :

Maduino Zero CANBUS - DHT11

3v3 ------ VCC GND ------ GND D10 ------ DATA

Spojení mezi Maduino Zero CANBUS a OLED :

Maduino Zero CANBUS - OLED

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

Pomocí kabelu DB9 propojte dva moduly Maduino Zero CANBUS.

Krok 7: Kód

MAX3051 dokončuje převod diferenciálních úrovní na logické signály. MCP2515 doplňuje funkci CAN, jako je kódování a dekódování dat. MCU potřebuje pouze inicializovat ovladač a odesílat a přijímat data.

  • Github:
  • Po instalaci Arduina neexistuje žádný balíček na podporu desky (Arduino nula), který je třeba nainstalovat.
  • Vyberte nástroje -> Board -> Board Manager, vyhledejte „Arduino zero“a nainstalujte „Arduino SAMD Boards“.
  • Vyberte Nástroje -> Deska -> Arduino Zero (nativní port USB), vyberte Nástroje -> Port -> com…
  • Po získání programu z GitHub se musíte ujistit, že všechny soubory jsou v adresáři projektu, který obsahuje soubory knihoven podporující CANBUS.
  • Nainstalujte knihovnu senzorů DHT od společnosti Adafruit, která slouží k pohonu DHT11 k získání teploty a vlhkosti.
  • Pomocí různých adres odešlete teplotu a vlhkost samostatně v kódu Test_DHT11.ino.

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

zpoždění (500); CAN.sendMsgBuf (0x11, 0, stmp2.length (), stmp_send2); zpoždění (500);

„0x10“znamená ID zprávy, „0“je standardní standardní rámec, „stmp1.length ()“je délka zprávy, „stmp_send1“jsou odeslaná data.

  • V kódu Test_OLED.ino jsou všechny zprávy na CANBUS přijímány dotazem a požadované informace jsou zobrazeny na OLED.
  • Nahrajte program Maduino-CANbus-RS485/Test_DHT11_OLED/Test_DHT11/Test_DHT11.ino do modulu, který je připojen k senzoru, a nahrajte program Maduino-CANbus RS485/Test_DHT11_OLED/Test_OLED/Test_OLED.ino do jiného modulu, který je připojen k OLED.

Krok 8: Zobrazit

Ukázat
Ukázat
Ukázat
Ukázat

Zapnutí obou modulů, teplota a vlhkost se zobrazí na displeji.

Doporučuje: