Programul de Licență: Ingineria Sistemelor [624230]

Facultatea de Automatică și Calculatoare

Programul de Licență: Ingineria Sistemelor

Investigarea și testarea programului de
verificare și validare a semnalelor
(Crash Data Validator)

Proiect de diplomă

Autor,
Stefania Bianca Bouleanu

Conducător științific,
Ș.l. Dr. Ing. Andreea Robu

Timișoara, Iunie 2017

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 2
Cuprins
Capitolul 1. Introducere …………………………………………………………………… ..….. 5
1.1 Contextul actual ……………………………………………………………… ..…… 5
1.2 Tema pr oiectului ………………………………………………………………… ..… 7
Capitolul 2. Medii și tehnologii utilizate ……………………………………………………… .. 8
2.1 Scurt istoric despre limbajul de programar e C# ……………………………….. ……. 8
2.1.1 Limbajul C# ……………………………………………………… .…… …. 8
2.1.2 .NET Fram ework ……………………………………………………… .… 9
2.1.3 Relația dintre C# și arhitectura .Net …………………………………… …. 10
2.2 Microsoft Visual Studio 2013 …………………………………………… .………… 11
2.2.1 WPF și XAML ……………………………………………… .…………… 14
2.3 ZedGraph …………………………………………………………………………………… ………………. 15
2.4 Jenkins ………………………………………………………………… ..….……. … 15
2.5 TortoiseSVN ……………………………………………………… ……. .………….. 15
2.6 NuGet package ………………………………………………………….. ………………….. …………… . 16
2.7 Tipuri de senzori ………………………..…………………………………… ……….. 16
2.8 Procesul de prelucrare a datelor ………………….……………………..….… .…… 19

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 3
Capitolul 3. S pecificațiile proie ctului ……………………………………………… …..………. 21
3.1 Schema bloc. Scurta descriere a aplicaței …………………….…………… …..…… 21
3.2 Planificarea lucrării ………………………………………………..…………… ……. 22
3.2.1 Ciclul de via ță V ……………………..……………………….….… …..… 22
3.2.2 Diagrama Gantt ……………………………………………..…….….. ……. 23
Capitolul 4. Proiectarea în det aliu ………………………………………………..…… ………… 24
4.1 Arhitectura C DV ……………………………………………………….. …………… 24
4.2 Descrierea module lor …………………………………………….…….…… ………. 24
4.2.1 Algoritmul de verificare și modific are a offsetului ……….………. ……..… 24
4.2.2 Algoritmul de verificare a po larității ……………………….….…… ……… 25
4.2.3 Algoritmul de sincronizare a datelor ………………………………… ……… 26
4.2.4 Generarea rapoartelor ……………………………………………… …….…. 29
4.3 Structura bazei de date ……………………………………………..……….… ……… 34
4.4 Modul de gestiune a semnalelor stocate într-o bază de date…………. ………………………. …….. .. 37
Capitolul 5. Testarea aplicație i ……… …………………………..…………….….…. …….…… 41
5.1 Testarea și investigarea algoritmului de o ffset ……………….………….…. …….…. 41
5.2 Testarea și investigarea algoritmului de verifi care a polarității ………….. …….. …… 42

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 4
5.3 Testarea și investigarea algoritmului de sincronizare ……….………. …….. ………… 42
Capitolul 6. Manual de uti lizare ……………………………………………………… ……….. … 43
6.1 Configurați i ………………………………….……………………………… ………. . 43
6.2 Fereastra principal ă …………………………………………………….. ………. …… 44
6.3 Setări …… …………………………………………………………………… ………. . 45
6.4 Adăugarea în baza d e date ……………………………………………….. ………. .… 49
Capitolul 7. Concluz ii ……………………………………………………………… ………. …… 52
Capitolul 8. Bibliografie …… …………………………………………………..…..…. ………. … 53

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 5

1 Introducere

1.1 Contextul actual

O dată cu trecerea anilor mașinile au devenit una dintre cele mai importante părți din
existența omului și din rutina vieții de zi cu zi. Informațiile despre siguranța unei mașini au o
foarte mare importanță în lumea în care trăim astăzi. Cu numeroasele schimbări care au loc în
modul acesta de transport, siguranța oamenilor din mașină, a pietonilor si a mașinii în sine este
un obiectiv principal. Există un număr mare de facilitați pe care mașinile din ziua de a stăzi le au
si asta stă drept mărturie a dezvoltării tehnologiei, ceea ce asigură o mai mare siguranță
pasagerilor, șoferului și celorlalți participanți la trafic. [1]
Marea majoritate a fabricanților de mașini pun foarte mare preț pe crearea de diverse al te noi
metode de siguranță, pentru a face din mașini un vehicul c ât mai sigur. Pentru a asigura o
siguranță mai bună a participanților la trafic este nevoie de o deosebită atenție asupra procesului
prin care se configurează algoritmii prin intermediul para mentrilor. Cu ajutorul unității de
control numită ECU (Electronic Control Unit) se înregistrează comportamentul senzorilor în
timpul accidentului, precum și alte informații. Un lucru important sunt informațiile care sunt
înregistrate de ECU, ele ajută la o investigare mai amănunțită legată de accident. Informațiile
înregistrate sunt: condițiile mediului, condițiile drumului (suprafață, trafic, etc.), istoricul
accidentului, diferite informații legate de petrecerea evenimentului (viteză, directive, etc.), c ât de
deformat este vehiculul, etc. [2]
În ultimul timp industria automotive a evoluat mult incerc ând să aducă noi îmbunătățiri
asupra mașinilor care să ne facă viața mai ușoară. La capitolul siguranță s -au adus noi inovații,
încerc ând să se introducă c ât mai mulți senzori pe mașini. Acești senzori poartă denumirea de
Senzor de impact fiind un dispozitiv care dă comandă de umflare a airbag -ului. Acesta poate fii
poziționat în diferite părți ale mașinii iar rolul lui este de a da comanda de umflare a airbag -ului
în anumite condiții de impact. Nu este economic sa dea comanda de umflare a airbag -ului în
cazul unor coliziuni ușoare care nu ar pune în pericol viața pasagerilor, pe langă faptul ca nu este
economic acest lucru poate avea urmări grave asupra omului , cum ar fii afectarea stării fizice în

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 6
unele cazuri chiar si decesul. De aceea senzorul este proiectat să sesizeze coliziunile mașinii cu
obiecte masive la viteze de cel puțin 20 km/h. Senzorul conține de fapt un întrerupător mecanic
care inchide circuitul electric în urma impactului. În același timp, un accelerometru sesizeaza
diferența de viteză și in cazul în care se simte un impact la viteză mai mare de 20 km/h, se dă
comanda umflării airbag -ului. [3]
Deși întregul proces se întâmplă în mai puțin de un sfert de secundă, este suficient de rapid
pentru a împiedica contactul pasagerilor cu diferite elemente fixe din interiorul mașinii. Cea mai
mare problemă cu care s -au confruntat inginerii a fost să găsească o modalitate foarte rapidă
pentru a declanșa și a umfla airbag -urile laterale. Timpul necesar umflării airbag -ului este de
aproximativ un sfert de secundă, indiferent de locul în care este amplasat airbag -ul. Foarte
important este să se determine cu precizie momentul în care să înceapă umflarea acestuia . In
cazul impactului lateral, timpul scurs între momentul impactului și cel în care airbag -ul trebuie să
se umfle este mult mai mic decât în cazul celor frontale. [4]
În figura 1 se pot observa unde sunt montați senzorii principali care declanșează punga de aer
denumită airbag.

Driver Airbag
Knee Airbag Rear Side Airbags
Side Airbags Passenger Airbag Inflatable Curtain
Figura 1. Localizarea și montarea senzorilor pe mașină

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 7

1.2 Tema proiectului

