Protocoale de comunicație în industria automobilelor [306150]

R54 – F02

Declarație

privind originalitatea Disertației

Subsemnat(a / ul), _______________________________, cu domiciliul în ___________________, jud. ___________________, str. ____________________, nr. ___________, născut(ă) la data de ___________________, identificat prin ______, seria _____, nr. ______ absolvent(ă) al Universității “Ștefan cel Mare” [anonimizat], programul de studii/specializarea ______________________________________ __________________________________________, între anii _____________________________, [anonimizat]. 1/2011 [anonimizat] _______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________, pe care urmează să o [anonimizat]. [anonimizat], [anonimizat]-o bază de date în acest scop.

Am luat la cunoștință faptul că îmi este interzisă comercializarea / transmiterea lucrării mele către un terț în vederea facilitării falsificării de către acesta a calității de autor al lucrării.

Data azi, _______________, în fața noastră:

[anonimizat]: [anonimizat], Prenume, Nume Prenume Nume

Sinteza lucrarii

Aceasta lucrarea reprezintă un sistem de interpretarea a datelor de la senzori și transmiterea informațiilor utilizând protocolul CAN.

Ideea aceasta a pornit de la gândul de a realiza o aplicație care să prezinte o simplă rețea care utilizează protocol CAN de transimtere a datelor de la un modul la altu. Acest protocol este întalnit în industria automobilelor fiind și cel mai utilizat. [anonimizat] a acestei lucrarii s-au utilizat senzori care au echivalenți senzori cu care sunt echipate automobilele. De exemplu, s-au utilizat senzori de detectare a [anonimizat], sensor rotativ care simuleaza senzorul de rotație a volanului, etc.. Datele de la senzori sunt prelucrate de microcontrolere care împreuna cu tranceivere CAN trimit / recepționează informația .Pe partea software am realizat codul pentru microcontrolere folosite. Toate informatiile de mai sus vor fi prezentate mai pe larg pe parcursul lucrarii.

Lucrarea este structurată pe șase capitol:

[anonimizat], avantajele utilizari acestora.

[anonimizat]. Aici se prezintă principiul acestuia.

[anonimizat]. Sunt prezentate într-o maniera concise detaliile acestuia.

[anonimizat].

În acest capitol se descrie pe larg modul de realizare a lucrarii practice din punct de vedere software si hardware. Se prezintă caracteristicile senzorilor, microcontrolere utilizate si a tranceiverul de CAN.

Ultimul capitol este cel de concluzii, unde sunt prezentate concluziile aferente acestei lucrari, destinația si scopul acesteia precum și dezvoltari viitoare

Protocoale de comunicatie pentru automobile

Tendința din ultimi ani este de a încorpora în mașina unele sisteme care să crească siguranța celor din interior și a celorlalți participanți din trafic.

Apărut în cea de a doua jumătate a secolului al 19-lea, automobilul este cel care a revoluționat transporturile și a sporit eforturi științifice și inginerești, pentru continua perfecționare și îmbunatațirea performanțelor sale. Până în ani 1970-1980 componentele mecanice, majoritatea dintre ele considerate „bijuterii” tehnice, reprezentau o pondere mare din componentele unui automobil, partea electrică și electronică reprezentând un număr mic de motoare (demaror, ștergătoare de parbriz, alternator), senzori (pentru temperatura uleiului și antigelului, presiune ulei, nivel combustibil), relee (pentru aprindere și semnalizare) și becuri.

Dezvoltarea microelectronicii, a adus apariția circuitelor integrate logice și analogice, a celor de putere, procesoarelor numerice (microprocesoare, DSP-uri), posibilitatea de realizare a unor sisteme de acționare (convenționale și neconvenționale). Apariția unor tipuri noi de senzori, etc. au deschis noi perspective pentru rezolvarea unor cerințe care se impuneau, legate de:

Siguranța;

Confort;

Fiabilitate;

Protecția mediului înconjurator;

Figura 1.1- Sisteme electronice din automobil [1]

Un automobil modern din clasă medie, cuprinde circa 60-75 de motoare precum și un număr destul de mare de senzori și sisteme senzoriale. Un exemplu îl constituie diferențele majore dintre „broscuța” de un uriaș succes a firmei Volkswagen, fabricată în anii 1960: 136 W – putere maximă consumată, circa 80 de contacte electrice, 150 m de cabluri electrice și urmașul acesteia din 2001, automobilul „New Beetle”, cu un consum de 2050W, 1200 contacte electrice și 1500 m de cabluri.

