INHOUDSOPGAWE:

N Eenvoudige handleiding vir CANBUS: 8 stappe
N Eenvoudige handleiding vir CANBUS: 8 stappe

Video: N Eenvoudige handleiding vir CANBUS: 8 stappe

Video: N Eenvoudige handleiding vir CANBUS: 8 stappe
Video: 8 Excel-tools die iedereen zou moeten kunnen gebruiken 2024, November
Anonim
'N Eenvoudige handleiding vir CANBUS
'N Eenvoudige handleiding vir CANBUS

Ek studeer KAN al drie weke, en nou het ek 'n paar aansoeke voltooi om my leerresultate te bekragtig. In hierdie handleiding leer u hoe u Arduino kan gebruik om CANBUS -kommunikasie te implementeer. As u enige voorstelle het, stuur 'n boodskap.

Benodighede:

Hardeware:

  • Maduino Zero CANBUS
  • DHT11 Temperatuur- en humiditeitsmodule
  • 1.3 "I2C OLED 128x64- Blou
  • DB9 tot DB9 kabel (vroulik na vroulik)
  • Dupont Line

Sagteware:

Arduino IDE

Stap 1: Wat is CANBUS

Wat is CANBUS
Wat is CANBUS
Wat is CANBUS
Wat is CANBUS

Oor CAN

CAN (Controller Area Network) is 'n seriële kommunikasienetwerk wat verspreide real-time beheer kan realiseer. Dit is ontwikkel vir die motorbedryf om die komplekse bedradingskabel te vervang deur 'n tweedraadbus.

CAN -protokol definieer die Data Link Layer en 'n deel van die Physical Layer in die OSI -model.

Die CAN -protokol is ISO gestandaardiseer met ISO11898 en ISO11519. ISO11898 is die CAN hoëspoed-kommunikasiestandaard met 'n kommunikasiesnelheid van 125kbps-1Mbps. ISO11519 is die CAN lae-spoed kommunikasie standaard met 'n kommunikasiesnelheid van minder as 125kbps.

Hier fokus ons op hoëspoed KAN.

ISO-11898 beskryf hoe inligting tussen toestelle op 'n netwerk oorgedra word en voldoen aan die Open Systems Interconnection-model (OSI) wat in lae gedefinieer word. Die werklike kommunikasie tussen toestelle wat deur die fisiese medium verbind word, word gedefinieer deur die fisiese laag van die model

  • Elke CAN -eenheid wat aan die bus gekoppel is, kan 'n node genoem word. Alle CAN -eenhede is gekoppel aan 'n bus wat aan elke kant met 120 Ω weerstande eindig om 'n netwerk te vorm. Die bus bestaan uit CAN_H en CAN_L lyne. Die CAN -beheerder bepaal die busvlak op grond van die verskil in die kragvlak op beide drade. Busvlakke word verdeel in dominante en resessiewe vlakke, wat een daarvan moet wees. Die sender stuur die boodskap aan die ontvanger deur 'n verandering op busvlak aan te bring. As die logiese lyn "en" op die bus uitgevoer word, is die dominante vlak "0" en die resessiewe vlak is "1".
  • In die dominante toestand is die spanning van CAN_H ongeveer 3.5V en die spanning van CAN_L is ongeveer 1.5V. In die resessiewe toestand is die spanning van beide lyne ongeveer 2,5V.
  • Die sein is differensiaal, daarom kan CAN sy robuuste ruis -immuniteit en fouttoleransie verkry. Gebalanseerde differensiële sein verminder geluidskoppeling en maak voorsiening vir hoë seintempo's oor 'n verdraaide paarkabel. Die stroom in elke seinlyn is gelyk, maar in die teenoorgestelde rigting, wat lei tot 'n veldonderdrukking wat die sleutel is tot lae geraasvrystellings. Die gebruik van gebalanseerde differensiële ontvangers en gedraaide paar bekabeling verhoog die afwyking van die gewone modus en die hoë geraas-immuniteit van 'n CAN-bus.

KAN ontvanger

Die CAN Transceiver is verantwoordelik vir die omskakeling tussen die logiese vlak en die fisiese sein. Skakel 'n logiese sein na 'n differensiële vlak of 'n fisiese sein na 'n logiese vlak.

CAN -beheerder

Die CAN -beheerder is die kernkomponent van CAN, wat al die funksies van die data -skakellaag in die CAN -protokol uitvoer en die CAN -protokol outomaties kan oplos.

MCU