Obiectivul principal al lucrării este dovedirea faptului că Crash Data Validator poate
înlocui eficient “mâna umană” și este un program care poate fi utilizat cu încredere.
CrashDataValidator este un program ut ilizat în cadrul companiei Continental care
simplifică procesul de veri ficare și modificare a semnalelor folosite pentru calibrarea
algoritmilor de pe ECU -urile (Electronic Control Unit) care comandă airbag -urile în caz de
accidente.
Acest program este foarte util astfel încât el poate reduce timpul dedicat acestui proces.
CrashDataValidator este un avantaj pentru cei care aleg să -l folosească deoarece oferă
posibilitatea de executarea a mai multor funcțiuni care în mod normal se fac utilizând mai multe
programe.
Proiectul constă în dezvoltarea unui m odul din cadrul programului CDV care să extragă
informații legate de modificările aduse asupra semnalelor și adăugarea acestora într -un raport,
dezvoltarea unui algoritmului de sincronizare, implementarea unui modul de gestionare a
semnalelor stocate în b aza de date, precum și testarea amănunțită a aplicației.

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 8

Capitolul 2. Medii și tehnologii utilizate

2.1 Scurt istoric despre limbajul de programare C#

Lansat publicului in iunie 2000 si oficial in primavara anului 2002, C# este un limbaj de
programare care combina facilitati testate de -a lungul timpului cu inovatii de ultim moment.
Creatorii acestui limbaj au fost o echipa de la firma Microsoft condusa d e Anders Hejlsberg.
Desi limbajul este creat de Microsoft, acesta nu este destinat doar platformelor Microsoft.
Compilatoare C# exista si pentru alte sisteme precum Linux sau Macintosh. Creat ca
instrument de dezvoltare pentru arhitectura .NET, limbajul o fera o modalitate facila si eficienta
de a scrie programe pentru sistemul Windows, internet, componente software etc. C# deriva din
doua dintre cele mai de succes limbaje de programare: C si C++. De asemenea, limbajul este o
“ruda” apropiata a limbajului J ava. Pentru o mai buna intelegere a limbajului C# este interesant
de remarcat care este natura relatiilor acestuia cu celelalte trei limbaje mentionate mai sus.
Pentru aceasta, vom plasa mai intai limbajul C# in contextul istoric determinat de cele trei
limbaje. [6]

2.1.1 Limbajul C#

Desi Java a rezolvat cu succes problema portabilității, există unele aspecte care ii lipsesc.
Una dintre acestea este interoperabilitatea limbajelor diferite, sau programarea în limbaj mixt
(posibilitatea codului scris înt r-un limbaj de a lucra în mod natural cu codul scris în altă limbaj).
Interoperabilitatea limbajelor diferite este esențială la realizarea sistemelor software de
dimensiuni mari.
Ca parte a ansamblului strategiei .NET, dezvoltată de Microsoft, la finele a nilor ’90 a fost
creat limbajul C#. C# este direct înrudit cu C, C++ si Java. “Bunicul” limbajului C# este C -ul.
De la C, C# mosteneste sintaxa, multe din cuvintele cheie și operatorii. De asemenea, C#
construiește peste modelul de obiecte definit în C++. Relația dintre C# și Java este mai
complicată. Java deriă la rândul său din C si C++. Ca și Java, C# a fost proiectat pentru a

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 9
produce cod portabil. Limbajul C# nu derivă din Java. Intre C# si Java exista o relatie similară
celei dintre “veri”, ele deriva din acelasi strămoș, dar deosebinduse prin multe caracteristici
importante. Limbajul C# conține mai multe facilități inovatoare, dintre care cele mai importante
se referă la suportul încorporat pentru componente software. C# dispune de facilități care
implementeaza direct elementele care alcătuiesc componentele software, cum ar fi proprietățile,
metodele și evenimentele. Poate cea mai importantă facilitate de care dispune C# este
posibilitatea de a lucra într -un mediu cu limbaj mixt. [8]

2.1.2 .NET Framew ork

Înainte ca Microsoft să lanseze platforma .NET, dezvoltatorii software care creau aplicații
pentru familia de sisteme de operare Windows adeseori utilizau modelul de programare COM
(Component Object Model). Acest model permitea dezvoltatorilor software să construiască
biblioteci de cod care să fie partajate între diferite limbaje de programare. De exemplu, un
programator C++ putea construi o bibliotecă COM care să fie utilizată de către un programator
Visual Basic. Acest caracter independent de limbaj al COM a fost cu sigu -ranță util; în orice caz,
COM a fost afectat de infrastructura complicată, un model fragil de implementare și era posibil
numai pe sistemul de operare Windows.
În ciuda complexității și limitărilor COM, au fost create cu succe s nenumărate aplicații
bazate pe această arhitectură. Totuși, în prezent majoritatea aplicațiilor Windows nu mai sunt
create cu modelul COM ci, mai degrabă, aplicațiile desktop, serviciile sistemului de operare și
bibliotecile de componente reutilizabile s unt create utilizând platforma .NET.
 .NET Framework reprezintă o platformă software pentru dezvoltarea de sisteme atât
pentru familia de sisteme de operare Windows cât și pentru Mac OS X și diferite
distribuții de Unix/Linux. Iată o trecere în revistă a câ torva dintre caracteristicile
principale ale .NET: Interoperabilitate cu codul existent: fișiere binare COM pot
interopera cu software .NET mai nou.
 Suport pentru numeroase limbaje de programare: pot fi create aplicații .NET folosind