În construcția automobilelor moderne au apărut tot mai multe sisteme mecatronice (managementul motorului, ABS, ESP, suspensie activă etc.), pentru ca întreg automobilul să se transforme într-unul dintre cele mai performante sisteme mecatronice (prin interconectarea subsistemelor cu magistrale adecvate CAN-Bus, LIN, FlexRay, sisteme de navigație, X-by Wire, telematică etc.

Creșterea componentelor electrice și electronice în fabricarea automobilului a facilitat la introducerea unor noi sisteme care permit creșterea performanțelor și reducerea componentelor mecanice.

Conform ultimelor statistici majoritatea accidentelor sunt accidentele rutiere. De exemplu pe timp de noapte, sunt 40% mai multe accidente decât cele pe timp de zi, ca urmare a unei vizibilități mai reduse, chiar dacă traficul din timpul zilei este mai intens.

Evolutia sistemeor electronice echipate pe automobile

Începând cu anul 1970 se observa o creștere exponențială a numărului de componente electronice utilizate în automobile, care au ca scop înlocuirea componentelor mecanice precum și a celor hidraulice. Scopul sistemelor electronice de pe automobile este de al asista pe conducătorul auto în ceea ce privește controlul automobilului, prin intermediul tracțiunii (motor), direcției (servodirecție electrică), sistemului de frânare (ABS, ESP) sau a suspensiei (suspensie activă). De asemena sistemele electronice controlează luminile, ștergătoarele, ușile și mai nou sistemele multimedia, sistemele de comunicație (telefonie "hands free") și cele de poziționare globala (GPS).

Figura 1.2- Evoluția sistemelor electronice din automobile [1]

Literele din figura de mai sus reprezintă progresele făcute în sistemele electronice de pe automobile:

A. semnalizare, demaror, dinam, radio;

B. alternator, aprinderea tranzistorizată;

C. injecția electronică, controlul electronic al cutiilor de viteze automate, controlul vitezei de croazieră;

D. ABS, calculator de bord, telefonie mobilă, indicator interval service;

E. cheie electronică, sisteme de control al motorului și a transmisiei, sistem de protecție antifurt, instrumente de bord electronice, suspensie adaptivă, senzori de impact;

F. senzor de impact zonal, imobilizator electronic;

G. diagnoză, multiplexare, sistem de navigare;

H. senzori presiune pneuri, senzori de impact laterali;

I. Detectarea și prevenirea rasturnari, sistem de accesare care se bazează pe perimetru, detectare a ocupanților autovehiculului;

J. ESP, ACC;

K. Sistem X by wire ( sistem de direcție electronică).

Creșterea numărului de sisteme electronice aflate pe un automobil duce la schimbul de informații între toate sistemele ce echipează automobilul. Schimbul de informații are scopul de a reduce numărul de senzori. Informația furnizată de un senzor este preluală de mai multe calculatoare.

Multiplexarea

Pentru a discuta despre protocoale de comunicație folosite pe automobile pentru început trebuie să clarificam felul în care calculatoarele ce sunt utilizate într-un automobil execută schimbul de informații între ele. Presupunem că un automobilul este echipat cu calculator de injecție (ECU), transmisie automată (TCU) și este prevăzut cu sistem de frânare (ABS).

Tabelul de mai jos prezintă ca și exempu, informațiile care sunt interschimbate între aceste calculatoare. „Tx”semnifica informația care este transmisă iar „Rx” informația care este recepționată.

Tabelul 1.1- Schimb de informații între calculatoare

Pentru exemplificare luăm ca și exemplu informația pentru ABS activ. Această informație este transmisă de modulul sistemului de franare (ABS) și este receptionată de modulul cutiei de viteze (TCU) și cel de control al injecției motorului. Astfel informația este împarțită între cele trei module.

Pentru a împărții informații intre cele trei module, pentru fiecare semnal ar trebuie realizata o conexiune fizică. Acest este modul clasic de a comunica anumite informații,dar prezintă mari dezavantaje:

numărul ridicat de cabluri și conectori duce la creșterea în greutate a automobilului;

deoarece sunt utilizate multe conexiuni electrice, crește posibilitatea defecțiunilor;

pentru oricare nouă informație trebuie adăugat un nou cablu, așadar crește complexitatea cablajului;

Figura 1.3- Conexiune clasică între modulele unui automobil[1]

În prezent, pentru că se utilizează un număr mare de module într-un automobil, conexiunea clasică este imposibil de folosit. Din acest motiv s-a trecut la multiplexare, care practic reprezintă transmiterea mai multor informații utilizînd același mediu de transmitere ( aceleași două fire).

Este evident că utilizarea acestui tip de comunicație prezintă avantaje:

numarul de cabluri și conectori redus;

greutatea mașini este redusă;

spațiul ocupat de magistrala de transmisie este mai mic;

fiabilitatea crește;

Figura 1.4- Conexiune modernă (CAN) între modulele unui automobil[1]

În prezent industria automobilelor utilizează mai multe protocoale de comunicație care difera în funcție de aplicația folosită. Acestea sunt LIN, CAN, FlexRay, MOST și Bluetooth.

Protocoalele de comunicație folosite în industria automotive se clasifica în funcție de viteza de transmitere a datelor de transfer. SAE (Society of Automotive Engineers), propune clasificarea urmatoare pentru sistemele/rețelele de comunicație:

Tabelul 1.2- Clasificare protocoale de comunicație

LIN – LOCAL INTERCONNECT NETWORK

LIN este un protocol de comunicație folosit în domeniul automotive în zona de cost scăzut. LIN garantează operabilitatea intre nodurilor rețelei din punct de vedere software și hardware, deasemenea si o comportare EMC predictibilă.

Pachetul de specificații conține 3 părți:

Protocolul LIN – acesta contine nivelul fizic si cel de date.

LIN API – prezinta interfața dintre rețea și aplicație.

LIN Configuration Language – prezinta formatul fișierului utilizat pentru configurare LIN.

Figura 2.1- Specificatile protocolului LIN

Concepte de bază

Proprietățile protocolului LIN sunt:

organizare single-master / multiple-slave;

lungimea mesajelor variabilă: 2, 4, 8 octeți;

garantarea timpilor de latență utilizati in transmiterea mesajelor;

configurație flexibilă;

detectarea nodurilor defectoase din rețea;

auto-sincronizare;

cost scăzut;

viteze de până la 20 kbit/sec;

Figura 2.2 – Arhitectura LIN

Nivelul fizic definește transmiterea semnalelor pe magistrală.

Nivelul MAC caracterizeaza nucleul protocolului LIN.

Nivelul LLC acest nivel este preocupat filtrarea mesajelor și gestionarea „recuperării mesajelor”.

2.1.1Mesajele

Informația pe magistrala este transmisă într-un format fix de o lungime variabilă. Un frame de mesaj este format din 2, 4 sau 8 octeți de date și 3 octeți de control și siguranță.

Traficul pe magistrala este controlat de un master. Fiecare mesaj are la inceput un semnal de pauză fiind urmat de un câmp de sincronizare, apoi de cel de identificare, aceștia fiind trimiși de master.

Slave-ul trimite înapoi câmpul de date și cel de control. Datele sunt trimise de la master la oricare slave printr-un slave task.

Figura 2.3 – Conceptul de comunicație

2.1.2 Informația

În sistemul LIN un nod nu utilizeaza informația despre configurația sistemului cu excepția nodului master.

2.1.3 Flexibilitatea sistemului

Alte noduri pot fi adăugate in rețea fără a fi necesare modificari hardware sau software în restul nodurilor slave.

2.1.4 Calea informației

Conținutul unui mesaj este dat de un ID. ID-ul nu indică destinația mesajului ci reprezinta semnificația datelor. Numărul maxim pentru ID-uri este de 64, din care 4 sunt rezervați pentru comunicații speciale cum ar fi upgrade software sau diagnosticarea sistemului.

2.1.5 Viteza

Viteza maximă este de 20kbiti/sec fiind si limitările EMI ale mediului de

transmisie cu un singur fir. Viteza minimă este de 1kbit/sec pentru a nu exista conflicte.

Pentru implementarea dispozitivelor LIN este recomandată folosirea următoarelor rate de transfer:

Figura 2.4 – Rate de transfer LIN

2.1.6 Securitate

Detecțtia erorilor:

monitorizare;

protecție dublă-paritatea campului;

check-sum;

Transferul mesajelor

Există doar singur frame de mesaje. Acesta are informația de sincronizare și identificatorul de la master până la toate slave-urile precum și informații de la un slave până la celelalte slave-uri. Master-ul se localizează în nodul master și este utilizat pentru planificarea mesajelor. Acesta trimite un header al frame-ului de mesaj. Slave-ul care se există în toate nodurile (inclusiv în master) o să răspunsul mesajului.

Frame-ul de mesaj este format din header fiind trimis de master și un raspuns care este trimis de un master sau de unul din slave.

Header-ul este format din mai multe câmpuri: SYNCH BREAK, SYNCH FIELD și IDENT FIELD. Răspunsul este format din 3 până la 9 octeți: 2,4 sau 8 octeți de date și un câmp de CHECKSUM. Octeții sunt despărțiți de un spațiu între ei. Header-ul și răspunsul sunt despărțite de un spațiu.

Figura 2.5 – Structura unui mesaj

2.2.1 Câmpul de biti

Formatul este cel din figura de mai jos. Fiecare câmp are o lungimea dec 10 biți. Bitul de start marchează începutul câmpului și este cel dominant. Acesta este urmat de 8 biți de date, LSB fiind primul transmis. Bitul de stop marchează sfâșitul fiind recesiv.

Figura 2.6 – Structura câmpului de date

2.2.1.1 Structura header-ului

Pauza de sincronizare – este utilizată pentru a identifica exact inceputul mesajului ( este trimisă întotdeauna de master). Permite slave-urilor de a se sincroniza. Este compus din 2 segmente.

Primul fiind o valoare dominantă de durată TSyNBRK sau mai mare. Al doilea este un delimitator de sincronizare recesivă cu o durată minimă de TSZNDEL. Acesta este necesar pentru a permite detecția bitului de start al următorului câmp de sincronizare.

Figura 2.7 – Pauza de sincronizare

Câmpul de sincronizare – conține informația pentru sincronizare si este caracterizat de 5 fronturi pe 8 biți.

Figura 2.8 – Câmpul de sincronizare

Câmpul de identificare – Acesta indică conținutul precum și lungimea mesajului. Conținutul este reprezentat de 6 biți + 2 biți de paritate.

Figura 2.9 – Câmpul de identificare

2.2.2 Câmpul de raspuns

În funcție de aplicație, acest câmpul de răspuns (date + sumă de control) poate dar nu trebuie neapărat procesat deoarece informația conținută este irelevantă pentru unitatea de control. Acesta este cazul în care avem identificator necunoscut sau viciat. În acest caz calcularea unei sumei de control poate fi omisă.

Câmpul de date – conține 8 biți de date care sunt transmiși de un frame de mesaj.

Figura 2.10 – Câmpul de date

Câmpul checksum – conține suma inversată modulo 256 a tuturor octeților de date

Figura 2.11 – Câmpul checksum

Lungimea mesajului

Mesajele au la inceput un câmp de sincronizare și se finalizeaza cu un câmp checksum. Câmpurile de mesaje sunt despărțite de spații între octeți precum și un spațiu de răspuns. Lungimea spaților nu este definită ci doar lungimea totală a frame-ului de mesaj este limitată. Lungimea minima TFRAME_MIN este timpul minim necesar transmiterii unui frame complet (marimea spațiilor este 0). Lungimea maximă TFRAME_MAX este timpul maxim permis pentru a transmite un frame.

Semnalul de WAKE-UP

Este trimis de orice slave task dar doar dacă magistrala este în modul sleep și există o cerere internă din partea nodului care este în așteptare. Semnalul este format din caracterele 0x80.

Atunci când slave-ul nu este sincronizat cu masterul semnalul poate fi cu 15% mai lung sau mai scurt decât în cazul unui semnal în care avem sincronizare. Caracterul 0x80 va fi identificat de master ca un octet de date valid, sau ca 0xC0, 0x80sau 0x00.

Primul câmp este dat de o secvență TWUSIG de biți dominanți (8 încluzând bitul de start). Al doilea câmp este delimitatorul cu o durată de cel puțin 4 biți TWUDEL (recesivi).

Figura 2.12 – Semalul Wake-up

Filtrarea si validarea mesajelor

Filtrarea pune baza pe întreg identificatorul. Trebuie asigurat faptul ca doar un slave task să răspundă la acel identificator.

Mesajul este valid atât pentru transmițător cât și pentru receptor doar dacă nu se detectează o eroare până la sfârșitul frame-ului. Dacă un mesaj este corupt, este considerat de master și slave ca fiind netransmis.

Detectia erorilor si semnalizarea acestor

Există 5 tipuri de mesaje de eroare :

Eroare de bit – cel care trimite un bit monitorizează și magistrala. Eroarea apare dacă valoarea bitului monitorizat este diferită de cea a bitului trimis;

Eroare de checksum – apare atunci cand suma dintre suma inversată modulo 256 a tuturor octeților recepționați și suma de control este diferita de ’0xFF’;

Eroare identificator paritate – Aplicațiile LIN nu deosebesc un identificator valid dar necunoscut și unul corupt. Totuși este obligatoriu pentru toate nodurile slave ca pentru un identificator cunoscut să se evalueze toți cei 8 biți din câmpul ID și să distingă identificatorii cunoscuți și cei corupți;

Eroarea de nerăspundere a slave-ului – este detectată dacă frame-ul de mesaje nu este transmis in format complet în lungimea maximă permisă de nici un slave task în urma transmiterii câmpurilor de sincronizare și a identificatorului;

Eroare de câmp de sincronizare – se detectează dacă un slave detectează fronturile câmpului de sincronizare în afara toleranțelor admise;

Eroare de inactivitate pe bus – se detectează dacă nu s-a primit nici un câmp de sincronizare sau un octet în intervalul TTIMEOUT de la recepția ultimului mesaj valid;

Detecția erorilor nu se face de către protocolul LIN. Erorile sunt semnalizate în interiorul fiecărui nod și trebuie să fie accesibile de către „fault confinement”.

2.6.1 Fault Confinement

Acest concept se bazează pe nodul master care se va ocupă cât mai mult de detecția erorilor, recuperarea în urma erorilor și dignosticul. Este foarte dependent de cerințele sistemului și prin urmare nu face parte din protocolul LIN cu excepția unor aspecte.

Unitatea de control master va detecta urmatoarele situatii:

– când master task transmite: se detectează o eroare de bit sau o eroare de paritate în octetul de sincronizare sau identificator în timp ce se verifică transmisia proprie;

– când slave task din master recepționează: este detectată o eroare de sumă de control sau nu răspunde slave-ul când se citesc date de pe bus;

Unitatea de control slave va detecta situații de eroare:

– când slave task transmite: apare o eroare de bit într-un câmp de date sau sumă de control când se verifică propria transmisie;

– când slave task recepționează: apare o eroare de bit într-un câmp de date sau sumă de control când se citește de pe bus;

– când nu răspunde un slave atunci când un slave așteaptă un răspuns de la un alt slave în intervalul de lungime maximă a frame-ului de mesaje TFRAME_MAX;

– când este detectată o eroare în octetul de sincronizare atunci când câmpul de sincronizare nu este detectat în toleranța admisă;

Linia master/slave

Conexiunea master/slave se face printr-o magistrală care este o implementare a standardului ISO 9141.

Magistrala LIN bidirecțională este conectată fiecare nod, printr-o rezistență și o diodă este conectata la VBAT. Dioda este obligatorie pentru a preveni o supraîncărcare a ECU-ului (Electronic Control Unit) în cazul pierderii bateriei. Este important de observat că specificațiile LIN se referă la tensiunile externe ale ECU-ului și nu la cele interne. Trebuie luate în considerare mai ales tensiunile parazite ale diodelor polarizate invers atunci când se proiectează un transceiver LIN.

Figura 2.13 – Conceptul interfetei LIN

Figura 2.14 – Nivelele de tensiune pe magistrala

CAN – Controller Area Network

La începutul anilor 1980, Bosch a început să dezvolte un astfel de sistem de comunicare serială. Acesta a primit numele CAN (Controller Area Network). Chiar și astăzi, protocolul CAN continuă să efectueze servicii utile în industria autovehiculelor.Mai presus de toate, CAN se caracterizează printr-o transmisie de date foarte fiabilă care satisface cerințele în timp real.

De la introducerea CAN-ului, cablurile complexe din automobil, adesea cu multe variante au devenit lucruri din trecut. CAN-ul simplifică nu numai planificarea și instalarea proiectului, ci și reducerea greutății cablului și a cerințelor de spațiu.

Tehnologia CAN a fost standardizată din 1994 și este descrisă de patru documente ISO. ISO 11898-1 descrie protocolul CAN. În ceea ce privește modelul de referință al comunicației de date, protocolul CAN acoperă doar stratul de legătură de date (MAC — Medium Access Control, LLC — Logical Link Control) și stratul fizic (PLS – Physical Signaling).

Cele două documente ISO, ISO 11898-2 și ISO 11898-3 acoperă cele două substraturi ale modelului de referință pentru comunicarea de date: PMA (Physical Medium Attachment) și PMS (Physical Medium Specification). Acestea descriu două straturi fizice diferite CAN: stratul fizic CAN de mare viteză și stratul fizic CAN cu viteză redusă. Ele diferă în principal prin definirea tensiunilor și a ratelor de transmisie a datelor.

ISO 11898-3 permite rate de transfer de date de până la 125 kbit / s. Este utilizat în principal în zona de confort a automobilului. ISO 11898-2 permite ratele de date de până la 1 Mbit / s. În consecință, standardul ISO 11898-2 este utilizat în principal în zonele de propulsie și șasiu ale automobilului.

ISO 11898-1 definește o comunicare bazată pe evenimente. Cu o încărcare mai mare a magistralei, acest lucru poate duce la întârzieri, în special pentru mesaje CAN cu prioritate inferioară. Pentru a asigura comunicarea prioritara într-o rețea CAN s-a adoptat ISO 11898-4. ISO 11898-4 este o extensie a stratului de date de legătură care adaugă o opțiune de comunicație declanșată în timp pentru rețele CAN.

Figura de mai jos prezintă relațiile dintre modelul de referință ISO/OSI de comunicații de date, standardul CAN și implementarea acestuia

Figura 3.1 – Protocolul CAN [3]

Reteaua CAN

O rețea CAN constă dintr-un număr de noduri CAN care sunt conectate printr-un mediu de transmisie fizică (magistrală CAN). În practică, rețeaua CAN se bazează de obicei pe o topologie in linie, cu o magistrală liniară la care un număr de unități electronice de comandă conica intre ele utilizand o interfață CAN. Topologia pasivă stea poate fi utilizată ca alternativă.

O linie cu două fire răsucite este mediul de transmisie fizic utilizat cel mai frecvent în aplicații (UTP – Unshielded Twisted Pair). În mod obișnuit, UTP-urile au secțiuni transversale ale firului între 0,34 mm² și 0,6 mm². Rezistența liniei trebuie să fie mai mică de 60 mΩ.

Rata maximă de date este de 1 Mbit / s. Este permisă o extensie maximă de rețea de aproximativ 40 de metri. La capetele rețelei CAN, rezistoarele de terminare a magistralei contribuie la prevenirea fenomenelor tranzitorii (reflexii). ISO 11898 specifică numărul maxim de noduri CAN ca fiind de 32.

Figura 3.2 – Retea CAN [3]

Nodul CAN

Odată cu creșterea utilizari modulelor electronice in industria automobilelor, cantitatea și complexitatea software-ului se dezvoltă rapid. Unele vehicule de lux au deja peste 1000 de funcții software. În multe sisteme peste 70 de unități electronice de control (ECU) sunt utilizate. Fiecare ECU care își îndeplinește sarcinile într-o rețea CAN este denumit un nod CAN.

La începutul creării rețelei, o implementare adecvată a interfeței CAN a implicat un simplu driver CAN care a furnizat o interfață independentă hardware-independent pentru aplicație împreună cu un controler CAN și un transmițător CAN. Astăzi, nu mai este posibil să se facă fără un sistem de operare, funcții de gestionare a rețelei sau diagnostice. Complexitatea software-ului, care a devenit între timp enormă face necesară standardizarea infrastructurii.

Software-ul unic reduce efortul de dezvoltare și simplifică întreținerea. De asemenea, contribuie la reutilizarea și interschimbarea componentelor software între diferite platforme ale vehiculelor, între producătorii de echipamente originale (OEM) și furnizorii.

AUTOSAR (Automotive Open System Architecture) oferă o arhitectură de referință. Partea centrală a acestei arhitecturi de referință este mediul de rulare AUTOSAR Runtime Environment (RTE), care decuplează complet rețeaua de componentele software ale aplicației. Mediul de rulare oferă servicii uniforme componentelor software sub formă de software de bază. De jos în sus, este alcătuită din trei niveluri: Microcontroller Abstraction Layer, ECU Abstraction Layer, Service Layer.

Figura de mai jos descrie structura unui nod CAN modern. De mare interes este zona "Communication Services". Router-ul PDU (PDU: Protocol Data Unit) gestionează comunicarea nodului intern între straturile individuale de comunicare și coordonează comunicarea dintre AUTOSAR COM, Diagnostic COM Manager și CAN TP (Transport Protocol).

Figura 3.3 – Nod CAN [3]

Controler-ul CAN

O unitate electronică de comandă (ECU) care dorește să participe la comunicarea CAN necesită o interfață CAN. Acesta cuprinde un controler CAN și un transmițător CAN. Controler-ul CAN îndeplinește funcțiile de comunicație prescrise de protocolul CAN.

Transmițătorul CAN leagă controler-ul CAN de mediul de transmisie fizic. De obicei, cele două componente sunt izolate electric prin decuplare optică sau magnetică, deoarece supratensiunile de pe magistrala CAN pot distruge transmițătorul CAN dar controlerul CAN sa fie in siguranta.

Într-o rețea CAN, nodurile CAN diferă în ceea ce privește numărul de mesaje CAN pe care fiecare le trimite sau le primește. Există de asemenea diferențe mari în frecvențele de trimitere și primire. De exemplu, un singur nod CAN poate primi cinci mesaje CAN diferite, fiecare la un ciclu de zece milisecunde, în timp ce un alt nod CAN trebuie doar să primească un mesaj CAN la fiecare 100 milisecunde. Aceste diferențe evidente au dus la două arhitecturi fundamentale ale controlerului CAN: controlere CAN cu și fără stocare de obiecte.

Indiferent de tipul de controler CAN, controlerele CAN pot fi integrate sau pot fi folosite ca și componente independente de chip. În acest caz microcontrolerul tratează controlerul CAN ca un cip de memorie. Varianta autonomă este mai flexibilă, dar versiunea on-chip are avantajul de a necesita mai puțin spațiu, iar comunicarea între microcontroler și controlerul CAN este mai rapidă și mai sigură.

Transmițatorul CAN

Anterior, controlerul CAN a fost frecvent conectat la mediul de comunicare (magistrală CAN) printr-un circuit discret. Astăzi transmițătoarele CAN se ocupea de conexiunea bus. Un transmițător CAN are întotdeauna doi pini: unul pentru linia CAN superioară (CANH) și una pentru linia CAN inferioara (CANL). Acest lucru se datorează faptului că transmisia fizică a semnalelor într-o rețea CAN este simetrică pentru a obține compatibilitate electromagnetică, iar mediul de transmisie fizică într-o rețea CAN constă din două linii.

În mod obișnuit se face o distincție între transmițătoarele CAN de mare viteză și transmițătoarele CAN cu viteză redusă. Receptoarele CAN de mare viteză suportă rate de date de până la 1 Mbit/s. Transmițătoarele CAN de viteză redusă suportă rate de transfer de date de până la 125 kbit/s. Cu toate acestea transmițătoarele CAN de mare viteză asigură o configurație cu toleranță la erori a interfeței magistralei (de exemplu, o eroare a uneia dintre cele două linii de comunicație nu duce la o eroare totală de comunicare).

Figura de mai jos prezintă schema de bază a unui transmițător CAN de mare viteză. Când ambele tranzistoare de ieșire sunt blocate, ambele linii CAN au același potențial (0,5 * Vcc), iar tensiunea diferențială este zero. De îndată ce conduc ambii tranzistori, aceasta produce o tensiune diferențială între cele două linii care este o funcție a rezistenței la sarcină. Conform ISO 11898-2, această diferență ar trebui să fie de 2 volți. În consecință, un curent aproximativ de 35 mA.

În general, transmițătoarele CAN sunt caracterizate de emisii electromagnetice foarte scăzute și de o gamă largă de moduri de funcționare comună pentru o imunitate ridicată la zgomot. În plus, transmițătoarele CAN de astăzi oferă protecție ESD de până la 8 kV. În ciuda respingerii ridicate a modului comun în zonele de utilizare foarte critică, un comutator de mod comun (CMC) introdus lângă ieșire poate contribui la reducerea emisiilor.

Numărul maxim de noduri CAN este specificat ca 32 în ISO 11898. În practică, numărul maxim de noduri CAN depinde în mare măsură de performanțele transceivere-lor CAN folosite și de faptul dacă este o rețea CAN de mare viteză sau de viteză redusă. De exemplu, dacă transmițătorul CAN de mare viteză TJA1050 este utilizat într-o rețea CAN de mare viteză, până la 110 noduri CAN pot fi conectate într-o singură rețea CAN .

Figura 3.4 – Transmițătorul CAN [3]

CAN BUS-ul

Transmisia semnalului fizic într-o rețea CAN se bazează pe transmisia tensiunilor diferențiale (transmisia semnalului diferențial). Acest lucru elimină efectele negative ale tensiunilor de interferență induse de motoare, sisteme de aprindere și contacte de comutare. În consecință, mediul de transmisie (magistrală CAN) este alcătuit din două linii: linia CAN superioara (CANH) și linia CAN inferioară (CANL).

Răsucirea celor două linii reduce considerabil câmpul magnetic. Prin urmare, în practică conductorii cu perechi torsadate sunt în general utilizați ca mediu de transmisie fizică.

Datorită vitezei de propagare a semnalului finit, efectele fenomenelor tranzitorii (reflexii) cresc odată cu creșterea ratei de date și a extinderii magistralei. Capetelor canalului de comunicare folosesc rezistențe terminale ce previne reflexiile într-o rețea CAN de mare viteză.

Parametrul cheie pentru rezistența terminala a magistralei este așa-numita impedanță caracteristică a liniei electrice. Acesta este de120 Ohm. Spre deosebire de ISO 11898-2, ISO11898-3 (CAN cu viteză mică) nu specifică nici o rezistență terminala a magistralei datorită vitezei reduse maxime de date de 125 kbit / s.

Figura 3.5 – Retea CAN cu rezistenta terminala [3]

Transmisia semnalului fizic într-o rețea CAN se bazează pe transmisia semnalului diferențial. Tensiunile diferențiale specifice depind de interfața bus care este utilizată. Aici se face distincția între interfața CAN de mare viteză (ISO 11898-2) și interfața CAN de viteza redusă (ISO 11898-3).

ISO 11898-2 atribuie logic "1" unei tensiuni diferențiale tipice de 0 V. Logicul "0" este atribuit cu o tensiune diferențială tipică de 2 Volți. Transmițătoarele CAN de mare viteză interpretează o tensiune diferențială mai mare de 0,9 V ca nivel dominant în cadrul domeniului de funcționare comun, de obicei între 12 V și -12 V.

Sub 0,5 volți totuși diferența de tensiune este interpretată ca un nivel recesiv. Un circuit de histerezis crește imunitatea la tensiuni de interferență. ISO 11898-3 atribuie o tensiune diferențială tipică de 5 V la logic "1", iar o tensiune diferențială tipică de 2 V corespunde logicului "0".

Figura 3.6 – Nivele de tensiune CAN Bus de mare viteză si

CAN Bus de viteză redusa [3]

CAN BUS-ul Logic

O condiție esențială pentru o comunicare neîntreruptă într-o rețea CAN în special pentru accesul la magistrala, indicarea și recunoașterea defecțiunilor reprezintă distincții clare între nivelurile de magistrală dominante și recesive. Nivelul dominant al magistralei corespunde logicului "0". Nivelul recesiv al magistralei corespunde logicului "1".

Nivelul dominant al magistralei suprascrie nivelul recesiv. Atunci când diferite noduri CAN trimit simultan niveluri dominante și recesive, magistrala CAN preia nivelul dominant Nivelul recesiv apare numai dacă toate nodurile CAN trimit niveluri recesive.

Din punct de vedere logic, un astfel de comportament este AND-logic. Din punct de vedere fizic AND-logic este implementat de către un așa-numit circuit colector deschis. Pentru a afla logica bus-AND pe care este bazată o rețea CAN urmariti figura de mai jos.

Figura 3.7 – CAN BUS-ul Logic [3]

Principiul CAN

Aplicațiile critice de siguranță, cum ar fi cele din zona de propulsie, plasează cerințe ridicate pentru disponibilitatea unui sistem de comunicații. Așadar ar fi dezavantajos să se atribuie responsabilitatea distribuției de informatii la un singur nod de magistrala. Eșecul acestui nod ar duce la eșecul tuturor comunicărilor. O soluție mult mai elegantă este aceea de a descentraliza accesul la magistrala, astfel încât fiecare nod să aibă dreptul de a accesa magistrala.

De aceea, o rețea CAN se bazează pe o combinație de arhitectură multi-master și topologie de linie. In esență fiecare nod CAN este autorizat să introducă mesaje pe magistrala într-o rețea CAN. Transmisia mesajelor CAN nu urmează nici o secvență de timp predeterminată, ci este condusă de eveniment.

Canalul de comunicare este ocupat doar dacă trebuie să fie transmise informații noi, ceea ce permite accesul rapid la magistrale. În principiu, transmisiile de date în timp real in milisecunde nu reprezintă o problemă într-o rețea CAN, datorită abilității de a reacționa rapid la evenimente asincrone și rate de transfer foarte mari de până la 1 MBit / s.

O metodă de adresare selectivă a receptorului este utilizată într-o rețea CAN pentru a preveni dependențele dintre nodurile de magistrală și pentru a crește flexibilitatea configurației. Fiecare mesaj CAN este disponibil pentru fiecare nod CAN pentru a primi. O condiție prealabilă este că trebuie să fie posibilă recunoașterea fiecărui mesaj CAN printr-un identificator de mesaj (ID) și prin filtrarea specifică nodului.

Figura urmatoare vă arată o secvență obișnuită de comunicare. Afișează matricea de comunicare care stă la baza unei rețele CAN, precum și ramurile de trimitere și rezultatele RX.

Figura 3.9 – Comunicarea CAN tipica [3]

Tipuri de cadre

Pentru transmiterea datelor de utilizator, ISO 11898-1 prescrie așa-numitul cadru de date. Un cadru de date poate transporta un volum util maxim de opt octeți. Pentru că există așa numitul câmp de date, care este încadrat de multe alte câmpuri care sunt necesare pentru a executa protocolul de comunicare CAN. Acestea includ adresa mesajului (identificator sau ID), codul lungimii datelor (DLC), suma de verificare (secvența de verificare a redundanței ciclice – secvența CRC) și confirmarea RX situata în câmpul de confirmare.

În timp ce ECU-ul de generare a informațiilor relevante ia inițiativa de a trimite cadre de date, există un cadrul de la distanță, un tip de cadru cu care pot fi solicitate date utilizator, adică cadre de date, de la orice alt nod CAN. Cu excepția câmpului de date lipsă, un cadru de la distanță are aceeași structură ca un cadru de date.

Cadrul de eroare este disponibil pentru a indica erorile detectate în timpul comunicării. O transmisie de date eronată este întreruptă și se emite un cadru de eroare. Structura unui cadru de eroare diferă semnificativ de structura datelor eronate sau de ce a cadrului de la distanță. Se compune din două părți: semnalizatorul de eroare și delimitatorul de eroare.

Figura 3.10 – Cadrul de date standard [3]

Cadrele de date își asumă un rol predominant într-o rețea CAN: ele servesc la transmiterea datelor utilizatorului. Un cadru de date este alcătuit din mai multe componente diferite. Fiecare componentă individuală efectuează o sarcină importantă în timpul transmiterii. Sarcinile care trebuie îndeplinite sunt: inițierea și menținerea sincronizării între partenerii de comunicare, stabilirea relațiilor de comunicare definite în matricea de comunicare și transmiterea și protejarea datelor utilizatorului.

Transmisia unui cadru de date începe cu bitul de pornire (Start of Frame – SOF). Este transmis de către expeditor ca un nivel dominant care produce o margine a semnalului de la precedentul nivel recesiv (bus idle), care este utilizat pentru a sincroniza întreaga rețea. Pentru ca receptoarele să nu piardă sincronismul cu expeditorul în timpul transmisiei cadrului, ele compară toate marginile semnalului recesiv până la dominantă cu timpul de biți prestabilit. În cazul deviației, receptoarele se sincronizează cu valoarea erorii de fază relevante (re-sincronizare).

SOF stabilește prioritatea cadrului de date și împreună cu filtrarea de acceptare asigură relațiile expeditor-receptor în rețeaua CAN care sunt definite în matricea de comunicare. Urmează bitul RTR (Remote Transmission Request). Este utilizat de către expeditor pentru a informa receptorii despre tipul cadrului (cadru de date sau cadru la distanță). Un bit RTR dominant indică un cadru de date.

Bitul IDE (Identifier Extension bit) care urmează uervește la distincția dintre formatul standard și formatul extins. În format standard, identificatorul are 11 biți, iar în format extins 29 de biți.

Codul DLC (Data Length Code) comunică receptoarelor numărul de octeți de sarcină utilă. Vechile încărcări utile sunt transportate în câmpul de date. Un număr maxim de opt octeți pot fi transportați într-un singur cadru de date. Sarcina utilă este protejată de o sumă de control utilizând o verificare a redundanței ciclice (CRC) care este încheiată de un bit de delimitare. Pe baza rezultatelor CRC, receptoarele confirmă pozitiv sau negativ slotul ACK (acknowledgement), care este urmat de un bit de delimitare. După aceasta transmiterea unui cadru de date este terminată de șapte biți recesivi (End Of Frame -EOF).

Pentru a vă consolida și aprofunda cunoștințele despre cadrul de date CAN, figura "Transfer fizic al unui cadru de date în format standard" vă arată transferul fizic al unui cadru de date în format standard într-o rețea CAN de mare viteză.

Figura 3.11 – Transfer fizic al unui cadru de date în format standard [3]

Pe lângă cadrul de date folosit pentru transportarea datelor, există cadrul de la distanță, un tip de cadru folosit pentru a solicita date, adică cadre de date de la orice nod CAN. Cu toate acestea, aceste cadre nu sunt folosite vreodată în aplicațiile auto, deoarece transmiterea datelor nu se bazează pe solicitare ci se bazează în primul rând pe inițiativa producătorilor de informații. Cadrele de la distanță pot fi transmise fie în format standard, fie în format extins.

Cu excepția lipsei unui câmp de date, aspectul unui cadru de la distanță este identic cu cel al unui cadru de date. Datele și cadrele de la distanță sunt diferențiate prin bitul RTR (Remote Transmission Request). În cazul unui cadru de date, bitul RTR este trimis ca dominant. Un cadru la distanță este identificat de un bit RTR recesiv.

În principiu, cadrele de la distanță pot fi definite pentru toate cadrele de date existente din rețeaua CAN. Este necesar să se asigure că identificatorii cadrelor de la distanță se potrivesc cu cele ale cadrelor de date asociate. ECU responsabil pentru generarea cadrului de date dorit răspunde la un cadru la distanță prin trimiterea acestuia.

În cazul unui controler CAN cu stocare de obiecte, controlerul CAN răspunde automat la un cadru la distanță. Controlorii CAN fără stocarea obiectelor trebuie să permită gazdei să afle despre cadrul de la distanță pentru a putea iniția un răspuns.

În cazul ideal, cererea prin intermediul unui cadru la distanță duce imediat la un răspuns cu cadrul de date relevant. Cu toate acestea, este posibil ca mesajele CAN cu prioritate mai mare să fie inserate între cerere și răspuns.

Figura 3.12 – Cadru de la distanta în format standard [3]

Adresarea

Comunicarea în rețeaua CAN se bazează pe adresarea referitoare la conținut. Nu sunt nodurile CAN care au identificatori, ci mai degrabă datele și cadrele de la distanță sunt identificate (identifier – ID). Astfel toate mesaje CAN pot fi recepționate de către fiecare nod CAN (broadcasting). Fiecare receptor este responsabil de selectarea mesajelor CAN. Această adresare selectivă a receptorului este foarte flexibilă, dar necesită ca fiecare receptor să filtreze mesajele primite CAN (acceptance filtering).

Utilizatorul are opțiunea de a alege între două formate de mesaje: format standard și extins. Cele două formate diferă în funcție de lungimea identificatorului. În format standard, ID-ul are 11 biți. În format extins ID-ul are 29 de biți.

Spre deosebire de ID-ul în format standard, ID-ul în format extins constă din două componente, ID-ul de bază și ID-ul extins. Între aceste două componente sunt biții IDE (Identifier Extension) și SRR (Substitute Remote Request).

Un bit IDE dominant indică faptul că un mesaj CAN este în format standard. Un bit IDE recesiv indică faptul că mesajul CAN este în format extins. În format extins bitul SRR care este transmis întotdeauna ca recesiv, înlocuiește bitul RTR în format standard. În format extins primii doi biți ai câmpului de control (r0 și r1) sunt irelevanți, ambele sunt transmise ca dominante.

Figura 3.13 – Cadru de date în format standard si extins [3]

CRC si confirmarea

Una dintre cele mai mari provocări ale comunicării seriale în mediul auto este garantarea unui nivel extrem de înalt de fiabilitate în transmisie. Metoda CRC care este utilizată (CRC: Cyclic Redundancy Check) reprezintă una dintre cele mai puternice metode de detectare a erorilor.

În metoda CRC, o secvență CRC este calculată pe baza biților care urmează a fi transmiși (de la SOF până la câmpul de date și inclusiv) și un polinom generator G (x) definit de ISO 11898-1. Secvența CRC este atașată la biții care trebuie transmiși. Polinomul general este un multiplu de biți care trebuie transmiși. Receptorul polinomului general poate detecta cu o fiabilitate foarte mare dacă a apărut o eroare de transmisie (excepție: secvența CRC în sine a fost coruptă de o perturbare), adică dacă divizarea de către polinomul generator generează un rest.

Pe baza rezultatului acestei divizări, fiecare receptor orientează recunoașterea independent de orice filtrare a acceptării. Un receptor recunoaște fie pozitiv, fie negativ. Un nivel dominant în slotul ACK reprezintă o confirmare pozitivă, în timp ce un nivel recesiv reprezintă o confirmare negativă.

Delimitatorul ACK este întotdeauna transmis în mod recesiv în scopul urmăririi erorilor. Deoarece expeditorul transmite în mod recesiv slotul ACK și delimitatorul ACK, o confirmare pozitivă este suficientă pentru a confirma corectitudinea transmiterii mesajului către expeditor. Acesta este motivul pentru care metoda de recunoaștere în rețeaua CAN este menționată ca o confirmare pozitivă neutră a nodului.

Figura 3.14 – Confirmarea [3]

Bit Stuffing

O condiție de bază pentru transmiterea corectă a datelor este ca partenerii de comunicare sa fie sincronizați. Marginea de semnal dominantă până la recesiunea bitului de pornire servește la producerea sincronizării (Start of Frame – SOF) a unui mesaj CAN. Apoi mecanismul de resincronizare este utilizat pentru a menține sincronizarea până la sfârșitul transmisiei mesajului.

Mecanismul de resincronizare se bazează pe evaluarea marginilor semnalului recesiv-dominant. Astfel margininile semnalului sunt asigurate de așa-numitul mecanism de umplere a biților(bit stuffing mechanism). ISO 11898-1 prevede că expeditorii trebuie să transmită un bit suplimentar cel târziu după transmiterea a cinci biți omogeni; se adaugă un bit chiar dacă un bit complementar a urmat oricum cei cinci biți omogeni.

Deoarece adaugarea de biți începe cu transmiterea SOF și se termină cu transmiterea ultimului bit al secvenței CRC, în cel mai rău caz numărul teoretic de biți adaugati ar fi 24 pentru transmiterea unui cadru de date în format standard când câmpul de date include opt bytes. În consecință, cel mai lung teoretic posibil cadru de date în format standard ar consta în 132 de biți.

Principiul de accesare a magistralei

ISO 11898-1 definește o arhitectură multi-master pentru a asigura o disponibilitate ridicată și o transmitere a datelor pe bază de evenimente. Fiecare nod din rețeaua CAN are dreptul de a accesa magistrala CAN fără a solicita permisiunea și fără o coordonare prealabilă cu alte noduri CAN. Deși accesul la magistrala bazat pe o abordare bazată pe evenimente, permite reacții foarte rapide la evenimente, există riscul inerent că mai multe noduri CAN ar putea dori să acceseze simultan magistrala CAN, ceea ce ar duce la suprapuneri nedorite ale datelor pe magistrala CAN.

Pentru a păstra capabilitățile în timp real ale sistemului de comunicații, ISO 11898-1 asigură un acces la magistrală care garantează transportul nedistructiv al datelor. Se folosește metoda așa-numită CSMA / CA (Carrier Sense Multiple Access with Collision Avoidance). Metoda CSMA / CA asigură că nodurile CAN care doresc să trimită nu accesează magistrala CAN până când nu este disponibila.

În cazul accesului simultan la magistrală, metoda CSMA / CA asigură faptul că mesajul CAN cu prioritate maximă între nodurile CAN predomină. În principiu cu cât este mai mare prioritatea unui mesaj CAN cu atât mai devreme se poate transmite pe magistrala CAN. În cazul unui design slab al sistemului, mesajele CAN cu prioritate scăzută chiar riscă să nu fie transmise niciodată.

Figura de mai jos presupune un scenariu de două noduri CAN care doresc să acceseze magistrala în timpul unei transmisii continue de mesaje.

Figura 3.15 – Principiul de accesare a magistralei [3]

Componenta cheie a metodei de acces la magistrală definită de ISO 11898-1 este arbitrarea magistralei. Împiedică apariția coliziunilor în ciuda accesului simultan la magistrală. Principiul arbitrajului pe magistrală este relativ simplu.

După sincronizarea la nivel de rețea, toate nodurile CAN trimit un identificator al mesajului CAN bitwise pe magistrala CAN, de la cel mai semnificativ la cel mai puțin semnificativ. În acest proces logica bus-AND pe care se bazează rețeaua CAN asigură că un nivel de bus clar și distinct are loc pe magistrala.

În cele din urmă logica arbitrajului decide dacă un nod CAN poate continua să trimită sau dacă trebuie să înceteze trimiterea.

La sfârșitul fazei de arbitraj, nodul CAN care transmite mesajul CAN cu cel mai mic ID primește autorizația de trimitere. Nodurile CAN cu mesaje cu prioritate redusă trec la starea de recepție, mai târziu accesează magistrala CAN pentru o altă încercare de trimitere imediat ce este disponibila magistrala.

Figura 3.16 – Procedura de accesare a magistralei CAN [3]

Prioritizarea mesajelor

Prioritizarea mesajelor CAN este decisiva pentru obținerea accesului la magistrala în rețeaua CAN. Acestea sunt codificate prin identificatorul care este transmis bitwise de la cel mai semnificativ bit pana la bitul cel mai puțin semnificativ.

Arbitrarea logica se asigură că prioritatea mesajului CAN crește odată cu scăderea valorii identificatorului: cu cât un identificator este mai mic, cu atât este mai mare prioritatea mesajului CAN.

Dacă încărcarea magistralei nu este prea mare, acest tip de acces al magistralei, aleatoriu, nedistructiv și cu prioritate, asigură accesul foarte rapid la magistrală.

Cu toate acestea, trebuie luat în considerare faptul că creșterea sarcinii pe magistrală determină în principal întârzieri ale mesajelor CAN cu prioritate inferioară. Acest lucru poate afecta capacitatea în timp real a sistemului de comunicații CAN. Prin urmare, în proiectarea sistemului, prioritățile mesajelor CAN ar trebui să fie derivate din urgența semnalelor pe care le vor transporta.

Figura 3.17 – Prioritizarea mesajelor CAN [3]

Protectia datelor

Transmisia fiabilă a datelor este o condiție pentru siguranța și fiabilitatea sistemelor electronice în autovehicule. Prin urmare CAN nu numai că trebuie să satisfacă cerințele stricte de timp real, dar trebuie să asigure întotdeauna o transmitere fiabilă a datelor. Deoarece CAN se folosește și în aplicații foarte importante în timp și în siguranță în cadrul autovehiculului, cerințele pentru integritatea datelor sunt extrem de ridicate.

Important in evaluarea integrității datelor este mediul, care are un efect interferențial asupra transmiterii datelor, precum și capacitatea sistemului de magistrală serială de a apăra împotriva interferențelor. Prin urmare asigurarea transmiterii fiabile a datelor începe deja cu aspectul fizic al sistemului, unde compatibilitatea electromagnetică (EMC) joacă în mod tradițional un rol semnificativ.

În ciuda designului compatibil electromagnetic și a protecției fizice a datelor, se poate produce cuplaj electric, inductiv și capacitiv, care poate atenua și distorsiona semnalele. Atunci când se iau în considerare și diferitele momente de eșantionare, diferențele dintre pragurile de comutare și abaterile de frecvență dintre partenerii de comunicare este imposibilă preluarea transmisiei de date fără defecte.

Integritatea datelor poate fi privită ca fiind produsul probabilității cu care datele sunt deranjate și corupte în timpul transmisiei si probabilitatea ca datele perturbate să rămână nedetectate. Acest lucru oferă două strategii de bază pentru minimizarea probabilității erorilor reziduale sau îmbunătățirea integrității datelor.

Pe de o parte coruperea datelor poate fi evitată prin stabilirea rețelei într-un mod compatibil electromagnetic sau prin acțiuni fizice. Pe de altă parte, datele corupte pot fi detectate și corectate prin detectarea eficientă a erorilor logice.

Figura de mai jos oferă o imagine de ansamblu asupra acestui aspect.

Figura 3.18 – Principiul protecției datelor în rețeaua CAN [3]

Codarea NRZ

Pentru evitarea erorilor s-a lucrat la reducerea emisiilor de zgomot, la sensibilitate si imunitate. O mare importanță pentru emisiile radiate este codarea biților. Codificarea biților proiectată inteligent ajută la reducerea semnificativă a emisiilor. Cu toate acestea, această cerință trebuie adesea corelata cu o capacitate de transport.

Codarea de biți NRZ (NRZ: Non Return to Zero) a fost aleasa pentru CAN. Aceasta înseamnă că semnalele binare care trebuie transmise sunt cartografiate direct: o logică "1" la un nivel înalt, o logică "0" la un nivel scăzut. Caracteristică acodării NRZ este aceea că biții consecutivi ai aceleiași polarități nu prezintă modificări ale nivelului.

Acesta este modul în care codarea NRZ permite rate foarte ridicate ale datelor, dar menține emisiile în limite. Cu toate acestea, codificarea NRZ nu este auto-clocking; adică, nu are proprietăți de sincronizare. Dacă nu se produce nici o schimbare de nivel într-o perioadă mai lungă de timp, receptorul pierde sincronizarea. De aceea, utilizarea codării NRZ necesită un mecanism explicit de sincronizare, care totuși reduce eficiența transmisiei.

Reteaua CAN se foloseste de bit stuffing ca mecanism de sincronizare: după cinci biți omogeni, expeditorul introduce un bit complementar în fluxul de biți.

Figura 3.19 – Codarea NRZ [3]

Rasucirea firelor

Tensiunile de interferență, care pot fi induse de motoare, unități de aprindere și contacte de comutare sunt inofensive pentru transmisie simetrică a semnalelor. În cazul transmisiei simetrice a semnalelor, zgomotul exterior acționează în mod egal pe ambele linii.

Formarea diferențelor poate fi utilizată pentru a elimina semnalul de zgomot – semnalul util rămâne neafectat. Transmisia simetrică a semnalului are ca rezultat un mediu de transmisie fizică (magistrală CAN) compus din două linii: CAN-High line (CANH) și CAN-Low line (CANL).

În ceea ce privește transmisia simetrică a semnalelor, exploatează faptul că câmpurile magnetice din jurul firelor se suprapun. Câmpurile electrice din sârmă și ca urmare, câmpurile magnetice din jurul lor sunt exact opuse una față de cealaltă. Dacă firele incruciseaza adiacent unul față de celălalt, câmpurile magnetice se suprapun până la aproape zero. Acesta este utilizat pentru a anula emisiile electromagnetice. Inchiderea apropiată este garantată prin răsucirea perechii firelor CAN.

Prin răsucirea firelor, bucla conductivă este deplasată în conductorii individuali. În mod ideal, câmpurile magnetice vor prezenta direcții opuse în fiecare sub-segment, ceea ce duce la anularea reciprocă a oricăror tensiuni induse sau efecte inductive. Eficacitatea răsucirii crește odată cu numărul de încricisari. Cel puțin 30 de împachetări pe metru oferă rezultate bune.

Figura 3.20 – Rasucirea firelor [3]

Detectarea erorilor

Pentru a detecta mesajele corupte, protocolul CAN definește cinci mecanisme: monitorizarea biților, monitorizarea formatului mesajului (Form Check), monitorizarea codării bitului (Stuff Check), evaluarea confirmării (ACK Check)) și verificarea sumelor de control (Cyclic Redundancy Check).

Mecanismele de monitorizare a biților și de verificare a erorilor ACK sunt efectuate de expeditor. Independent de filtrarea acceptării, receptoarele efectuează verificarea formularului, verificarea materialelor și verificarea ciclului de redundanță. Figura de mai jos afișează câmpurile unui date sau un cadru la distanță care sunt afectate de mecanismele individuale de detectare a erorilor.

Protocolul CAN specifică faptul că expeditorul trebuie să transmită un bit complementar după cinci biți omogeni – în scopul sincronizării. Există o eroare dacă sunt primiti mai mult de cinci biți concomitenți omogeni.

În cadrul monitorizării biților, expeditorul compară nivelul de biți trimis cu nivelul real al magistralei. Există o eroare dacă expeditorul detectează o discrepanță între cele două nivele. Monitorizarea prin biți asigură detectarea tuturor erorilor globale și a tuturor erorilor locale apărute la expeditor.

Pentru a verifica formatul unui mesaj CAN fiecare mesaj CAN prezintă întotdeauna aceleași secvențe de biți la anumite poziții. Ele sunt delimitatorul CRC, delimitatorul ACK și EOF. Expeditorii transmit întotdeauna aceste componente ale mesajului în mod recesiv. Există o eroare de formatare dacă un receptor detectează un nivel de magistrală dominant în cadrul uneia dintre aceste componente ale mesajului în formularul de verificare.

