Indholdsfortegnelse:

En simpel vejledning til CANBUS: 8 trin
En simpel vejledning til CANBUS: 8 trin

Video: En simpel vejledning til CANBUS: 8 trin

Video: En simpel vejledning til CANBUS: 8 trin
Video: Как настроить Canbus на Android магнитоле . Правильное подключение . 2024, Juli
Anonim
En simpel vejledning til CANBUS
En simpel vejledning til CANBUS

Jeg har studeret CAN i tre uger, og nu har jeg afsluttet nogle ansøgninger til validering af mine læringsresultater. I denne vejledning lærer du, hvordan du bruger Arduino til at implementere CANBUS -kommunikation. Hvis du har forslag, er du velkommen til at efterlade en besked.

Tilbehør:

Hardware:

  • Maduino Zero CANBUS
  • DHT11 temperatur- og luftfugtighedsmodul
  • 1,3 "I2C OLED 128x64- Blå
  • DB9 til DB9 kabel (hun til hun)
  • Dupont Line

Software:

Arduino IDE

Trin 1: Hvad er CANBUS

Hvad er CANBUS
Hvad er CANBUS
Hvad er CANBUS
Hvad er CANBUS

Om CAN

CAN (Controller Area Network) er et serielt kommunikationsnetværk, der kan realisere distribueret realtidskontrol. Det er udviklet til bilindustrien til at erstatte det komplekse ledningsnet med en totrådsbus.

CAN -protokol definerer datalinklaget og en del af det fysiske lag i OSI -modellen.

CAN -protokollen er ISO -standardiseret med ISO11898 og ISO11519. ISO11898 er CAN højhastigheds kommunikationsstandarden med en kommunikationshastighed på 125 kbps-1 Mbps. ISO11519 er CAN lavhastigheds kommunikationsstandarden med en kommunikationshastighed på mindre end 125 kbps.

Her fokuserer vi på højhastigheds-CAN.

ISO-11898 beskriver, hvordan information videregives mellem enheder på et netværk og er i overensstemmelse med Open Systems Interconnection-modellen (OSI), der er defineret i form af lag. Den faktiske kommunikation mellem enheder forbundet med det fysiske medium er defineret af modellens fysiske lag

  • Hver CAN -enhed, der er forbundet til bussen, kan kaldes en knude. Alle CAN -enheder er forbundet til en bus, der er afsluttet i hver ende med 120 Ω modstande for at danne et netværk. Bussen består af CAN_H og CAN_L linjer. CAN -controlleren bestemmer busniveauet baseret på forskellen i effektniveauet på begge ledninger. Busniveauer er opdelt i dominerende og recessive niveauer, som skal være et af dem. Afsenderen sender beskeden til modtageren ved at foretage en ændring på busniveau. Når den logiske linje "og" udføres på bussen, er det dominerende niveau "0", og det recessive niveau er "1".
  • I den dominerende tilstand er spændingen for CAN_H omkring 3,5V og spændingen for CAN_L er omkring 1,5V. I recessiv tilstand er spændingen på begge linjer omkring 2,5V.
  • Signalet er differentielt, og derfor udleder CAN sin robuste støjimmunitet og fejltolerance. Balanceret differentialesignal reducerer støjkobling og giver mulighed for høje signalhastigheder over snoet kabel. Strømmen i hver signallinje er ens, men i den modsatte retning og resulterer i en feltreducerende effekt, der er nøglen til lave støjemissioner. Brugen af afbalancerede differentielle modtagere og snoede par-kabler forbedrer common-mode afvisning og høj støjimmunitet i en CAN-bus.

CAN Transceiver

CAN -transceiveren er ansvarlig for konverteringen mellem det logiske niveau og det fysiske signal. Konverter et logisk signal til et differentielt niveau eller et fysisk signal til et logisk niveau.

CAN -controller

CAN -controlleren er kernekomponenten i CAN, som realiserer alle funktionerne i datalinklaget i CAN -protokollen og automatisk kan løse CAN -protokollen.

MCU