orice număr de limbaj e de programare (C#, Visual Basic, F#, C++ etc.)
 Un motor de execuție comun pentru toate limbajele .NET: un aspect al acestui motor îl
reprezintă un set bine definit de tipuri de date pe care toate limbajele .NET le înțeleg.

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 10
 Integrarea limbajului: .NET s uportă moștenire inter -limbaj, tratarea excepțiilor inter –
limbaj și depanarea codului inter -limbaj. De exemplu, puteți defini o clasă în C# și să
extindeți acest tip în Visual Basic.
 Bibliotecă cuprinzătoare de clase: această bibliotecă asigură protecție față de
complexitatea apelurilor API de nivel jos și oferă un model obiect consistent utilizat de
toate limbajele .NET.
 Un model de implementare simplificat: spre deosebire de COM, bibliotecile .NET nu
sunt înregistrate în registrele sistemului. Mai mult, platforma .NET permite existența în
armonie a mai multor versiuni ale aceluiași *.dll pe o singură mașină.
Microsoft a creat .NET Framework pentru a face mai ușoară dezvoltarea de aplicații pentru
diversele versiuni ale sistemului de operare Windows. Din acest motiv dezvoltarea aplicațiilor în
.NET ar trebui să fie mai facilă decât în versiunile anterioare. .NET Framework împreună cu
limbajele .NET pot fi instrumente puternice, iar tot ce aveți de făcut este să descoperiți modului
în care acestea conlucre ază prin intermediul mediului de dezvoltare integrată Visual Studio.
.NET Framework este plasat între limbajul de programare (Visual Basic, C# etc.) și sistemul
de operare (de la Windows 98 și Windows NT până la Windows 8 și Windows Server 2012, sau
orice alte sub -versiuni ale acestora, cum ar fi cele destinate dispozitivelor mobile). .NET
Framework oferă funcționalități specifice sistemului de operare Windows, furnizând însă și
biblioteci care extind aceste funcționalități (calcule matematice, criptografi e, accesarea bazelor
de date etc.). Figura 2.1 ilustrează vizual relația între toate nivelele din .NET Framework. [7]

2.1.3 Relația dintre C# și arhitectura .NET

C# are o legatura deosebita cu mediul sau de rulare, arhitectura .NET. Pe de o parte, C# a
fost dezvoltat pentru crearea codului pentru arhitectura .NET, iar pe de alta parte bibliotecile
utilizate de C# sunt cele ale arhitecturii .NET. Ce este arhitectura .NET Arhitectura .NET
defineste un mediu de programare care permite dezvoltarea si exe cutia aplicatiilor indiferent de
platforma.
Aceasta permite programarea in limbaj mixt si ofera facilitati de securitate si portabilitate
a programelor. Este disponibila deocamdata pentru platformele Windows. Legat de C#,
arhitectura .NET definest e doua entitati importante si anume biblioteca de clase .NET si motorul

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 11
comun de programare sau Common Language Runtime (CLR). C# nu are o biblioteca de clase
proprie ci utilizeaza direct biblioteca de clase .NET. De exemplu, cand se ruleaza un program
care efectueaza operatii de intrare -iesire, cum ar fi afisarea unui text pe ecran, se utilizeaza
biblioteca de clase .NET. Motorul comun de programare (CLR) se ocupa de executia
programelor C#. El asigura de asemenea programarea in limbaj mixt, securitatea si portabilitatea
programelor.
Atunci cand este compilat un program C#, sau un program in limbaj mixt, rezultatul
compilarii nu este un cod executabil. In locul acestuia, se produce un fisier care contine un tip de
pseudocod numit limbaj intermediar sau pe scurt IL (Intermediate Languag e). Acest fisier IL
poate fi copiat in orice calculator care dispune de .NET CLR.
Prin intermediul unui compilator denumit JIT (Just In Time), motorul comun de
pogramare transforma codul intermediar in cod executabil. Procesul de conversie decurge astfel:
atunci cand un program .NET este executat, CLR activeaza compilatorul JIT. Compilatorul JIT
converteste IL in cod executabil pe masura ce fiecare parte a programului este neceasra. In
concluzie, orice program compilat pana in format IL poate rula in orice mediu pentru care CLR
este implementat. In acest fel arhitectura .NET asigura portabilitatea. [9]

2.2 Microsoft Visual Studio 2013

Visual Studio este un mediu de dezvoltare a aplicațiilor pentru Android, Windows și IOS.
De asemenea, poate fi folosit și la aplicații și servicii de tip Cloud precum si la aplicații web.
Principalele limbaje de programare pentru acest mediu de dezvoltare sunt reprezentate de C# și
Visual Basic care rulează pe 11especti .NET Framework.
Pentru dezvoltarea de site -uri mari și aplicații web se folosește ASP.NET care folosește
limbaje de programare precum: HTML, CSS, JavaScript. De asemenea, se pot utiliza te hnologii
în timp real, cum sunt Web Sockets pentru crearea de API -uri web și site -uri. [10]

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 12

Figura 2.1. Interfața mediului de dezvoltare Visual Studio

În Fig. 2.1 sunt prezentate elemente grafice puse la dispoziția utilizatorului de către
mediul Vi sual Studio. Acestea sunt numerotate cu cifre de la 1 la 7 și reprezintă următoarele:
1. Meniuri – sunt reprezentate comenzile standard care se gasesc la orice mediu
de dezvoltare software. Cele mai importante dintre ele sunt: File, Edit, View,
Help, Build, Debug. Toate aceste comenzi sunt folosite pentru operații de bază
în dezvoltarea software cum ar fi: salvare proiect, compilare proiect, rulare
proiect etc.
2. Barele de instrumente – sunt reprezentate de cele mai folosite comenzi de
către programator. Prin barele de instrumente se fac scurtături a unor comenzi
care au scopul de a fi accesate cât mai ușor și rapid de către un utilizator. De
asemenea, se pot definii de către utilizator propriile bare de instrumente
customizate după bunul plac, care au scopul d e a avea o cale rapidă a unei
comenzi specifice.

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 13
3. Fereastra grafică – prin intermediul acestei ferestre se construiește interfața
grafică a proiectului. Această fereastră poate fi vizualizată în două moduri:
modul designer în care se concretizează elementel e grafice și editorul de cod în
care se descrie funcționalitatea elementelor. În cazul în care nu este selectat
niciun control, în secțiunea marcată pe imagine cu 6 vor fi afișate proprietățile
ferestrei grafice.
4. Caseta cu instrumente – pune la dispoziție instrumente în funcție de tipul de
proiect ales și obiectul selectat. Caseta de instrumente va fi compusă din acele
instrumente potrivite pentru a crea o interfață grafică dintre care cele mai
importante fiind: butoane, casete de text etc., care fac parte din categoria All
Windows Forms. Pe lângă această categorie, mai sunt prezente și altele precum:
Data, Menus & Toolbars etc.
5. Fereastra de ieșire, fereastra de erori, fereastra de mapare etc. – în fereastra
de erori, se vor afișa erorile apărute in program precum și avertismentele atât în
timpul dezvoltării cât și după compilare. În fereastra de ieșire vor fi afișate
mesaje referitoare la anumite stări ale mediului Visual Studio. In aceasta
fereastră pot apărea si alte ferestre precum Mapping Details (în ac eastă fereastră
se regasesc informatii despre campurile undei baze de date ).
6. Fereastra XAML – aceasta fereastră ajută la o editare mai rapidă a elemetelor
ce fac parte din interfață. Prin intermediul ei, putem să avem și o viziune mai
bună și rapidă a ele mentelor.
7. Proprietăți – fereastra de proprietăți pune la dispoziție caracteristici care pot fi
modificate în timpul creeării interfeței grafice. În funcție de obiectul selectat,
caracteristicile din fereastra de proprietăți se schimbă. Această fereastră de
propietăți este foarte 13espectiv și ușor de utilizat, iar pentru a modifica o
proprietate se selectează cu mouse -ul proprietatea 13espective și se modifică
valoarea ei.
8. Exploratorul soluției – permite gestionarea fișierelor care aparțin soluției într –
un mo d ierarhic, ușurând munca utilizatorului deoarece se poate găsi foarte ușor
fiecare parte din proiect, iar acesta poate fi structurat în funcție de dorința
utilizatorului. De asemenea, în partea de sus a ferestrei se găsește o bară de

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 14
instrumente care conț ine câteva comenzi rapide cum ar fi: Refresh (pentru a
reîmprospăta elementele soluției), Properties (proprietățile elementului selectat),
View Code (pentru a accesa editorul de cod). [10]

2.2.1 WPF și XAML

Windows Presentation Foundation (sau WPF) este un subsistem grafic de la Microsoft
pentru redarea interfețelor utilizator în aplicațiile bazate pe Windows. WPF, cunoscut anterior ca
"Avalon", a fost lansat inițial ca parte a .NET Framework 3.0 în 2006.
Mai degrabă decât bazându -se pe subsistemul GDI mai vechi, WPF utilizează DirectX. WPF
încearcă să furnizeze un model consistent de programare pentru aplicațiile de construire și separă
interfața utilizator de logica de afaceri. Se aseamănă cu modele similare cu obiecte orientate spre
XML, cum ar fi cele implementate în XUL și SVG.
WPF utilizează XAML, un limbaj bazat pe XML, pentru a defini și a lega diferite
elemente de interfață. [1] Aplicațiile WPF pot fi implementate ca programe desktop standalone
sau găzduite ca un obiect încorporat într -un sit e Web.
WPF își propune să unifice o serie de elemente comune ale interfeței utilizator, cum ar fi
redarea 2D / 3D, documentele fixe și adaptive, tipografia, grafica vectorială, animația runtime și
mediile pre -redate. Aceste elemente pot fi apoi legate și m anipulate pe baza diferitelor
evenimente, interacțiuni ale utilizatorilor și legături de date. [11]
eXtensible Application Markup Language (XAML) este un limbaj introdus de catre
WPF , care se bazează pe XML. XAML este conceput ca o metodă mai eficientă de dezvoltare a
interfețelor utilizator pentru aplicații.
Avantajul specific pe care îl aduce este că XAML este un limbaj complet declarativ,
permițând dezvoltatorului sau proiectantului să descrie comportamentul și integrarea
componentelor fără a utiliza pr ogramarea procedurală.
Deși este foarte rar ca o aplicație completă să fie construită complet în XAML,
introducerea XAML permite proiectanților de aplicații să contribuie mai eficient la ciclul de
dezvoltare a aplicațiilor. Utilizând XAML pentru a dezvolta interfețe utilizator permite de
asemenea separarea modelului și a vizualizării, care este considerat un principiu arhitectural bun.

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 15
În XAML, elementele și atributele se referă la clasele și proprietățile din API -urile subiacente.
[12]

2.3 ZedGraph

ZedGraph este o biblioteca, de tip utilizator și web control pentru .Net scrisă în C#,
utilizată pentru desenarea liniilor 2D și a diferitelor diagrame. Dispune de funcții de
personalizare complete, detaliate, dar majoritatea opțiunilor au setări implicite pentru o utilizare
ușoară.

2.4 Jenkins

Jenkins este un server de automatizare open source. Este un program care se folosește
pentru testarea în permanență a proiectelor software, acesta ușurează treaba programatorilor când
se fac modificări asupra p rogramului și este mult mai ușor pentru utilizatori sa obțină un nou
build.
Jenkins gestionează și controlează procesele de dezvoltare ale ciclului de viață de toate
tipurile: documente, testare, build, analiza statică etc.
Se pot face de asemenea anumite setări asupra programului astfel încât el: să poată
urmării schimbările ce apar în cod în locuri precum SVN si GIT, să facă automat build cu
ajutorul unor tool -uri precum Ant si Maven, să inițiaze teste și apoi să ia măsuri, cum ar fi de
rulare înapoi sau de rulare înainte în producție. [13]

2.5 TortoiseSVN

Este un program care ajută mai mulți programatori să lucreze simultan și să mențină o
istorie completă a activității lor. Principalele scopuri ale programului sunt :
– permite programatoriilor să lucreze simultan
– să nu se poată suprascrie modificările fiecăruia și să mențină o istorie a fiecărei
versiuni.
TortoiseSVN este un Windows open -source gratuit pentru versiunea de control
Apache™ Subversion. TortoiseSVN gestionează fișiere și directoare în timp real. Fișierele sunt
stocate într -un repository(depozit) central. Repository este ca un server de fișiere obișnuit

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 16

exceptând faptul că memorează fiecare modificare făcută asupra fisierelor si directoare lor. Acest
lucru permite recuperarea unei versiuni mai vechi a fișierelor și examinarea istoricului legat de
când și unde s -au facut anumite modificări și cine a făcut aceste modificări. Datorită acestor
lucruri mulți oameni se gândesc la TortoiseSVN ca f iind “mașina timpului”. [14]

2.6 NuGet package

NuGet este un manager de pachete open -source gratuit, conceput pentru platforma de
dezvoltare Microsoft (cunoscută anterior ca NuPack). De la introducerea sa în 2010, NuGet a
evoluat într -un ecosistem mai mare de instrumente și servicii.
NuGet este distribuit ca extensie Visual Studio. Începând cu Visual Studio 2012, NuGet
este preinstalat în mod prestabilit. El este, de asemenea, integrat cu SharpDevelop. NuGet poate
fi de asemenea utilizat din linia de co mandă și automatizat cu scripturi.
Acesta suportă mai multe limbaje de programare, inclusiv:
 Pachetele .NET Framework
 Pachete native scrise în C ++ [15]

2.7 Tipuri de senzori

Pentru a înțelege mai bine modul de operare al aplicației se vor prezenta următoarele
detalii. Semnalele primite de la client provin de la două tipuri de senzori: senzori interni care
comunică cu ECU și senzori externi care comunică cu un alt dispozitiv. Aceste semnale provin
din urma unor teste făcute asupra vehiculelo r, de exemplu: mașina lovește o bordură, merge pe
un drum cu pietriș, lovește un copac, este lovită cu diferite obiecte .etc. Senzorii folosiți de noi
sunt de două tipuri: de accelerație și de presiune. [2]

a) b)
Figura 2.2 Senzori de accelerație (a) și presiune (b)
pentru semnale interne

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 17

Figura 2.3 Exemplu de semnal intern

În fig. 2.2 avem un exemplu de senzori montați pe mașină în procesul de fabricație care
transmit în momentul impactului informații și sunt înregistrate de către ECU. In fig. 2.3 avem un
exemplu de semnal înregistrat de acești senzori la 4kHz. Aceste semnale au o importanță mare în
ceea ce privește calibrarea iar el e nu necesită nici o modificare.

a) b)
Figura 2.4 senzori de accelerație (a) și presiune (b) pentru semnale de referință

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 18
Figura 2.5 Tipuri de semnale: (a) semnal nefiltrat, (b) semnal filtrat

În Figura 2.4 avem un exemplu de senzori care înregistrează semnalele externe (denumite
și semnale de referință). Acești senzori sunt montați pe mașina cu, care se fac testele în laborator.
Se montează în apropierea senzorilor interni și sunt folosiți ca ș i rezervă pentru senzorii interni în
cazul în care aceștia nu sunt montați. Principalele motive pentru care senzorii interni nu sunt
montați ar fii existența unei erori in comunicare sau coruperea lor.
Senzorii externi se folosesc în procesul de calibrare al unității centrale care comandă
airbag -ul, centurile și alte dispositive care asigură singuranța în cazul unui eveniment. Ei se
folosesc în procesul de calibrare dar nu vor fi montați pe mașina finală și nu comunică cu ECU.
Semnalele provenite de la sen zorii externi sunt semnale nefiltrate, pentru a putea fii folosite în
calibrare ele trebuie filtrate, astfel încât sa fie la fel ca cele provenite de la senzoii interni. În
figura 2.5 (a) avem un exemplu de semnal nefiltrat, iar în figura 2.5 (b) este un s emnal filtrate.
[2]

Figura 2.5. (a) Semnal nefiltrat
Figura 2.5. (b) Semnal filtrat

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 19

2.8 Procesul de prelucrare a datelor

Conform prezentării de la începutul lucrării spuneam că acest program este destinat
preparării datelor folosite de inginerii calibratori. În continuare se va prezenta ce înseamnă acest
proces de preparare.
Pentru o verificare cât mai buna a aplicației am ales un set de teste care au fost preparate
manual, după aceea cu ajutorului programului.
Procesul de preparare conține 4 pași care trebuie urmați, cum ar fii:
a) Se verifică dacă semnalul nu a re offset, adică pe o anumită perioadă a semnalului el
trebuie sa fie centrat în jurul lui 0, în cazul în care semnalul prezintă offset acesta se v -a
modifica corespunzător.

Figura 2.5 Semnal care prezint ă offset.

b) Tăierea pretrigger -ului, care reprezintă o porțiune de semnal care este înregistrată înaintea
producerii unui eveniment. Acesta diferă în fun cție de proiect și poate fii de : 50ms,
100ms, 1000ms, 2000ms etc.

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 20

Figura 2.6 Exemplu de pre -trigger

c) Se verifică polaritatea semnalelor. Senzorii montați pe mașină se află pe diferite axe, în
funcție de acest aspect și de tipul evenimentului se verifică dacă semnalul este conform
convenție SAE (Society of Automotive Engineers).
d) Se verifică dacă un semna l este corupt, dacă are un comportament anormal iar în urma
unei concluzii acesta se taie de la o anumită valoare.

e) La sfârșitul procesului de preparare a datelor se face o sincronizare între semnalele de
referință și semnalele interne.
400ms pre -trigger
Dupa cum se poate
observa dupa valoarea
de ~45ms semnalul este
corupt.
Figura 2.7 Exemplu de semnal
corupt

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 21

Capitolul 3. Specificațiile proiectului

3.1 Schema bloc. Scurta descriere a aplicației

Figura 3.1 Schema bloc

Acest program are scopul de a îmbunătați și de a reduce timpul de preparare a datelor. În
fig. 3.1 se regăsește schema bloc a procesului. Primul pas este reprezentat de primirea datelor în
format original, pentru a putea fi utilizate ele trebuie convertite într -un anumit format, iar acest
lucru se face cu ajutorului programului dConv. După convertirea datelor si aducerea lor la
formatul dorit, se introduc în baza de date iar următorul pas constă în prelucrarea lor cu CDV.

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 22

3.2 Planificarea lucrării

3.2.1 Ciclul de viață V

Ciclul de viață V este o cale secvențială de execuție a proceselor . Fiecare fază trebuie să
fie finalizată înainte de începerea fazei următoare. Este unul dintre numeroasele modele de
dezvoltare software. Modelul în formă de V ar trebui să fie utilizat pentru proie cte de dimensiuni
mici și mijlocii, în care cerințele sunt clar definite și fixate.
Figura 3.2 Modelul in V