În verificarea de redundanță ciclică (CRC), polinomul R (x) asociat cu datele care sosesc sau cu cadrele de la distanță trebuie să fie egal cu un multiplu al polinomului generator G (x) specificat de ISO 11898-1. Dacă nu este cazul (eroare CRC), atunci datele sau cadrele de la distanță au fost corupte în timpul transmisiei.

Mecanismul de recunoaștere definit în protocolul CAN specifică faptul că toți receptorii trebuie să recunoască fiecare mesaj CAN provenit imediat după verificarea ciclică de redundanță. O singură confirmare pozitivă este suficientă pentru a semnala expeditorului că cel puțin un receptor a primit mesajul CAN pe care la transmis corect. Dacă nu apare o singură confirmare pozitivă la expeditor, atunci a apărut o eroare de confirmare (eroare ACK).

Figura 3.21 – Detectarea erorilor [3]

Protocolul CAN prescrie din motive de consistență a datelor la nivel de rețea dacă nodul CAN de detectare a erorilor se confruntă cu o perturbare locală, trebuie să informeze toate nodurile CAN conectate la rețeaua CAN. Nodul CAN de detectare a erorilor transmite un semnal de eroare în acest scop, care este alcătuit din șase biți dominanți. Aceasta este o încălcare intenționată a regulii și generează o eroare.