MCU'en er ansvarlig for styringen af funktionskredsløbet og CAN -controlleren. F.eks. Initialiseres CAN -controllerparametrene, når noden starter, CAN -rammen læses og sendes via CAN -controlleren osv.

Trin 2: Om CAN -kommunikation

Når bussen er inaktiv, kan alle noder begynde at sende meddelelser (multi-master kontrol). Den knude, der først får adgang til bussen, får ret til at sende (CSMA/CA -tilstand). Når flere noder begynder at sende på samme tid, får den node, der sender id -beskeden med høj prioritet, ret til at sende.

I CAN -protokollen sendes alle meddelelser i et fast format. Når bussen er inaktiv, kan alle enheder, der er forbundet til bussen, begynde at sende nye meddelelser. Når mere end to celler begynder at sende meddelelser på samme tid, bestemmes prioriteten baseret på identifikatoren. ID'et repræsenterer ikke afsenderens destinationsadresse, men snarere prioriteten for meddelelsen, der får adgang til bussen. Når mere end to celler begynder at sende meddelelser på samme tid, arbitreres hver bit af det rentefrie ID en efter en. Enheden, der vinder voldgiften, kan fortsætte med at sende meddelelser, og den enhed, der taber voldgiften, stopper straks med at sende og modtager arbejdet.

CAN -bussen er en broadcast -type bus. Det betyder, at alle noder kan 'høre' alle transmissioner. alle noder vil altid opfange al trafik. CAN -hardware giver lokal filtrering, så hver node kun reagerer på de interessante meddelelser.

Trin 3: Rammer

Rammer
Rammer

CAN -enheder sender data på tværs af CAN -netværket i pakker kaldet frames. CAN har fire rammetyper:

  • Dataramme: en ramme, der indeholder nodedata til transmission
  • Fjernramme: en ramme, der anmoder om transmission af en bestemt identifikator
  • Fejlramme: en ramme transmitteret af enhver knude, der registrerer en fejl
  • Overload frame: en ramme til at injicere en forsinkelse mellem data eller fjernramme

Dataramme

Der er to typer datarammer, standard og udvidet.

Betydningen af bitfelterne i figuren er:

  • SOF - Den enkelt dominerende start af frame (SOF) bit markerer starten på meddelelsen og bruges til at synkronisere knuderne på en bus efter at have været inaktiv.
  • Identifier-Standard CAN 11-bit identifikatoren fastlægger meddelelsens prioritet. Jo lavere binær værdi, jo højere prioritet.
  • RTR - RTR -bit (single remote transmission request)
  • IDE - En dominerende single ID -udvidelse (IDE) bit betyder, at en standard CAN -identifikator uden udvidelse transmitteres.
  • R0 - Reserveret bit (til mulig brug ved fremtidig standardændring).
  • DLC-4-bit datalængdekoden (DLC) indeholder antallet af bytes data, der overføres.
  • Data - Op til 64 bit applikationsdata kan overføres.
  • CRC-16-bit (15 bit plus afgrænsning) cyklisk redundanskontrol (CRC) indeholder kontrolsummen (antal bit overført) af de foregående applikationsdata til fejldetektering.
  • ACK – ACK er 2 bit, den ene er kvitteringsbiten, og den anden er en afgrænsning.
  • EOF-Denne ende-af-frame (EOF), 7-bit felt markerer afslutningen på en CAN-ramme (meddelelse) og deaktiverer bitstuffing, hvilket angiver en fyldningsfejl, når den er dominerende. Når 5 bits af det samme logiske niveau forekommer efter hinanden under normal drift, fyldes lidt af det modsatte logiske niveau i dataene.
  • IFS-Dette 7-bit interframe-rum (IFS) indeholder den tid, som controlleren tager for at flytte en korrekt modtaget ramme til sin korrekte position i et meddelelsesbufferområde.

Voldgift

I busens inaktiv tilstand får den enhed, der begynder at sende meddelelsen, først afsendelsesretten. Når flere enheder begynder at sende på samme tid, starter hver afsendelsesenhed ved den første bit af voldgiftssegmentet. Enheden med det største antal kontinuerlige output dominerende niveauer kan fortsat sende.