Die MCU is verantwoordelik vir die beheer van die funksiekring en die CAN -beheerder. Die parameters van die CAN -beheerder word byvoorbeeld geïnisialiseer wanneer die knoop begin, die CAN -raam word gelees en deur die CAN -beheerder gestuur, ens.

Stap 2: Oor CAN -kommunikasie

As die bus ledig is, kan alle nodusse boodskappe begin stuur (multi-meester beheer). Die nodus wat die eerste keer by die bus ingaan, kry die reg om te stuur (CSMA/CA -modus). As verskeie knope gelyktydig begin stuur, kry die nodus wat die ID -boodskap met 'n hoë prioriteit stuur, die reg om te stuur.

In die CAN -protokol word alle boodskappe in 'n vaste formaat gestuur. As die bus ledig is, kan alle eenhede wat aan die bus gekoppel is, nuwe boodskappe begin stuur. As meer as twee selle gelyktydig begin om boodskappe te stuur, word die prioriteit bepaal op grond van die identifiseerder. Die ID verteenwoordig nie die bestemmingsadres van die gestuur nie, maar eerder die prioriteit van die boodskap wat toegang tot die bus kry. As meer as twee selle gelyktydig begin om boodskappe te stuur, word elke stukkie van die rentevrye ID een vir een arbitreer. Die eenheid wat die arbitrasie wen, kan voortgaan om boodskappe te stuur, en die eenheid wat die arbitrasie verloor, hou onmiddellik op met stuur en ontvang die werk.

Die CAN -bus is 'n uitsaaitydbus. Dit beteken dat alle nodusse alle uitsendings kan 'hoor'. alle nodusse sal altyd al die verkeer optel. Die CAN -hardeware bied plaaslike filter sodat elke knoop slegs op die interessante boodskappe kan reageer.

Stap 3: Rame

Rame
Rame

CAN -toestelle stuur data oor die CAN -netwerk in pakkies genaamd rame. CAN het vier raamtipes:

  • Gegevensraamwerk: 'n raam wat nododata vir transmissie bevat
  • Afstandsraamwerk: 'n raam wat die oordrag van 'n spesifieke identifiseerder versoek
  • Foutraamwerk: 'n raam wat oorgedra word deur 'n knoop wat 'n fout opspoor
  • Oorlading raam: 'n raam om 'n vertraging tussen data of afstandraam in te spuit

Data raam

Daar is twee tipes datarame, standaard en uitgebrei.

Die betekenis van die bitvelde van die figuur is:

  • SOF - Die enkele dominante begin van raam (SOF) -bit dui die begin van die boodskap aan en word gebruik om die nodusse op 'n bus te sinchroniseer nadat dit ledig was.
  • Identifiseerder-Die standaard CAN 11-bis identifiseerder bepaal die prioriteit van die boodskap. Hoe laer die binêre waarde, hoe hoër is sy prioriteit.
  • RTR - Die enkele afstandsrat -versoek (RTR) -bit
  • IDE - 'n dominante enkele identifikasie -uitbreiding (IDE) -bit beteken dat 'n standaard CAN -identifiseerder sonder uitbreiding oorgedra word.
  • R0 - Gereserveerde bit (vir moontlike gebruik deur toekomstige standaardwysiging).
  • DLC-Die 4-bis datalengtekode (DLC) bevat die aantal grepe data wat oorgedra word.
  • Data - Tot 64 bisse toepassingsdata kan oorgedra word.
  • CRC-Die 16-bis (15 bisse plus afbakening) sikliese oortolligheidsondersoek (CRC) bevat die kontrolesom (aantal bisse wat oorgedra word) van die voorafgaande toepassingsdata vir foutopsporing.
  • ACK - ACK is 2 bisse, een is die erkenningsbit en die tweede is 'n afbakening.
  • EOF-Hierdie einde van die raam (EOF), 7-bis veld, dui die einde van 'n CAN-raam (boodskap) aan en skakel bitstuffing uit, wat 'n vulstop aandui as dit dominant is. As 5 stukkies van dieselfde logiese vlak agtereenvolgens tydens normale werking voorkom, word 'n bietjie van die teenoorgestelde logiese vlak in die data gestop.
  • IFS-Hierdie 7-bis interraamspasie (IFS) bevat die tyd wat die beheerder benodig om 'n korrek ontvangde raam na die regte posisie in 'n boodskapbuffergebied te skuif.

Arbitrasie

In die bus -rustige toestand kry die eenheid wat die boodskap begin stuur eers die stuur reg. As verskeie eenhede gelyktydig begin stuur, begin elke stuureenheid by die eerste deel van die arbitrasiesegment. Die eenheid met die grootste aantal deurlopende uitset dominante vlakke kan voortgaan om te stuur.

