Documente Academic
Documente Profesional
Documente Cultură
Catedra CPAE
Сhişinău 2004
U.T.M..
Indicaţiile metodice sunt destinate studenţilor U.T.M. cu specialitatea 2102 – „Sisteme
radioelectronice” şi vor servi ca ajutor la efectuarea lucrărilor practice, de laborator şi la
elaborarea proiectelor de an.
Redactor responsabil:
conf. univ.dr.
Serghei Andronic
U.T.M., 2004
Introducere
Indicaţiile metodice sunt destinate pentru instruirea studenţilor la efectuarea lucrărilor
practice şi de laborator la disciplinele pentru studierea arhitecturii microprocesoarelor,
măsurărilor, achiziţionării şi prelucrării datelor, reglării şi controlului automat, acţionărilor
electrice, comunicări telefonice şi radio, la fel şi robototehnică, mecanotronică, electronica
transportului auto, electronica de putere ş.a.
Indicaţiile metodice sunt orientate spre utilizarea microsistemului «AFN_MicroLab»
bazat pe un microcontroler tip Motorola M68HC11 care este cel mai utilizat în cele mai diverse
domenii de control electronic şi după mai multe estimări poate să mai fie utilizat şi pe viitor.
Succesul acestui microcontroler se datorează arhitecturii simple, dar flexibile, fiabilităţii înalte,
diverselor mijloace moderne de proiectare şi elaborare a softului. Cunoştinţele acumulate despre
acest microcontroler pot fi utilizate şi extinse asupra altor microcontrolere din familiile
HC12/16/24, Power PC ale firmei Motorola, familiile AVR ale firmei ATMEL ş.a.
- Instruirea studenţilor în elaborarea programelor se sprijină pe tehnologia de programare
modernă – EDT (Embeedded Development Tools) a microsistemului «AFN_MicroLab» -
un pachet de programe instrumentale – mediul de programare (pentru PC) pentru efectuarea
ciclului deplin de elaborare a programelor pentru microcontroler care se încarcă în memoria
operativă RAM sau se înscrie în memoria permanentă ROM.
Indicaţiile metodice pot fi utilizate pentru efectuarea diverselor tipuri de lucrări practice
şi de laborator la elaborarea programelor în scopul studierii:
- metodelor de organizare a proceselor de calcul;
- interacţiunii cu unităţile periferice;
- comunicare cu alte calculatoare prin porturi SPI şi SCI, I2C, I2S;
- metodelor de măsurare a parametrilor analogici: temperatură, presiune, tensiune, ş.a;
- metodelor de măsurare a parametrilor semnalelor discrete;
- metodelor de acţionare a dispozitivelor: chei, relee, ş.a.
- metodelor de acţionare a motoarelor electrice;
- metodelor de reglare discretă: P, PD, PI, PID.
- metodelor de manipulare cu mişcările roboţilor, ş.a.
Aceste indicaţii metodice şi microsistemul «AFN_MicroLab» pot fi utilizate cu succes nu
numai în procesul de învăţământ, dar şi în procesul de cercetări din domeniul comunicaţiilor,
automatizării proceselor tehnologice în termoenergetică, robototehnică, mecatronică, ş.a.
Capitolul 1. STUCTURA LOGICĂ a MICROSISTEMULUI.
1.1 Componenţa şi funcţiile de bază ale microsistemului.
Microsistemul «AFN_MicroLab» este proiectat pe baza microcontrolerului tip Motorola
M68HC11. În componenţa lui intră următoarele (fig. 1.1, 1.2):
- CPU – unitatea centrală de procesare (procesorul);
- RAM intern – un spaţiu mic de 256 octeţi pentru memorarea datelor curente;
- EEPROM intern – memorie reprogramabilă pentru diverse dare, caracteristici;
- Timere – un set de timere pentru sesizarea evenimentelor externe şi generarea semnalelor de
control;
- Generator – generatorul de semnale de tactare ale microsistemului;
- Port A, Port B, Port C, Port D, Port E – un set de porturi de bază pentru interacţiunea cu
diverse dispozitive;
RAM EEPROM
intern intern
Port A
Port D
Port E
Port Port
ADR DATA Port B Port C
Interfaţa tip SCI – pentru comunicarea în mod serial cu alte microsisteme sau calculator
personal;
- Interfaţa tip SPI – pentru comunicarea sau
controlul în mod serial cu unităţi
periferice;
- Convertor A/D – pentru conversia
semnalelor analogice în formă digitală;
Microcontrolerul M68HC11 are două
moduri de funcţionare:
a) monocip (single mode) -
microsistemul e bazat numai pe cipul
microcontrolerului;
b) extins (extended mode) -
microsistemul e bazat nu numai pe
cipul microcontrolerului, ci mai are un
set de cipuri auxiliare în calitate de
memorie externă, porturi adiţionale.
În microsistemul dat “Micro_LAB” este
utilizat modul extins, care include accesul la
Fig. 1.2 Sturctura internă a microcontrolerului.
trei tipuri de memorie externă: RAM şi ROM /
EEPROM extern, la fel şi două porturi suplimentare pentru extensia unităţilor periferice: Port
ADR şi Port DATA. Aceste două porturi sunt similare porturilor B şi C. Port ADR şi Port DATA
permit extinderea controlului până la 16 unităţi periferice.
15 Acum. D 0
grupate în 4 pagini; Fanion report
Fanion depasire
15 Reg. X 0
- setul de registre pentru Fanion zero
15 Reg. Y 0 Fanion negativ
memorarea operativă a I-intreruperi
15 Reg. SP 0
datelor (fig. 1.3). Report BCD
15 Reg. PC 0 X-intreruperi
Acest set de registre include: Validare Stop
Fig. 1.3 Setul de registre ale HC11.
- două acumulatoare pe 8 biţi, numite acumulator A şi acumulator B, care formează împreună
acumulatorul D pe 16 biţi: acumulatorul A prezintă octetul superior, iar B – octetul inferior;
- două registre IX şi IY specifice - de indexare, însă concomitent pot servi şi ca registre de uz
general;
- registrul SP – indicatorul stivei;
- registrul PC – contorul de program;
- registrul CCR – registrul S X H I N Z V C
şi totodată conţine un set de biţi cu S - blocheaza instructiunea C - reportul bituli MSB in operatii aritmetice fara semn.
STOP, daca S=1.
$C000 D7 D6 D5 D4 D3 D2 D1 D0 $BA00
datelor în memorie
$FFFF
Exemple:
Ai-2 Ai-2 LDAA #100,
LDAB #$255
Ai-1 LDAA #$FF
Ai-1
Ai Cod Operatie
Ai Cod Operatie
Ai+1 Date imediate
PC Ai+1 PC Ai+2
Ai+2
Adresare imediata
(cazul II)
Exemple:
CLRA, TSX, COMB Ai-2 Exemple:
LDD #$A00,
Fig. 1.5 Ai-1
LDX #$255
LDY #$FF
Ai Cod Operatie
Ai+3
PC Ai+2
Fig. 1.7
Adresare indexata
Ai-2
Ai-1
Ai Cod Operatie
Ai+1 Indice
PC Ai+2
Exemple:
LDAA 10, X
Ab ADD $A0, X
STD $E5, Y
Reg. X:= Ab
Reg. Y:= Ab
Ak:=[X/Y]+Indice
Ak-2
Ak-1
Ak Operand
Ak+1
Ak+2
Fig. 1.9
PC Ai+3
Fig. 1.8
Metoda de adresare prin indexare presupune că operandul se află într-o locaţie din
memoria RAM internă sau externă, porturi I/O, ROM, adică orice locaţie cu adresa din tot
spaţiul de adrese $0000 - $FFFF (vezi fig. 1.9), însă această adresă se calculează ca suma
registrului de indexare IX sau IY şi indicele, care se conţine în instrucţiune.
Metoda de adresare relativă presupune calculul adresei de salt în instrucţiunile de salt
relativ de valoare curentă a contorului de program – PC în baza deplasamentului. Sunt două
cazuri:
Adresare relativa
(cazul I - deplasament pozitiv) Adresare relativa
(cazul I - deplasament negativ)
Ai-2
Ak-2
Ai-1
Ak-1
Ai Cod Operatie - salt relativ
PCi+1 Ak Cod Operatie
PCi Ai+1 deplasament
Ak+1
Ai+2
Ak+2
Exemple:
BRA *+$50 Exemple:
BLT $C026 BRA *-$50
BGE ALPHA+20 BLT $C026
BGE ALPHA-20
Ak-2 PCi+1:=PCi + Deplasament
Ai-2 PCi+1:=PCi - Deplasament
Ak-1
Ai-1
PCi+1 Ak Cod Operatie
Ai Cod Operatie - salt relativ
Ak+1
Ai+1 deplasament
Ak+2
PCi Ai+2
Fig. 1.10
Fig. 1.11
a) deplasamentul este pozitiv şi saltul se va efectua spre adrese mai mari (vezi fig. 1.10);
b) deplasamentul este negativ şi saltul se va efectua spre adrese mai mici (vezi fig. 1.11).
Fig. 1.12 Lista porturilor I/O interne (partea I)
Fig. 1.14
Datorită faptului că microsistemul „Micro-LAB” este destinat instruirii de proiectare şi
elaborare a programelor de control, este introdus un element nou, anume – vectori imaginari sau
virtuali. Din cauza că programul nou elaborat se încarcă în memoria externă RAM, iar vectorii
reali se află în zona de memorie ROM, ocupată de monitorul-debuger al „Micro-LAB”, este
$2000
Subrutina prelucrare
intreruperi A
RAM Extern
pentru programe aplicative
(24576 byte)
Subrutina prelucrare
intreruperi B
$7FC0
Vectori intreruperi virtuali
$8000
RAM Extern
rezervat pentru monitor
(8192 byte)
$A000
I/O Registre Externe
(1536 bytes)
$B600
EEPROM Intern
(512 bytes)
$B800
I/O Registre Externe
(2048 bytes)
$C000
ROM Extern
pentru MicroLab monitor
(16384 bytes)
Deci, după cum este arătat în fig. 1.16 programul monitorului asigură jumătate de punte, adică de
la vectorul real la vectorul virtual. Pentru a asigura conexiunea deplină, în fiecare program al
utilizatorului trebuie să fie făcute definiţiile vectorilor virtuali, în care să fie plasate adresele
subrutinelor de prelucrare a fiecărei întreruperi (vezi fig. 1.17).
; . . . . . . . .
;*****************************************************************************
;************ Subrutine de prelucrare intreruperi **********************
;*****************************************************************************
;*****************************************************************************
;***************** Timer input/output OC & IC **********************
;*****************************************************************************
Int_OCn_ICm:
ldaa #OC1F|OC2F|OC3F|OC4F|OC5F|IC1F|IC2F|IC3F|IC4F
staa TFLG1 ; Se reseteaza toate fanionele
rti
;*****************************************************************************
;********** IRQ - intrerupere externa neidentificata **************
;*****************************************************************************
I_RTI: ldaa #$40 ; Real timer intrerrupt
staa TFLG2 ;
ldaa S_ALARM_1 ; Se inregistreaza
oraa #Err_2 | Err_3| Err_4 ; eroarea.
jmp RESTART
;*****************************************************************************
;********** IRQ - intrerupere externa neidentificata **************
;*****************************************************************************
I_IRQ:
ldaa S_ALARM_1 ; Se inregistreaza
oraa #Err_2 | Err_3| Err_4 ; eroarea.
jmp RESTART
;*****************************************************************************
;********** XIRQ - intrerupere externa neidentificata **************
;*****************************************************************************
I_XIRQ:
ldaa S_ALARM_1 ; Se inregistreaza
oraa #Err_2 | Err_3| Err_4 ; eroarea.
jmp RESTART
;*****************************************************************************
;***************** Illegal opcode **********************
;*****************************************************************************
I_IOC:
ldaa S_ALARM_1 ; Se inregistreaza
oraa #Err_0 ; eroarea.
jmp RESTART
; . . . . . . . .
;*****************************************************************************
; Vectori de intreruperi virtuali
;*****************************************************************************
.ORG $7FC1 ;
Vect_VIRT:
JMP I_SCI ;Citire din SCI.
JMP I_SPI ;SPI Serial transfer complete
JMP I_PAIE ;Pulse Accumulator Input Edge
JMP I_PAO ;Pulse Accumulator Overflow
JMP I_TOF ;Timer overflor.
JMP Int_OCn_ICm ;Timer output comp. OC5
JMP Int_OCn_ICm ;Timer output comp. OC4
JMP Int_OCn_ICm ;Timer output comp. OC3
JMP Int_OCn_ICm ;Timer output comp. OC2
JMP Int_OCn_ICm ;Timer output comp. OC1
JMP Int_OCn_ICm ;Timer input capture IC3
JMP Int_OCn_ICm ;Timer input capture IC2
JMP Int_OCn_ICm ;Timer input capture IC1
JMP I_RTI ;Real timer intrerrupt
JMP I_IRQ ;IRQ
JMP I_XIRQ ;XIRQ
JMP I_SWI ;SWI
JMP I_IOC ;Illegal opcode => Restart
JMP I_COP ;COP failure => Restart
JMP I_CMF ;Clock monitor failure => Restart
JMP START
.END START
Ciclul de Inscriere
figurile 1.18, 1.19.
BA0...BA4
Algoritmul de schimb de date
prin portul extins multiplexat se reduce BR/W
la următoarele acţiuni:
BD0...BD7
- se stabileşte adresa unităţii
BSTR
periferice;
- se stabileşte operaţia citire sau Write Write
$A200 $A200
înscriere;
Fig. 1.19 Inscrierea datelor în port extins.
- se setează datele pe liniile de date;
- cu ajutorul semnalului STR se formează un impuls, care prin frontul negativ se indică
finalizarea schimbului de date;
- portul se stabileşte în starea iniţială.
1.7 Portul de interacţiune cu convertorul analog-digital
Convertorul AD prezintă un convertor pe 8 biţi cu 8 canale multiplexate, care este
sincronizat de semnalul de sistem Eclock sau de un generator intern de tip RC. Acest convertor
consistă din 4 blocuri funcţionale (vezi fig. 1.20): portul E cu 8 intrări analogice; multiplexorul
analog; convertorul propriu-zis; unitatea de control şi memoria de stocare a rezultatelor.
Multiplexorul selectează o intrare analogică din cele 8 posibile ale portului E, care va fi
conectată la intrarea convertorului. Intrarea selectată este indicată in biţii CC, CB, CA ale
registrului de control ADCTL. Pinii portului E sunt permanent direcţionaţi ca intrări analogice,
astfel multiplexorul comută unul din pinii portului E la intrarea convertorului.
Conversia semnalului analogic de la intrarea selectată de multiplexor are loc în blocul
convertorului, care la rândul lui este format dintr-un convertor digital analog (CDA), un
comparator şi un registru al aproximărilor succesive (SAR). Fiecare conversie prezintă o
secvenţă din 8 comparări, începând cu bitul MSB – cel mai semnificant. Fiecare comparare
In fig. 1.22 este reflectată succesiunea de conversie a datelor în modul 2. Dacă SCAN =
1, atunci conversia va fi continuă şi va reflecta modul 4.
1.8 Portul de comunicare serială - SCI
Portul serial de comunicare - SCI prezintă o interfaţă asincronă de recepţie/transmisie
date, care funcţionează ca un subsistem independent. SCI are un format standard (un start bit,
8/9 biţi de date şi un stop bit) şi o multitudine de rate de transmisie. Receptorul şi emiţătorul sunt
independente cu excepţia ratei de transmisie, care e unică pentru ambele (vezi fig. 1.23 – schema
de transmisie date). Portul SCI suportă transmiterea datelor printr-o singură linie: RxD (PD0) –
recepţie şi TxD (PD1) – transmisie date.
Funcţionarea portului SCI este gestionată de trei registre de configurare. Două registre de
control (SCCR1 şi SCCR2) se utilizează pentru configuraea modurilor de funcţionare a portului.
Registrul ratei de transmisie (BAUD) selectează prescalerul şi dictează rata de transmisie.
Fiecare bit din registrul de control SCCR1 prezintă un fanion sau un bit de comandă, iar biţii din
SCCR2 validează intreruperile generate de situaţii anumite. Registrul de stare SCSR reflectă
starea curentă a portului printr-un set de fanioane: TRDE, RDRF, IDLE,ş.a.
Registrul de date (SCDR) este format din două register independente – registrul de transmisie şi
registrul de recepţie. Accesul la aceste două registre e canalizat de operaţia de citire sau scriere în
S1 Act. 1
AFN
Display Sn Act. n
MicroLab
Ac.1 Indicator
amu
Ac. n Indicator
PC (IBM)
UART
RS-232
RS-232
tastatura
şoricel
Program BIBLIOTECAR
Acest program are un set de ferestre, în care se afişează listingul programului, valorile
registrelor de bază, valorile registrelor porturilor I/O, numele şi valorile unui set de variabile
indicat. Rularea programului se poate efectua atât pas cu pas, cât şi în baza punctelor de oprire
stabilite de utilizator în punctele-cheie ale programului. Procesul de rulare este urmărit pe
fereastra cu listingul programului, în care o linie marcată reflectă instrucţiunea curentă şi
concomitent pe ferestrele cu valorile registrelor, variabilelor, porturilor I/O.
Rularea se efectuează cu scopul verificării corespunderii programului algoritmului
propus. Dacă pe parcursul rulării se observă în program nereguli sau diverse erori şi abateri de la
algoritm, atunci se recurge la modificarea necesară, uneori cardinală a programului. Deci, se
revine la etapele precedente de creare a programelor şi în rezultatul unui număr de iteraţii se
ajunge la programul scontat.
2.3 Tehnologia de elaborare a programelor în mediul instrumental IAR EWB
Sistem instrumental „IAR EWB” prezintă un sistem tip Turbo pentru elaborarea
programelor micro controloarelor încapsulate cu posibilităţi de editare a textelor surse, descrise
în limbajul C, cu posibilităţi extinse de a lansa şi alte programe pentru realiza toată schema
tehnologică (fig. 2.3). Programul „IAR EWB” permite crearea şi editarea aşa numitelor proiecte,
care includ în sine un set de fişiere, are câteva ferestre, în care se prezintă lista de fişiere din
proiect, textele programelor amplasate în fişiere şi alte ferestre auxiliare (fig. 2.7).
În mod similar cu sistemul instrumental precedent sunt posibilităţi de inspecta şi edita textul din
toate fişierele proiectului. Cu ajutorul comenzilor din meniu sau butoanelor de comandă se vor
lansa procedurile de translare, creare a programelor executive în conformitate cu schema
tehnologică. Raportul despre rezultatul translării programului se prezintă într-o fereastră aparte
„Messages”, în care se menţionează, dacă translarea s-a finalizat cu succes sau în caz contrar se
afişează lista de erori. Această listă descrie în detaliu tipul erorii, cu ce instrucţiune sau variabilă
este asociată şi în ce fişier şi care linie de program se află.
Sistemul instrumental „IAR EWB” include un program-debuger dezvoltat, numit „CSPY”, care
permite rularea programelor prin simularea lor pe calculator PC (fig. 2.8). Acest program
rulează programul la nivelul instrucţiunilor programului sursă în limbajul C şi permite
Fig. 2.8. Rularea programului la nivel de instrucţiuni C.
In realitate un ciclu poate avea o structură mai complicată nu numai corp din secvenţe
liniare sau ramificate, ci poate să conţină unul sau câteva cicluri de tip diferit. Corpul ciclului
interior trebuie să se conţină în întregime în corpul ciclului exterior. Astfel de structuri ciclice se
numesc cicluri încapsulate. In principiu ciclurile se pot îmbina în diferite nivele de atâtea ori de
cât e necesar (vezi detalii în cap. II din [23]).
Scopul lucrării : Lucrarea curentă are scopul de a familiariza studentul cu metodele şi
procedeele de organizare a algoritmilor cu ramificări şi cicluri şi de însuşire a tehnicii de
implementare a acestor tipuri de algoritmi în limbajul C şi de asamblare.
Pentru efectuarea cu succes a lucrării se recomandă de îndeplinit următoarele sarcini:
I. Din sursele recomandate de găsit răspuns la următoarele întrebări:
Cum se descriu condiţiile de ramificare cu ajutorul expresiilor relaţionale ?
Enumeraţi operaţiile utilizate în expresiile relaţionale.
Cum se descriu condiţiile complexe de ramificare ? Care este rolul operaţiilor logice ?
Cum se descrie o ramificare simplă în asamblor structurat şi în asamblor simplu ?
Cum se descriu ramificările cu blocuri scurte şi lungi în asamblorul structurat şi care
este echivalentul lor în asamblorul simplu ?
Cum se descriu ramificările cu condiţii compuse complexe în asamblorul structurat ?
Care sunt regulile de formare a ramificărilor cu condiţii legate prin operaţia logică –
disjuncţia sau conjuncţia ?
Care sunt regulile de formare a ramificărilor cu condiţii legate prin operaţiile logice -
disjuncţia şi conjuncţia ?
Ce numim ramificări încapsulate ?
Care sunt regulile de formare a ramificărilor încapsulate ?
Câte tipuri de cicluri cunoaşte-ţi ? Care este diferenţa dintre ele ?
Care este schema-bloc a ciclului cu postcondiţie ?
Cum se descrie un ciclu cu postcondiţie în asamblor structurat şi care este
echivalentul lui în asamblor simplu ?
Cum se descrie ciclul de tipul REPEAT cu condiţii complexe ?
Care este echivalentul ciclului cu postcondiţii complexe în asamblor simplu ?
Care este schema-bloc a ciclului cu precondiţie ?
Cum se descrie un ciclu cu precondiţie în limbaj C şi care este echivalentul lui în
asamblor simplu ?
Cum se descrie ciclul de tipul LOOP cu condiţii complexe ?
Care este echivalentul ciclului cu precondiţii complexe în asamblor simplu ?
Ciclul de tipul LOOP cu două condiţii separate: care e specificul lui ?
Cum se poate organiza un ciclu de tipul LOOP infinit ?
In ce cazuri se poate utiliza astfel de ciclu ?
Care este specificul ciclului cu contor ?
Ce se poate de folosit în calitate de contor în astfel de cicluri ?
Cicluri incluse: cum se descriu ele în limbaj C ?
Care sunt regulile de organizare a ciclurilor incluse în asamblor simplu ?
II. De selectat din capitolele II şi III din [23] câte două exemple de programe ramificate
(cu condiţii simple şi compuse) şi două exemple de programe cu cicluri de tipul
indicat de laborant cu condiţii simple şi compuse şi un exemplu de ciclu încapsulat şi
de realizat următoarele lucrări:
- de transcris exemplele în limbajul C şi de asamblare ;
- de realizat şi de rulat exemplele date cu ajutorul „Micro-LAB”-lui;
- de analizat codul generat de compilatorul C şi programele transcrise manual ;
- de format raportul pe lucrarea curentă, care să includă textul explicativ al
exemplului, listingul programului cu comentarii;
- interpretarea rezultatelor obţinute.
Frecv.
Valori.
Vmin. V’min. Vmed. V’max. Vmax..
Fig. 3.2 Distribuţia valorilor măsurate
scării de valori în 4 părţi, eliminarea ¼ din valorile minime şi ¼ din valorile maxime şi
medierea valorilor filtrate.
Considerând că caracteristica senzorului este liniară, transformarea valorii măsurate în
valoare a parametrului exprimată în unităţi de măsură se va efectua după următoarea formulă:
Obiectele de comandă pot fi de diverse tipuri, dintre care mai răspândite sunt următoarele:
1) Obiect static cu funcţia de transfer:
e TdelayS 1
Wob ( s ) Kob *
Tob s 1 Tob 2 * s 1
1 Kd * s
Wreg ( s ) KP 1
Ti s TFD * s 1
Mesaj 1 (cu adresa UCL2) M1
UCC M1
UCLn
c 2c
Prima sesiune Repetare sesiune
Fig. 3.5. Diagrama sesiunii schimbului de date între două unităţi: UCC şi UCL2.
obţinute de către programul aplicativ de pe staţia locală “Slave” în ultim moment. Dacă datele
recepţionate (SRD-data) nu conţin erori, atunci ele sunt predate ciclic prin intermediul
programului de comunicare al unităţii de comandă programului aplicativ local. Acest mod de
comunicare prevede la fel cerere de date fără a transfera date staţiei locale - (S_UPDATE -
data=Null). Programul aplicativ de pe unitatea centrală “Master” trebuie să primească ciclic
unul din trei răspunsuri: datele cerute (R_UPDATE-data) sau indicaţie că datele cerute
(R_UPDATE-data) nu sunt prezente sau o confirmare (mai bine-zis, infirmare) că datele
(S_UPDATE -data) nu au fost recepţionate. Primele două reacţii se consideră ca o confirmare
pozitivă a recepţiei datelor (S_UPDATE -data). Dacă o eroare a avut loc, atunci programului de
comunicare al unităţii de comandă în regim de “Master” trebuie să repete transferul.
In baza modalităţilor mai sus numite au fost protocolul de schimb de date între unităţile
de comandă ale reţelei distribuite de microcontroloare. Algoritmii şi programele de comunicare,
care realizează protocolul dat, efectuează schimbul de date în bază de sesiuni. O sesiune de
schimb de date dintre staţia “Master” şi o staţie “Slave” cuprinde mesajul M1 format şi transmis
de “Master” şi după o pauză trebuie să vină răspunsul de la “Slave” prin mesajul M2. De
exemplu, M1 - READ_ALL_DATA, M2 - RECEIVE_ALL_DATA,
CONFIRM_TRUE/CONFIRM_FALSE (vezi fig. 3.5). Dacă în cadrul unei sesiuni staţia “Slave”
îşi recunoaşte adresa sa, dar mesajul este eronat, atunci “Slave” transmite răspunsul
CONFIRM_FALSE. În cadrul unei sesiuni staţia “Master” dacă nu recepţionează răspunsul pe
parcurs intervalului de timp c, care depinde de viteza de comunicare sau răspunsul este eronat,
atunci se echivalează cu răspunsul CONFIRM_FALSE. Dacă în cadrul sesiunii precedente staţia
“Master” a primit răspunsul CONFIRM_FALSE, atunci se repetă mesajul M1. În cadrul de două
sesiunii precedente dacă staţia “Master” a primit răspunsul CONFIRM_FALSE, atunci se ia
decizia de a micşora viteza de comunicare sau/şi informarea personalului (sistemului) despre
situaţia creată. În mod similar se realizează toate celelalte modalităţi de comunicare.
Toate mesajele pentru oricare mod de comunicare pot avea un format unic cu structura
următoare: header (începutul), corp (conţinut) şi suma de control.
Note: Lungimea câmpurilor corespunde datelor fără protecţie. Dacă datele sunt protectate,
atunci lungimea câmpurilor se va mări în funcţie de modul de protecţie. De exemplu:
a) pentru codul Hamming (7,4) lungimea se dublează, iar pentru (22,16) – creşte cu 33%, adică
la 2 byte se mai adaugă 1 byte.
Headerul mesajului conţine informaţie de control utilă pentru organizarea procesului de
comunicare:
- adresa staţiei destinatare, căruia îi este adresat mesajul;
- adresa staţiei sursă, care transmite mesajul;
- codul comenzii de comunicare, care prescrie cum trebuie să fie transmis mesajul;
- numărul de byte, care reflectă lungimea corpului mesajului.