Trin 4: Hastighed og afstand

Hastighed og afstand
Hastighed og afstand

CAN -bussen er en bus, der forbinder flere enheder på samme tid. Der er teoretisk set ingen grænse for det samlede antal enheder, der kan tilsluttes. I praksis er antallet af enheder, der kan tilsluttes, imidlertid begrænset af tidsforsinkelsen på bussen og den elektriske belastning. Reducer kommunikationshastigheden, øg antallet af enheder, der kan tilsluttes, og øg kommunikationshastigheden, antallet af enheder, der kan tilsluttes, falder.

Kommunikationsafstanden er omvendt relateret til kommunikationshastigheden, og jo længere kommunikationsafstanden er, jo mindre er kommunikationshastigheden. Den længere afstand kan være 1 km eller mere, men hastigheden er mindre end 40 kps.

Trin 5: Hardware

Hardware
Hardware

Maduino Zero CAN-BUS-modul er et værktøj udviklet af Makerfabs til CANbus-kommunikation-det er baseret på Arduino med CAN-controlleren og CAN-transceiveren til at oprette en klar CAN-busport.

  • MCP2515 er en enkeltstående CAN-controller, der implementerer CAN-specifikationen. Det er i stand til at transmittere og modtage både standard og udvidede data og eksterne rammer.
  • MAX3051 grænseflader mellem CAN -protokolstyringen og de fysiske ledninger på buslinjerne i et controller -område netværk (CAN). MAX3051 giver mulighed for differentiel overførsel til bussen og differentiel modtagelse til CAN -controlleren.

Trin 6: Tilslutning

Forbindelse
Forbindelse

Tilslut DHT11-modulet til Maduino Zero CAN-BUS-modulet med ledninger, der skal bruges som et instrument til understøttelse af CAN-kommunikation. Tilslut på samme måde skærmen til modulet for at modtage dataene og vise dem.

Forbindelsen mellem Maduino Zero CANBUS og DHT11:

Maduino Zero CANBUS - DHT11

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

Forbindelsen mellem Maduino Zero CANBUS og OLED:

Maduino Zero CANBUS - OLED

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

Brug et DB9 -kabel til at forbinde de to Maduino Zero CANBUS -moduler.

Trin 7: Kode

MAX3051 fuldender konverteringen af differentialniveauer til logiske signaler. MCP2515 fuldender CAN -funktion såsom datakodning og dekodning. MCU'en behøver kun at initialisere controlleren og sende og modtage data.

  • Github:
  • Efter installeret Arduino er der ingen pakke til understøttelse af kortet (Arduino zero), der skal installeres.
  • Vælg værktøjer -> Board -> Board Manager, søg "Arduino zero" og installer "Arduino SAMD Boards".
  • Vælg Værktøjer -> Kort -> Arduino Zero (Native USB -port), vælg Værktøjer -> Port -> kom …
  • Når du har hentet programmet fra GitHub, skal du sikre dig, at alle filer er i projektmappen, som indeholder biblioteksfiler, der understøtter CANBUS.
  • Installer DHT -sensorbiblioteket fra Adafruit, som bruges til at drive DHT11 for at opnå temperatur og fugtighed.
  • Brug forskellige adresser til at sende temperatur og fugtighed separat i koden Test_DHT11.ino.

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

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

"0x10" betyder meddelelses -ID, "0" er standardramme, "stmp1.length ()" betyder meddelelsens længde, "stmp_send1" er de data, der sendes.

  • I koden Test_OLED.ino modtages alle meddelelser på CANBUS ved forespørgsel, og de nødvendige oplysninger vises på OLED.
  • Upload programmet Maduino-CANbus-RS485/Test_DHT11_OLED/Test_DHT11/Test_DHT11.ino til det modul, der er forbundet til sensoren, og Upload programmet Maduino-CANbus RS485/Test_DHT11_OLED/Test_OLED/Test_OLED.ino til et andet modul, der er forbundet til OLED.

Trin 8: Vis

At vise
At vise
At vise
At vise

Tænd for de to moduler, temperatur og fugtighed vises på displayet.

Anbefalede: