Professional Documents
Culture Documents
Fakulteta za elektrotehniko
Matija Cej
Ljubljana, 2013
ZAHVALA
Zahvaljujem se mentorju prof. dr. Aleu Beliu, univ. dipl. in. el., za vso podporo, strpnost in
vodenje pri nastajanju diplomskega dela ter razvojni skupini za programsko opremo pri
podjetju Letrika, d. d., za idejo, strokovne nasvete in realizacijo orodja, opisanega v
diplomskemu delu. Prav tako se zahvaljujem starem, ki so mi omogoili tudij ter me
podpirali pri tudiju in diplomskem delu, teti za jezikovno pregledan izdelek ter vsem drugim,
ki so mi pri delu kakorkoli pomagali s koristnimi nasveti.
POVZETEK
Zmanjevanje fosilnih goriv in kodljivih izpustov ter uvajanje obnovljivih virov energije
avtomobilsko industrijo vedno bolj usmerjata v razvoj prevoznih sredstev, ki temeljijo na
zelenih tehnologijah, med katere spada tudi elektrika.
V dokaj kratki zgodovini razvoja modernih elektrinih prevoznih sredstev je eno izmed
glavnih vlog prevzel mikrokontroler. Mikrokontroler so mogani prevoznega sredstva, v
katerem se prepleta vrsta informacij. Pospeevanje, zaviranje in obraanje so nekatere izmed
teh, celota pa tvori kompleksen sistem za upravljanje avtonomnega sistema.
Pri razvoju kljuni pomen predstavlja spremljanje parametrov mikrokontrolerja, iz katerih se
oblikujejo zgoraj natete informacije za upravljanje vozila. Parametri omogoajo razvijalcu
vpogled v notranjost delovanja mikrokontrolerja in so kritini pri konnem uporabniku.
Cilj tega diplomskega dela je bila izdelava orodja za diagnostiko sistemov v realnem asu, ki
temelji na protokolu CAN z implementacijo protokola LDTP (Letrika debugging and testing
protocol) na vijem nivoju. To nam je uspelo s pomojo adapterja ifak isCAN USB, ki skrbi
za prenos informacij med raunalnikom in mikrokontrolerjem. Prednost programskega orodja
je v spremljanju 32-bitnih spremenljivk, periodinem spremljanju spremenljivk, preprostosti
ter prijaznosti do konnega uporabnika.
Izdelano programsko orodje bo uporabljeno za spremljanje parametrov pri razvoju elektrinih
avtomobilov v podjetju oziroma pri razvoju mikrokontrolerjev.
Kljune besede: Programsko orodje, protokol CAN, protokol LDTP, mikrokontroler, branje in
pisanje spremenljivk, periodino spremljanje spremenljivk, Ifak isCab USB.
ABSTRACT
Reduction of fossil fuel, harmful emissions and the introdustion of renewable energy sources
directs car industry on developing viachles based on so called green technologies such as
light, wind and also electricity.
In very short history if developing modern electrical viachles a part called microcontroller
took one if the main roles in terms of most important parts in electrical viachle as the brains
of any electrical viachle. There is a lot of information in microcontroller such as accelerating,
braking and starring, ect. All this information together form a complex autonomy system.
To monitor parameters of microcontroller is one of main meanings in developing this part of
the system. Parameters allow developer to look inside the box of microcontroller and their
settings are cricital for end user.
The goal of this work is to build a software development tool for monitornig parameters of
microcontroller which is based on CAN protocol with implementation of LDTP protocol on
higher level of CAN protocol. With help of Ifak IsCan USB adapter, which represent a
interface between computer and microcontroller, we managed to finish a task. The advantage
of this software tool is in monitoring not only 16 bit variables but also 32 bit variables,
periodical monitoring of variables with simplicity and user frendly interface.
This software will be used for monitoring parameters in developnig electrical cars or either
microcontrollers in company.
Key words: softaware development tool, CAN protocol, LDTP protocol, microcontroller,
writing and reading variables, periodical monitoring, Ifak IsCan USB.
KAZALO
1.
UVOD..................................................................................................................................1
2.
3.
2.1.
2.2.
2.3.
3.2.
3.3.
3.4.
3.5.
CANOpen...................................................................................................................13
4.
OBJEKTNO PROGRAMIRANJE....................................................................................14
5.
ORODJE ZA DIAGNOSTIKO.........................................................................................16
4.1.
Zgradba orodja...........................................................................................................16
4.2.
4.3.
4.3.1.
4.3.2.
Opis protokola.....................................................................................................20
4.4.
4.4.1.
Modul Mod_Can.................................................................................................26
4.4.2.
Modul Mod_Ldtp................................................................................................29
4.4.3.
Modul Mod_TIdwarf..........................................................................................35
4.4.4.
Uporabniki vmesnik..........................................................................................37
4.4.6.
6.
SKLEP...............................................................................................................................42
7.
LITERATURA IN VIRI....................................................................................................43
KAZALO SLIK
Slika 1: povezava tokatoka in vetokovna povezava..........................................................4
Slika 2: Tri osnovne oblike omreji: obro, zvezda in vodilo....................................................5
Slika 3: Primerjava modelov ISO/OSI in TCP/IP.......................................................................6
Slika 4: Primer naslavljanja CAN...............................................................................................9
Slika 5: Primer dostopnosti do kanala........................................................................................9
Slika 6: Protokol CAN v modelu ISO/OSI...............................................................................10
Slika 7: Standardna oblika podatkovnega okvirja.....................................................................11
Slika 8: Razirjena oblika podatkovnega okvirja......................................................................11
Slika 9: Zgradba sistema...........................................................................................................16
Slika 10: Shema krmilnika Letrika aek 1350............................................................................17
Slika 11: Zgradba paketa za branje in pisanje posameznih spremenljivk.................................21
Slika 12: Zgradba paketa periodinega branja spremenljivk (CPU PC)...............................23
Slika 13: Zgradba nastavitvenega paketa za periodino spremljanje (PC CPU)..................24
Slika 14: Zgradba paketa uporabnikega vmesnika..................................................................25
Slika 15: Metoda f_CanRxInterpreter.......................................................................................26
Slika 16: Metoda f_CanRXUserHandler..................................................................................27
Slika 17: Funkcija f_MsgT.......................................................................................................28
Slika 18: Handler IFAK_MsgHandler..................................................................................28
Slika 19: Funkciji f_setLDTPServerAddress in f_setLDTPClientAddress..............................29
Slika 20: Funkcija f_Write32bitLDTP......................................................................................30
Slika 21: Funkcija f_CanRxInterpreter.....................................................................................32
Slika 22: Funkcija f_AddVariable.............................................................................................33
Slika 23: Funkcija f_ReceiveVar..............................................................................................34
KAZALO TABEL
Tabela 1 : Opis bitov podatkovnih okvirjev..............................................................................12
Tabela 2: Podatkovna polja paketa za branje in pisanje posameznih spremenljivk..................21
Tabela 3: Podatkovna polja periodinega paketa......................................................................23
Tabela 4: Podatkovna polja nastavitvenega paketa...................................................................24
Tabela 5: Podatkovna polja uporabnikega vmesnika..............................................................25
UVOD
1. UVOD
S tem ko so elektronska vezja in elementi v avtomobilski industriji izpodrinili mehanske
elemente, je eno izmed glavnih vlog prevzel mikrokontroler, kjer potekajo ukazi za delovanje
in upravljanje avtonomnega sistema.
Z razvojem mikrokontrolerjev se je razvila tudi povezljivost. Dandanes je v svetu veliko
protokolov, ki nudijo razvijalcem povezovanje sistema in mikrokontrolerja. Trenutno je na
tem podroju najbolj uinkovit protokol CAN, ki omogoa predvsem preprosto povezljivost,
robustnost, prilagodljivost, spremljanje v realnem asu in neodvisnost od tipa procesorja v
mikrokontrolerju. Protokol CAN je dominanten komunikacijski sistem za vgrajene sisteme v
avtomobilih [2].
Robustnost protokola CAN je izraena skozi nadgradnjo protokola na vijem nivoju po
standardu ISO/OSI, in sicer z implementacijo protokola CANOpen, ki omogoa robustneje
nastavite. Velike hitrosti in dobra povezljivost pa omogoajo prenos podatkov v realnem asu.
Cilj diplomske naloge je izdelava orodja CAN za diagnostiko sistemov v realnem asu, ki je
preprosto za uporabo in je popolnoma kompatibilno s protokolom CAN oziroma nadgrajenim
protokolom CANOpen. Za povezavo osebnega raunalnika in mikrokontrolerja skrbi adapter
IsCan USB proizvajalca Ifak. Zasnova sistema zaradi svoje univerzalnosti in zgradbe
omogoa preprosto dodajanje novih modulov k programu in prilagajanje uporabnikega
vmesnika.
Univerzalnost protokola CAN smo izkoristili za implementacijo novega protokola LDTP
(Letrika debugging and testing protokol), ki je nadgradnja protokola CANOpen in omogoa
branje posameznih globalnih spremenljivk mikrokontrolerja ter periodino branje globalnih
spremenljivk. Poleg zgoraj natetih lastnosti orodje odlikuje tudi hitro in uinkovito branje
datotek xml, iz katerih so razvidni tip procesorja ter vse spremenljivke, njihovi naslovi,
dolina spremenljivk itd.
13
14
15
podatkov.
Smer poteka informacij pomembno pri enosmerni komunikaciji (polovini dupleks).
Mehanizem za kontrolo sekvenc sporoila z velikim obsegom podatkov se delijo na
16
Ker eno samo vozlie ne zadoa za komunikacijo (potrebni sta vsaj dve), sta pri njej
znailna dva naina povezovanja vozli (naprava, ki v omreju opravlja komunikacijske
naloge) (Slika 1) :
-
klic med dvema osebama: sprejemnik lahko slii samo tisto, kar oddajnik odda.
Vetokovna povezava, pri kateri lahko oddano sporoilo prejme ve vozli. Primer
takne povezave sta radio in televizija.
Pozivanje ali izbiranje (zvezda in vodilo): deluje tako, da se izbere ali pozove vozlie,
ki bo oddajalo.
eton (obro in vodilo): dostop deluje po principu podajanja etona. Tisto vozlie, ki
17
18
Slika 3: Primerjava modela ISO/OSI in protokola TCP/IP. Protokol TCP/IP veliko bolj
poudarja pomen mrenih funkcij, medtem ko manj poudarja pomen podomrenega sloja.
Aplikacijske funkcije so v modelu OSI precej bolj razslojene.
19
Fizini sloj:
Skrbi za prenos digitalnih signalov po prenosnih sredstvih, kot so bakreni
vodniki ali optina vlakna. Osnovna podatkovna enota je bit. V tem sloju se
GBN).
Omreni sloj:
Skrbi za delovanje omreja kot celote in zagotavlja pot prenosa od izvornega
do ponornega vozlia, kar pomeni, da vzpostavlja, prekinja in vzdruje
20
Naslavljanje CAN
Za protokol CAN je znailno, da vozlia v mrei nimajo naslovov, kar pomeni, da lahko vsa
vozlia poiljajo ali sprejemajo sporoila. Vsako oddano sporoilo je poslano vsem
vozliem v mrei. Za ta namen ima vsako oddano sporoilo svojo identifikacijsko tevilko,
vozlia pa so konfigurirana za oddajanje in sprejemanje sporoil samo z danimi naslovi
(identifikacijskimi tevilkami). Shema delovanja naslavljanja je prikazana na Sliki 4.
21
Dostopnost do kanala
Vodilo se obnaa kot krajevno porazdeljena logina vrata IN. V primeru soasne oddaje dveh
postaj (vozli) nila (dominantna) prevlada nad enico (recesivna). Na tej logiki temelji
celoten sistem, ki daje prednost sporoilom z nijo identifikacijsko tevilko (Slika 5).
Slika 5: Primer dostopnosti do kanala. Vozlie 2 odda sporoilo z najvijo prioriteto. Vsa
vozlia med oddajo tudi sprejemajo. e se sprejem in oddaja razlikujeta, prekinejo
oddajo in samo sprejemajo.
22
23
24
Podatkovni okvir skrbi za prenos podatkov med oddajnikom in sprejemnikom (Slika 7 in 8).
Prenosni okvir skrbi za poiljanje zahtev za zaetek prenosa podatkovnega okvirja z enakim
identifikatorjem.
Okvir za napake skrbi za javljanje napak.
Okvir prekoraitve skrbi za dodatno zakasnitev prenosa med akajoimi in konanimi
podatkovnimi ali prenosnimi okvirji, e je potrebno.
Opis
25
bit RTR
bit SRR
bit IDE
biti DLC
Delovanje v realnem asu pri izdelkih, kjer lovek nadzoruje delovanje (avtomobili,
viliarji, razna dvigala, ladje ) je najpomembneji hiter odziv. CAN zagotavlja
delovanje v realnem asu, kar pomeni, da je ukaz izvren v trenutku lovekovega
ukaza.
Dostopnost prikljuitev na mreo CAN mora biti razvijalcu hitro, takoj in lahko
dostopna. CAN omogoa takno prikljuitev, saj ima razvijalec s prikljuitvijo
26
Protokol SDO
Storitveni podatkovni objekti (SDO Service data object) omogoajo dostop do vseh
objektnih slovarjev CANOpen (OD Object dictionary). Protokol SDO vzpostavi
komunikacijski kanal peer-to-peer med dvema napravama, med katerima prenaa podatke v
segmentirani obliki. Uporablja se za komunikacijo nastavitvenih podatkov (nastavljanje in
branje vrednosti iz objektnega slovarja naprave).
Naprava CANOpen lahko podpira do 128 kanalov SDO za strenik in do 128 kanalov za
odjemalce. Vsak podprti kanal SDO je lahko nastavljen s pravilnim komunikacijskoobjektnim prepoznavalnikom (COB ID communication object identifier), ki je vezan na tono
doloen set parametrov SDO.
-
Protokol PDO
Procesni podatkovni objekti (PDO Process data object) so kratka visoko prioritetna
sporoila protokola CAN, ki so prenesena med oddajo. Uporabljajo se za komunikacijo,
medtem ko delujemo na napravi v realnem asu. Sporoila PDO so poslana na nepotrjen
nain, kar pomeni, da potrditveni paket, poslan na povratni poti, ne obstaja.
27
OBJEKTNO PROGRAMIRANJE
4. OBJEKTNO PROGRAMIRANJE
Objektno programiranje je nain programiranja, ki izhaja iz podatkovnih struktur. Osnovni
gradnik pri objektnem programiranju je objekt, ki ga opredeljujejo lastnosti (spremenljivke
objekta) in metode (funkcije, ki delajo s podatki objekta). Objekti med seboj komunicirajo in
so navadno zdrueni v razredih (skupek funkcij, ki delujejo kot celota za dokonanje neke
naloge), ki oznaujejo objekte sorodnega tipa. Za lajo predstavo: Na nivoju spremenljivk tip
spremenljivke (celotevilska, znakovna, s plavajoo vejico) igra enako vlogo kot razred,
medtem ko je sama vrednost spremenljivke enaka objektu. Tako bi za primer lahko ustvarili
razred z imenom Osebe, v katerem so objekti imena oseb.
Pomembneja principa objektnega programiranja:
-
Dedovanje
Dedovanje omogoa ustvarjanje razredov, ki so izpeljani iz drugih razredov.
Tako izpeljan razred vsebuje nekatere dele starevskega razreda (tako
imenujemo razred, iz katerega dedujemo) kot svoje. Za primer si lahko
zamislimo razred Oblike, v katerem so definirana objekta viina in irina. Iz
tega razreda lahko dedujemo razreda Trikotnik in Kvadrat, ki bosta uporabljala
objekta starevskega razreda s to razliko, da bo v razredu Trikotnik npr.
ploina ((viina*irina)/2) drugae zapisana kot v razredu Kvadrat
28
OBJEKTNO PROGRAMIRANJE
uporabili, e testirani.
Bolje testiranje ter posledino bolja kvaliteta.
Neodvisnost aplikacije z uporabnikim vmesnikom.
Preprost prenos realnega problema v programsko kodo.
Niji stroki razvoja ter kraji as razvoja posledino omogoajo kvalitetnejo
programsko opremo.
Toda:
-
ukaza.
Neprimerno za reevanje nekaterih problemov.
29
ORODJE ZA DIAGNOSTIKO
5. ORODJE ZA DIAGNOSTIKO
4.1. Zgradba orodja
30
ORODJE ZA DIAGNOSTIKO
Slika 10: Shema krmilnika Letrika aek 1350. Krmilnik vsebuje est digitalnih vhodov, est
digitalnih izhodov, dva analogna vhoda, en analogni izhod, prikljuke za komunikacijo CAN,
5 V- in 12 V-napajanje, prikljuke za enkoder, ozemljitev ter key in.
31
ORODJE ZA DIAGNOSTIKO
vgradnje.
Programiranje poteka prek osebnega raunalnika.
Komunikacija poteka prek RS232 ali protokola CAN.
Uporablja se v avtomobilski industriji za avtomobile za golf, letalike avtomobile
za prevoz prtljage itd.
32
ORODJE ZA DIAGNOSTIKO
33
ORODJE ZA DIAGNOSTIKO
34
ORODJE ZA DIAGNOSTIKO
Slika 11: Zgradba paketa za branje in pisanje posameznih spremenljivk. Vrednosti v tabeli so
zapisane tako, da je na prvem mestu LSB (Least significant byte), najniji bajt podatka, na
zadnjem mestu pa MSB (Most significant byte), najviji bajt podatka. Takemu nainu
razporejanja bitov se imenuje big endian. Biti znotraj posameznih bajtov pa so razporejeni
klasino po nainu little endian.
Tabela 2: Podatkovna polja paketa za branje in pisanje posameznih spremenljivk.
Bit
63 - 60
59
Ime
/
MT
Vrednost
0xF
Opis
Identifikacija tipa paketa
Memory type bit
Dostop do pomnilnika RAM
Dostop do pomnilnika NVRAM
Tip dostopa bralni ali pisalni
Bralni
Pisalni
irina podatka
8 bitov (byte)
16 bitov (Word)
32 bitov (DWord)
rezervirano
LSB, 2. bajt in MSB naslova
LSB, 2. bajt, 3. bajt in MSB podatka
0
1
58
RW
0
1
57 - 56
LEN
0
1
2
3
55-32
31-0
Address
Value
35
ORODJE ZA DIAGNOSTIKO
36
ORODJE ZA DIAGNOSTIKO
Ime
N
Vrednost
0 - 73
Opis
Zaporedna tevilka paketa
55-48
Reserved
Se ne uporablja
47-40
Value (3*N + 0)
39-32
Value (3*N + 0)
31-24
Value (3*N + 1)
23-16
Value (3*N + 1)
15-7
Value (3*N + 2)
7-0
Value (3*N + 2)
37
ORODJE ZA DIAGNOSTIKO
Ime
0x56
Vrednost
0x56
Opis
Identifikacija tipa paketa
55-48
Buffer index
0 - 221
47-40
Reserved
Se ne uporablja
39-32
Reserved
Se ne uporablja
31-24
Address [7-0]
23-16
Address [15-8]
15-7
Address [23-16]
7-0
Address [31-24]
38
ORODJE ZA DIAGNOSTIKO
Slika 14: Zgradba paketa uporabnikega vmesnika. Paketi za vsako smer komunikacije imajo
4-bitno identifikacijsko polje N, zato lahko vzpostavimo komunikacijo s 16 paketi v vsako
smer. V vsakem paketu imamo prostora za prenos sedmih ukazov (skupno 16 x 7 bajtov).
Tabela 5: Podatkovna polja uporabnikega vmesnika.
Bit
Ime
Vrednost
Opis
63 60
59-56
55-48
47-40
39-32
31-24
23-16
15-8
7-0
0xE
N
User byte 0
User byte 1
User byte 2
User byte 3
User byte 4
User byte 5
User byte 6
0xE
0-15
39
ORODJE ZA DIAGNOSTIKO
40
ORODJE ZA DIAGNOSTIKO
void Tmod_CAN::f_CanRXUserHandler()
{
if( b_LibraryOpen && b_DeviceOpen && b_MsgHandlerOpen)
{
BYTE i_Result;
if(b_ExtendedMsg == false)
{
i_Result = isCAN_ReceiveMessageNorm(i_DeviceNum,
&str_MsgRxNorm);
if(i_Result == 0)
{
str_MsgRx.MessageID = str_MsgRxNorm.MessageID;
str_MsgRx.Extended = 0;
str_MsgRx.RemoteReq = str_MsgRxNorm.RemoteReq;
str_MsgRx.DataLen = str_MsgRxNorm.DataLen;
for(int i = 0; i < str_MsgRxNorm.DataLen; i++)
{
str_MsgRx.Data[i] = str_MsgRxNorm.Data[i];
}
f_CanRxInterpreter(str_MsgRx);
}
}
else
{
f_CanRxInterpreter(str_MsgRx);
41
ORODJE ZA DIAGNOSTIKO
univerzalno strukturo, uberemo dve razlini poti glede na to, kakna vrsta paketa je na vrsti za
obdelavo (standardni ali razirjeni).
void Tmod_CAN::f_MsgTx(structCanMsgTypeUser msg)
{
if( b_LibraryOpen && b_DeviceOpen && b_MsgHandlerOpen)
{
if(b_ExtendedMsg == false)
{
str_MsgTxNorm.MessageID = msg.MessageID;
str_MsgTxNorm.RemoteReq = msg.RemoteReq;
str_MsgTxNorm.DataLen = msg.DataLen;
for(int i = 0; i < msg.DataLen; i++)
{
str_MsgTxNorm.Data[i] = msg.Data[i];
}
isCAN_TransmitMessageNorm(i_DeviceNum, &str_MsgTxNorm);
}
else
{
str_MsgTxExt.MessageID = msg.MessageID;
str_MsgTxExt.RemoteReq = msg.RemoteReq;
str_MsgTxExt.DataLen = msg.DataLen;
str_MsgTxExt.bExtended=true;
for(int i = 0; i < msg.DataLen; i++)
{
str_MsgTxExt.Data[i] = msg.Data[i];
}
isCAN_TransmitMessageExt(i_DeviceNum, &str_MsgTxExt);
ORODJE ZA DIAGNOSTIKO
API
gonilnika
Ifak.
Od
tod
dalje
se
kliejo
naslednje
funkcije
43
ORODJE ZA DIAGNOSTIKO
void Tmod_ldtp::f_Write32bitLDTP (int value,int Address, EvarMemory
memoryType)
{
structCanMsgTypeUser msg;
msg.MessageID
msg.RemoteReq
msg.DataLen =
msg.Data[0] =
msg.Data[1] =
msg.Data[2] =
msg.Data[3] =
msg.Data[4] =
msg.Data[5] =
msg.Data[6] =
msg.Data[7] =
= LDTP_serverAdd;
= false;
8;
0xF6 | memoryType;
(unsigned char)Address;
(unsigned char)(Address>>8);
(unsigned char)(Address>>16);
(unsigned char)value;
(unsigned char)(value>>8);
(unsigned char)(value>>16);
(unsigned char)(value>>24);
f_MsgTx(msg);
}
44
ORODJE ZA DIAGNOSTIKO
void Tmod_ldtp::f_CanRxInterpreter(structCanMsgTypeUser str_MsgRx)
{
//preverjanje ali je sporocilo namenjeno nam (klientu)
if((str_MsgRx.MessageID == LDTP_clientAdd) && (str_MsgRx.DataLen == 8))
{
BYTE identification, tmp;
tmp = str_MsgRx.Data[0];
identification = (tmp>>4) & 0x0F;
uniDWord value;
//preverjanje ali gre za normalno ali za periodicno branje
if(str_MsgRx.Data[0]<73) //<periodicno branje
{
//interpretacija LDTP sporocila za peridoicno spremljanje
structCanMsgTypeUser message;
f_ReceiveVar(message);
periodic_LDTP_msg.values[0] =(int)str_MsgRx.Data[2] +
((int)str_MsgRx.Data[3]*256);
periodic_LDTP_msg.values[1] =(int)str_MsgRx.Data[4] +
((int)str_MsgRx.Data[5]*256);
periodic_LDTP_msg.values[2] =(int)str_MsgRx.Data[6] +
((int)str_MsgRx.Data[7]*256);
TMessage msg;
msg.Msg = WM_LDTP_PERIODIC_READ;
msg.WParam = 0;
msg.LParam = 0;
Owner->Dispatch (&msg);
=
=
=
=
str_MsgRx.Data[4];
str_MsgRx.Data[5];
str_MsgRx.Data[6];
str_MsgRx.Data[7];
//ali gre za
45
ORODJE ZA DIAGNOSTIKO
if(str_MsgRx.Data[0] == 0xF1)
{
// ce gre za LDTP read, sem prihajajo paketi s prebranimi elementi iz
//OD serverja z 16 biti.
// interpretiramo ...
RX_LDTP_msg.ldtp_id = str_MsgRx.MessageID;
RX_LDTP_msg.Value = value.dword;
RX_LDTP_msg.Address = address.byte[2];
RX_LDTP_msg.length = VarWord;
RX_LDTP_msg.read_write = VarRead;
RX_LDTP_msg.memory_type = VarRam;
TMessage msg;
//...ter posljemo Windows message
msg.Msg = WM_LDTP_READ;
msg.WParam = 0;
msg.LParam = 0;
Owner->Dispatch(&msg);
}
if (str_MsgRx.Data[0] == 0xF2)
{
// ce gre za LDTP read, sem prihajajo paketi s prebranimi elementi
// iz OD serverja z 32 biti.
//interpretiramo...
RX_LDTP_msg.ldtp_id = str_MsgRx.MessageID;
RX_LDTP_msg.Value = value.dword;
RX_LDTP_msg.Address = address.dword;
RX_LDTP_msg.length = VarDword;
RX_LDTP_msg.read_write = VarRead;
RX_LDTP_msg.memory_type = VarRam;
TMessage msg;
//...ter posljemo Windows message
msg.Msg = WM_LDTP_READ;
msg.WParam = 0;
msg.LParam = 0;
Owner->Dispatch(&msg);
}
if(str_MsgRx.Data[0] == 0xF5)
{
//sem prihajajo 16 bitni potrditveni paketi(write) za vpisovanje v OD
serverja
}
if (str_MsgRx.Data[0]== 0xF6)
{
//sem prihajajo 32 bitni potrditveni paketi(write) za vpisovanje v OD
serverja
}
}
46
ORODJE ZA DIAGNOSTIKO
47
ORODJE ZA DIAGNOSTIKO
void Tmod_ldtp::f_ReceiveVar(structCanMsgTypeUser message)
{
int values[3];
int buffer_index;
int Nindex;
values[0] =(int)message.Data[2] + ((int)message.Data[3]*256);
values[1] =(int)message.Data[4] + ((int)message.Data[5]*256);
values[2] =(int)message.Data[6] + ((int)message.Data[7]*256);
Nindex = message.Data[0];
for (int i = 0; i < 3; i++) {
buffer_index = (Nindex * 3) + i;
if(buffer_index >= num_addresses)
{
break;
}
if (var_types[buffer_index]==0)
{
var_read_vars[var_diary[buffer_index]] = values[i];
var_iscomplete[var_diary[buffer_index]] = 1; //! ce je enaka
ena je spremenljivka prebrana do konca
}
else if(var_types[buffer_index]==1)
{
var_read_vars[var_diary[buffer_index]] =values[i];
var_iscomplete[var_diary[buffer_index]] = 0; //! ce je enaka
nic spremenljivka ni prebrana do konca (sledi se naslednjih 16 bitov
spremenljivke)
}
else if (var_types[buffer_index]==2)
{
var_read_vars[var_diary[buffer_index]] =
(var_read_vars[var_diary[buffer_index]] * 65536) | values[i];
var_iscomplete[var_diary[buffer_index]] =1;
}
}
}
ORODJE ZA DIAGNOSTIKO
simbolov.
t_base_type _DIE je struktura, ki predstavlja objekt DIE osnovnega podatkovnega
tipa. Med osnovne podatkovne tipe programskega jezika spadajo integer, character,
string
t_symbol je struktura, ki predstavlja en dokonno interpretiran simbol. Je uporabnika
struktura, ki sestavlja uporabniku razreda dostopno tabelo simbolov (uporabljeno v
uporabnikemu vmesniku za branje pravilnih vrednosti iz naslovov).
4.4.3.1
Delovanje modula
objektov DIE.
Z zanko for se spet sprehodimo, tokrat po vseh objektih DIE, ki so podrejeni
parent_DIE, ter preberemo atribut id, ki nam podaja vrednost naslova.
49
ORODJE ZA DIAGNOSTIKO
Pri vsakem objektu DIE se sprehodimo skozi sekcije z atributi in shranimo v t_DIE
tiste vrednosti, ki so za nas pomembne (razlini t. i. tagi nosijo razline informacije):
DW_TAG_VARIABLE zapisi spremenljivke
DW_TAG_BASE_TYPE zapis osnovnega podatkovnega tipa
(najniji nivo)
DW_TAG_STRUCTURE_TYPE zapis tipa strukture
DW_TAG_MEMBER zapis podrejenega elementa strukture
DW_TAG_DEF zapis typedef podatkovnega tipa
DW_TAG_UNION_TYPE zapis tipa unije
DW_TAG_ARRAY_TYPE zapis tipa tabele
DW_TAG_SUBRANGE_TYPE zapis dimenzij polja
Naslovi spremenljivk so razdeljeni na ve nivojev. e program vidi, da element ni
najnijega, osnovnega tipa, gre o spremenljivki poizvedovat za nivo nie. e
spremenljivka nima nijega nivoja, jo vpie. Podrejene elemente rekurzivno obdelamo
z enako funkcijo (rekurzivnost funkcija se klie znotraj sebe). Druga metoda preie
serializirane objekte DIE, da dopolni e druge informacije posameznega simbola. Ko
50
ORODJE ZA DIAGNOSTIKO
Slika 25: Primer dela datoteke xml z zapisom dwarf. Oznake v oglatih oklepajih lahko zunanji
parser pravilno interpretira ter nam s tem privaruje veliko asa pri branju simbolov iz
datoteke.
51
ORODJE ZA DIAGNOSTIKO
52
ORODJE ZA DIAGNOSTIKO
53
ORODJE ZA DIAGNOSTIKO
Odloitveni diagram
Prikazuje relacije med t. i. igralci in uporablja razline poti odloitve znotraj
sistema.
Sekvenni diagram
Predstavlja stanja sistema in prehode med njimi. Obiajno se uporablja v
54
ORODJE ZA DIAGNOSTIKO
55
SKLEP
6. SKLEP
Cilj diplomske naloge je bila izdelava orodja za diagnostiko sistemov na vodilu CAN v
realnem asu, ki bi nudil razvijalcu vpogled v notranjost delovanja mikrokrmilnika. Ena od
pomembnejih zahtev je bila uspena implementacija novega protokola LDTP, ki s svojo
prirejeno logiko dopolnjuje protokol CAN na vijem nivoju in omogoa preprosto zamenjavo
vmesnika povezave CAN. Velika prednost tega protokola je predvsem v dobrem in pravilnem
razporejanju paketkov, ki se izmenjujejo na poti od osebnega raunalnika do
mikrokontrolerja. Ta del velja posebej za periodino branje spremenljivk.
Programsko orodje se bo uporabljalo pri merjenju karakteristik elektrinih vozil v realnem
asu. Shranjevanje v datoteko omogoa poznejo obdelavo podatkov in s tem uinkovito
reevanje problemov, ki se pojavijo med delovanjem nekega sistema.
Uporabniki vmesnik in moduli so zasnovani tako, da so neodvisni drug od drugega, kar
omogoa spreminjanje uporabnikega vmesnika kot tudi dodajanje novih modulov k orodju.
Skupaj s prednostmi protokola CAN (preprosta povezljivost, robustnost, delovanje v realnem
asu ) tvori program uinkovito orodje za diagnostiko, ki je preprosto in prijazno do
uporabnika.
Razvoj programa lahko v prihodnosti poteka v smeri interakcije s konnim uporabnikom.
Zaslon za izpis vejih spremenljivk, ki bi omogoale konnemu uporabniku lepi pregled, in
implementacija grafa za izris spremenljivk so le nekatere izmed naprednejih funkcionalnosti
programa.
56
LITERATURA IN VIRI
57
LITERATURA IN VIRI
7. LITERATURA IN VIRI
[1.] Spletna stran Can Cia, protokol CAN (15.3.2013), http://can-cia.org
[2.]
Spletna
stran
Can
Cia,
protokol
CAN
osnovno
(15.3.2013)
www.can-cia/index.php?id?can
[3.] Spletna stran Wikipedia, Protokol (28.6.2013) http://sl.wikipedia.org/wiki/Protokol_(ra
%C4%8Dunalni%C5%A1tvo)
(1.7.2013)
https://en.wikipedia.org/wiki/Object-oriented_programming
[9.] Spletna stran Tehnoloke univerze Malezije, Object oriented programming (15.8.2013)
http://ocw.utm.my/file.php/42/01PPvsOOP-edit15Feb13.pdf
[10.] Spletna stran saylor, Advantages and Disadvantages
Programming
(15.8.2013),
of
Object-Oriented
http://www.saylor.org/site/wp-
content/uploads/2013/02/CS101-2.1.2-AdvantagesDisadvantagesOfOOP-FINAL.pdf
[11.] Spletna stran Direct industry, krmilnik letrika aek 1350 (10.3.2013)
http://pdf.directindustry.com/pdf/letrika/ac-controllers/26759-53849.html
[12.] Spletna stan Ifak systems, Ifak IsCan usb (15.3.2013) http://www.ifaksystem.com/en/communication-automation/mobile-parametration/products/iscan-usb/
[13.] Bob Swart, Mark Cashman, Paul Gustavson, Jarrod Hollingworth, Borland C++
builder 6 developers guide, Sams publishing, 2003
[14.] Spletna stran cplusplus, c++ vodi (6.3.2013) http://www.cplusplus.com/doc/tutorial/
[15.] Spletna stran tutorials point, c++ vodi (6.3.2013)
http://www.tutorialspoint.com/cplusplus
[16.] Spletna stran Sourceforge, RapidXML (8.4.2013) http://rapidxml.sourceforge.net/
[17.] Spletna stran Wikipedia, UML (15.8.2013)
http://en.wikipedia.org/wiki/Unified_Modeling_Language
[18.] Spletna stran Agiledata, Introduction UML (15.8.2103)
http://www.agiledata.org/essays/objectOrientation101.html
58
IZJAVA
Izjavljam, da sem diplomsko delo izdelal samostojno pod vodstvom mentorja prof. dr.
Alea Belia, univ. dipl. in.el. Izkazano pomo drugih sodelavcev sem v celoti navedel v
zahvali.
Matija Cej