În Figura 3.2 avem un exemplu de astfel de ciclu, unde partea din stanga reprezintă de
lanțul de specificare a sistemului iar cea din dreapta de l anțul de testare. Partea de jos a V -ului
reprezinta implementarea.
Axele orizontale și verticale reprezintă perioada de completare a proiectului sau a
proiectului (de la stânga la dreapta) și nivelul de abstractizare (cea mai mare abstractizare a
granulel or de sus). [16]
Avantajele utilizării modelului in V:
 simplu si ușor de utilizat

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 23

 defectele se găsesc la etapa timpurie
 evită fluxul descendent al defectelor

3.2.2 Diagrama Gantt

Pentru o bună organizare și planificare a proiectului s -a ales utilizarea unei diagrame de
tip Gantt prezentată în Figura 3.3 realizată cu ajutorul aplicație Microsoft Excel.
Frecvent utilizată în managementul de proiect, o diagramă Gantt oferă o ilustrare grafică a unui
program de activități, care ajută la planificarea, coordon area și monitorizarea unor sarcini
specifice dintr -un proiect.
Forma grafică a unui astfel de instrument de planificare constă într -o matrice pe a cărei
axă orizontală este reprezentată perioada de timp pe care se întinde proiectul, împărțită în unități
de măsură (spre exemplu zile, săptămâni sau luni), și pe a cărei axă verticală sunt reprezentate
sarcinile din proiect (spre exemplu, dacă proiectul ar consta în dotarea calculatorului
dumneavoastră cu un nou software, principalele sarcini ar putea fi: real izarea unei cercetări de
piață, alegerea soft -ului, instalarea soft -ului, etc.) . [17]

Figura 3.3 Diagrama Gantt

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 24

Capitolul 4. Proiectarea în detaliu

4.1 Arhitectura CDV

Pentru implentarea rapoartelor am folosit Epplus care este o blibliotecă .net cu ajutorul
căreia se pot citii și scrie fișiere Excel 2007/2010 utilizând formatul Open Office Xml (xlsx).

4.2 Descrierea modulelor

4.2.1 Algoritmul de verificare și modificare a offsetului

Acest algoritm ca lculează valoarea de offset a unei părți din semnal și compară rezultatul
cu valoarea stabilită de utilizator în fereastra “ Algorithms selection ” la secțiunea limită de
sensibilitate a offset -ului. Figura 4.1 Arhitectura aplicației

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 25

Pentru a calcula valoarea de offset programul face o medie pe o porțiune selectată a
semnalului.
Avem 3 opțiuni pe care le putem utiliza:
– calcularea offset pe toata durata pre -trigger
– calcularea offset pe ultimele “X” ms a pre -trigger
– calcularea offset pe ultimele “X” ms a pos -trigger

4.2.2 Algoritm de verificare a polarității

Pentru testele frontale/în spate/laterale algoritmul verifică dacă semnalele au polaritatea
conform tabelului din Figura 4.2 , care se numește convenția SAE ( The Society of Automotive
Engineers ):

In momentul unui impact senzorii montați pe mașină simt pe trei axe: X,Y si Z.
• Semnalul de accelerație X trebuie să fie pozitiv dacă autovehiculul este accelerat înainte (în
direcția de mers)
• Semnalul de accelerație Y trebuie să fie pozitiv în cazul î n care autovehiculul este accelerat
spre dreapta (privirea în direcția de mers, de exemplu, viraje spre dreapta). Figura 4.2 Convenția SAE

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 26

• Semnalul de accelerație Z este negativ dacă autovehiculul este lovit de jos și / sau ridicat
(conduceți pe rampă, aterizați pe roți) și pozi tiv dacă vehiculul cade sau zboară.

4.2.3 Algoritmul de sincronizare a datelor

Acest algoritm verifică dacă semnalele interne sunt sincronizate cu semnalele externe.
S-a folosit un algoritm care integrează cele doua semanale, interne și externe iar în momentul în
care cele două integrale se potrivesc știm ca semnalul înregistrat în memorie este sincronizat.
Pentru sincronizarea semnalelor s -a folosit metoda cross -correlation. În procesarea
semnalelor, cross -correlation este o măsură a asemănării a două forme de undă ca o funcție a
unui decalaj temporal aplicat uneia dintre ele. De asemenea este o metodă standard de estimare a
gradului în care două serii sunt corelate. [5]
Cu ajutorul urmatoarei formule se poate calcula cross -correlation:

Unde: m = -(N-1):(N -1) iar lungimea lui R(m) este prin urmare 2N -1.

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 27
În următoarea figură se poate observa implementarea funcției cross -correlation în c#:

Principalul obiectiv al funcției este de a afla factorul de corelare maxim, adică momentul
în care semnalele sunt sincronizate. Principala condiție pentru a putea folosii această funcție este
ca cele două semnale, interne și externe să aibă aceeași dimensiune. Acest program conține o
funcție de calculare a delayului dintre cele două funcții, în momentul în care s -a găsit partea
apropiat comună dintre cele două se începe calcularea corelației comune în intervalul min im și
maxim. Calcularea corelației constă în suma produselor indicilor sempălurilor, aceste calcule se
fac pâna se află poziția factorului de corelare maxim. Momentul în care se află factorul de
corelare maxim putem spune ca a m aflat valoarea la care semna lul intern este sincronizat cu cel
extern. private double CrossCorelation( List<double> refValues, List<double> intValues, int samplingRate)
{
int N = refValues.Count;
int m_min = -(N – 1);
int m_max = N – 1;

double factorCorelatieMaxima = 0;
int pozitiaFactorDeCorelareMaxim = 0;

for (int pozitiaInternal = m_min; pozitiaInternal <= m_max; pozitiaInternal++)
{
double factorDeCorelareCurent = 0;
if (pozitiaInternal >= 0)
{
for (int indice = 0; indice < = (N – 1 – pozitiaInternal); indice++)
factorDeCorelareCurent += refValues[indice + pozitiaInternal] *
intValues[indice];
}
else
{
for (int indice = 0; indice <= (N – 1 + pozitiaInternal); indice++)
factorDeCorelareCurent += intValues[indice – pozitiaInternal] *
refValues[indice];
}
if (Math.Abs(factorDeCorelareCurent) > factorCorelatieMaxima)
{
factorCorelatieMaxima = Math.Abs(factorDeCorelareCurent);
pozitiaFactorDeCorelareMaxim = pozitiaInternal;
}
}
return (double)pozitiaFactorDeCorelareMaxim * 1000 / ( double)samplingRate;
}

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 28

Pentru a putea programul sa recunoască semnalele interne în header -ul semnalului, la
câmpul FT (Required fire time) trebuie să fie scris INT iar la semnalele de referință FILT. Un
exemplu de antet se poate vedea în Figura 4.3. Înainte de a începe sincronizarea, programul
verifică dacă există un semnal de referință și un semnal intern pentru accidentul curent, în cazul
în care nu se poate detecta un semnal de referință și unul intern atunci se vor adăuga la secțiun ea
Synchronize internal care se găsește la Setări , canalele specifice X,Y sau canalele U,V.

Figura 4.3 Exemplu de header al semnalelor

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 29

Figura 4.4 Semnale în proces de sincronizare

În fig. 4.4 se poate observa cum funcționează algoritmul de sincronizare. În fig. 4.4 a), b)
si c) algoritmul verifică cele doua semnale la 15ms, 20ms și 25ms, după cum se poate observa
semnalele sunt nesincronizate, iar în fig. 4.4 d) se observă că cele două sunt sincronizare , iar
valoarea de sincronizare este de 27.5ms.

4.2.4 Generarea rapoartelor