Stap 4: Spoed en afstand

Spoed en Afstand
Spoed en Afstand

Die CAN -bus is 'n bus wat verskeie eenhede gelyktydig verbind. Daar is teoreties geen beperking op die totale aantal eenhede wat verbind kan word nie. In die praktyk word die aantal eenhede wat verbind kan word, egter beperk deur die tydsvertraging op die bus en die elektriese las. Verminder die kommunikasiesnelheid, verhoog die aantal eenhede wat verbind kan word, en verhoog die kommunikasiesnelheid, die aantal eenhede wat verbind kan word, neem af.

Die kommunikasie -afstand hou omgekeerd verband met die kommunikasiesnelheid, en hoe verder die kommunikasie -afstand, hoe kleiner die kommunikasiesnelheid. Die langer afstand kan 1km of meer wees, maar die spoed is minder as 40kps.

Stap 5: Hardeware

Hardeware
Hardeware

Maduino Zero CAN-BUS-module is 'n instrument wat deur Makerfabs ontwikkel is vir CANbus-kommunikasie; dit is gebaseer op Arduino, met die CAN-beheerder en CAN-ontvanger, om 'n gereed-vir-gebruik CAN-buspoort te skep.

  • MCP2515 is 'n losstaande CAN-beheerder wat die CAN-spesifikasie implementeer. Dit is in staat om standaard en uitgebreide data en afgeleë rame te stuur en te ontvang.
  • Die MAX3051 koppelvlakke tussen die CAN -protokolbeheerder en die fisiese drade van die buslyne in 'n beheergebiedsnetwerk (CAN). Die MAX3051 bied differensiële oordragvermoë aan die bus en differensiële ontvangsvermoë aan die CAN -beheerder.

Stap 6: Verbinding

Verbinding
Verbinding

Koppel die DHT11-module aan die Maduino Zero CAN-BUS-module met drade wat gebruik kan word as 'n instrument om CAN-kommunikasie te ondersteun. Koppel die skerm ook op die module om die data te ontvang en te vertoon.

Die verbinding tussen Maduino Zero CANBUS en DHT11:

Maduino Zero CANBUS - DHT11

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

Die verbinding tussen Maduino Zero CANBUS en OLED:

Maduino Zero CANBUS - OLED

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

Gebruik 'n DB9 -kabel om die twee Maduino Zero CANBUS -modules aan te sluit.

Stap 7: Kode

Die MAX3051 voltooi die omskakeling van differensiële vlakke na logiese seine. Die MCP2515 voltooi CAN -funksie, soos datakodering en dekodering. Die MCU hoef slegs die beheerder te initialiseer en data te stuur en te ontvang.

  • Github:
  • Nadat Arduino geïnstalleer is, is daar geen pakket om die bord (Arduino zero) te ondersteun wat nodig is om geïnstalleer te word nie.
  • Kies gereedskap -> Board -> Board Manager, soek "Arduino zero" en installeer "Arduino SAMD Boards".
  • Kies Tools -> Board -> Arduino Zero (oorspronklike USB -poort), kies Tools -> Port -> com …
  • Nadat u die program van GitHub gekry het, moet u seker maak dat alle lêers in die projekgids is, wat biblioteeklêers bevat wat CANBUS ondersteun.
  • Installeer die DHT -sensorbiblioteek deur Adafruit, wat gebruik word om die DHT11 te bestuur om temperatuur en humiditeit te verkry.
  • Gebruik verskillende adresse om temperatuur en humiditeit afsonderlik in die kode Test_DHT11.ino te stuur.

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

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

'0x10' beteken die boodskap -ID, '0' is die standaardraam, 'stmp1.length ()' beteken die boodskaplengte, 'stmp_send1' is die gestuurde data.

  • In die kode Test_OLED.ino word alle boodskappe op die CANBUS per navraag ontvang en word die vereiste inligting op die OLED vertoon.
  • Laai die program Maduino-CANbus-RS485/Test_DHT11_OLED/Test_DHT11/Test_DHT11.ino op na die module wat op die sensor gekoppel is, en laai die program Maduino-CANbus RS485/Test_DHT11_OLED/Test_OLED/Test_OLED.ino op na 'n ander module wat aan die OLED gekoppel is.

Stap 8: Wys

Wys
Wys
Wys
Wys

As die twee modules aangeskakel word, sal temperatuur en humiditeit op die skerm verskyn.

Aanbeveel: