You are on page 1of 20

Universitatea Tehnica "Gh.

Asachi", Facultatea de Automatic i


Calculatoare, IASI
Proiect CSC
Comunicaii n sisteme de conducere
Tema nr. 2
Student:
Costea DanCristian!"#$%
Ursac &arius!"#$%
%uldum Ale'andru!"#$%
%uldum Andrei!"#$%
0
Cuprins
Tema proiectului
S(eci)ica*iile de (roiectare, )ormatul mesa+ului, descrierea (roiectului in
ansam,lu.
Prezentarea resurselor HW i SW utilizate
Descrierea (e scurt a resurselor hard-are )olosite de (roiect .microsistemul
&icro/ac 0!0C, (orturile de comunica*ie, modem radio1 i a mediului inte2rat de
de3voltare .u4ision51 i testare a codului im(lementat .6oIC70!1.
Protocolul Master-Slave
Descrierea (rotocolului &aster 8 Slave de acces la mediul de comunica*ie i
(articularit*ile im(lementrii lui la nivel )i3ic .9S$5$ cu modem radio sau 9S
":0, in )unc*ie de tem1.
Programul principal
Descrierea (ro2ramului (rinci(al .ini*iali3area resurselor i ,ucla (rinci(al, cu
tratarea comunica*iei i a inter)e*ei cu o(eratorul local1. Schema lo2ic a
(ro2ramului (rinci(al ;n varianta com,inat &asterSlave.
Pregtirea mesa!elor pentru transmisie
Descrierea )unc*iei de (re2tire a mesa+ului ;n varianta com,inat &asterSlave,
schema lo2ic i descrierea codului im(lementat.
Transmisia mesa!elor
Descrierea )unc*iei de transmisie a mesa+elor ;n varianta com,inat &aster
Slave, schema lo2ic i descrierea codului im(lementat.
"ecepia mesa!elor # descriere$ sc%ema logic i implementare
Descrierea )unc*iei de rece(*ie a mesa+elor ;n varianta com,inat &asterSlave,
schema lo2ic i descrierea codului im(lementat.
Concluzii
1
Tema proiectului
Folosind microsistemul &icro/ac 0!0C s se im(lemente3e un (rotocol de
comunica*ie serial de ti( masterslave, av<nd urmtoarele caracteristici:
! /ort C=&# .9S$5$1 )olosind modemul radio Satel
!:>#7
$ /arametri comunica*ie ?@## %aud, : ,i*i de date, (aritate (ar, ! ,it de
ST=/
5 Formatul mesa+ului Adres AB nod destina*ie
Cod )unc*ie: # sau !
Destinatia sau sursa mesa+ului, du( ca3
Cun2ime date
Date
Cod detectare erori 8 C9C .1
" Codi)icare mesa+ %inar
&ormatul mesa!elor'
Adres AB
destina*ie
Cod
)unc*ie
Surs .master1
Destina*ie .slave1
Cun2ime Date Suma de
control
! octet ! octet ! octet ! octet Cun2ime ! octet
()s.'
C<m(ul adres destinaie va con*ine adresa nodului care va rece(*iona
mesa+ul.
C<m(ul cod funcie (oate )i, du( ca3:
a1 # 8 mesa+ de intero2are .lun2ime date D #1 8 transmis de master ctre
un nod
slave sau de slave ctre master, ;n li(sa altui mesa+ util
,1 ! 8 mesa+ de date 8 mesa+ care con*ine un te't ASCII
C<m(ul surs/destinaie va indica:
un mesa+ de ti( ! transmis de nodul master 8 sursa mesa+ului
un mesa+ de ti( ! transmis de un nod slave 8 destina*ia )inal a mesa+ului
C<m(ul lungime re(re3int numrul de octe*i al c<m(ului de dateE
=ctetul din c<m(ul suma de control va )i calculat ca suma modulo $ .F=91
a tuturor octe*ilor
2
din c<m(urile anterioare.
&esa+ul va )i transmis ;n )ormat ,inar, octet cu octet, (ortului serial C=&#.
Prezentarea resurselor HW i SW utilizate
&icro/ac C0!0C este un sistem de de3voltare or2ani3at ;n +urul unui
microcontroler *n+ineon C,-,C.
/laca (rinci(al a microsistemului este (re3entata in Fi2. !, (rocesorul
C0!0C Fi2. $.
Fi2. !. /laca
sistemului
Caracteristici te%nice ale microcontrolerelor
,-,C'
variant ;m,unt*it a microcontrolerului
SA% :#C0!0A, com(ati,il &CS 0!E
memorie (ro2ram intern de (<n la
@"Gocte*i .cu e'ce(*ia variantei C,-,C-.,
utili3at i de sistemele &icro/ac 0!0C din
la,orator1E
inter)a* (entru memoria (ro2ram de
@"Gocte*iE
$0@ octe*i de memorie 9A& internE
$ Gocte*i de memorie F9A& internE
inter)a* (entru memorie de date e'tern
de (<n la @"Gocte*iE
arhitectur intern com(ati,il &CS 0!,
3
Fi2. $. /rocesorul
C0!0C
cu : re2istre D/T9 ;n loc de unul sin2urE
)recven* de tact de (<n la !#&A3, )r divi3or de )recven* .ciclu
main de !
Hs la @ &A3, res(ectiv de @##ns la !#&A3 8 varianta din la,orator1.
":I! linii IJ7 di2itale cvasi,idirec*ionale ,: intrri analo2ice
5 timere de !@ ,i*i .T#, T! i T$, ultimul (rev3ut i cu )acilit*i de
com(arare
ca(tur1E
convertor AJD de !# ,i*i cu autocali,rareE
(ort serial UA9T com(ati,il &CS0!, cu 2enerator de tact (ro2rama,ilE
(ort serial sincron SSC .com(ati,il S/I 8 Serial /eri(heral Inter)ace1E
modul CA6 .Controller Area 6et-orK1 inte2rat com(let im(lementatE
!> surse de ;ntreru(ere, or2ani3ate (e " niveluriE
ceas de 2ardE
" moduri de consum redus .Slo- Do-n, Idle &ode, SB J AB /o-er
Do-n1.
Caracteristici so+t/are'
&emoria (ro2ram 8 varianta C0!0CC, utili3at i de sistemele &icro/ac
0!0C nu are memorie (ro2ram intern, ;ns varianta C0!0C:9 dis(une de @"
Gocte*i de 9=&, iar C0!0C:7 are @" Gocteti de memorie =T/ .=ne Time
/ro2rammin21. Ca aceste variante, accesul la memoria intern 9=&J=T/ este
validat (rin a(licarea unui nivel lo2ic L!M (e linia 7A.7'ternal Access1.
&emoria de date 8 sin2ura di)eren* )a* de or2ani3area memoriei la un
microcontroler :#0$ este (re3en*a, ;n s(a*iul re3ervat memoriei e'terne de date
.FDATA1, a unei memorii interne de date de $ Gocte*i .F9A&1 i a unei (a2ini de
$0@ de octe*i de memorie ;n care sunt ma(a*i re2itrii de inter)a* ai modulului
CA6. Utili3area acestor )acilit*i su(limentare se (oate selecta e'(licit ;n
con)i2ura*ia microcontrolerului .F&A/#D# ;n SF9 SNSC=61.
Placa are urmatoarele caracteristici'
Inter)e*e de comunica*ie serial asincron:
O C=&# .9S$5$1 UA9T C0!0C 8 (ortul serial al microcontrolerului
C0!0CE
O C=&! .9S$5$1, C=&$ .9S":01 8 un circuit e'tern DUA9T /hili(s
SC$@C?$, cu dou canale inde(endente )ull du(le'E
O C=&5 .9S$5$1 UA9T AT:?C$#0! (ortul serial al co(rocesorului
AT:?C$#0!E
4
O /orturile seriale (ot lucra ;n modul asincron, cu !# sau !! ,i*iJcaracter i
cu rate
de comunica*ie de (<n la $5#," G,(s.
Inter)a* CA6:
O C0!0C inte2rea3 (e ci( un modul CA6 .Controller Area 6et-orK1 care
im(lementea3 ;n hard-are versiunea $.#% a (rotocolului CA6.
IJ7 di2itale
O !! linii IJ7 (ro2rama,ile, de nivel TTC
O : linii de ieire de curent mare .0##mA1E
O " linii de intrare i 5 linii de ieire TTC situate (e circuitul DUA9T /hili(s
SC$@C?$.
O Ciniile de intrare AJD (ot )i de asemenea )olosite ca intrri di2itale.
O Atunci c<nd co(rocesorul AT:?C$#0! nu este instalat, mai rm<n
dis(oni,ile
;nc @ linii IJ7 de nivel TTC.
Intrri AJD
O : intrri multi(le'ate conectate la convertorul intern AJD cu re3olu*ia de
!# ,i*iE
O durata unei conversii este de ?,@ Hs .!#" Geantionri J sec1.
Ieiri DJA
O " canale de ieire DJA im(lementate cu un convertor e'tern AD>$$@ cu "
canaleE
O re3olu*ia ieirilor DJA este de : ,i*i.
Inter)a* CCD
O (ermite controlul oricrui a)ia+ cu cristale lichide ,a3at (e controlerele
AD"">:#, AD@!:5# i com(ati,ile.
Conector e'tensie
O ma2istralele de adrese i date, liniile de reset i de ;ntreru(ere sunt
dis(oni,ile la
un conector cu 0# de (ini (entru conectarea unor (eri)erice e'terne.
Conectarea dintre placa si calculator
Comunicatia intre cele $ ... se reali3ea3a cu a+utorul a $ (ro2rame
.6oIC70! si u4ision51.
/ro2ramul 0o*C1,-. Acesta este un (ro2ram de inter)a* cu sistemul
&icro/ac 0!0C ce (ermite ;ncrcarea i de(anarea sim,olic a a(lica*iilor la
distan*, la nivel de cod surs, direct (e sistemul cu microcontroler. 6oIC7
(ermite o de(anare avansat a (ro2ramelor, ;n condi*ii mult mai a(ro(iate de
cele ;n care va )unc*iona ;n )inal, )r utili3area unui instrument so)isticat i
scum( de ti( IC7 8 InCircuit 7mulator .no IC71. Inter)ata (ro2ramului este
(re3entata in Fi2. 5.
5
Fi2. 5.
/ro2ramul u2ision3. Cu a+utorul acestuia, vom (utea com(ila si he'edita
(ro2rame ce vor )i incarcate ulterior (e (laca cu a+utorul 6oIC7. /entru utili3are,
vom creia un (roiect, in care vom introduce ca li,rarii )isierele : m(0!0.c,
lcddrv.c, co(drv.c, cirPue.c, mmio.a0! i startu(.a0!, avand ast)el acces la )unctii
(rede)inite.
Sistemul &icro/ac 0!0C dis(une de " (orturi seriale:
O C(M4 /ortul serial 56"T C,-,C 8 echi(at cu un ada(tor de linie 9S
O C(M- i C(M2 dou canale seriale )urni3ate de inter)a*a e'tern 756"T
P%ilips SC28C92. C=&! este echi(at cu un ada(tor 9S$5$, iar C=&$ este
echi(at cu dou ada(toare 9S":0.
O C(M3 /ortul serial 56"T 6T:9C24,- 8 (re(ro2ramat i echi(at (entru a
asi2ura o inter)a* serial asincron 9S$5$ ,u))eri3at, )ulldu(le', la vite3a de
?@## %aud.
Ciniile seriale C=&#, C=&! i C=&5 ale &icro/ac 0!0C sunt accesi,ile
la trei conectori D%? av<nd o or2ani3are 9S$5$ modi)icat, (entru a (ermite
conectarea lor la /C )olosind un ca,lu cu cone'iuni directe (in la (in, de ti( DT7
DC7 .Data Terminal 7Pui(ment 8 Data Communication 7Pui(ment sau
calculatormodem1.
Din (unctul de vedere al )lu'ului de date vehiculat, comunica*ia dintre
dou noduri interconectate (rintro le2tur serial 9S$5$ (oate )i de 5 ti(uri:
simple; 8 comunica*ie ;ntrun sin2ur sens, cu un sin2ur )lu' de date: un nod
doar transmite .surs1, iar cellat doar (rimete date .destina*ie1E
6
duple; 8 comunica*ie ;n am,ele sensuri, cu dou )lu'uri de date inde(endente:
nodurile (ot transmite i (rimi date simultan .am,ele noduri (ot )i at<t surs c<t i
destina*ie1E
%al+-duple; comunica*ie ;n am,ele sensuri, cu dou )lu'uri de date
;ntre*esute: nodurile (ot transmite i (rimi date, dar nu simultan .un nod (oate )i
la un moment dat )ie surs, )ie destina*ie1.
Protocolul Master-Slave
In cadrul (roiectului se conectea3a cele 0 noduri &icro/ac0!0C intro
retea 9S$5$, (rin canalul C=&#. Qntruc<t standardul 9S$5$ nu su(ort
coli3iunile se va utili3a tehnica de control al accesului la mediu masterJ slave.
Aceasta tehnic (revede e'istenta unui nod numit master .ar,itru central1 care
s controle3e momentele in care celelalte noduri din retea (ot transmite sau
rece(tiona date. Dre(tul de acces este acordat de catre master , (e rand, in mod
ciclic, )iecarui nod slave , (rintrun mesa+ adresat acestuia. Fiecare mesa+ (e
care un nod slave il va transmite va trece mai intai (rin nodul master, a(oi acesta
va decide destinatia )inala, in )unctie de adresa indicata in mesa+ .
7'ista $ ti(uri de mesa+e : un mesa+ de intero2are, care va )i transmis de
master, (e rand, )iecarui slave (entru a determina daca acesta are un mesa+ in
aste(tare. Acesta nu va contine cam(urile de lun2ime si de date. In ca3ul in care
nu are mesa+ , slaveul va transmite la randul sau masterului un mesa+ de
intero2are.
Al doilea ti( de mesa+ este cel care contine date de transmis . 7l (oate
a(area ca ras(uns al slaveului la o intero2are din (artea masterului, si trimis mai
de(arte slaveului destinatie sau direct de la master, daca acesta a (rimit o
comanda de transmisie din (artea utili3atorului. .de la tastatura (ro(rie1
Descrierea )unctionarii (ro2ramului (entru nodul master'
Secven*a de ini*iali3are
- a)ia+ CCD
- co(rocesor tastatura
- (ort serial
- varia,ilele (ro2ramului .de e'em(lu adresa AB a nodului1
A)iare (arametri (ro2ram:
Cinia !: &asterJSlave, Adresa, C=&#JC=&$, ASCIIJ%inar
7
Cinia $: 9'& 8 nod ultimul mesa+ de date rece(*ionat cu succes i care
nod la transmis
A)iare meniu comen3i:
Cinia 5: ! 8 T'& $ 8 Stare
Cinia ": utili3at de comen3ile ! i $
&asterul este cel care coordonea3a transmisia mesa+elor in retea. Ale2e
un slave initial .slave !1 , a(oi va intra in ,ucla si va urma setul urmator de
instructiuni.
4eri)ica daca are un mesa+ de transmis nodului res(ectiv
.nodRslaveS.)ullDD# sau! 1. In ca3ul in care este un mesa+ de trimis , masterul il va
trimite la adresa indicata (rin )unctia T'&esa+.nod destinatie1 E in ca3 contrar
trimite un mesa+ de intero2are ..cod )unctie #1
A(elea3a )unctia 9'&esa+.slave1 cu adresa nodului de la care se astea(ta
un ras(uns trimisa ca (arametru. .aste(tarea se va )ace cu timeout o secunda ,
moment in care se va trece la urmatorul slave1. In ca3ul in care mesa+ul rece(tat
este de ti( #, se va trece la urmatorul nod slave. /entru un mesa+ de ti( !
adresat nodului master ,acesta il va a)isa (e ecran .linia a doua a CCDului1.
Daca vine un mesa+ de ti( ! (entru destinat altui slave, il va memora (entru o
transmitere ulterioara.
Du(a terminarea )unctiei 9'&esa+ se veri)ica daca sa a(asat o tasta.
/entru valoarea ! .T'&1 va solicita adresa si datele care urmea3a a )i trimise
slaveului , iar (entru valoarea $ se va veri)ica si a)isa starea ,u))erului nodului
slave indicat.
Descrierea )unctionarii (ro2ramului (entru nodul slave'
6odul slave atea(t ;n ,ucl in)init un mesa+ de la master sau o
comand de la tastatur. De la master e'ist (osi,ilitatea (rimii un mesa+ de ti( #
sau de ti( !. Qn ca3ul (rimirii unui mesa+ de ti( ! atunci acesta este a)iat (e linia
$, iar ;n ca3ul mesa+ului de ti( ! este transmis ctre master. Dac nodul slave nu
are un mesa+ de ti( ! de transmis atunci transmite ctre master un mesa+ de ti(
#. Dac a(are o comand de la tastatur, tratea3 comanda. /entru comanda
T'&: solicit adresa destina*ie, (reia adresa destina*ie, solicit mesa+ul, (reia i
memorea3 mesa+ul. /entru comanda stare mesa+e: solicit adresa destina*ie,
8
(reia adresa destina*ie, a)iea3 dac e'ist sau nu un mesa+ care atea(t s
)ie transmis.
Programul principal
Qn (ro2ramul (rinci(al sunt ini*iali3ate varia,ile local c<t i ini*iali3area
co(rocesorului i comunica*ia cu acesta cu comanda Co(Init.1.
De asemenea se ini*iali3ea3 C=&$, timerul # i (entru toate nodurile
,u))erul este 2ol. Cu )unc*ia A)isareTmeniu este a)iat (e lcd ;n ,ucla in)init
meniul. Qntro ,ucla -hile ;n (rima eta( se consider ca3ul ;n care nodul (e care
rulea3 (ro2ramul este de ti( &AST79 i dac nu e'ist un mesa+ ASCII de
transmis ctre slave se )olosete un mesa+ de intero2are
retea[i].bufbin.functie=POLL.
Tot ;n )unctia main sunt a(elate )unc*iile de transmisie mesa+ i rece(*ie
mesa+, )unc*ii care vor )i e'(licitate ;ntrun (ara2ra) ulterior.
Dac nodul (e care rulea3 (ro2ramul este slave este a(elat )unc*ia de
rece(*ie mesa+ de la master. 6odul slave de asemenea caut dac are ;n
,u))erele de transmisie vreun mesa+ de transmis.
Dac nu este transmis nici un mesa+ ctre master atunci se trimite un
mesa+ de intero2are ctre master, calculea3 suma de control i a(oi transmite
mesa+ul de intero2are.
/ro2ramul este conce(ut ;n aa mod ;nc<t (eriodic s )ie veri)icat dac s
a a(sat vreo tast. Qntrun cor( s-itch ;n ca3ul ;n care se a(as tasta ! se
tratea3 comanda transmisie mesa+ iar ;n ca3ul tastei $ se tratea3 comanda
citire stare ,u))er.
9
Reset
Initializari: LCD, corocessor,
tastat!ra, ort serial, ti"er #0
$aria%ile locale


Fig.4 Schema lo2ic a (ro2ramului (rinci(al ;n varianta com,inat &aster
Slave.
Pregtirea mesa!elor pentru transmisie
10
lin
i&5'
i&0
(!nere in %!))er*0+ "esa, (--L
re.atire "esa,*i+
trans"ite "esa,*i+
/a
e0ista tasta aasata'
a/resa %!))er
reia a/resa %!))er
a)isarte stare %!))er
solicita /estinatia
reia /estinatia
solicita "esa,
reia "esa,
re)acere "eni!
alta
n!
122 112
i334
/a
re.atire %!))er*i+
trans"ite "esa,*i+
recetie "esa,*i+
a)isare "esa, *entr! "aster+
i334
i&5'
n!
5)isare "esa, si s!rsa */aca "esa,6(-LL+
i&0
i334
i:ID
i334
%!))er*i+
.ol
&
6 n!
lin
i&1
(!ne "esa, /e intero.are *(-LL+
in %!))er*i+
%!))er*i+ .ol
5)isare "eni!
recetie "esa,
Dintre cele 5 )unctii ce tre,uiesc com(letate (entru im(lementarea
(roiectului, cea mai im(ortanta este cea de (re2atire a mesa+ului.
Aceasta are ca tar2het alcatuirea mesa+ului ce va )i trimis (rin retea de la
un nod la altul, si tre,uie sa res(ecte anumite re2uli (entru a (utea )i inter(retat
si utili3at corect de )unctiile de rece(tie si transmisie.
Con)orm schemei ,loc de la Fi2. 0., ce (ute in vedere atri,utiile ce
tre,uiesc inde(linite, dealun2ul (re2atirii mesa+ului tre,uie tinut cont de:
- ti(ul mesa+ului ce tre,uie (re2atit:
o date
o intero2are
- daca este de intero2are, mesa+ul ce tre,uie (re2atit este suma de
control a nodului, ce va )i e2ala cu adresa noduluiE
- daca este mesa+ de date, se construieste suma de control, tinand
seama de adresa nodului, codul )unctiei, lun2imea datelor si datele ce
tre,uie trimise.
/e ,a3a acestor re2uli sa im(lementat urmatoarea )unctie, (entru
(re2atirea mesa+ului ce va urma sa )ie trimis dealun2ul retelei.
void /re2atireTmesa+.int i1U
unsi2ned char scE
int +E
i) .reteaRiS.,u),in.)unctieDD/=CC1
reteaRiS.,u),in.scD reteaRiS.,u),in.adresaE
elseU
scDreteaRiS.,u),in.adresaE
scVDreteaRiS.,u),in.)unctieE
scVDreteaRiS.,u),in.destsrcE
scVDreteaRiS.,u),in.ln2E
)or .+D#E+WreteaRiS.,u),in.ln2E+II1
scVDreteaRiS.,u),in.dateR+SE
reteaRiS.,u),in.scDscE
XX
11
0
1
(re.atire "esa,*i+
Co/ )!nctie
r7i89%!)%in9sc&:%,
r7i89%!)%in9sc& r7i89%!)%in9a/r
Fi2. 0. Schema ,loc a )unctiei de (re2atire a mesa+ului
Transmisia mesa!elor
Cea dea doua )unctie ce tre,uie im(lementata, de transmisie a mesa+ului,
va )olosi im(licit cuvintele )ormate in )unctia de (re2atire a acestuia. In)ormatiile
(reluate ne a+uta (entru a sta,ili o comunicatie intre (laci.
/entru im(lementarea al2oritmului, ne vom 2hida du(a schema ,loc din
Fi2. @. unde (uteam o,serva (e lar2 atri,utiile acestei )unctii. Ca )el ca in )unctia
de (re2atire a mesa+ului, vom avea de controlat $ ti(uti de mesa+e, ce vor )i
di)erentiate du(a codul )unctiei:
- un mesa+ de date, ce tre,uie trimis (as cu (as, tinand cont de
urmatoarea ordine:
trimiterea adresei nodului ce va (rimi mesa+ulE
trimiterea lun2imii mesa+uluiE
trimiterea cuvantului (ro(iu3isE
trimitearea sumei de control.
- un mesa+ de intero2are, ce va avea ca sco( veri)icarea ,u))erului de
date al unui nod oarecare din retea.
9es(ectand aceste re2ului, sa im(lementat )unctia de transmitere a
mesa+ului.
void T'&esa+.int i1U
unsi2ned char +, ch, Y(trE
chDreteaRiS.,u),in.adresaE
ACCDchE
T%:D/E
SerTSendT%Zte.C=&#,ch,!1E
chDreteaRiS.,u),in.)unctieE
ACCDchE
T%:D/E
SerTSendT%Zte.C=&#,ch,!1E
12
%!)asc;%!)%in4
R<#
i) .chDD&7S1U
chDreteaRiS.,u),in.destsrcE
ACCDchE
T%:D/E
SerTSendT%Zte.C=&#,ch,!1E
chDreteaRiS.,u),in.ln2E
ACCDchE
T%:D/E
SerTSendT%Zte.C=&#,ch,!1E
)or .+D#E+WreteaRiS.,u),in.ln2E+II1U
chDreteaRiS.,u),in.dateR+SE
ACCDchE
T%:D/E
SerTSendT%Zte.C=&#,ch,!1E
X
X
chDreteaRiS.,u),in.scE
ACCDchE
T%:D/E
SerTSendT%Zte.C=&#,ch,!1E
i) .AD9T6=D[D&AST791
reteaRiS.)ullD#E
SerTS6DTDone.C=&#1E
X
13
#0=esa,*i+
tr & retea7i89%!)asc4
5CC & >tr4
#?8 & (4
@erA@en/A?Bte*C-=0, >tr,1+4
tr33
r7i89)!ll & 04
@erA@en/ADone*C-=0+4
>tr
Fig. 6 Schema ,loc a )unctiei de transmisie a unui mesa+
"ecepia mesa!elor # descriere
Sc%ema logic i implementare
Ultima )unctie ce a ramas de tratat, este cea de rece(tie a mesa+elor. 7a
este cea mai com(la'a dintre toate, deoarece are ca res(onsa,ilitati de a
decodi)ica mesa+ul (rimit, de a indenti)ica carui ti( de nod .master J slave1 ii este
destinat si de a noti)ica utili3atorul le2at de datele (rimite in ,u))er.
/entru a im(lementa aceasta )unctie, am urmarit cu atentie schema lo2ica
(re3entata in Fi2. >. /e scurt aceasta )unctie, tine mereu seama daca nodul care
(rimeste un mesa+ este de ti( master J slave, si va intra in aste(tarea
caracterelor corecte. Daca se intam(la ca datele rece(tionate sa )ie eronate, va
i2nora acele date .in)ormand utili3atorul1 si va aste(ta in)ormatii corecte. Du(a
identi)icarea nodului, )unctia va avea o (arte comuna, cea de recunoastere a
mesa+ului (rimit, a(oi va identi)ica iarasi daca nodul este master J slave (entru a
vedea ce tre,uie )acut cu mesa+ul (rimit.
9es(ectand schema ,loc (re3entata am alcatuit urmatorul cod, (entru a
im(lementa )unctia:
void 9'&esa+.int i1U
unsi2ned char +, ch, sc, screc, destsrc, ln2, )unctie, Y(trE
i) .AD9T6=DDD&AST791U
chDSerT9eceiveTT&=.C=&#,!###1E
i) .timeout1 U
error."Timeout nod "1E
CCDT/utchar.iI\#\1E
returnE
X
reteaRiS.)ullD#E
i) .ch[DAD9T6=D1 U
do
SerT9eceiveTT&=.C=&#,01E
-hile .timeoutDD#1E
error."Adresa 2resita"1E
returnE
X
X
else U
14
doU
do SerT9eceiveTT&=.C=&#,01E
-hile. timeoutDD#1E
chDSerT9eceiveT%Zte.C=&#,!1E
X-hile.ch[DAD9T6=D1 E
X
screcDAD9T6=DE
)unctieDSerT9eceiveTT&=.C=&#,01E
i).timeout1U
error."Timeout )unctie "1
returnE X
do SerT9eceiveTT&=.C=&#,01E
-hile.timeoutDD#1E
error."Functie eronata"1E
returnE
screcVD)unctieE
i) .)unctieDD&7S1U
destsrcDSerT9eceiveTT&=.C=&#,01E
i) .timeout1 U
error."Timeout destsrc"1E
returnE
X
screcVD destsrcE
i) .AD9T6=DDD&AST791 U
i) .reteaRdestsrcS.)ullDD!1 U
do SerT9eceiveTT&=.C=&#,01E
-hile .timeoutDD#1E
error."%u))er (lin"1E
returnE
X
X
ln2DSerT9eceiveTT&=.C=&#,01E
i).timeout1U
error."Timeout ln2"1E
returnE
X
screcVDln2E
i) .AD9T6=DDD&AST791 U
reteaRdestsrcS.,u),in.destsrcDiE
reteaRdestsrcS.,u),in.)unctieD)unctieE
reteaRdestsrcS.,u),in.ln2Dln2E
X
15
)or .+D#E+WreteaRiS.,u),in.ln2E+II1U
screcVD
reteaRiS.,u),in.dateR+SDSerT9eceiveTT&=.C=&#,01
i).timeout1U
error."Timeout date"1E
returnE
X
X
scDSerT9eceiveTT&=.C=&#,01E
i) .timeout1 U
error."eroare sc"1E
returnE
X
i).scDDscrec1
reteaRiS.)ullD!E
i).AD9T6=D[D&AST791 U
reteaRAD9T6=DS.,u),in.destsrcDdestsrcE
reteaRAD9T6=DS.,u),in.ln2Dln2E
)or .+D#E+WreteaRAD9T6=DS.,u),in.ln2E+II1U

screcVDreteaRAD9T6=DS.,u),in.dateR+SDSerT9eceiveTT&=.C=&#,01E
i).timeout1U
error."Timeout date"1E
returnE
X
X
scDSerT9eceiveTT&=.C=&#,01E
i) .timeout1 U
error."eroare sc"1E
returnE
X
i).scDDscrec1
reteaRAD9T6=DS.)ullD!E
else
error."eroare sc"1E
X
X
scDSerT9eceiveTT&=.C=&#,01E
i) .timeout1 U
error."eroare time out"1E
returnE
X
i).sc[DAD9T6=D1U
reteaRAD9T6=DS.)ullD!E
error."eroare sc"1E
16
X
X
17
tr&retea7i89%!)ascii
D5 CD
cE&F:F
retea7i89)!ll&0
G#i"eo!t no/ iF
cE&F:F
CD
R<#
G<roare inca/rareF
5stet c! #=-&5"s
ri"!l caracter al a/resei
HI
Recetioneaza si i.nora
rest!l "esa,!l!i *LJ+
D5 CD
D5 CD
5stet c! #=-&5"s ri"!l caracter al a/resei HI
5stet c! #=-&5"s al /oilea caracter al a/resei HI
ConKersie a/resa 5scii-Ee0 in %inar
5stet c! #=- 1000"s ri"!l caracter
al ras!ns!l!i /e la slaKe i
5stet )ara #=- ri"!l caracter al
"esa,!l!i /e la "aster
ti"eo!t
R0=esa, *i+
5DRAC-D && =5@#<R '
18
>
D5
G<roare a/resaF
Recetioneaza si i.nora
rest!l "esa,!l!i
R<#
R<#
ti"eo!t'
5stet c! #=-&5"s al
/oilea caracter al a/resei
HI
G#i"eo!t no/ iF R<#
ConKersie a/resa 5scii-Ee0 in %inar
a/resa 5DRAC-D' D5
CD
D5
CD
a/resa 5DRAC-D' CD
5stet c! #=-&5"s )iecare octet al rest!l!i "esa,!l!i
e care il stocEeaza in %!))er!l 5scii
@C=C & a/resa:
ConKersie co/ )!nctie /in 5scii-Ee0 in %inar
)!nctie
G<roare co/ )!nctieF
R<#
L2 M2
Retea7/estsrc89)!ll&1 '
)!nctie
ConKersie /estsrc ConKersie @C
G<roare @CF
@C&&@CR<C'
R<#
1 0
CD
D5
screc3&/estsrc
ConKersie ln.
screc3&ln.
"aster'
D5
CD
G<roare s!ra!nereF
R<#
D5
>
"aster
@tocEeaza in %!)%in )!nctia,
r7/estsrc89%!)%in9/estsrc&i4
@tocEeaza in %!)%in )!nctia,
r75DRAC-D89%!)%in9/estsrc&/estsrc
4
CD D5
ConKersie /ate, act!alizare screc ConKersie /ate, act!alizare screc
ConKersie @C ConKersie @C
@C&&@CR<C'
G<roare @CF r75DRAC-D89)!ll&1
CD D5 @C&&@CR<C'
G<roare @CF r7/estsrc89)!ll&1
CD D5
Fi2. >. Schema ,loc a )unctiei de rece(tie
Concluzii
6odul surs stochea3 datele ;ntrun ,u))er 2estionat (rin (ro2ram cu
sco(ul de a )ace )a unor cre teri tem(orare ;n vite3a de (roducere a datelor
sau chiar a unor intreru(eri ale )lu'ului de date la nivelul rece(torului.
7ste de tiut )a(tul c vite3a de rece(*ie a datelor nu (oate de(i vite3a medie
de consum a acestora, iar creterile )lu'ului de date la nivelul rece(torului nu (ot
dura (rea mult din cau3a ca(acit*ii )inite a ,u))erului de rece(*ie.
Functionalitatea (ro2ramului a )ost veri)icata (entru toate situatiile
(osi,ile:
Ymaster
Yslave
Ytransmisie mesa+
Yrece(tive mesa+
19
R<# R<#