Pentru a avea o evidență mai bună a modificărilor aduse semnalelor am decis să
implementăm un modul pentru generarea unor rapoarte care să conțină diferite informații
necesare.
Am ales sa implementăm două variante de generare a raportului, prima variantă este
disponibilă pentru utilizatori și se poate genera un singur raport care conține informații despre
toate modificările aduse semnalalor iar a doua variantă constă în opțiunea d e a genera mai multe
rapoarte care să conțină separat infortmații legate de offset, polaritate, sincronziare etc. și este
disponibilă doar pentru programatori. a) b)
c) d)

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 30
Prima etapă a fost să creeăm și să generam un fișier xlsx, acest lucru l -am facut cu
ajutorul bibliotecii Epplus si Microsoft Office Interop.

Am declarat o variabilă cm care conține următoarele element: o lista cu toate datele
denumită crashList, o listă cu toate extensiile folosite, denumită channelsList și avem wanted
care ne permite sa selectăm dacă vom folosii semnalele filtrate sau nefiltrate în raportul generat.
Programul conține o bară de progres, iar după generarea ei se creează un workbook pe care il
denumim cum dorim și il salvăm, iar după salvare fișierul se închide.
În continuare utilizănd Epplus se crează mai multe sheet -uri în cadrul woorkbook -ului
generat. După ce s -au creat se vor elimina cele care nu se utilizează și v -a rămâne doar un sheet
care v -a conține raportul.

CrashesMatrix cm = new CrashesMatrix (crashList, channelsList, wanted);

var currentCult = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = new System.Globalization. CultureInfo ("en-US");

if (SetMaxProgressEvent != null)
{

SetMaxProgressEvent(crashList.Count());

}

if (File.Exists(fileName))
{

File.Delete (fileName);
}

var app = new Microsoft.Office.Interop.Excel. Application ();
var workbook = app.Workbooks.Add( Type.Missing);
workbook.SaveAs(fileName);
workbook.Close( true, fileName);
using (ExcelPackage engine = new ExcelPackage (fileName))
{
IWorkbook reportWb = engine.Workbook;

List<string> defaultSheets = new List<string>();
foreach (IWorksheet v in reportWb.Worksheets)
{
defaultSheets.Add(v.Name);
}

//Create report sheet and one sheet per channel
IWorksheet reportSh = reportWb.Worksheets.Create( "Crash Matrix" );

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 31
După generarea documentului se v -or sta bilii extensiile canalelor, se v -or afișa și se v -or
stabilii anumite opțiuni legate de formatul celulor.
Primele cinci linii v -or conține informații despre date, cum ar fii: numele testului, tipul,
partea lovită și viteza la care s -a petrecut evenimentul iar în continuare se v -or găsii informații
legate de canalele utilizate.

int index=6;
foreach (var channel in cm.channel_ExtensionMapping)
{
if (channel.Value.Count > 0)
{
reportSh[1, index].Value = channelsList.Where(m => m.Nr
==channel.Key).First().Name;
reportSh[1, index, 1, index + channel.Value.Count – 1].Merge =
true;
reportSh[1, index].Style.HorizontalAlignment = ExcelHAlign .Center;
reportSh[1, index].Style.VerticalAlignment = ExcelVAlign .Center;

index += channel.Value.Count;
}
int crashRow = 3;
index = 6;
foreach (var channel in cm.channel_ExtensionMapping)
{
foreach (var extension in channel.Value)
{
reportSh[2, index].Value = extension;
index++;
}
}
reportSh[2, 1].Value = "Crash Name" ;
reportSh[2, 1].Style.VerticalAlignment = ExcelVAlign .Center;
reportSh[2, 2].Value = "Test Case" ;
reportSh[2, 2].Style.VerticalAlignment = ExcelVAlign .Center;
reportSh[2, 3].Value = "Test Situation" ;
reportSh[2, 3].Style.VerticalAlignment = ExcelVAlign .Center;
reportSh[2, 4].Value = "Crash Side" ;
reportSh[2, 4].Style.VerticalAlignment = ExcelVAlign .Center;
reportSh[2, 5].Val ue = "Crash Velocity" ;
reportSh[2, 5].Style.VerticalAlignment = ExcelVAlign .Center;
if (SetMaxProgressEvent != null) { SetMaxProgressEvent(cm.CompleteCrashes.Count); };

foreach (var crash in cm.CompleteCrashes)
{
index = 6;
crash.InitFiles(InitMode.DFileAndFiltred);

reportSh[crashRow, 1].Value = crash.CrashName;
reportSh [crashRow, 2].Value = GetTC(crash, InitMode.DFile);
reportSh[crashRow, 3].Value = GetTS(crash, InitMode.DFile);
reportSh[crashRow, 4].Value = GetCS(crash, InitMode.DFile);

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 32
Utilizănd un for se v -or parcuge toate canalele și se v -or adăuga informații, unde sunt
disponibile, în funcție de alegerile noastre.
ț

La începutul subcapitolului am specificat că există două moduri de generare a
rapoartelor. Pentru modul dis ponibil doar pentru programatori dispunem de 3 variante de raport:
extragerea informațiilor separat pentru, offset, amplitudine si pretrigger. Pentru modul făcut
pentru programatori am folosit o funcție booleană, cand funcția este True atunci putem vizuali za
acest mod iar cand funcția este False nu poate fi vizualizată.
foreach (var channel in cm.channel_ExtensionMapping)
{
if (channel.Value.Count > 0)
{
if (crash.Channels.ContainsKey(channel.Key))
{
var channels = crash.Channels[channel.Key];
foreach (var extension in channel.Value)
{
if (channels.Where(m =>
m.ChannelsData[channel.Key].OriginalFileName.ToLower().EndsWith(extension.ToLower())).Count() > 0)
{
Crash _crash = channels.Where(m =>
m.ChannelsData[channel.Key].Original FileName.ToLower().EndsWith(extension.ToLower())).Select(m =>
m).First();

switch (devMode)
{
case "Offset" :
WriteOnlyOffset(_crash, channel.Key,
reportSh[crashRow, index]);
break;
case "Pretrigger" :
WriteOnlyPretrigger(_crash, channel.Key,
reportSh[crashRow, index]);
break;
case "Amplitude":
WriteOnlyAmplitude(_crash, channel.Key,
reportSh[crashRow, index]);
break;

}

}
index++;
}

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 33
Următoarea funcție se utilizează la extragerea valorii de offset din header -ul semnalelor.
În momentul în care se fac modificări asupra semnalelor în header este un câmp numit
N1(Note1) în care se trec toate modificările. Valoarea de offset v -a fi notată în raport cu "o:".

Aceeași metodă se v -a folosi și la funcția de e xtragere a informației despre amplitudine și
pre-trigger. În raport amplitudinea v -a fi notată cu "a:" si valoarea de pre -trigger cu "l:".

4.3 Structura bazei de date
private static void WriteOnlyOffset(Crash e, int channelIndex, IRange range)
{

string result = "";

if (e.ChannelsData[channelIndex].dSignal != null)
{

GetN1(e, channelIndex, "o:", ref result, wanted);

}
range.Value = result;
}

private static void WriteOnlyAmplitude(Crash a,
int channelIndex, IRange range)
{

string result = "";

if (a.ChannelsData[channelIndex].dSignal !=
null)
{

GetN1(a, channelIndex, "a:", ref result,
InitMode.DFile);

}
else
{
if (a.ChannelsData[channelIndex].T4Signal !=
null)
{

GetN1(a, channelIndex, "a:", ref result,
InitMode.Filtred);
}
}

range.Value = result;

}
private static void WriteOnlyPretrigger(Crash r,
int channelIndex, IRange range)
{

string result = "";

if (r.ChannelsData[channelIndex].T4Signal != null)
{

GetN1(r, channelIndex, "l:", ref result,
wanted);

}
else
{
if (r.ChannelsData[channelIndex].dSignal != null)
{
GetN1(r, channelIndex, "l:", ref result,
wanted);
}
}

range.Value = result;

}

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 34

4.3 Structura bazei de date

O bază de date este un instrument pentru colectarea și organizarea informațiilor. Crearea
unei baze de date ajută la o evidență mai bună a testelor precum și a ușurării procesului de
testare. Pentru creearea bazelor de date am folosit Entity Framework Database First.
Programul conține 3 baze de date care vor fi prezentate în continuare.

Baza de date din figura 4.5, conține 2 tabele cu informații legate de offset.
a) Tabelul Data:
 Id – id-ul unic al fiecărui canal
 OriginalDataDirectory – datele originale, nemodificate
 UserDataDirectory – datele modificate de catre utilizator
 Name – denumirea testelor
b) Tabelul Result:
 Id – id-ul unic al fiecărui canal
 RunIndex – index -ul rulării
 FileName – denumirea testelor
 UserOffs et – valoarea de offset a utilizatorului
 CDVOffset – valorea de offset pe care o găsește programul Figura 4.5 Baza de date pentru offset

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 35

A doua bază de date, din figura 4.6, conține informații legate de polaritatea semnalelor, care
de asemenea conține 2 tabele.
a) Configuration
 Id – id-ul unic al testelor
 CtlFile – fișier de tip controlfile care conține informații despre toate testele, cum ar fii :
nume, canale, tipul testului etc.
 DFilesUser – datele prelucrate de utilizator
 CFGFile – configurație care conține informații despre poziționarea senzorilor pe mașină
 DFilesOriginal – datele în format original, neprelucrate
 Name – denumirea testelor
b) TestResults
 Id – id-ul unic al testelor
 IdConfiguration – id-ul unic al configurațiilor
 Results – rezultatul verificării polaritatii
 TimeOnUser
 TimeOnOriginal
 RunIndex – indexul rulării Figura 4.6 Baza de date pentru polaritate

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 36

Baza de date din figura 4.7, conține informații despre toate procedurile efectuate asupra datelor.
a) Algorithm
 Id – Id-ul unic al algoritmului
 AlgorithmName – denumirea algoritmului folosit : offset, polarity, synchronized.
b) Results
 ID – id-ul unic S
 IdRun – id-ul rulării
 Resulted – rezultatul
 Time – cât ia luat programului să execute anumite instrucțiuni
 MessageNo – programul conține anumite mesaje:de avertizare, de eroare .etc, acest câmp