Transmiterea unui semn de eroare asigură faptul că toate celelalte noduri CAN vor transmite de asemenea un semn de eroare (semnal de eroare secundar) și prin urmare vor termina transmisia obișnuită de date la fel ca expeditorul pavilionului de eroare primară. În funcție de situație, indicatoarele de eroare primare și secundare ar putea să se suprapună.

Transmiterea unui semn de eroare este întotdeauna terminată de un delimiter de eroare. Aceasta constă din opt biți recesivi. Delimiterul de eroare înlocuiește delimitatorul ACK și EOF-ul unei transmisii obișnuite de mesaje, astfel încât împreună cu pauza de transmisie obligatorie (intermitență ITM) pe magistrala CAN, rezultă 11 biți recesivi (identificator bus-idle).

Din cauza accesului la magistrala, nu există nici o garanție a repetării imediate. În cel mai bun caz, se scurtează o perioadă de timp de 17 biți de la detectarea erorilor până la retrimitere (flag de eroare primară, delimitator de eroare, ITM). Este nevoie de 23 biți dacă semnalul de eroare primar și secundar nu se suprapune.

Este nevoie de 31 de biti dacă nodul CAN se află în starea de eroare pasivă. În această stare un nod CAN trebuie să aștepte așa-numitul Timp de Suspendare a Transmisiei până când poate accesa din nou magistrala CAN. Timpul de transmisie a suspendării este o pauză de transmisie prescrisă de 8 biți.