conține informații despre numărul eroarei
c) Run
 IdRun – id-ul rulării
 Date – data la care au fost executate instrucțiunile Figura 4.7 Baza de date pentru toate testele

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 37

d) Test
 Id – id-ul unic al testelor
 Name – numele testelor
 CalledFunction – funcția folosită. De exemplu: offset, polaritate, sincronizare.
 DFiles – semnalele nefiltrate
 CtlFile – fișierul care conține toate testele
 CfgFile – configurația senzorilor de pe mașină
 Parameter – parametrul utiliz at
 Channels – canalele folosite
 Crashes – tipurile de evenimente
 AlgorithmId – id-ul algoritmului folosit

4.4 Modul de gestiune a semnalelor stocate într -o bază de date

Acest modul a fost creeat cu scopul de a salva datele utilizate la testare, precum și o
evidență a rezultatelor obținute în urma testării. Pentru implementarea acestui modul am folosit
C#. Această aplicație conține 3 categorii: offset, polaritate și controlul testelor.

Figura 4.8 Evidența rezultatelor datelor care prezintă offset

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 38

În Figura 4.8 pe prima coloana avem numele toturor canalelor pe care am aplicat
algoritmul de offset, în coloana a doua sunt rezultatele obținute de user la prepararea datelor
manual, iar în coloana a treia avem rezultatele obținute de CDV.
În Figura 4.9 avem o evidență a datelor. Pe prima coloana se găsește denumirea
platformei testate, în colo ana a doua avem calea catre fișierul care conține semnalele nefiltrate
iar pe coloana a treia avem calea către fișierul unde se găsește ControlFile. De asemenea avem
posibilitatea de a adăuga teste utilizând butonul Add Test.

În Figura 4.10 pe prima coloană se găsesc informații despre numele configuraței
folosite, pe a doua coloană, a treia și a patra se găsesc informații despre căile către fișierele care
conțin ControlFile -urile, configurațiile, datele preparate de utilizator si datele preparate de CDV.
În următoatele coloană avem rezultatul testării algoritmului de verificare a polarității precum și
timpul de rulare.

Figura 4.9 Managementul testelor pentru algoritmul de offset

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 39

În Figura 4.11 avem o evidență a datelor asupra cărora s -a verificat polaritatea. Pe prima
coloană avem un Id unic, pe a doua coloană se găsește numele platformei și ce s -a testat, iar pe
restul coloanelor se găsesc informații despre căile către fișierele care conțin ControlFile -urile,
configurațiile, datele preparate de utilizator si datele originale.

În Figura 4.12 avem rezultatul testării asupra mai multor teste. Pe prima coloana avem o
scurtă descriere ce s -a testat, iar pe următoarea coloană avem rezultatul testării.

Figura 4.10 Evidența rezultatelor și a datelor utilizate pentru verificarea polarității
Figura 4.11 Managementul testelor pentru algoritmul de polaritate
Figura 4.12 Rezultatul testării tuturor datelor

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 40

În Figura 4 .13 pe coloana Name găsim o scurta descriere a ce s -a testat iar în graficul
perfomanța. Puctele de pe grafic reprezintă numărul de rulări iar cu ajutorul axei observăm cât a
durat rularea.

În Figura 4.14 se găsesc toate informațiile legate de ce s -a testat, unde se g ăsesc
semnalele nefiltrate, ControlFile -uile si configurațiile utilizate.

Figura 4.13 Performanța rulării
Figura 4.14 Evidența datelor testate

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 41

Capitolul 5. Testarea aplicației

5.1 Testarea și investigarea algoritmului de offset

Pentru a testa cât mai bine și eficient algoritmului de offset am decis să folosesc un set de
teste format din cele trei tipuri generale. Pentru început am preparat manual datele după care l e-
am preparat cu ajutorul CDV -ului pentru a putea compara rezultatele. La prepararea datelor cu
CDV am hotărât sa folosesc două valori de sensiblitate a offset -ului și anume 0.001ms și 0.01ms.
Valoarea de 0.01 este importantă deoarece dacă este depășită de vine o valoare critică. În fig. 5.1
se regăsește un tabel cu rezultatele obținute în urma rulării algoritmului la valoarea de 0.01ms.
(a) Rezultate
utilizator
(b) Rezultate
CDV
Figura 5.1 Rezultate obținute în cazul algoritmului de offset

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 42
În urma unei analize amănunțite am observat că nu se găsește o diferență mai mare mare
de 0.0078ms între semnalele prepar ate de utilizator fig. 5.1 (a) și CDV fig 5.1 (b).
În urma rezultatelor obținute am ajuns la concluzia că algoritmul de offset funcționează
corespunzător.

5.2 Testarea și investigarea algoritmului de verificare a polarității

Pentru verificarea algoritmu lui am adoptat aceeași metodă de testare ca la cel de offset și
am constatat ca nu exista nici o eroare în ceea ce privește algoritmul de verificare a polarității.

5.3 Testarea și investigarea algoritmului de sincronizarea datelor

Pentru testarea algoritmului de sincronizare am folosit canalele U și V. După mai multe
teste efectuate am ajuns la concluzia că există o diferență de 0,25ms între semnalele sincronizate
de utilizator și cele sincronizate de CDV.
În urma unor investigații amănunțite am ajuns la concluzia că programul CDV
sincronizeaza semnalele corect, dar datorită unei întărzieri de 0.5ms care apare în programul
folosit pentru simulări este nevoie de composarea întârzierii astfel încât avem nevoie ca
sincronizarea să se f acă cu 0.25ms mai mult la sateliți si cu 0.25ms mai mult la ECU. Această
problemă se poate rezolva cu ușurință deoarece programul ne oferă posibilitatea să adaugăm o
perioadă dorită de întârziere.

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 43

Capitolul 6. Manual de utilizare

6.1 Configurații

La începerea programului apare o fereastră, reprezentată în Figura 6.1, care ne permite să:
 selectăm configurația utilizată anterior
 să încărcăm o altă configurație
 să creăm o configurație nouă
 să utilizăm doar semnale în format Dfiles, adică semnale nefil trate