Figura 3.22 – Semnalizarea erorilor [3]

FlexRay

FlexRay s-a infințat în cadrul unui grup format din: General Motors, DaimlerChrysler, BMW, Motorola, Philips Semiconductors și Bosch Automotive Group.

Această tehnologie a apărut pentru prima oară în 2000, iar mai tarziu în 2005 a aparut versiunea îmbunătățită. În prezent în aceasta tehnologie sunt implicate aproximativ 128 de firme.

Caracteristici generale

2×10 Mbit/sec debit de informație, daca se utilizează 2 canale;

tensiuni între 14-42V;

multiple configurații;

flexibilitate;

transfer de date sincron și asincron;

mediu de transmisie doua fire rasucite sau fibra optica;

toleranță la defecțiuni;

comunicație redundantă sau neredundantă;

opțiune de sleep sau stand-by;

Timpul pentru realizarea unei transmiterii a unui mesaj este împărțit: static și dinamic. În partea statica, doar mesaje programate a fi trimise sunt stocate. Mesajele urgente care pot să existe în orice moment, în cazul unei defecțiuni, sunt stocate în segmentul dinamic. Deci acesta stocheaza mesaje de tip diagnoza, este limitat ca frecvență.

Deși este un protocol de tip broadcast, informațiile ce sunt transmise pe magistrală nu sunt ascultate de toate nodurile. Pachetele de date care se transmit au un identificator. În funcție de acesta, mesajele sunt sau nu recepționate de noduri.

4.2 Topologi

Arhitectura utilizează cel mult 2 canale.

Topologia pasivă: oricare nod poate să fie conectat la canalul A și /sau la canalul B. Numarul de noduri conectate poate varia intre 2 si 64.

Figura 4.1 – Topologia pasivă [4]

Topologia activă: reprezinta conectarea mai multor noduri sub formă de conexiune stea.

Figura 4.2 – Topologie stea cu doua canale [4]

Figura 4.3 – Topologie stea cu un canal [4]

Figura 4.4 – Topologie stea complecta [4]

Topologia hibridă:

Figura 4.5 – Topologie hibridă [4]

Formatul de date

Figura 4.6 – Formatul de date [4]

Se poate observa ca acesta este împarțit in trei:

header segment – antetul segmentului;

payload segment – datele;

trailer segment – codul de eroare;

Un nod transmite formatul de date astfel încat antetul sa fie citit primul, apoi datele și în final codul de eroare.

Antetul conține 5 biți:

bitul rezervat;

indicatorul de date – arată dacă datele conțin un vector opțional;

indicatorul de null – arată dacă formatul datelor este sau nu este null;

indicatorul de sincronizare – arată dacă un anumit frame este sau nu este un format de date de sincronizare;

indicatorul de start – arată dacă un frame este de start;

identificatorul frame-ului – stabilește slotul în care va fi transmisă o informație;

antetul CRC – este format dintr-un cod ciclic redundant;

lungimea – indică jumatate din lungimea datelor;

numarul de cicluri;

Ciclul de comunicației

Figura 4.7 – Comunicația [4]

Ciclul de comunicație este împartit in: segmentul static, dinamic, fereastra de simboluri și timpul în care rețeaua este inactivă (network idle time).

Segmentul static este format din parți de timp egale. Cum se poate observa în figura de mai jos, în prima perioada de timp nodul va trimite date pe canalul A și B. În a doua perioadă se trimit date doar pe canalul A, iar în ultima perioadă nu se trimite nimic.

Figura 4.8 – Segmentul static [4]

Segmentul dinamic este format din mini sloturi cu o durată variabilă. Ca tansmisia să fie ordonată se utilizeaza doua numaratoare de cadre (slot counter).

La slotul static această numaratoare se incrementează simultan dar la cel dinamic aceasta poate fi incrementată independent.

Figura 4.9 – Segmentul static [4]

Network idle time reprezintă intervalele de timp în care nodurile calculează și realizează unele corectii asupra clock-ului, pentru ca sincronizarea să fie mai precisă.

Multiplexarea ciclurilor permite ca un ECU să poată transmite/receptiona diferite cadre de date simultan.

Mediul de transmisie

Transmisia se realizează diferențial pe 2 fire sau prin fibră optică.

Figura 4.10 – Terminalul utilizat [4]

Transmisia începe când se primește accesul din partea BG (Bus Gardian). Acces-ul este primit în cazul segmetului dinamic sau dacă a venit vremea nodului să trasmită ceva pe magistrală. Dacă se dorește a se transmite ceva pe magistrală, trebuie anunțat din timp, adică în ultimul cadru de date. Acest lucru este necesar pentru a se asigura faptul ca magistrala nu este ocupată.

Dimensiunea maximă a cablului dintre 2 ECU este de 24m:

Figura 4.11 – Arhitectura unui ECU [4]

Nodurile din rețea trebuie să se sincronizeze la startul comunicației. Este important ca un nod ce intră mai târziu în rețea să nu perturbe celelate noduri. Numai un nod care face parte din ambele canale poate sa înceapă acestă sincronizare.

În starea dinamică un nod master începe sincronizarea clock-ului, trimițând un SOC(Start of Cycle) la celelalte noduri. Algoritmul pentru starea statică este mai complicat. Fiecare mesaj a oricărui nod conține și informații referitoare la sincronizare.

Figura 4.12 – Arhitectura Flex Ray [4]

Lucrarea practica

Lucrarea practică presupune realizarea unui sistem care prezintă colectarea datelor, conversia și transmiterea acestora utilizand protocolul CAN. Acest sistem are rolul de a prezenta principiul de procesare și transmitere a datelor dintr-un automobil.

Pentru realizare acestui sistem s-au utilizat diferiți senzori care sunt echivalenți unor senzori din industria automobilelor. Senzorul ultrasonic este utilizat în acest caz pentru masurarea distanței, senzori optici pentru detectarea linie albe și a lumini, kit wireless cu telecomanda care simulează cheia mașini și un modul RFID pentru simularea funcției Keyless.

Pentru interpretarea datelor am utilizat trei plăci de dezvoltare Arduino UNO R3.

Transmisia datelor utilizand protocolul CAN s-a realizat utilizând doua CAN shield-uri care folosesc circuitul integrat MCP2515 comandat prin SPI.

Mediul de transmisie

În continuare se va prezenta o schemă pe blocuri a sistemului:

Figura 5.1 – Schema bloc a sistemului

Semnificația blocurilor:

senzor optic;

senzor ultrasonic;

senzor optic;

senzor rezistiv;

senzor optic;

kit wireless cu telecomanda;

modul RFID;

microcontroler + controler-ul CAN;

microcontroler;

microcontroler + controler-ul CAN;

display LCD;

Senzori optici

Doua tipuri de senzori optici au fost utilizați. Senzori 1 si 5 de pe schema sunt utilizati pentru detectarea liniei albe, simulând senzorii de lane assist.

Figura 5.2 – Senzor optic [5]

Caracteristici tehnice:

utilizeaza senzorul TCRT5000;

o distanța de detecție între 1mm și 25mm;

semnal de ieșire digital sau analogic;

curent maxim a semnalului de ieșire de 15mA;

potențiometru ajustare sensibilitate

tensiune de alimentare între 3.3V si 5V;

comparator LM393;

lungimea de undă a radiației de 950nm;

Senzorul TCRT5000 include un emițator infrared și un fototranzistor pe post de receptor. Alimentarea acestuia se face la o tensiune de 5V prin cei doi pini de alimentare.

Principiul de funcționare al acestui senzor este astfel: se alimentează senzorul și se citesc datele utilizand semnalul de ieșire analogic.

Senzorul optic 3, utilizează o fotodioda pentru a detecta intensitatea lumini. Simulând senzorul de fază lungă.

Figura 5.3 – Senzor optic [5]

Caracteristici tehnice:

fotodiodă;

ieșire digitală și analogică;

comparator LM393;

tensiune de alimentare între 3.3V și 5V;

Principiul de funcționare al acestui senzor este astfel: se alimentează senzorul și se citesc datele utilizând semnalul de ieșire analogic. Senzorul returnează o valoare aproape de 0 cand lumina este de intensitate mare și o valoare de 1023 cand fotodioda se afla in intuneric.

Senzorul ultrasonic

Acest sensor este utilizat pentru a masura distanța fața de un obiect, simulând astfel senzorul radar.

Figura 5.4 – Senzor ultrasonic [5]

Caracteristici tehnice:

tensiune de alimentare 5V;

curent consumat 15mA;

distanța de functionare 2cm-4m;

durata semnal input 10 µs;

unghi de masurare 15ș;

Principiul de funcționare al acestui senzor este astfel: se alimenteaza senzorul pe pinul de Trig se trimite un semnal care este transformat într-un semnal de unda. Atunci cand unda se intersectează cu un obstacol, este deviată și reflexia acesteia este recepționată de senzor.

Semnalul reflexiei impreuna cu o formula matematica determina prezența si distanța pana la obiectul cu care s-a intersectat unda trimisă.

Senzorul rezistiv

Acest senzor este de fapt un senzor de unghi rotativ care simulează rotația volanului.

Figura 5.5 – Senzor de unghi rotativ [5]

Principiul de funcționare al acestui senzor este astfel: se alimentează senzorul și se citesc analogic datele de pe pinul OUT. În funcție de rotație se schimbă valoarea rezistenței.

Kit wireless cu telecomanda

Este utilizat pentru simularea telecomenzi autovehiculului. Practic sunt simulate funcțiile de închidere si deschidere centralizata.

Figura 5.6 – Kit wireless cu telecomandă [5]

Caracteristici tehnice:

tensiune de alimentare telecomandă de 12V;

curent telecomandă 10mA;

putere de transmisie a telecomenzi de 10mW;

frecvența de 315MHz;

distanța de transmisie pană la 80m;

tensiune de alimentare receptor 5V;

curent receptor 4.5mA;

sensivitate -105dBm;

Principiul de funcționare al acestui kit este astfel: kitul este format dintr-o telecomanda, un circuit receptor și o antena. Telecomanda poate transmite patru semnale ce reprezintă apăsarea unuia dintre butoane. Semnalele sunt recepționate și sunt convertite in semnale digitale.

Modul RFID

Este utilizat pentru simularea funcție Keyless a unui autovehicul.

Figura 5.7 – Modul RFID [5]

Caracteristici tehnice:

tensiune de alimentare 3.3V;

curent sleep 80µA;

curent idle 10-13mA;

curent maxim 30mA;

frecvența de functionare 13.56MHz;

carduri suportate S50, S70, UltraLIght, Pro , Desfire;

protocoale de comunicare RS232, SPI si I²C;

buffer FIFO;

Principiul de funcționare al acestui kit este astfel: se alimenteaza modulul si se apropie tag-ul de cititor.

Microcontrolerul

Acest microcontroler este un circuit de înaltă performanță ce are la bază o arhitectură RISC care este în combinație cu un ISP de memorie flash pe 32K B, acesta fiind utilizat pentru scriere și citire în același timp. Mai are încorporat o memorie de 1 KB EEPROM, 2KB de SRAM, convertor A/D pe 10 biți cu 6 canale, port serial SPI, 23 de linii input/output de uz general, programator USART, 32 de registre de uz general,etc.

Microcontrolerul descris mai sus este un ATMEGA 328P produs de ATMEL și este destul de des folosit în diferite proiecte de sisteme inteligente precum și în sisteme de automatizări la scală industrială.

Caracteristici tehnice:

consum redus 1.8-5.5V;

temperatura de lucru -40°C – 85°C;

23 de linii de intrare/ieșire programabile;

28 de pini;

surse de întreruperi interne;

oscilator intern calibrat;

șase moduri de sleep;

un singur comparator analog;

watchdog temporizator programabil;

interfață serială SPI;

numărător în timp real cu oscilator separat;

șase canale PWM;

până la 20 MIPS la o 20 MHz;

dată de retenție 20 ani la 85°C / 100 ani la 25°C;

serială I2C;

Viteza în funcție de tensiunea de alimentare: 0 – 4MHz la 1.8-5.5V /

0 – 10MHz la 2.7 – 5.5.V / 0 – 20MHz la 4.5 – 5.5V;

Figura 5.8 – Arhitectura internă a microcontrolerului ATMEGA 328 [6]

Rolul acestor microcontrolere este de a interpreta datele de la senzori și de a comunica pe SPI cu controler-ul CAN.

Pentru realizarea acestui proiect s-au utilizat trei micocontrolere de acest tip.

Controlerul CAN MCP2515