Dacă se dorește creearea unei noi configurații este necesară completarea ferestrei din Figura 6.2. Figura 6.1 Fereastra cu configurații
Figura 6.2 Creearea unei noi configurații

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 44

6.2 Fereastra principală
După încărcarea unei configurații se va afișa fereastra din Figura 6.3.

1. Canalele utilizate
 sunt vizibile doar în cazul primei opțiuni de configurație (când o configurație este
încărcată)
 se folosește la selectarea canalelor pe care dorim sa le afișăm
 canalele selectate vor fii utilizate pentru validare si afișare
2. Crash -uri utilizate
 se utilizează la selectarea crash -urilor pe care dorim sa le afișăm
 crash -urile selectate vor fii utilizate pentru validare
3. Infomații despre fișier
 afișează diverse informații despre canalul selectat
4. Fereastră pentru afișarea graficelor
 utilizată pentru vizualizarea semnalelor
 atunci când este selectat un mesaj din jurnal, acesta va afișa semnalul asociat al mesajului Figura 6.2 Creearea unei noi configurații
Figura 6.3 Fereastra principală

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 45

5. Fereastra Log

 după validarea datelor această fereastră v -a afișa diferite mesaje: de avertizare, de eroare,
de informare.
În fig 6.4 se regăsesc informații despre elementele barei de instrumente a programului.

Figura 6.4 Bara de instrumente a programului

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 46

6.3 Setări

 Lista cu culori

În Figura 6.5 este reprezentată fereastra pentru selectarea culorilor. Avem doua
butoane + si – cu ajutorul cărora se pot adauga si elimina culori.

 Maparea canalelor

– permite maparea între numele canalului și extensiile permise Figura 6.5 Lista culorilor pentru reprezentări grafice
Figura 6.6 Fereastra utilizată pentru maparea
canalelor

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 47

– se utilizează la verificarea Controlfile -ului.
În figura 6.6 se pot observa cele doua butoane + și -, cu ajutorul lor puntem adăuga și elimina
canalele adăugate. Pentru a putea adăuga un canal, trebuie selectat canalul dorit dintr -o listă
generată pe baza unui Controlfile care se va găsii în dreptul cămpului Channel după care trebuie
adăugate extensiil e dorite.

 Sincronizarea semnalelor interne

– pentru a se face o sincronizare cât mai corectă trebuie completate cu atenție toate
câmpurile necesare.

După cum se poate observa în figura 6.7 sincronizarea se poate face în două moduri: în
funcție de canalele X și Y sau în funcție de canalele U și V. Dacă sincronizarea trebuie făcută în
funcție de canalele X și Y trebuie sa selectăm dacă dorim să sincronizăm canalul X pentru testele
frontale și din spate și canalul Y pentru testele laterale sau dacă dorim ca sincronizarea să fie
făcută individual pentru X si Y. În cazul canalelor U și V nu este nevoie de setări suplimentare.

Figura 6.7 Sincronizarea semnalelor interne

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 48

 Adăugarea unei întârzieri

– ne oferă oferă posibilitatea de a adăuga o întârziere pentru un anumit canal atunci când
corectarea sincronizării este executată.

Cele două butoane + și – care se pot observa în Figura 6.8 ne oferă posibilitatea sa adaugăm
sau să eliminam o întârziere aplicată unui canal.

 Generarea rapoartelor

– cu ajutorul acestei opțiuni se pot genera diferite rapoarte care conțin informații legate de
Dfiles, offset, pretrigger, amplitudine etc. În Figura 6.10 respectiv Figura 6.11 avem
două exemple de rapoarte, unul cu informații despre offset și polaritate.

Figura 6.8 Fereastra pentru adăugarea u nei întârzieri
Figura 6.9 Exportarea rapoartelor

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 49

6.4 Adăugarea în baza de date

 Adăugarea semnalelor pentru algoritmul de offset

Figura 6.10 Adăugarea datelor pentru algoritmul de offset Figura 6.10 Exemplu de raport cu informații despre offset
Figura 6.11 Exemplu de raport cu informații despre polaritate

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 50

Pentru adăugarea testelor în baza de date specifica algortimului de offset, conform figurei
6.10 se vor adăuga urmatoare informații:
– Name: se v -a adăuga numele platformei de unde provin datele
– Original: se vor adăuga testele originale, care nu conțin modificări
– User: se vor adăuga testele preparate de către utilizator
 Adăugarea testelor pentru algoritmul de verificare a polarității

Pentru adăugarea testelor în baza de date specifică algortimului de verificare a polarității,
conform figurei 6.11 se vor adăuga următoare informații:
– Name: conține denumirea platformei
– CtlFile: se adaugă ControlFile -ul
– CfgFile: se adaugă fișierul cu configurația
– Dfiles Original: se adaugă datele originale, nemodificate
– Dfiles User: se adaugă dat ele cu modificările făcute de către utilizator

Figura 6.10 Adăugarea datelor pentru alogirtmul de offset
Figura 6.11 Adăugarea datelor pentru algoritmul de
verificare a polatității

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 51

 Adăugarea testelor

Pentru adăugarea testelor în baza de date specifică tuturor testelor, conform figurei 6.12
se vor adăuga următoarele informații:
– Name: se adaugă numele platformei
– CalledFunction: funcția pe care dorim sa o utilizăm
– Dfiles: se adaugă semnalele nefiltrate
– CtlFile: se adaugă ControlFile -ul cu toate testele
– CFGFile: configurația pe care dorim să o utilizăm
– Parameters: se adaugă parametrul pe care dorim să -l utilizăm
– Channels: se adaugă canalele
– ExpectedLevel: se selectează nivelul
– Algorithm: se selectează algoritmul pe care dorims să -l utilizăm

Figura 6.12 Adăugarea tuturor testelor

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 52

Capitolul 7. Concluzii

Modulele implementate în cadrul aplicației au fost realizate conform cerințelor și
nevoilor. Implementarea unui modul care generează rapoarte care conțin toate informațiile legate
de modificările aduse datelor s -a dovedit a fi util în procesul de testare . Aceste rapoarte pot fi
generate individual pentru algoritmul de offset, de verificare a polarității și de sincronizare a
semnalelor.
De asemenea scopul bazei de date implementate a fost de a ține o evidență a testelor
asupra cărora s -au efectuat anumite modificări și de a vizualiza și salva diferite rezultate.
Algoritmul de sincronizare implementat s -a dovedit , în urma mai multor testări, că
funcționează corect și poate fi utilizat cu încredere.
Aplicația prezentată a fost realizată cu scopul de a ușura ș i de a reduce timpul de
verificare și modificare a datelor, pentru a demonstra că aplicația funcționează corespunzător s –
au efectuat mai multe teste iar în urma un or concluzii s -a constatat că aplicația poate fii folosită
cu încredere.

Crash Data Validator
Facultatea de Automatică și Calculat oare Page 53
Bibliografie

[1] http://promovareimobiliare.ro/importanta -sigurantei -masinii/
[2] Documentație Continental Automotive
[3] L.J. SPARKE, “Vehicle Safety Past, Present and Future”
[4] http://www.infobazar.ro/auto/Airbag -ul/Din -ce-este-format -sistemul -airbag
[5] Weisstein, Eric W. "Cross -Correlation."
[6] Andrew Stellman , “Head First C#”
[7] https://docs.microsoft.com/en -us/dotnet/framework/
[8] Constantin Gălățan & Susana Gălățan, “Programare în visual C# 2008 Express Edition ”
[9] http://www.ls -infomat.ro/user/content/e9efcsharp.pdf
[10] https://www.visualstudio.com/vs/getting -started/
[11] https://en.wikipedia.org/wiki/Windows_Presentation_Foundation
[12] https://msdn.microsoft.com/en -us/library/cc295302.aspx
[13] https://jenkins.io/doc/
[14] https://tortoisesvn.net/
[15] Haack, Phil, "NuGet"
[16] http://istqbexamcertification.com/what -is-v-model -advantages -disadvantages -and-when -to-
use-it/
[17] https://en.wikipedia.org/wiki/Gantt_chart

Similar Posts