Acest circuit integrat dezvoltat de Microchip este un controler CAN dezvoltat pentru aplicațiile simple care necesită o interfață CAN. Este compus din trei blocuri principale: modulul CAN, logica de control si regiștrii, blocul de protocol SPI.

Transmisia datelor între microcontrolerul Atmega 328 și acest circuit se face utilizând protocolul SPI.

Figura 5.9 – Arhitectura internă a controlerului MCP2515 [6]

Caracteristici tehnice:

implementează CAN până la 1Mb/s;

lungimea de la 0 până la 8 octeți a câmpului de date;

format de date standard și extins;

două buffere de recepție a datelor;

șase filtre de 29 de biți;

două maști de 29 biți;

filtrarea octeților de date;

trei buffere de transmisie cu prioritizare;

interfață SPI de mare viteză;

one-shot mode;

pin de ieșire pentru ceas;

semnalul Start-of-Frame (SOF) este disponibil;

tehnologie CMOS cu putere redusăș

tensiune de alimentare între 2.7V și 5.5V;

curent activ de 5mA;

curent de sleep de 1µAș

temperatură de funcționare -40°C – 85°C;

Display LCD

Este utilizat pentru afișarea datelor care sunt recepționate.

Figura 5.10 – Display LCD

Caracteristici tehnice:

32 de caractere pe două coloane;

controler HD44780;

culoare caracter albă;

culoare background albastră;

tensiune de alimentare 5V;

Conexiunea dintre Atmega 328 și MCP2515

MCP2515 este dispus pe un shiel compatibil cu placa de dezvoltare Arduino UNO, iar transferul de date se face utilizând protocolul SPI.

Figura de mai jos prezină structura hardware a shield-ului:

Figura 5.11 – CAN shield [7]

interfața DB9;

switch tensiune de alimentare;

indicator LED;

terminal CANL și CANH;

barete pini pentru conexiunea cu Arduino UNO.

conector serială;

conector I²C;

pini ICSP;

transmițătorul de mare viteză MCP2551 ;

IC MCP2515

După transferul datelor intre cele două IC-uri. IC-ul MCP2515 transfera apoi datele către transmițătorul MCP 2551.

Serial peripheral interface

Serial Peripheral Interface, adesea scurtat ca SPI, este un protocol sincron de transfer de date dezvoltat de Motorola. Aici sunt conectate două sau mai multe dispozitive seriale între ele în modul full-duplex. Dispozitivele conectate unul la celălalt sunt fie Master fie Slave.

Într-o legătură SPI ar putea exista mai mulți masters și slaves, dar este foarte rar să găsești mai mult de un master într-o legătură SPI.

Dispozitivul master este cel care inițiază conexiunea și o controlează. Odată ce conexiunea este inițiată, atunci master-ul și unul sau mai mulți slave pot transmite și / sau primi date. Așa cum am menționat mai devreme, aceasta este o conexiune full-duplex, ceea ce înseamnă că maestrul poate trimite date către slave, iar Slave (s) pot trimite datele la Master în același timp.

Protocolul SPI se bazează pe registrele de deplasare. Fiecare dispozitiv indiferent dacă este master sau slave are un registru de deplasare pe 8 biți în interiorul acestuia. Mărimea registrului de deplasare ar putea fi mai mare de 8 biți (de exemplu, 10 biți, 12 biți etc), dar ar trebui să fie același atât pentru master, cât și pentru slave, iar protocolul ar trebui să suporte aceasta.

Figura 5.12 – SPI [8]

Există un registru de deplasare pe 8 biți în interiorul fiecăruia dintre dispozitivele master și slave. Aceste registre de deplasare funcționează în mod Serial-In / Serial-Out (SISO). Rezultatul registrului de deplasare al masterului este conectat la intrarea registrului de deplasare al slave-ului, iar ieșirea registrului de deplasare al slave-ului este conectată la intrarea registrului de deplasare a master-ului. Aceasta face ca conexiunea să funcționeze ca un buffer circular / inel.

Așa cum am menționat mai devreme, SPI-ul este un protocol sincron de transfer de date, ceea ce înseamnă că trebuie să existe un ceas pentru a sincroniza transferul de date. De asemenea s-a afirmat că master-ul este responsabil pentru inițierea și controlul conexiunii. Astfel folosim sursa ceasului dispozitivului master pentru a sincroniza transferul de date.

5.11.1 Etapele transmiterii datelor SPI

Master-ul furnizează un semnal de ceas:

Master-ul comuta pinul SS/CS la o tensiune mai joasa pentru a activa slave-ul:

Master-ul trimite datele câte un bit la un moment dat slave-ului de-a lungul liniei MOSI. Slave-ul citește biții așa cum sunt primiți:

Dacă este necesar un răspuns, slave-ul returnează datele câte un bit de-a lungul liniei MISO. Master-ul citește biții în momentul primirii lor:

Figura 5.13 – Transfer de date SPI [8]

În concluzie:

• Atât master-ul cât și slave-ul plasează datele pe care doresc să le transfere în registrele lor de schimbare înainte de începerea comunicării.

• Master-ul generează 8 impulsuri de ceas. După fiecare impuls de ceas, un bit de informație este transferat de la master la slave și invers.

• După 8 impulsuri de ceas, master-ul primestecdatelele slave-ului, iar slave-ul datele master-ului. De aceea aceasta este o comunicare full-duplex.

Programarea

Pentru realizarea acestui proiect am utilizat trei placi de dezvoltare Arduino UNO. Programarea acestora s-a realizat cu interfața Arduino 1.8.4.

Figura 5.14 – Interfața de programare

Deoarece s-au utilizat trei placi de dezvoltare programul întregului proiect este împărțit în trei părți.

Prima parte este destinată pentru microcontrolerul 9 din Schema Bloc. Acest microcontroler are rolul de a interpreta datele de la kiturile de cheie și cel RFID. Datele recepționate sunt procesate și trimise la microcontroler-ul 8 din Schema Bloc.

A doua parte este destinata pentru microcontroler-ul 8 care împreuna cu CAN shield-ul are rolul de Master în această rețea. Deci aceasă parte de program interpreteaza datele de la microcontroler-ul 9 și de la senzori, le prelucrează și le transmite via CAN la microcontroler-ul 10.

Deci a treia parte este destinataă microcontroler-ul 10 (slave). Această parte de program decodează datele recepționate via CAN și le afișează pe display-ul LCD.

Pentru încarcarea programului in microcontroler se conectează placa de dezvoltare la PC printr-un cablu USB. Din meniul Tools > Port se setează portul utilizat.

Figura 5.16 – Selectare port

Deschiderea programului: File > Open > se alege calea unde este salvat programul.

Figura 5.17 – Deschidere program

Încărcarea programului: Se apasă butonulde upload și se așteaptă finalizarea acțiuni.

Figura 5.18 – Încărcare program

După încărcarea programului se pot monitoriza datele care sunt trimise/recepționate.

Figura 5.19 – Acesarea serialei pentru a monitoriza datele.

Conexiunea Master – Slave

Cum este prezentat in capitolul III conexiunea între Master și Slave s-a facut prin două fire încrucișsate ca în figura de mai jos:

Figura 5.20 – Conexiunea în rețeaua CAN [7]

Semnale osciloscop lucrare practică

Cu ajutorul osciloscolului s-au monitorizat unele semnale:

Figura 5.21 – Semnal senzor optic dreapta detecție linie albă

Notă: La detectarea liniei albe tensiunea semnalului scade.

Figura 5.22 – Semnal senzor optic stânga detecție linie albă

Figura 5.23 – Semnal fotodiodă la detectarea lumini.

Notă: La detectarea lumini tensiunea semnalului scade.

Figura 5.24 – Semnal senzor rotativ

Notă: În functție de rotirea senzorului tensiunea semnalului scadesau crește.

Figura 5.25 – CAN High (galben) și CAN Low (roșu)

Concluzii

Prin realizarea acestei lucrarii am incercat să prezint principiul prin care modulele dintr-un automobile schimbă datele între ele. Lucrarea prezintă mai multe tipuri de protocoale de comunicație, dar partea practică utilizeaza cel mai întalnit protocol, CAN.

Din punct de vedere hardware acest sistem conține mai multe elemente care au fost menționate pe parcursul lucrarii și care au dus la realizarea unei rețele care prezintă destul de clar principiul de funcționare CAN.

Partea software este împartita in doua categori: o categorie de achiziție a datelor de la senzori si codarea lor, operațiune realizată de microcontroler și o a doua categorie de transfer a datelor de la un modul la altu utilizând protocolul CAN, operațiune realizată de microcontroler plus tranceiverul CAN.

În realizarea acestei lucrari am întalnit unele dificultați în alegerea transceiver-ului CAN precum si realizarea softului pentru partea de transmisie.

Dupa ce am realizat aceasta lucrarea mi-am îmbunatatit cunostințele despre proiectarea, realizarea si programarea unui sistem de comunicație specific automobilelor. De asemenea mi-a îmbunatațit capacitatea de a realiza la un standard cat mai înalt o asemena rețea , de a programa microcontrolerele precum și de a realiza o asamblarea cât mai eficientă.

Această lucrare am încercat să o realizez cat mai simplu și compact fiind prezentată în mare parte ideea de baza, deoarece am considerat ca orcine cu cunostinete medii să poată întelege principiul de functionare.

Proiectul prezentat poate fi dezvoltat în funcție de dorințele utilizatorului. De exemplu slave-ul din rețea pe lângă recepția datelor să trimită comenzi la diferite drivere.

Bibliografie

[1] http://www.e-automobile.ro/categorie-electronica/11-protocoale-comunicatie-automobile.html

[2] http://www.meo.etc.upt.ro/materii/cursuri/ISMT/10.pdf

[3] https://elearning.vector.com/vl_index_en.html

[4] http://www.meo.etc.upt.ro/materii/cursuri/ISMT/4.pdf

[5] https://www.optimusdigital.ro/ro/

[6] https://www.theengineeringprojects.com/2017/08/introduction-to-atmega328.html

[7] http://wiki.seeedstudio.com/CAN-BUS_Shield_V1.2/

[8] https://learn.sparkfun.com/tutorials/serial-peripheral-interface-spi/slave-select-ss

Anexe

Va urma!!

Similar Posts