Sunteți pe pagina 1din 206

NICOLAE PARASCHIV

ACHIZIIA I
PRELUCRAREA
DATELOR













UNIVERSITATEA PETROL GAZE DIN PLOIETI
2008
Achiziia i prelucrarea datelor
Capitolul 1 1
















.

1.1. Funciile automatizrii proceselor
Dup cum se cunoate, prin proces se nelege o succesiune de
transformri ce caracterizeaz diverse obiecte sau fenomene n evoluia lor
spaio - temporal. O importan aparte prezint procesele tehnologice
caracterizate pe lng transferuri masice i energetice i de transferuri
informaionale.
Unui proces i sunt de regul asociate trei categorii de obiective i
anume
- obiective de calitate;
- obiective de eficien;
- obiective de securitate.
Aceste obiective sunt de regul formulate prin specificaii asociate
produselor sau serviciilor rezultate, mrimea beneficiilor rezultate ca urmare a
valorificrii acestora, norme protecie a factorului uman, mediului i
infrastructurii procesului.
Conducerea ncadreaz activitate de dirijare a evoluiei procesului n
vederea realizrii obiectivelor impuse. Dup cum factorul uman este implicat
sau nu conducerea poate fi manual sau automat.
Conducerea presupune existena unui mijloc de conducere (MC), care s
aplice comenzi obiectului condus (OC) respectiv procesului. Ansamblul celor
dou entiti ncadreaz un sistem de conducere (SC).
Dac procesul se afl numai sub influena comenzilor, este suficient
determinarea comenzilor innd cont numai de obiective. Dup cum se observ
din figura 1.1 sistemul de conducere este deschis , mijlocul de conducere nefiind
informat n legtur cu rezultatul aciunilor sale.
P Pr ro ob bl le em ma at ti ic ca a s si is st te em me el lo or r
d de e a ac ch hi iz zi i i ie e i i p pr re el lu uc cr ra ar re e
a a d da at te el lo or r
C CA AP PI IT TO OL LU UL L
1
1

Achiziia i prelucrarea datelor
Capitolul 1 2








Existena unor perturbaii care acioneaz asupra OC independent de
comenzi determin ndeprtarea rezultatelor de la obiective, situaie care nu
poate fi rezolvat prin intermediul structurii din figura 1.1.
n consecin se impune luarea n consideraie la elaborarea comenzilor i
a altor elemente n afara obiectivelor.
Dac la determinarea comenzilor pe lng obiective sunt avute n vedere
i rezultatele se obine structura ilustrat n figura 1.2, n care conducerea este
corectiv.








Caracterul corectiv este dat de faptul c prin aciunea comenzilor
rezultatele sunt corectate n sensul c sunt readuse la nivelul obiectivelor. n
acest sens se stabilete o legtur informaional de la rezultate la MC, legtur
care s-a impus sub denumirea de feedback. Existena acestei legturi
informaionale face ca SC cu aciune corectiv s fie cu structur nchis n
raport cu rezultatele.
Este important de subliniat faptul c rezultatele sunt restabilite indiferent
de cauza care a determinat alterarea lor. Exist ns i un incovenient al aciunii
preventive determinat de faptul c exist intervale de timp n care rezultatele nu
sunt n concordan cu obiectivele
Incovenientul identificat la SC cu aciune corectiv este eliminat dac la
elaborarea comenzilor, pe lng obiective sunt avute n vedere i o parte din
perturbaii. Se obine structura din figura 1.3, n care se constat existena unei
legturi informaionale de la perturbaii la MC, legtur cunoscut sub
denumirea de feedforward.
Fig. 1.1. Sistem de conducere deschis: MC mijloc de
conducere; OC obiect condus (proces).
MC OC
Obiective Rezultate Comenzi
Fig. 1.2. Sistem de conducere cu aciune dup efect.
MC OC
Obiective Rezultate Comenzi
Perturbaii
Feedback
Achiziia i prelucrarea datelor
Capitolul 1 3







La un asemenea sistem comenzile sunt astfel determinate nct la
modificarea acelor perturbaii care sunt luate n considerare, rezultatele nu se
abat de la obiective. Aciunea preventiv are n vedere faptul c se previne
apariia unui efect reprezentat de ndeprtarea rezultatelor de la obiective.
Dac ns se modific o perturbaie care nu este considerat de MC
rezultatele nu mai sunt conforme cu obiectivele, iar acest efect nu mai poate fi
ndeprtat, ntruct SC este cu structur deschis n raport cu rezultatele.
Dezavantajele celor dou tipuri de aciune sunt pariale eliminate, dac se
utilizeaz un SC cu aciune mixt dup efect i dup cauz.









Sistemul acioneaz dup cauz (respectiv preventiv) la modificarea
perturbaiilor accesibile SC. La modificarea altor perturbaii aciunea este dup
efect (respectiv corectiv).
n contextul conducerii automate pot fi identificate patru categorii de
sisteme automate care permit realizarea urmtoarelor funcii:
- monitorizarea automat;
- reglarea automat;
- protecia automat;
- optimizarea automat.
Fig. 1.3. Sistem de conducere cu aciune dup cauz.
MC OC
Obiective Rezultate Comenzi
Perturbaii
Feedforward
Fig. 1.4. Sistem de conducere cu aciune dup efect i dup cauz.
MC OC
Obiective Rezultate Comenzi
Perturbaii
Feedback
Feedforward
Achiziia i prelucrarea datelor
Capitolul 1 4
Este de menionat faptul c pentru primele trei fucii apar constrngeri
severe de natur temporal. n continuare vor fi expuse consideraii succinte
privind fiecare categorie de sistem automat
1.1.1. Monitorizarea automat
Conceptul de monitorizare este legat nemijlocit de cunoaterea strii
momentane i a evoluiei parametrilor afereni unui proces.
Date privind valorile parametrilor se pot obine prin msurare i/sau prin
calcul. Este important de subliniat faptul c numrul minim de sisteme de
msurat este egal cu numrul gradelor de libertate ale procesului, respectiv
M L F , (1.1)
unde: L este numrul total de variabile specifice procesului;
M numrul de relaii independente dintre cele L variabile;
F numrul gradelor de libertate.
Pentru cele F variabile care trebuie msurate se impune existena cte
unui sistem de msurat la distan n structura cruia intr urmtoarele elemente:
- traductor;
- mediu (linie) de transmisie;
- instrument de vizualizare.
Traductoarele pot avea ieiri sub forma unui cod numeric, caz n care
practic adaptoarele aferente acestora conine un microcontrollere cu convertoare
analog-numerice (CAN) ncorporate. Sunt nc rspndite traductoarele cu
semnal de ieire analogic n domeniu unificat (uzual 420 mA).
Liniile te transmisie pentru semnale analogice sunt realizate n
exclusivitate din conductoare metalice. n cazul traductoarelor numerice (smart
transducers), acestea sunt conectate n reele n care transmisia poate fi cu sau
fr fir (wireless).
n ceea ce privete instrumentele de vizualizare (IV) acestea pot fi reale
sau virtuale. Instrumentele reale se prezint sub forma indicatoarelor i
nregistratoarelor digitale. Instrumentele virtuale prezint practic utilizatorului o
interfa grafic pe monitorul unui calculator, unde valorile parametrilor sunt
prezentate pe diferite tipuri de indicatoare programate.
Dup relaia care exist ntre numrul de parametri care se msoar i
numrul de instrumente de vizualizare s-au impus urmtoarele structuri de
monitorizare:
- structura total distribuit, n care exist cte un IV pentru fiecare
parametru;
- structura total concentrat, n care exist un IV pentru toi parametrii;
Achiziia i prelucrarea datelor
Capitolul 1 5
- structura parial distribuit, n care exist cte un IV pentru fiecare
grup de parametri (se consider c un grup de parametri este asociat
unui subproces).

1.1.2. Reglarea automat
Reglarea automat presupune atingerea i meninerea unei stri de
referin pentru proces fr intervenia nemijlocit a factorului uman. Din
punctul de vedere al complexitii exist dou tipuri de sisteme de reglare
automat (SRA) i anume:
- SRA cu structur convenional;
- SRA cu structur evoluat.
SRA cu structur convenional au, de regul, ca obiectiv meninerea
strii de referin pentru un singur parametru. n aceast categorie pot fi incluse
SRA cu aciune dup abatere (efect) i SRA cu aciune dup perturbaie (cauz),
considerate tipuri fundamentale de SRA specifice nivelului automatizrii
convenionale.
Pentru asigurarea funcionalitii un asemenea SRA conine pe lng
proces un dispozitiv de automatizare (DA) cruia i sunt specifice trei funcii i
anume:
- funcia de msurare;
- funcia de comand;
- funcia de execuie.
Pentru realizarea celor trei funcii n structura DA sunt incluse n ordinea
funciilor traductoare, regulatoare elemente de execuie. Este important de
subliniat faptul c regulatorul elaboreaz i transmite comanda deci ndeplinete
rolul mijlocului de conducere din structura unui sistem de conducere. n figura
1.5 sunt reprezentate scheme bloc ale SRA abatere i perturbaie n care este
evideniat dispozitivul de automatizare.








Fig. 1.5. Schema bloc simplificat de structur a unui SRA:
a abatere; b perturbaie; DA - dispozitiv de automatizare; Pr - proces.
Pr DA

i
y
P
m
a
I
DA
y
P
m

..
r
k r
1
p
1
p
k
p
n
Pr

b
Achiziia i prelucrarea datelor
Capitolul 1 6
O alt structurare identific la nivelul unui SRA o parte fixat i una
variabil. Partea fixat potrivit reprezentrii din figura 1.6 este constituit din
proces, traductor(oare) i element de execuie, n timp ce partea variabil este
reprezentat de regulator.



















Este important de subliniat c din punctul de vedere al echipamentelor
numerice de conducere traductoarele i elementele de execuie sunt considerate
echipamente periferice de proces. Aceast ncadrare are n vedere faptul c prin
intermediul traductoarelor procesul i face cunoscut starea, n timp ce
elementele de execuie implementeaz n proces comenzile elaborate de
echipamentul numeric.
SRA cu structur evoluat (reglare avansat) au asociate obiective
specifice ntregului proces (instalaii). n cazul reglrii avansate, mrimile
reglate sunt adesea reprezentate de parametri sintetici ale cror valori se
determin prin calcul. Prezena reglrii avansate nu exclude reglarea
convenional, cele dou categorii coexistnd n cadrul sistemelor ierarhice de
conducere.
Fig. 1.6. SRA cu evidenierea prilor fixat i variabil:
SRA abatere; SRA perturbaie.




Parte fixat




Parte variabil
C
EE Proces T
Parametri de
acordare
r
u
i
r
Perturbaii
a







Parte fixat




Parte variabil
C EE Proces
y
u
I
Perturbaii
T
b
Achiziia i prelucrarea datelor
Capitolul 1 7
n figura 1.7 se prezint structura unui sistem ierarhic organizat pe dou
niveluri, n care la nivelul inferior se realizeaz reglarea convenional iar la cel
superior, reglarea avansat. Comenzile elaborate la nivelul inferior se bazeaz
att pe mrimile preluate din proces, ct i pe mrimile de coordonare primite de
la nivelul superior. Aceste mrimi sunt generate avndu-se pe de o parte n
vedere obiectivele proprii ale nivelului coordonator, iar pe de alta reaciile
informaionale de la primul nivel.












Sistemul cu structura reprezentat n figura 1.7 este un sistem ierarhizat
pe vertical i distribuit pe orizontal. Acest tip de structurare creeaz premisele
realizrii sistemelor informatice integrate cu posibiliti de prelucrare unitar
att a informaiei de natur tehnic ct i a celei de natur economic.

1.1.3. Protecia automat
Sistemele de protecie automat (SPA) asigur realizarea obiectivelor
legate de securitate. Se au n vedere considerente legate de protecia factorului
uman, a mediului ambiant i a utilajelor implicate n desfurarea procesului.
n mod uzual funciile unui SPA pot fi divizate n dou categorii
importante i anume:
- funcii de informare;
- funcii de intervenie.
Funciile de informare sunt asigurate de ctre sistemele automate de
avertizare iar cele de intervenie de ctre sistemele automate de blocare i
comand.
Fig. 1.7. Structura unui sistem de conducere ierarhizat:
SCS - sistem de conducere superior; SCI - sistem de conducere inferior; SP -
subprocese; r - reacii de la subprocese; p - perturbaii; m mrimi de execuie; z -
reacii informaionale; v-mrimi de coordonare; - vector al obiectivelor pentru
nivelul superior; - vector al mrimilor de informare de la nivelul superior.

SCS
SCI
n
SCI
2
SCI
1

v
1
v
2
v
n
z
n
z
2
z
1

m
n
r
n
p
n
m
2
r
2
p
2
m
1
r
1
p
1

SP
n

SP
2
SP
1

Achiziia i prelucrarea datelor


Capitolul 1 8
Sistemele automate de avertizare (SAA) informeaz personalul de
operare n legtur cu starea momentan a unui utilaj sau cu producerea unui
eveniment. Aceste sisteme sunt cu structur deschis, dup cum se observ din
figura 1.8.













Funcie de situaia semnalat avertizarea poate fi: de poziie, de
prevenire sau de avarie. Avertizarea de poziie nu determin o anume aciune
din partea operatorului ntruct informeaz n legtur cu starea de funcionare
sau nu a unui utilaj. Avertizarea de prevenire va trebui s provoace o
intervenie, pentru a se prentmpina producerea unei avarii. Al treilea tip de
avertizare este legat de producerea unui eveniment care a cauzat o avarie.
Sistemele automate de blocare (SAB) sunt cu structur nchis i
determin scoaterea din funciune a unui utilaj sau seciune din instalaie,
ntruct nu s-a intervenit dup avertizarea de prevenire. Este de remarcat faptul
c SAB acioneaz numai la scoaterea din funciune, nu i la repornire.
Sistemele automate de comand (SAC) sunt componente ale SPA care
asigur pornirea condiionat a unor utilaje. Condiionarea pornirii const n
testarea ndeplinirii unor condiii ntr-o succesiune temporal impus, care
preced de exemplu cuplarea alimentrii cu energie a utilajului respectiv. Tot la
nivelul SAC se asigur oprirea normal a unui utilaj (nu n condiii de avarie).
1.1.4. Optimizarea automat
Conducerea optimal reprezint implic, de regul, aplicarea ctre proces
a acelor comenzi care extremizeaz o funcie de performan. Este important de
subliniat c nivelul de optimizare se situeaz de regul la un nivel superior
Fig. 1.8. Structura unui sistem de avertizare (SAA) : BLC - bloc logic de
comand; EAA element acionare avertizoare; AO - avertizor optic; AA -
avertizor acustic.
BLC
Parametri din proces
m u
P
1lim
EAA
AA
AO
P
1


T
1
T
k
T
n


P
k
P
n


P
klim


P
nlim

Limite de avertizare
Achiziia i prelucrarea datelor
Capitolul 1 9
reglrii convenionale. plicarea ctre un caz particular al conducerii prin fixarea
mrimilor de referin, elaborarea referinelor fcndu-se n acest caz n urma
extremizrii unei funcii de performan. n capitolul 5 al prezentei lucrri va fi
prezentat implementarea unui sistem de conducere optimal.

1.2. Tipuri de aplicaii n timp real
Timpul real (TR) reprezint o noiune utilizat pentru caracterizarea
operaiilor dintr-un sistem de conducere care se desfoar n sincronism cu
evenimentele lumii exterioare. Un sistem de conducere prezint comportare n
timp real dac deciziile elaborate de acesta sunt emise la momentul oportun,
respectiv sunt aplicate procesului nainte ca datele pe baza crora au fost
determinate aceste comenzi s-i piard valabilitatea.
n aceste condiii timpul reprezint o resurs esenial i n acelai timp
critic pentru echipamentele numerice implicate n conducerea proceselor. Este
o resurs deoarece toate mrimile aferente unui proces sunt dependente de timp.
Resursa timp este critic deoarece trebuie s existe o strns corelaie ntre
timpul procesului i cel al sistemului de conducere.
Timpul real este concretizat n timpul de reacie sau de rspuns al
sistemului la anumite modificri din proces sau la comenzi ale operatorului. Se
poate aadar stabili o legtur direct ntre ineria procesului i comportarea n
timp real. n ultim instan comportarea n TR este determinat de frecvena cu
care sunt preluate datele din proces i cu care sunt transmise comenzile ctre
acesta. n acest sens este cunoscut teorema lui Schanon care stabilete c
pentru a nu se pierde informaie, frecvena de eantionare trebuie s fie cel puin
dublul frecvenei semnalului care se achiziioneaz.
Avnd n vedere corelaia TR inerie se poate spune c timpul real nu
are o valoare universal ci este specific fiecrui proces. Din acest motiv o
denumire alternativ pentru noiunea de timp real este cea de timp util.
n continuare vor fi prezentate dou tipuri de aplicaii n timp real i
anume aplicaii de conducere i aplicaii tranzacionale.
Aplicaiile de conducere se refer la elaborarea i transmiterea de
comenzi ctre un proces.
Pentru exemplificare n figura 1.9 se prezint structura unei astfel de
aplicaii, care permite realizarea urmtoarelor funcii:
- achiziii de date;
- procesarea datelor achiziionate;
- actualizarea bazei de date de proces;
- elaborarea comenzilor;
Achiziia i prelucrarea datelor
Capitolul 1 10
- procesarea comenzilor n vederea transmiterii ctre elementele de
execuie;
- generarea de rapoarte.























Din analiza figurii 1.9 se observ c sistemul de interfa se situeaz la
limita sistemului de conducere n timp real, n timp ce traductoarele i
elementele de execuie se afl la limita procesului.
Aplicaiile tranzacionale presupun rezolvarea unor solicitri pe
care utilizatorii le adreseaz sistemului de timp real. Aceste solicitri sunt
cunoscute sub denumirea de tranzacii. Rezolvarea tranzaciilor implic
existena unor aplicaii de tratare, care pot face apel la diverse categorii de
resurse. n cadrul acestor tipuri de aplicaii pot fi enumerate cele din domeniul
bancar, comerul on-line, rezervarea de locuri, servicii n cadrul bibliotecilor etc.
COP
BGR
BDP
ABDP
MEC
Procesare Date
CTR
Procesare
Comenzi
SIA SEA
Fig. 1.9. Structura unui sistem de conducere n timp real: BDP-baza de date de proces;
BGR-bloc generare rapoarte; ABDP-modul actualizare BDP; MEC modul elaborare
copmenzi ;COP-consola operator; CTR ceas de timp real; SIA subsistem intrri
analogice; SEA subsistem ieiri analogice; TA- traductoare analogice; EEA - Elemente
de execuie analogice; EEN Elemente de execuie numerice.
TA EEA
PROCES
EEN
SEN
Achiziia i prelucrarea datelor
Capitolul 1 11
Pentru exemplificare n figura 1.10, se prezint structura unui sistem
tranzacional, unde tranzaciile sunt introduse de la un terminal.





















Dup cum se observ din figura 1.10 sistemul tranzacional implic
utilizarea unui numr de n terminale de la care diveri utilizatori pot introduce
diferite mesaje predefinite ca funcii i semnificaii denumite tranzacii.
Tranzaciile determin prelucrri al cror rezultat trebuie pus la dispoziia
utilizatorilor n timp real.

1.3. Trsturi specifice ale sistemelor de operare n timp
real
La realizarea i execuia unei aplicaii de timp real sunt implicate trei
categorii de resurse software (sisteme de programe) i anume:
- programe de sistem;
- programe aplicative;
- programe utilitare sau de serviciu.
Programele de sistem cunoscute ca software de baz asigur
urmtoarele funcii importante:
MGT
T1
T2
Tn
MMT
MACU
MAT1
SGBD
BDST
Fig. 1.10. Structura unui sistem de tranzacionare n timp real: BDST-baza
de date a sistemului tranzacional ; T1Tn terminale; MGT modul
gestiune terminale; MMT- modul monitorizare tranzacii; MACU modul
analiz comenzi utilizatori; MAT1MATn ; SGBD sistem de gestiune a
bazei de date; BDST baz de date a sistemului tranzacional.
MATk
MATn
Achiziia i prelucrarea datelor
Capitolul 1 12
- servicii comune pentru programe aplicative;
- planificare i coordonarea programelor aplicative.
n categoria serviciilor comune sunt de regul incluse urmtoarele
categorii de servicii:
- alocarea unitii centrale de procesare;
- alocarea memoriei;
- alocarea echipamentelor de intrare-ieire;
- tratarea ntreruperilor.
Dup cum se va arta ntru-n sistem de timp real aplicaiile (taskurile)
sunt ntr-o permanent competiie pentru deinerea resurselor sistemului.
Componente ale software-ului de baz trebuie s asigure alocarea pe baza unor
criterii stabilite a resurselor importante ale echipamentului numeric respectiv:
timpul unitii centrale de prelucrare i spaiile memoriei i de intrare-ieire.
n ceea ce privete tratarea ntreruperilor, acest mecanism are o
importan deosebit pentru sistemele de timp real ntruct sistemul de
ntreruperi constituie alturi de ceasul de timp real un suport puternic al
prelucrrii n timp real.
Programele aplicative realizeaz prelucrrile dorite de utilizator.
Aceste programe aplicative trebuie s se ncadreze n clasa aplicaiilor de timp
real, n sensul celor prezentate anterior (adic s fie de conducere n timp real
sau tranzacionale n timp real).
Programele utilitare sunt cele care asist programatorul la
dezvoltarea i implementarea programelor aplicative. n aceast categorie intr
printre altele: mediile de dezvoltare, diagnosticare i depanare, generatoarele
de cod i de rapoarte etc.
Cea mai important component a resurselor software de baz este
reprezentat de (SO). n mod obinuit u SO are dou funcii importante i
anume:
- gestionarea resurselor sistemului de calcul;
- realizarea unei interfee de dialog cu utilizatorul.
Specificul Sistemelor de Operare n Timp Real (SOTR) rezult din faptul
c exist programe care s fie executate condiionat de unul dintre factorii timp
i/sau evenimente externe.
Avnd n vedere aceste condiionri posibile, rezult c la un moment
dat n memoria sistemului pot exista mai multe aplicaii aflate n diverse stadii
sau stri.
Achiziia i prelucrarea datelor
Capitolul 1 13
n contextul prelucrrii n timp real unitatea funcional elementar de
program, independent din punct de vedere logic se numete task.
Principala component a unui SOTR este planificatorul
1
care asigur
secvenierea corect a evoluiei taskurilor. n mod obinuit la nivelul unui SOTR
exist dou niveluri de planificare a execuiei taskurilor i anume:
- planificarea pe condiii de timp
2
;
- planificarea pe condiii de evenimente
3
.
Satisfacerea cerinelor de prelucrare n timp real la achiziia datelor din
proces i la transmiterea comenzilor ctre acesta, impune o prelucrare paralel
sau cel puin pseudoparalel a taskurilor. Este cunoscut faptul c o prelucrare
pur paralel implic execuia simultan a mai multor instruciuni, execuie
posibil n sistemele cu mai multe uniti centrale de prelucrare (UCP). La
sistemele cu o singur UCP prelucrarea este pseudoparalel, fiecare task
deinnd controlul UCP un anumit interval de timp.
Un SOTR capabil s asigure o execuie paralel su cel puin
pseudoparalel a taskurilor se numete Sistem de Operare n Timp Real
Multitasking SOTRM..
Pe parcursul execuiei lor taskurile pot activa proceduri sau rutine care
pot fi de trei categorii i anume: dedicate, comune, reentrante.
Rutinele dedicate pot fi utilizate de ctre un singur task.
Rutinele comune pot fi activate din mai multe taskuri, ns succesiv.
Cu alte cuvinte, rutina poate apelat de un nou task, numai dup ce execui sa n
precedentul task a fost ncheiat.
Rutinele reentrante pot fi activate simultan din mai multe taskuri,
cu alte cuvinte se pot autontrerupe.
Cnd se vorbete de funcia de gestiune a SOTRM se au n vedere
urmtoarele tipuri de gestiune:
- gestionarea timpului UCP,
- gestionarea alocrii spaiului de memorie intern;
- gestionare echipamentrlor periferice aferente spaiului de intrare-
ieire.
Gestionarea timpului UCP. Dup cum se cunoate UCP asigur n
totalitate disponibilitile de calcul i de comand ale unui sistem de calcul.
Taskurile existente la un moment dat n memoria intern i disput dreptul de
utiliza UCP. Taskurile apte de a prelua controlul UCP sunt dispuse de ctre

1
Engl. -scheduler
2
Engl. time driven
3
Engl. event driven
Achiziia i prelucrarea datelor
Capitolul 1 14
planificator ntr-o coad de ateptare, care poate fi organizat funcie de
prioriti
4
, sau n ordinea sosirii.
n mod curent SOTRM preia controlul UCP n urmtoarele situaii:
- apariia unui eveniment extern (de exemplu ntreruperi din partea
procesului sau a operatorului);
- apariia unui eveniment intern ( cum ar fi o ntrerupere asociat unei
operaii de intrare-ieire);
- o ntrerupere de la ceasul de timp real;
- apelarea de ctre taskul aflat n execuie a unei funcii realizate de
ctre SOTRM;
- trecerea unui anumit interval de timp.
La preluarea controlului UCP, SOTRM va ntrerupe taskul aflat n
execuie la acel moment i va adopta una dintre urmtoarele decizii:
- va relua execuia taskului ntrerupt;
- va aduce n execuie taskul cu prioritatea cea mai ridicat din coada de
ateptare;
- va aduce n execuie taskul cu timpul de ateptare cel mai ridicat din
coada de ateptare.
n cazul n care mai multe taskuri pot avea aceeai prioritate, alocarea
UCP se poate realiza potrivit urmtoarelor strategii:
- primul intrat primul ieit
5
, conform creia taskurile cu prioritate egal
intr n execuie n ordinea sosirii;
- timp divizat
6
, conform creia fiecrui task i se aloc o cuant de timp
n care deine controlul UCP.
Unele SOTRM au facilitatea execuiei n criz de timp, care presupune
creterea automat a prioritii, n condiiile n care respectivul task nu a fost
executat un interval de timp superior unuia specificat.
Gestionarea memoriei interne. Existena unei zone n care s fie
organizat stiva proprie este o condiie absolut necesar pentru ca un task s
poat prelua controlul UCP. Pentru un SOTRM pot fi identificate patru strategii
de alocare a memoriei care vor fi succint analizate n continuare.
Strategia ncrcrii n zone fixe ale memoriei presupune c la un
moment dat n memoria intern a calculatorului se gsete la un moment dat un

4
Fiecrui task i se atribuie contextul timpului real un indicator de urgen sau importan n execuie care se
numete prioritate. Aceste poate fi un atribut fix, care s rmn nemodificat pe durata existenei taskului, sau
variabil (care se poate schimba pe parcurs vezi funcia RTK SetTaskPriority)
5
FIFO First Input First Output
6
Engl time sharing
Achiziia i prelucrarea datelor
Capitolul 1 15
singur task. Pentru a se putea realiza execuia funcie de prioriti taskurile
trebuie s fie ntreruptibile i transferabile. Aceste atribute presupun c toate
taskurile care nu sunt n execuie nu sunt rezidente n memoria intern.
Avantajul acestei strategii const n faptul c taskul aflat n execuie are
la dispoziie ntregul spaiu al memoriei interne. Preul pltit pentru acest
avantaj este reprezentat de timpul consumat cu transferurile, astfel nct timul
consumat cu tranziiile ntre stri crete.
O variant mbuntit a acestei metode const n asigurarea rezidenei
permanente n memoria intern a taskurilor critice, respectiv a taskurilor
nentreruptibile i a celor care impun timpi de tranziie foarte scuri.
Strategia overlay (suprapunere i nlnuire) presupune ca un task
rezident la un moment dat n memoria intern s dirijeze ncrcarea n memorie
a altor taskuri.
Strategia planificatorului presupune transferul gestionrii memoriei
interne ctre taskul aflat n execuie, respectiv ctre taskul care deine controlul
UCP.
Strategia coexistenei care presupune rezidena la un moment dat n
memoria intern a mai multor taskuri, comutarea fcndu-se n regim de
multiprogramare
7
.
Gestionarea operaiilor de intrare ieire. Alturi de UCP i
memoria intern, spaiul de intrare ieire constituie o alt int pentru
concurena dintre taskuri. Din acest motiv accesul la periferice este controlat,
reglementarea acestui acces aparinnd SOTRM. Pentru gestionarea operaiilor
de intrare ieire sistemele de operare pot pune la dispoziie drivere i rutine de
intrare- ieire.
Driverele sunt module componente ale SOTRM care dirijeaz
dispozitivele periferice fizice, reacionnd la ntreruperi pentru transferul datelor
i semnalnd rutinelor de intrare-ieire ncheierea operaiei de transfer.
Rutinele de intrare-ieire interfaeaz dispozitivele implicate cu
programele de aplicaie (taskuri), realiznd principial urmtoarele funcii
importante:
- semnalarea strii perifericului (liber sau ocupat);
- transmiterea cererilor de intrare-ieire ctre driverele echipamentelor
care vor fi implicate.
La gestionarea operaiilor de intrare-ieire, trebuie avut n vedere faptul
c acestea se pot efectua cu sau fr implicarea unui tampon de memorie. Dac

7
Multiprogramarea presupune o execuie ntreesut conform creia la un moment dat un singur task este
executat, dar mai multe sunt n execuie (respectiv au instruciuni care au fost executate i ateapt continuarea
execuiei).
Achiziia i prelucrarea datelor
Capitolul 1 16
se utilizeaz un asemenea tampon cererea de intrare-ieire este plasat ntr-un ir
de ateptare, dup care controlul UCP este dat taskului apelant. n al doilea caz
(respectiv la absena unui tampon de memorie) controlul UCP este redat taskului
apelant numai dup realizarea operaiei specificate.

1.4. Obiectivele i principiile ingineriei programrii n
timp real
Ingineria Programrii n Timp Real (IPTR) ncadreaz o mulime de
concepte, principii, metode i instrumente de dezvoltare a programelor
destinate aplicaiilor de timp real.
Abordarea n stil ingineresc a activitii de programare este impus att
de complexitatea aplicaiilor, ct i de exigene care privesc creterea
productivitii acestei activiti.
Principala misiune a IPTR const n asigurarea premiselor pentru
trecerea de la arta programrii la industria programrii. Pentru realizarea
acestei misiuni IPTR urmrete rezolvarea a trei categorii importante de
probleme i anume:
- stabilirea etapelor i n cadrul acestora a fazelor prin care trece produs
informatic pe durata existenei sale;
- elaborarea unor metode i instrumente asociate (incluse n tehnologii)
pentru asistarea elaboratorului n fiecare etap de dezvoltare;
- elaborarea pe baze tiinifice a unor metodologii pentru organizarea i
coordonarea activitilor specifice dezvoltrii n stil industrial a
produselor informatice.
Pentru rezolvarea acestor tipuri de probleme, IPTR i propune
urmtoarele categorii de obiective pentru produsele informatice dezvoltate :
- obiective de adaptabilitate;
- obiective de eficien;
- obiective de fiabilitate;
- obiective de perceptibilitare.
Adaptabilitatea presupune dezvoltarea de faciliti pentru
efectuarea de modificri ntr-o manier strict controlat. Modificrile pot fi
determinate de:
- adugarea de noi funcii;
- ameliorarea performanelor sistemului;
- corectarea unor erori de programare.
Pentru sistemele de conducere n timp real (SCTR) adaptabilitatea este
impus, printre altele de caracterul evolutiv al procesului, evoluie care poate
Achiziia i prelucrarea datelor
Capitolul 1 17
marca modificri ale obiectivelor, a strategiei de conducere i implicit a
programelor asociate.
Eficiena este impus de argumente care de regul au n vedere:
- minimizarea necesarului de resurse pentru execuia programelor;
- minimizarea efortului pentru dezvoltarea programelor;
- minimizarea timpului necesar pentru dezvoltarea programelor.
Fiabilitatea programelor se refer, ca i n cadrul echipamentelor
de conducere, la dezvoltarea de aptitudini pentru acestea de ndeplinire a
sarcinilor, un interval de timp prestabilit n condiii de lucru specificate. Este
important de subliniat c n cadrul programelor dimensiunile fiabilitii constau
n:
- evitarea, depistarea i nlturarea defectelor, pe ct posibil, n fazele
de proiectare, dezvoltare i implementare a programelor;
- existen de instrumente i resurse pentru nlturarea defectelor, dac
acestea se manifest pe parcursul funcionrii programelor.
Ca i n cazul echipamentelor fiabilitatea nu constituie un adaos ci se
dezvolt odat cu sistemul de programe.
Perceptibilitatea se refer la aptitudinea care trebuie conferit
programelor de a fi uor nelese i urmrite de ctre un alt programator sau
chiar de ctre autor, la un anumit interval dup finalizare
8
.
Pentru realizarea acestor obiective trebuie respectate o serie de principii,
ntre care o importan aparte prezint urmtoarele:
- principiul modularizrii;
- principiul abstractizrii;
- principiul localizrii;
- principiul uniformitii;
- principiul completitudinii;
- principiul confirmabilitii;
- principiul acoperirii.
Principiul modularizrii. Modularizarea reprezint maniera n care
trebuie structurat un program pentru a atinge mai uor un anumit scop.
Modularizarea constituie un factor determinant pentru satisfacerea obiectivelor
adaptabilitii i fiabilitii.
Principiul abstractizrii impune identificarea proprietilor comune
unor entiti aparent diferite i omiterea unor detalii specifice neeseniale. De

8
Aceast obiectiv mai este cunoscut i sub denumirea de claritate.
Achiziia i prelucrarea datelor
Capitolul 1 18
regul ntr-o structur ierarhic , fiecare nivel reprezint o abstractizare a
nivelelor inferioare, detaliile fiind pstrate pe acestea.
Principiul localizrii se refer dispunerea n vecintate fizic a
elementelor cu legturi ntre ele cum ar fi: subrutine, nregistrri fizice i logice,
pagini de memorie, etc.
Principiul uniformitii presupune asigurarea consistenei, un
exemplu n acest sens fiind respectarea notaiilor.
Principiul completitudinii are n vedere includerea n conceptele
abstracte a tuturor elementelor semnificative.
Principiul confirmabilitii afirm necesitatea formulrii explicite a
tuturor informaiilor legate de posibilitatea verificrii corectitudinii programelor.
Principiul acoperirii, promoveaz afirmarea aspectelor eseniale n
favoarea celor neeseniale, care pot fi transparente pentru utilizator.
Un alt aspect specific IPTR legat de fazele din existena unui program
respectiv:
- analiza cerinelor;
- elaborarea specificaiilor;
- proiectarea sistemului de programe;
- codificarea n program;
- instalarea i testarea programelor;
- ntreinerea programelor.
Analiza cerinelor este o etap n care beneficiarul colaboreaz
strns cu echipa de analiti din partea elaboratorului produsului informatic, n
vederea identificrii particularitilor problemei care urmeaz a se rezolva.
Aceast etap se finalizeaz cu tema de proiectare n care sunt formulate
cerinele i restriciile aplicaiei.
Elaborarea specificaiilor presupune formularea unui set de
specificaii care includ resursele funcionale i restriciile de operare.
Proiectarea sistemului de programe reprezint o etap n care se
stabilesc:
- structura pe module funcionale a programelor;
- relaiile ntre modulele componente i modalitile de comunicare;
- datele de intrare i rezultatele pentru fiecare modul;
- algoritmii care vor fi utilizai pentru implementarea cerinelor din tema
de proiectare.
Achiziia i prelucrarea datelor
Capitolul 1 19
Codificarea presupune generarea programelor pentru modulele
definite n etapa de proiectare i rularea lor pe un calculator gazd.
Instalarea i testarea programelor are n vedere transferul
programelor pe maina unde aplicaia urmeaz a fi executat. Respectiv pe
calculatorul int. n aceast etap mai pot fi corectate eventuale erori de
programare care nu au putut fi depistate n fazele anterioare.
ntreinerea programelor presupune eventuale corecii impuse fie de
neconcordane n raport cu tema de proiectare, fie de reveniri ale beneficiarului.
Fiecare dintre etapele anterioare conine cte o secven de validare,
promovarea la etapa urmtoare fiind condiionat de validarea celei precedente.
Dup cum se observ din figura 1.11, n care sunt evideniate aceste etape, etapa
de ntreinere conine o validare care are n vedere o anume activitate specific
acestei etape.

























Analiz
Validare
Nu
Da
Specificaii
Validare
Nu
Da
Proiectare
Validare
Nu
Da
Instalare -
testare
Validare
Nu
Da
Codificare
Validare
Nu
Da
Da
ntreinere
Validare
Nu
Da
Expirare contract
intreinere
Start dezvoltare aplicaie
Fig. 1.11. Procesul iterativ asociat etapelor din existena unui produs
informatic.
Nu
ncheiere dezvoltare aplicaie
Da
Achiziia i prelucrarea datelor
Capitolul 1 20
Pe parcursul derulrii etapelor de mai sus repartiia aproximativ a
costurilor este urmtoarea:
- analiz, elaborare specificaii, proiectare - 40 % din costuri;
- codificare - 20 % din costuri;
- instalare i testare - 40 % din costuri.

Costurile operaiilor de ntreinere le pot depi pe cele de elaborare.
Evident acestea sunt suportate de elaborator (dac se constat erori ale acestuia)
sau de ctre beneficiar (n cazul unor reveniri).

Pe parcursul diverselor etape, sunt implicai, n ordine; urmtoarele
categorii specialiti n tehnologia informaiei:
- analiti;
- proiectani;
- programatori;
- implementatori.
Coordonarea dezvoltrii i implementrii produsului informatic este
asigurat de ctre un manager de proiect.


Achiziia i prelucrarea datelor
21

















Dup cum s-a artat n capitolul precedent un echipament numeric (EN)
de calcul proceseaz datele ntr-o form specific acestuia i ofer rezultatele
ntr-o form accesibil utilizatorului. Acest mod de funcionare presupune
existena n structura EN a unei diviziuni capabile s rezolve comunicarea cu
mediul exterior reprezentat de utilizatori.
Obiectul prezentului capitol l constituie prezentarea funcional a
dispozitivelor destinate schimbului de informaii cu procesul tehnologic
reprezentat de traductoare i elemente de execuie.

2.1. Transferuri de date n echipamente numerice
Din punct de vedere structural frontiera dintre diviziunile de calcul,
comand si memorare i cea de comunicare este reprezentat de porturile de
intrare/ieire. n acest sens un port este un punct prin care se face schimb de
informaie cu mediul exterior. n continuare vor fi prezentate elemente privind
modalitile de transfer a datelor i mediile prin care acesta se realizeaz.
2.1.1. Transferul paralel al informaiei
Dup cum se observ din figura 2.1, un echipament periferic nu este
conectat direct la magistralele sistemului de calcul, ci prin intermediul unei
interfee.
Funcionarea nemijlocit a EP este coordonat de ctre CP, care se
conecteaz la microsistem prin intermediul ITF. Aceast delimitare net ntre
ITF i CP nu este ntotdeauna evident. Dac ITF i CP sunt incluse n acelai
circuit integrat poart denumirea global de controller , acesta putnd depi n
complexitate structura unui P.
E El le em me en nt te e c co om mp po on ne en nt te e a al le e
s si is st te em me el lo or r d de e a ac ch hi iz zi i i ie e
C CA AP PI IT TO OL LU UL L
2
2

Achiziia i prelucrarea datelor
22

n ceea ce privete interfeele, acestea pot fi nestandard sau standard,
ambele tipuri fcnd posibil comunicaia cu porturile. Comunicaia cu un port
necesit selectarea acestuia, urmat de nscriere sau de citire. Informaia citit
sau nscris este vehiculat pe magistrala de date a sistemului. Pentru sistem,
portul n care se nscrie este port de ieire, cel din care se citete este port de
intrare, iar cel din care se citete si se nscrie este port de intrare / ieire.










O interfa de comunicaie are structura de principiu din figura 2.2 i
necesit mai multe porturi concretizate n urmtoarele adrese :
- una sau dou adrese pentru portul de intrare/ieire date, dup cum
acesta este bidirecional sau constituit din dou porturi unidirecionale ;
- o adres pentru un port de intrare, care conine starea perifericului ;
- o adres pentru un port de ieire care va conine un cuvnt de comand
ctre periferic.















MS
I T F
C P E P
Fig. 2.1. Structur principial pentru conectarea unui periferic la
sistem: MS magistral sistem; ITF - interfa; CP - unitate de
comand a perifericului; EP - echipament periferic.
Periferic
RTE RTI
BSF
MC
MA
MD
Fig. 2.2. Structurde principiu pentru o interfa:
MA, MD, MC - magistrale de adrese, date, comenzi; BSE - bloc selecie funcie; RTI,
RTE - registre tampon de intrare, ieire.
Achiziia i prelucrarea datelor
23

De regul informaia se transmite n exterior de pe magistrala de date a
sistemului. Dac toi biii acesteia se transmit simultan, atunci transmisia este
paralel, iar dac se transmit succesiv transmisia este serial.
Figura 2.3 prezint diagramele de timp pentru transferul paralel al
urmtoarei secvene de cuvinte cu lungimea de un byte : 11110001, 00011110,
11000101. Dup cum se observ, pe liniile magistralei vor fi simultan, la
momentul de tact, biii corespunztori cuvintelor care se transmit ( se consider
c cei trei octei se transmit la momentele t
1
, t
2
, i t
3
).






















ntre seciunile unui P precum i ntre acesta si memorie, transmisia
este aproape n exclusivitate n format paralel. Vitezei ridicate de transmisie i se
opune o sensibilitate ridicat la perturbaii, motiv pentru care n exteriorul
sistemului transmisia se poate face la maximum 2-3 m, iar cu amplificatoare de
magistral la 50-60 m.
Pentru transferul paralel exist interfee standard programabile (funciile
sunt fixate prin program) ntre care remarcabile sunt : PIO (Parallel Input
Imp.
D
0

D
1

D
2

D
3

D
4

D
5

D
6

D
7

t
1
t
1
t
1
t
1
t
1
t
1
t
1
t
1
t
3
t
2 t
1
t
1
Fig. 2.3 Diagram de timp pentru transmisia paralel:
D
7
D
0
- biii care se transmit; MSb - bitul cel mai
semnificativ; LSb - bitul cel mai puin semnificativ.
LSb
MSb
Achiziia i prelucrarea datelor
24

Output) , PIA (Programmable Interface Adapter), PPF (Programmable
Peripheral Interface).

2.1.2. Transferul serial al informaiei
Transmisia serial, care este mai lent dect cea paralel, se folosete
pentru transferul informaiei ntre calculatoare sau ntre calculatoare i unele
categorii de periferice. Comunicaia se poate desfura intr-un singur sens
(simplex), in ambele sensuri, dar nu simultan (semiduplex), sau simultan n
ambele sensuri (duplex).
Indiferent de consistena fizic a semnalelor informaia poate fi transmis
asincron sau sincron.
n modul asincron momentele transmisiei sunt aleatoare, dar orice cuvnt
consum acelai interval de timp.
n figura 2.4 este evideniat transmisia serial asincron a octetului
11010100. n repaus linia este n starea 1 logic, iar transmisia fiecrui cuvnt
ncepe cu bitul de start care este 0 logic. La recepie se detecteaz la inceput
tranziia 10 a bitului de start. n situaia recepiei corecte a bitului de start se
preiau ceilali biti, ncepnd cu LSb i terminnd cu MSb. Transmisia cuvntului
se ncheie cu unul sau doi bii 1 de stop, dup care linia rmne n repaus (starea
1), sau se ncepe cu un nou bit de start (starea 0). Transmisia este denumit
funcie de lungimea total a cuvntului pentru a transmite un octet (8/10- pentru
un bit de stop, 8/11 pentru doi bii de stop). Viteza de transmisie a informaiei pe
o linie de comunicaie se msoar n bps (bii pe secund), iar viteza semnalului
se msoar n baud. Baud-ul este definit ca msura invers, a duratei exprimate
n secunde, a celui mai scurt element din codul semnalului. Este evident faptul
c n cazul informaiei codificate binar, cele dou viteze coincid. La frecvene
ridicate modul asincron devine ineficient, deoarece 2 sau 3 bii dintr-un cuvnt
nu sunt purttori de informaie.














t
1
t
1
Stop
Start
t
10
t
9 t
8
t
7
t
6
t
5
t
4
t
3
t
2
t
1

b
7
b
6
b
5
b
4
b
3
b
2
b
1
b
0

Ateptare
U
U
Impulsuri de
la generatorul
local
Fig. 2.4. Transmisie serial asincron 8/10.
Achiziia i prelucrarea datelor
25



n modul de transmisie serial sincron, cuvintele sunt transmise ntr-o
succesiune continu, sub form de bloc de date, fr bii de start i de stop.
Pentru a exista coresponden n timp (sincronizare), la emisie i la recepie se
transmite cte un bit de sincronizare pentru fiecare bloc de date. Pentru
transmisia la mari distane pe linie telefonic, semnalul digital este convertit
ntr-o frecven. n aceste condiii la emitor este necesar prezena unui
modulator, iar la receptor a unui demodulator, ansamblul celor dou elemente
fiind cunoscut sub denumirea de MODEM ( MODulator DEModulator).
n ceea ce privete interfeele standardizate destinate transmisiei seriale
sunt de menionat : UART (Universal Asynchronous Receiver Transmiter),
ACIA (Asynchronous Comunications Interface Adapter), USART (Universal
Synchronous and Asynchronous Receiver Transmiter).
Realizarea unei interfee seriale presupune n primul rnd realizarea unui
convertor paralel-serie (pentru emisie) i a unuia serie-paralel (la recepie) .
Ambele tipuri de convertoare pot fi realizate cu registre de deplasare. Conversia
paralel-serie presupune ncrcarea unui cuvnt intr-un registru, urmat de
deplasarea acestuia cu cte un rang la fiecare impuls de tact. Astfel, la ieirea
registrului se obin succesiv (serial) biii cuvntului de la intrare ncepnd cu
LSb. La conversia serie-paralel registrul este ncrcat serie cu cte un bit
(ncepnd cu LSb) la fiecare impuls de tact. Dup introducerea MSb cuvntul
este extras la ieirea n paralel a registrului .

2.1.3. Magistrale de comunicaie
n transferul de date sunt implicate echipamente i uniti funcionale
interconectate prin intermediul magistralelor de comunicaie.
n sens restrns magistrala (M) reprezint un grup de trasee prin care sunt
transmise semnale n interiorul unui sistem de calcul, ntre acesta i
echipamentele periferice, sau ntre mai multe sisteme de calcul.
n sens mai larg noiunea de M include:
mediul de transmitere (conductor metalic, eterul, fibr optic, etc.) ;
forma sub care sunt vehiculate semnalele (niveluri de tensiune,
durata impulsurilor, frecvena impulsurilor etc.) ;
dispozitivele de conectare de la fiecare capt.
n afara consistenei fizice prezentate, noiunii de M i se mai atribuie i un
coninut logic concretizat n modul de vehiculare a semnalelor, secvenierea lor
n timp, semnificaiile acestora.
Principial magistrala realizeaz urmtoarele funcii:
- transferul de informaie;
Achiziia i prelucrarea datelor
26

- sincronizarea, care permite cuplarea de echipamente cu caracteristici
dinamice diferite;
- comutarea, care faciliteaz utilizarea n comun a M.
Cu toate c din punct de vedere fizic circuitele de sincronizare i/sau
comutare se gsesc incluse n modulele deservite, conceptual acestea se
consider ca fcnd parte din M. Concretizarea realizrii acestor funcii impune
alegerea mediului fizic de transmitere, a protocolului logic de transmisie i a
manierei de alocare a M la utilizatori.
Uzual M se consider secionat n trei diviziuni i anume:
- magistrala de date asociat transmiterii datelor ntre memorie i P;
- magistrala de adrese prin care circul semnalele de identificare a
locaiei de memorare referite;
- magistrala de comenzi care vehiculeaz semnalele de comand i
control ale sistemului.
Caracteristicile importante ale unei M sunt lungimea i limea (prin
lime nelegndu-se numrul de linii n paralel). ntre acestea dou
caracteristici exist o strns corelaie determinat de structura fizic a mediului
de transmitere i de cost.
Deoarece actualele echipamente de conducere sunt sisteme
multiprocesor, n continuare vor fi prezentate cteva elemente specifice
comunicaiei n cadrul acestor sisteme.
Din punct de vedere topologic subsistemele pot fi puternic sau slab
cuplate. Termenul de puternic cuplat este folosit pentru definirea unui transfer
de informaie ntre procesoare i resurse comune (n primul rnd memoria) care
se consider concentrate. Termenul de slab cuplat se refer la comunicaia n
cadrul sistemelor n care att procesoarele ct i resursele sunt distribuite.
Sistemelor puternic cuplate le sunt specifice M paralele, iar cele slab cuplate
sunt caracterizate de existena M seriale.
O prim structur de sistem puternic cuplat este cea din figura 2.5, n care
procesoarele P1 i P2 utilizeaz n comun memoriile M1 i M2. Fiecare procesor
dispune de propria M, ceea ce impune ca fiecare memorie s dein un numr de
porturi de acces egal cu numrul procesoarelor. n cazul sistemelor cu un numr
ridicat de procesoare, structura M i mecanismul de acces multiport la memorie
devin deosebit de complexe, ceea ce limiteaz rspndirea acestui tip de
comunicaie.





P1
Fig. 2.5. Sistem puternic cuplat cu mai multe
magistrale:
P2
M1 M2
Achiziia i prelucrarea datelor
27

Structura din figura 2.6 utilizeaz o singur M, indiferent de numrul
procesoarelor i al blocurilor de memorie pe care le interconecteaz. Utilizarea
M se face prin divizarea timpului, fiecrui proces fiindu-i alocat, ciclic, un
interval de timp n care are acces la totalitatea resurselor (n spe la ntregul
spaiu de memorie). O asemenea soluie este atractiv datorit simplitii ei, dar
prezint dezavantajul unor performane n ceea ce privete viteza de transmisie.






O a treia metod de interconectare n cadrul sistemelor puternic cuplate o
reprezint utilizarea M ncruciate (cross-bar). Dup cum se observ din figura
2.7, n care este evideniat principiul metodei , prezena comutatoarelor pe
magistrale K
ij
permite comunicarea oricrui procesor, cu orice modul de
memorie, fiind posibile i transferurile simultane. De exemplu, n figura 2.6, n
timp ce procesorul P1 citete date din memoria M2, procesorul P2 poate s
nscrie date n memoria M1. Soluia cross-bar mrete viteza de lucru a
sistemului, simplific realizarea blocurilor de memorie, dar necesit un numr
mare de magistrale i un mecanism complex de comutaie.












Industria echipamentelor de conducere a proceselor a cunoscut o
abunden de tipuri de magistrale, marii productori ncercnd s impun ca
standard propriile structuri de M. Magistralele specifice sistemelor de conducere
sunt de regul ierarhizate i distribuite, corespunztor caracterului acestor
sisteme. n continuare vor fi prezentate elementele importante a dou standarde
P1
Fig. 2.6. Sistem puternic cuplat cu o singur
magistral.
P2
M1 M2
P1
Fig. 2.7. Sistem cu magistrale ncruciate.
K
12
K
11

K
22
K
21

P2
M1
M2
Achiziia i prelucrarea datelor
28

de organizare a magistralelor pentru echipamentele de proces i anume AMS i
VME.
Magistrala AMS a fost elaborat n Europa, de ctre firma Siemens i este
organizat pe 4 niveluri de comunicaie (figura 2.8).















Procesoarele asociate primului nivel sunt interconectate prin magistrale
pe 32 de bii, AMS32. Procesoarele P1 i P2 coordoneaz prin intermediul
magistralelor pe 16 bii AMS16 susbsistemele situate la nivelul inferior.
Diviziunea AMS8 a M este asociat nivelului de baz al sistemului ierarhic i
poate reprezenta, de exemplu, comunicaiile asociate unui C. n afara
comunicaiei de tip paralel ntre procesoare, standardul AMS oferi
posibilitatea comunicaiei de tip serial ntre acestea.
Magistrala VME, cu toate c s-a dorit s fie independent de fabricant,
este puternic orientat ctre familia de P Motorola. Din punct de vedere
structural, standardul VME impune 3 seciuni, evideniate n figura 4.9 i anume:
-VMX destinat conectrii unui procesor cu module pasive n structuri
monoprocesor;
-VME care permite cuplarea n configuraie multiprocesor a modulelor
active i pasive.
-VMS care ofer posibilitatea comunicaiei seriale ntre modulele active i
cele pasive.

P1 S1 P2
P3 P4 S2 P5 S8 S9
S5 S6 S7 S10 S11
AMS_8
AMS_16
AMS_32
AMS_8
AMS_8
AMS_16
Fig. 2.8. Comunicaia prin magistrala AMS :
P - procesoare (module MASTER); S - module subordonate (SLAVE).
Achiziia i prelucrarea datelor
29












Distribuia pe arii extinse a echipamentelor de conducere i supraveghere
impune conectarea acestora n reele de comunicaie, n care comunicaia este
serial iar schimbul de informaie se poate realiza ntre doi sau mai muli
parteneri. Principalele configuraii de reele sunt (figura 4.10):
- configuraie stea, n care un nod central este legat la toate celelalte
noduri ale reelei;
- configuraie multipunct, n care toate nodurile sunt conectate printr-o
legtur unic;
- configuraie n bucl, asemntoare celei multipunct, n care ns
legtura formeaz o bucl;
- configuraia de tip plas, n care fiecare partener din reea posed cel
puin dou legturi cu ali parteneri.
Comunicaia n cadrul reelelor se poate realiza ntr-un sens sau n
ambele sensuri (simultan sau nu). Canalele care ofer suportul comunicaiei pot
fi multiplexate n timp sau n frecven. n primul caz fiecrui utilizator i se
aloc o cuant de timp, pe durata creia poate folosi canalul. Multiplexarea n
frecven presupune alocarea de frecvene separate (n cadrul benzii de trecere a
canalului) pentru diveri parteneri sau grupe de parteneri.
Pentru ca transferul de informaie n cadrul reelelor s poat avea loc, se
impune stabilirea unui set de reguli asociat acestui proces, care constituie
protocolul de comunicaie.

2.3. Interfee de proces
Necesitatea interconectrii subsistemelor cu caracteristici complet diferite
impune utilizarea unor dispozitive care s le compatibilizeze. Aceast
compatibilizare trebuie s asigure transferul informaional ntre sistemele
conectate, care devine posibil n condiiile n care dispozitivele de interconectare
prezint caracteristici comune ambelor subsisteme.

P M I/E M P
VMX
VME
VMS
Fig. 2.9. Magistrala VME:
P - procesoare; M - memorie; I/E - uniti de intrare/ieire;
VMS, VME, VMX - seciuni ale magistralei.
Achiziia i prelucrarea datelor
30














n cadrul sistemelor numerice de conducere a proceselor,
compatibilizarea este asigurat de ctre sistemul de interfa proces-calculator
(SIPC) ale crui caracteristici vor fi prezentate n cele ce urmeaz.
2.3.1. Structura i funciile sistemului de interfa cu procesul
Necesitatea existenei SIPC apare evident datorit incompatibilitii
totale ntre mrimile aferente procesului i cele cu care opereaz echipamentul
numeric de conducere. Practic SIPC asigur posibilitatea conectrii
calculatorului la echipamentele periferice de proces reprezentate de traductoare
i elemente de execuie.
La nivelul SIPC se consider c are loc o transmisie bilateral de
informaie, ntre proces i calculator, care funcie de sensul transmisiei se pot
constitui alternativ n emitoare respectiv receptoare de informaie. Transmisia
semnalelor se poate face prin cablu, radio, fibr optic, etc. n cazul transmisiei
prin cablu, aceasta se poate face serie sau paralel, durata fiind determinat,
printre altele, de: timpii de trecere, de identificare a receptorului i de acceptare
a transmisiei. Viteza de transmisie a datelor este influenat i de tipul
semnalelor de sincronizare.
Din acest punct de vedere transmisia se poate face prin dou metode i
anume:
- transferul ciclic, care presupune efectuarea transmisiei ntre dou
impulsuri de tact;
b) a)
d) c)
Fig. 2.10. Tipuri de reele de comunicaie:
a - stea; b - multipunct; c - n bucl; d - de tip plas cu conectare complet.
Achiziia i prelucrarea datelor
31

- transferul la cerere, care presupune informarea asincron a unitii
receptoare n legtur cu posibilitatea efecturii unei transmisii urmat de
identificarea emitorului i de acceptarea transmisiei.













Structura general a unui SIPC este de forma celei prezentate n figura
2.11, n care se remarc prezena a dou subsisteme i anume:
- subsistemul de achiziie a datelor (SAD);
- subsistemul de distribuie a comenzilor (SDC).
SAD, care cuprinde subsistemele de achiziie a datelor analogice
(SADA) i numerice (SADN), asigur preluarea semnalelor din proces,
adaptarea lor n vederea prelucrrii numerice i transmisia la calculator.
SDC, care cuprinde subsistemele de distribuie a comenzilor n forma
analogic (SDCA) i numeric (SDCN), asigur transformarea informaiei
furnizate de calculator n semnale specifice elementelor de execuie (analogice
sau numerice) i transmisia ctre acestea.
Gestionarea transferului de informaie ntre perifericele de proces i
echipamentul numeric de conducere este realizat de ctre o bloc de comand
aferent SIPC.
n momentul actual se constat tendina de migrare a tehnicii numerice
ctre perifericele de proces aspect materializat de apariia aa numitelor
traductoare i elemente de execuie inteligente. Aceast deplasare nu schimb
ns fondul atribuiilor SIPC deoarece subsistemele aferente acestuia se regsesc
n structurile traductoarelor i elementelor de execuie. Soluia, tentant la prima
vedere, prezint inconvenientul costurilor, nc destul de ridicate pentru aceste
tipuri de traductoare i de elemente de execuie.
C A L C U L A T O R
P R O C E S
SDCN SDCA SADN SADA
SDC SAD
Fig. 2.11. Structura generala unui SIPC.
Achiziia i prelucrarea datelor
32

O situaie frecvent ntlnit este aceea n care se menin traductoare i
elemente de execuie analogice dar se utilizeaz regulatoare numerice. n acest
caz regulatoarele conin interfee de proces cu structuri apropiate de cele ce se
vor prezentata n continuare.

2.3.2. Subsistemul de achiziie a datelor analogice (SADA)
Un volum important din informaia privind starea proceselor tehnologice
este transmis sub form analogic de ctre traductoare corespunztoare. Aceste
semnale pot fi att n curent ct i n tensiune, de nivel cobort sau ridicat.
ntre funciile specifice SADA pot fi enumerate:
- selectarea canalului fizic de acces conform unei adrese primite de la
UCP;
- eventuale prelucrri primare ale informaiei preluate (liniarizri,
corecii, filtrri, etc);
- transformarea semnalelor n vederea compatibilizrii cu domeniul
dispozitivului (dispozitivelor) de conversie analog-numeric;
- conversia din form analogic n form numeric;
- transferul informaiei numerice rezultate, n memoria echipamentului
numeric prin intermediul magistralei de date.
Corespunztor funciilor enumerate, n structura SADA pot intra, n
totalitate sau nu, urmtoarele componente:
- elemente de jonciune (EJ), care conecteaz SADA la liniile prin care se
transmit semnale de la perifericele de proces;
- multiplexoare (MUX), care creeaz posibilitatea utilizrii n comun a
resurselor unice;
- elemente de prelucrare primar(EPP), care asigur prelucrri de tipul
celor enumerate mai sus;
- amplificatoare, care permit aducerea semnalului n domeniul
convertorului analog-numeric i adaptarea de impedan;
- dispozitive de eantionare i reinere (DER), care reprezint memorii
analogice destinate pstrrii semnalului eantionat pe durata conversiei analog -
numerice;
- convertoare analog - numerice (CAN), destinate conversiei semnalelor
preluate din form analogic n form numeric;
- registre tampon ale mrimii convertite (RT) , care memoreaz valorile
numerice ale mrimilor achiziionate, pn cnd acestea sunt preluate pe
magistrala de date;
- blocul de comand(BC) destinat secvenierii operaiilor aferente
achiziiei i conversiei, innd cont de caracterul asincron al acestora n raport cu
funcionarea UCP.
Achiziia i prelucrarea datelor
33

n figura 2.12 sunt prezentate structuri posibile de SADA difereniate
dup numrul de CAN utilizate.
























Varianta din figura 2.12 a este caracterizat de prezena unui
amplificator cu factor de amplificare programabil (AFAP), cruia i succede un
lan unic DER-CAN. Rolul AFAP este acela de a aduce semnalele preluate de la
traductoare n domeniul de lucru al CAN.
Operaia de achiziie a datelor de pe un anumit canal, n cazul acestei
variantei, se deruleaz etapizat dup cum urmeaz:
- se transmite multiplexorului analogic MUXA adresa canalului selectat;
- se transmite ctre AFAP factorul de amplificare aferent;
- se transmite ctre DER comanda de eantionare;
- se transmite ctre CAN comanda Start conversie;
- dup recepionarea semnalului Sfrit conversie se transmite comanda de
nscriere a informaiei numerice furnizate de CAN n registrul tampon RT.
a)
I
1
EPP
I
2
EPP
I
n
EPP
M
U
X
A
MD
B C
RT CAN DER AFAP
I
1
EPP
I
n
EPP
M
U
X
N
MD
RT
B C
DER
1
b)
A
1

A
n
DER
n
CAN
1
CAN
n
Fig. 2.12. Structuri de SADA:
a - cu un singur CAN i multiplexare analogic; b - cu mai multe CAN i
multiplexare numeric.
Achiziia i prelucrarea datelor
34

Variantei din figura 2.12 b i este specific cte un lan A-DER-CAN
pentru fiecare canal care se conecteaz la SADA. Spre deosebire de varianta
anterioar, fiecare din coeficienii de amplificare ai amplificatoarelor A
1
,, An
este fix, iar multiplexarea este numeric, resursa comun fiind reprezentat de
RT iar utilizatorii de ansamblurile EP-A-DER-CAN, aferente fiecrui canal.
Achiziia de pe un canal, n cazul variantei b se realizeaz prin
parcurgerea urmtoarei secvene de operaii:
- se poziioneaz multiplexorul numeric MUXN pe canalul de pe care
urmeaz a se face achiziia;
- se transmite comanda de eantionare ctre DER de pe canalul respectiv;
- se transmite comanda Start conversie ctre CAN de pe canalul selectat;
- dup recepionarea semnalului Sfrit conversie se d comanda de
nscriere a codului numeric rezultat n RT.
n cazul ambelor variante dup nscrierea n registrul tampon RT, datele n
form numeric pot fi preluate n memorie prin intermediul magistralei de date
MD.
Cu toate c n soluiile prezentate n figura 2.12 SADA se conecteaz
numai la MD, nu este exclus conectarea n anumite situaii i la magistralele de
adrese i de comenzi ale sistemului respectiv. n continuare se vor face referiri la
elementele care intr n structura SADA.
Elementele de jonciune. Acestea asigur conectarea nemijlocit,
fizic a SADA la traductoarele din proces. Uzual conectarea se poate face prin
cleme, cuple sau lipire. Deosebit de important pentru precizia SADA este
valoarea rezistenelor de contact din cadrul EJ i stabilitatea lor n timp. Din
acest punct de vedere cea mai sigur este conectarea prin lipire, la polul opus
situndu-se EJ realizate cu cleme.
O alt cerin impus EJ o reprezint posibilitatea de modificare a
configuraiei canalelor de intrare, conexiunile realizate cu cleme oferind
faciliti maxime n acest sens.
n legtur cu opiunea pentru un tip de EJ trebuie realizat un compromis
ntre versatilitatea i fermitatea jonciunilor realizate.
Elemente de prelucrare primar. Acestea realizeaz printre altele
urmtoarele operaii: converise curent - tensiune, filtrare, atenuare.
Conversia curent tensiune. Se realizeaz prin conectarea unui rezistor n
circuitul de ieire (n curent) al traductorului . Rezistena acestuia se
calculeazcu relaia:
max
max
I
U
R = (2.1)
n care: - R este rezistena rezistorului;
Achiziia i prelucrarea datelor
35

- U
max
- domeniul tensiunii la intrarea CAN;
- I
max
- domeniul curentului de la traductor.

Exemplul 2.1
S se calculeze rezistena R pentru un traductor cu ] ... [ mA 20 4 i e care se
conecteaz la un CAN care admite la intrare ] [... V 1 ue , domeniul util fiind
] ... , [ V 1 2 0 ue .
Rezolvare
n figura 4.16 se prezint conectarea traductorului la CAN i caracteristica
static a convertorului curent - tensiune realizat cu rezistorul R.











Aplicnd relaia (2.1) rezultpentru R valoarea :
O =

=

500
10 4 20
2 0 1
R
3
) (
,


Filtrarea are drept principal, scop rejecia tensiunilor parazite induse n
cablurile de conectare. Uzual se folosesc filtre simple trece jos iar n situaii
deosebite chiar filtre active.
Atenuarea se realizeaz prin utilizarea divizoarelor rezistive.
Performanele atenuatoarelor sunt dictate att de precizia ct i de stabilitatea
termici n timp a rezistoarelor.
Multiplexoarele. MUX sunt dispozitive care permit conectarea unei
resurse la mai muli utilizatori, situai din punct de vedere topologic naintea
acesteia. Multiplexarea poate fi analogic sau numeric. Soluiei de SADA
prezentate n figura 4.15 a i este specific multiplexarea analogic n care
utilizatorii sunt reprezentai de canalele analogice de intrare iar resursa de
ansamblul AFAP-DER-CAN. Pentru varianta de SADA din figura 4.15 b, n care
multiplexarea este numeric, utilizatorii sunt constituii din CAN asociate
fiecrui canal iar resursa de RT i implicit de magistrala de date a sistemului.
Traductor C A N
R u
i
u [V ]
i [mA ]
1
0.2
20 4
b) a)
Fig. 2.13. Conversia curent - tensiune:
a - schema de conectare; b - caracteristica static.
Achiziia i prelucrarea datelor
36

MUXA este constituit dintr-o reea de comutatoare comandate, care pe
baza unei adrese de selecie dirijeaz o anumit intrare ctre ieirea unic. n
figura 2.14 se prezint schematic un MUXA cu 8 intrri i tabelul de adevr al
seleciei canalelor.













Dup cum se observ din figura 2.14.b, cuvntul de adres este format din
4 bii, din care 3 sunt pentru selecia canalului (A
2
,A
1
,A
0
) iar bitul EN (enable)
este utilizat pentru selecia MUX. Orice combinaie A
2
A
1
A
0
va conduce la
selecia unui canal, numai dac MUX este activat, respectiv dac EN=1.
n general pentru un MUXA cu n canale de intrare cuvntul de selecie a
unui canal va fi format din log
2
n+1 bii, unde n este o putere ntreag a lui 2.
Elementul principal al MUXA l constituie reeaua de comutatoare care
poate fi realizat n urmtoarele variante constructive:
- cu relee obinuite;
- cu relee cu mercur;
- cu relee reed;
- cu elemente semiconductoare.
Primele trei variante, care utilizeaz elemente electromecanice sunt
caracterizate de investiii iniiale reduse, compensate ns de un efort
considerabil n timpul exploatrii, datorit fiabilitii i duratei de via reduse.
Dintre variantele cu elemente electromecanice s-au impus ateniei,
datorit unui raport performan/cost acceptabil, MUX realizate cu relee reed
Un releu reed a crui structur este prezentat n figura 2.15, poate oferi
urmtoarele performane:
- rezistena contactului nchis mai mic de 50 m ;
EN A
2
A
1
A
0

I
7

I
1

I
0

Y
EN A
2
A
1
A
0
Y
1 0 0 0 I
0

1 0 0 1 I
1

1 0 1 0 I
2

1 0 1 1 I
3

1 1 0 0 I
4

1 1 0 1 I
5

1 1 1 0 I
6

1 1 1 1 I
7

0 * * * -
b) a)
Fig. 2.14. MUXA cu opt intrri:
a - schema principial; b - selecia intrrilor.
Achiziia i prelucrarea datelor
37

- viteza de comutaie ridicat chiar n cazul unor frecvene de ordinul 250
parametri / secund;
- durata de via ridicatsituat ntre 10
6
i 10
9
cicluri.
Este de menionat faptul c durata de via a unui releu reed este
condiionat de respectarea specificaiilor referitoare la ncrcarea acestuia
(rezisten de sarcin).













Reelele de comutatoare statice sunt realizate cu dispozitive
semiconductoare care lucreaz n regim de comutaie. Comutatoarele pot fi
realizate cu tranzistoare bipolare sau speciale, n figura 2.16 fiind prezentat un
comutator realizat cu tranzistoare cu efect de cmp (FET).











Cu notaiile din figura 2.16 expresia tensiunii la ieire este:

i
ON DS c s
s
0
U
r R R
R
U
) (
+ +
= (2.2)

U
1
2
3 4
Fig. 2.15. Schema principiala unui releu reed:
1 - lamelfix; 2 - capsuldin sticl; 3 - bobin;
4 - lamelmobil.
Fig. 2.16. Comutator electronic realizat cu FET:
R
S
- rezistende sarcin; R
C
- rezistenaferentcanalului de intrare;
U
i
- tensiune de intrare; U
0
- tensiune de ieire; U
C
- tensiune de
comand; D - dren; S - surs; G - gril.
U
i

U
0

U
C
R
C

R
S
G
S
D
Achiziia i prelucrarea datelor
38

n care r
DS(ON)
reprezint rezistena tranzistorului dren-surs n conducie (de
ordinul ohmilor).
MUXA se realizeaz de regul pentru un numr relativ redus de canale, 8
sau 16. Creterea capacitii de multiplexare se realizeaz prin conectarea mai
multor MUXA. n figura 2.17 se prezint o asemenea soluie , prin conectarea
MUXA paralel, n varianta a, respectiv serie n varianta b.
Prin conectarea n paralel a m MUXA cu n intrri se obine un MUXA cu
n m intrri. Conectarea n serie presupune utilizarea a m+1 MUXA,
capacitatea rezultat fiind de ) ( m n n m + canale.
Pe lng avantajul creterii numrului de canale multiplexate, cele dou
soluii prezint i dezavantaje cum ar fi:
- micorarea impedanei de intrare a amplificatorului care succede
MUXA (varianta a);
- creterea rezistenei comutatoarelor n conducie care poate
influena precizia achiziiei (varianta b).

















n cazul MUXN resursa comun poate fi reprezentat de un canal de
comunicaie, iar utilizatorii de surse de semnal cum ar fi: traductoare numerice
sau quasinumerice, stri contacte etc.
n figura 2.18 este prezentat structura unui MUXN pe un bit 4:1, realizat
cu pori I-SAU-NU i care are urmtoarea funcie de selecie:

MUX
1
n
2
1
MUX
2
n
2
1
MUX
m
n
2
1
MUX
0
n
m
2
1
Y
b)
MUX
1
n
2
1
MUX
2
n
2
1
MUX
m
n
2
1
Y
a)
Fig. 2.17. Configuraii de multiplexoare: a - paralel; b - serie.
Achiziia i prelucrarea datelor
39

) D A A D A A D A A D A A EN Y
3 1 0 2 1 0 1 1 0 0 1 0
+ + + = ( (4.3)




















In sistemele industriale achiziia mrimilor numerice nu se realizeaz la
nivel de bit ci la nivel de cuvnt binar cu o lungime egal, de regul, cu cea a
magistralei de date. Ca i n cazul MUXA creterea capacitii de multiplexare se
poate realiza prin gruparea convenabil a MUXN elementare.
Amplificatoare cu factor de amplificare programabil ntr-un SIPC
amplificatoarele pot realiza una sau mai multe din urmtoarele funcii:
- amplificarea semnalului;
- adaptarea de impedan ntre surse i DER;
- conversia curent tensiune;
- rejecia zgomotului de mod comun dintr-un semnal diferenial.
n cele ce urmeaz se vor face referiri la principala funcie a
amplificatoarelor i anume aducerea semnalelor preluate de la traductoare n
domeniul de lucru al ansamblului DER-CAN.
Dac sursele se semnal nu ofer semnale n aceeai gam se utilizeaz
AFAP. n figura 4.22 se prezint structura unui AFAP, care conine un
amplificator operaional AO a crui rezisten de intrare poate fi modificat prin
comanda de la calculator a comutatoarelor C
i
.
EN D
3
D
2
D
1
D
0 A
0
A
1

W Y
Fig. 2.18. MUXN pe un bit cu patru intrri:
A
1
, A
0
- bii selecie canal; EN - bit selecie MUXN;
D
0
D
3
- intrri numerice; Y - ieire direct; W - ieire negat.
Achiziia i prelucrarea datelor
40

















Amplificarea structurii prezentate n figura 2.19 este
1
2
R
R
A = (3.4)
n care rezistena de intrare R
1
se determin cu relaia

1
4
0
3
1
2
2
1
3
1
c 2 c 2 c 2 c 2 R R

+ + + = ) ( , (3.5)
unde c
i
are valori logice 0 sau 1 funcie de starea deschis sau nchis a
comutatoarelor C
i
. n tabelul 4.1 se prezint valorile |A|
1
pentru toate
combinaiile posibile ale comutatoarelor, n situaia R=R
2
.











Eroarea tipic a structurii din figura 2.19 este datorat faptului c
rezistenele comutatoarelor introduse de comutatoarele C
i
(realizate cu
tranzistoare cu efect de cmp, bipolare, relee REED etc.) se nseriaz cu
rezistenele reelei de comutatoare din MUX .

1
Din combinaiile prezentate se eclude combinaia 0000 care ar corespunde tuturor comutatoarelor deschise.
Tabelul 2.1
Valori posibile pentru (A

C
1
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
C
2
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
C
3
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
C
4
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
(A 0 1 2 3 4 5 6 7 8 9 1 1 1 1 1 1
U
2

+
-
U
1

C
4
C
3
C
2
C
1
R
2
R
1
R
R/2
R/4
R/8
De la
calculator
Circuit de comand
Fig. 2.19. AFAP cu rezisten variabil pe intrare.
Achiziia i prelucrarea datelor
41

Structura prezentat n figura 2.20, n care rezistena variabil este
conectat pe reacia amplificatorului operaional elimin acest neajuns.
Cnd este necesar un domeniu larg de amplificare i n acelai timp se
solicit o rezoluie fin ntre dou trepte, se poate introduce n cascad un al
doilea etaj cu amplificare programabil.















Dispozitive de eantionare i reinere. Utilizate mpreun cu CAN,
DER asigur memorarea analogic a semnalului pe durata conversiei analog
numerice. Principial, un DER conine o seciune de eantionare i una de
memorare ilustrate n figura 2.21.










Funcioanrea DER are loc n douetape i anume:
- obinerea informaiei, caracterizatde timpul de obinere T
0
;
- memorarea informaiei, caracterizatde timpul de memorare T
M
.
-
+
Circuit de
comand
De la
calculator
U
2
U
1
C
4
C
3
C
2
C
1
R
8R 4R 2R R
Fig. 2.20. AFAP cu rezistene variabile pe reacie.

+

+
BC
C
M
U
2

U
1

De la
calculator
Fig. 2.21. Structura principial a unui DER
K
Achiziia i prelucrarea datelor
42

Convertoare analog-numerice. CAN realizeaz conversia unui
semnal din form analogic n form numeric n vederea prelucrrii ulterioare
prin metode numerice.
Procesul prin care are loc aceast transformare constituie o clasificare a
mrimii de intrare (uzual semnal n tensiune) ntr-un numr de clase sau canale
distincte. Rezultatul conversiei este practic reprezentat de numrul canalului
cruia i este repartizat valoarea respectiv.
Mrimea de intrare U
i
este repartizatcanalului k dacea satisface relaia
de apartenenla acest canal:

1 k i k
L U L

> > (2.6)
n care L
k
i L
k-1
sunt limitele superioare ale canalelor k, respectiv k-1. Diferena
celor dou limite

1 k k
L L U

= A (2.7)
constituie limea canalului.
Din cele prezentate, rezult c oricrei valori U
i
care satisface relaia (2.6)
i se ataeaz acelai numr de canal. Apare de aici ideea existenei unei erori
inerente de cuantificare egal cu limea unui canal.
Determinarea numrului canalului N se face n baza relaiei:

R
i
U
U
N = , (2.8)
n care U
R
reprezint o tensiune de referin. Uzual N se exprim n numr de
cuante sau numr de uniti CAN (u
CAN
).
Indiferent de tipul CAN rezultatul conversiei este un cuvnt binar n
structura cruia se evideniaz:
- BSMin - bitul de semnificaie minim amplasat n extrema dreapt a
cuvntului binar;
- BSMax - bitul de semnificaie maxim amplasat n extrema stng a
numrului binar.
Ca ponderi lui BSMax i corespunde 1/2 din domeniul de variaie
(diapazonul) al mrimii U
i
iar lui BSMin i se asociaz reprezint 1/2
n
din acelai
diapazon.
Dac n reprezint lungimea n bii a cuvntului convertit (rezoluia),
atunci numrul maxim de cuante (canale) va fi
1 2 N
n
=
max
, (2.9)
iar valoarea unui canal se va obine:
Achiziia i prelucrarea datelor
43

} , { , 1 0 a 2 a N
i
1 n
0 i
i
i
e =

=
, (2.10)
Cunoscnd valoarea tensiunii de referin U
R
i lungimea cuvntului
convertit n se poate determina limita maxim a domeniului tensiunii de intrare

R
n
i
U 1 2 U = ) (
max
(2.11)
Considernd un canal identificat prin valoarea sa medie, rezult eroarea
inerent de cuantificare ca fiind 2 U / A , respectiv BSMin 2 1/ .


























Pe baza precizrilor anterioare, n figura 2.22 se prezint caracteristica
ideal a unui CAN cu rezoluia de 3 bii i variaia a erorii inerente de
cuantificare. n afara erorii inerente de cuantificare, procesul de conversie mai
poate fi nsoit de urmtoarele tipuri de erori :
- eroarea de decalaj a nulului (offset);
- eroarea de amplificare;
- eroarea de neliniaritate.
c
C

+ Bsmin
- Bsmin
7.0 6.5 5.5 4.5 3.5 2.5 2.5 1.5 0.5
U
i

* U
R

Bsmin
7.0 6.5 5.5 4.5 3.5 2.5 1.5 0.5
U
i

* U
R

N
111
110
101
100
011
010
001
000
Fig. 2.22. Caracteristica de transfer ideala unui CAN cu rezoluia de 3 bii:
N - numr de cuante; U
i
- tensiunea de intrare; U
R
- tensiunea de referin;
c
c
- eroarea de cuantificare.
Achiziia i prelucrarea datelor
44

Determinarea biilor cuvntului convertit se poate face simultan sau
succesiv. Pentru prima metod sunt semnificative CAN de tip paralel iar pentru
a doua metod CAN cu reacie.
- CAN de tip paralel determin toi biii reprezentrii numerice ca
urmare a comparrii tensiunii de intrare cu niveluri prestabilite de tensiune. n
figura 4.26 se prezint structura unui CAN paralel cu n = 2 bii.

















Dup cum se observ nivelurile prestabilite de tensiune sunt echidistante,
diferena dintre acestea fiind egal cu limea canalului de conversie, respectiv
BSMin. n tabelul 4.2 sunt evideniate ieirile comparatoarelor C
1
, C
2
, C
3
funcie
de valorile tensiunii U
in
.











Tabelul 2.2
Valori logice asociate CAN pe doi bii

U
in
Y
3
Y
2
Y
1
Bit2 Bit1
0 U
ref
/4
0 0 0 0 0
U
ref
/42 U
ref
/4
0 0 1 0 1
2U
ref
/43 U
ref
/4
0 1 1 1 0
3U
ref
/4 U
ref

1 1 1 1 1
-
+
-
+
-
+
Codificator
Y
1
Y
2
Y
3
R
R
R
R
U
in

U
ref
/4
2U
ref
/4
3U
ref
/4
U
ref

Bit1 (BSMin) Bit2 (BSMax)
Fig. 2.23. CAN paralel pe doi bii.
Achiziia i prelucrarea datelor
45

Din tabelul 2.2 rezult urmtoarele funcii logice pentru codificator:

1 2 1 2 3
3
1 2 3 1 2 3
Y Y Y Y Y Y Y Y Y Y Y Y 2 Bit = + = + = ) ( (2.12)

1 2 3
2 3
1 2 3 1
2 3
Y Y Y Y Y Y Y Y Y Y 1 Bit ) ( Y + = + = . (2.13)
n cazul general, pentru o rezoluie a CAN de n bii sunt necesare 2
n
-1
comparatoare. CAN paralel prezint avantajul rapiditii conversiei, dar odat cu
creterea rezoluiei crete exponenial numrul de codificatoare i se complic
logica de codificare.
CAN cu reacie asigur un compromis ntre viteza de conversie i
simplitatea constructiv. La aceste CAN determinarea structurii cuvntului
convertit se face prin comparaii succesive. Din aceast categorie se va prezenta
succint n cele ce urmeaz unul din cele mai rspndite CAN i anume cel cu
aproximaii succesive, a crui schem bloc se afl n figura 2.24.
Aa cum reiese din figur CAN funcioneaz n buclnchis, pe calea de
reacie gsindu-se un convertor numeric analog (CNA). Acesta este comandat de
un registru special numit registru cu aproximaii succesive (RAS). n momentul
nceperii conversiei toi biii RAS sunt n starea 0 cu excepia BSMax care este
prestabilit n starea 1. Cu aceast structura biilor, RAS comand CNA a crui
tensiune U
CNA
este aplicat comparatorului C.
Configuraia biilor din RAS face ca prima comparaie a lui U
in
s se
efectueze cu U
max
/2, ct reprezint n tensiune BSMax. Dac Uin > Umax/2,
BSMax rmne 1, altfel este trecut n 0. La ciclul urmtor tensiunea generat de
CNA va fi n primul caz 3U
max
/4 iar n al doilea U
max
/4. Procesul continu prin
comparaii succesive ale tensiunii U
in
cu aproximaii tot mai bune ale sale, pn
cnd se determin BSMin.
















Fig. 2.24. Schema de principiu a unui CAN cu aproximaii succesive.
+

-

.
.
.
C N A
n 2 1
Registru deplasare
RAS
U
CNA

U
max
U
in

date
Intrar
Tact
Start
Ieire
paralel
Ieire
serie
Sfrit
conversie
BSMin BSMax
Achiziia i prelucrarea datelor
46























Astfel pentru conversia complet a unui semnal analogic ntr-un numr
de n bii sunt necesare n comparri ale semnalului de intrare cu semnalul de
reacie. Aceste n comparri mpreun cu ajustarea semnalului de reacie necesit
n perioade de tact. Ajustarea semnalului de reacie presupune admiterea bitului
k, dac semnalul de reacie pn la bitul k este mai mare dect semnalul de
intrare i respingerea lui n caz contrar. n afara celor n perioade de tact
menionate mai este necesar nc una pentru iniializarea RAS la nceputul
conversiei.
La sfritul conversiei tensiunea de reaciei U
r
care reprezint cea mai
bun aproximaie a semnalului de intrare realizat cu n bii este :
} , {
max
1 0 a
2
a
U U
i
n
1 i
i
i
r
e =

=
. (2.14)
Tehnica de selecie a biilor reiese din figura 2.25, unde s-a considerat un
CAN cu rezoluia de 3 bii. Dup cum reiese din figura 2.25 stabilirea unei
combinaii la ieire se realizeaz prin 3 treceri, alocarea canalelor fiind
prezentat n figura 2.26.



u
in
max
)
6
8
U

u
in
max
)
4
8
U
u
in
max
)
7
8
U
u
in
max
)
5
8
U
u
in
max
)
3
8
U
u
in
max
)
U
8

u
in
max
)
6
8
U

Nu Da
100 110
Nu Da
100 110
U
in
Nu
Da Da Da Da
Da
000
000 001 010 011 100 101 110 111
100
Nu Nu Nu Nu
Fig. 2.25. Selectarea codului pentru un CAN cu aproximaii succesive cu n = 3 bii.
0
000
1
001
2
010
3
011
4
100
5
101
6
110
8 7
111
* U
max
/8
Fig. 2.26. Alocarea canalelor pentru un CAN cu n = 3 bii.
Achiziia i prelucrarea datelor
47

Avnd n vedere rolul deosebit al CAN n realizarea performanelor
globale ale SADA, la alegerea CAN trebuie avute n vedere:
- domeniul semnalului de intrare;
- natura semnalului de intrare;
- durata admisibil a conversiei;
- rezoluia necesar;
- erorile admisibile maxime;
- tipul transmisiei semnalelor convertite (serie sau paralel).
O cerin important care se impune CAN este rezoluia. Referitor la acest
parametru trebuie avut n vedere implicarea CAN ntr-un sistem de msurat a
crui clas de precizie este dictat de elementul cu precizia cea mai sczut.
Pornind de la aceste considerente se poate aprecia c o rezoluie de 12 bii este
pe deplin satisfctoare pentru sistemele de achiziie industriale.

2.3.3. Subsistemul de achiziie a datelor numerice
Acest subsistem (SADN) asigur accesul pe magistrala de date a
sistemului a informaiei numerice referitoare n mod deosebit la starea
procesului sau a unor diviziuni ale acestuia. Dac se utilizeaz traductoare cu
ieirea numeric, SADN asigur preluarea informaiei numerice furnizate de
acestea.
Un canal multiplu de achiziie a datelor numerice ndeplinete urmtoarele
funcii: - colectarea i centralizarea informaiei din proces;
- selectarea liniilor de intrare i adaptarea la caracteristicile
receptorului;
- transferul n memoria sistemului prin intermediul magistralei de date.














Datele pot fi preluate individual sau pe grupe de 8 sau 16 semnale funcie
de lungimea cuvntului de date a sistemului de calcul. Semnalele pot fi pur
M

U

X

N
MD
B C
I
11

EPP
1
EPP
1
I
1m

I
n1

EPP
n
EPP
n
I
nm

RT
Fig. 2.27 Structura principiala unui SADN.
Achiziia i prelucrarea datelor
48

numerice (niveluri de tensiune, curent sau stri contacte) sau quasinumerice
(durata sau frecvena unor impulsuri). Intrrile numerice pot fi statice, cnd sunt
sesizate nivelurile sau dinamice, atunci cnd sunt sesizate tranziiile. Funciile
prezentate ale SADN pot fi realizate de ctre structura din figura 4.30.













Aceast structur permite achiziia a n grupe fiecare formatdin cte m
parametri numerici. Elementele de jonciune asigur cuplarea fizic a liniilor
numerice la SADN. Elementele de prelucrare primar EPP asigur adaptarea
semnalelor numerice la cerinele multiplexorului numeric MUXN.
n vederea prentmpinrii aspectelor negative datorate fluctuaiilor
nivelurilor semnalelor de intrare, n cadrul EPP se pot utiliza formatoare cu
hysterezis (figura 2.28).
Dac informaia preluat din proces reprezint starea unor contacte, n
structura EPP intr circuite pentru filtrarea oscilaiilor produse datorit
imperfeciunii acestora (figura 4.32).









O alternativ la filtrarea hardware o reprezint filtrarea software, prin
introducerea unor bucle de ntrziere n rutinele care prelucreaz informaia
furnizat de contacte.
Formator
U
U
i

U
e
U
i
t t
U
e
U
imax
U
imin
U
i
Fig. 2.28. Formarea impulsurilor n cadrul EPP.
t
R
V
cc

R
t
U
e
V
cc

U
e

U
e

Fig. 2.29. Schem pentru filtrarea oscilaiilor mecanice.
Achiziia i prelucrarea datelor
49

n urma prelucrrii primare semnalele numerice sunt aplicate MUXN, care
pe baza unei adrese primite de la blocul de comand BC va selecta canalul al
crui coninut urmeaz a se nscrie n registrul tampon RT comandat tot de ctre
blocul de comand BC.
La realizarea SADN, o problem important o reprezint izolarea
att fa de mediul extern ct i fa de calculator, o soluie larg utilizat fiind
cuplarea optic.



2.3.4. Probleme ce privesc conectarea interfeelor la proces

Performanele unui SADA sunt nemijlocit legate de maniera n care acesta este
conectat la proces. Dupcum s-a vzut, n structura SADA intrelementele de
jonciune care trebuie sprezinte o rezistende contact ct mai mic.
Legat de conectarea sistemului de interfala proces se pun urmtoarele
probleme:
- rejecia erorilor de mod comun;
- reducerea zgomotului indus n circuitele de intrare;
- realizarea unei mpmntri corespunztoare .
Erorile de mod comun apar datorit faptului c potenialul masei
traductorului difer de potenialul masei SADA, n situaia n care traductorul
este conectat printr-un singur fir (figura 2.30)


Din figura 2.30 se observc V
in
=V
s
+V
g
, V
g
fiind
neglijabildactraductorul i SADA au punctele de masapropiate.
Intruct n condiii industriale V
g
poate fi de ordinul zecilor sau chiar
sutelor de V, o conectare de tipul celei din fig. 5.49 nu este posibildect n
condiii de laborator. n industrie se utilizeaz n exclusivitate conectarea
diferenial, prezentat n figura 2.31.
La modul ideal, conectarea diferenial este caracterizat de egalitatea
tensiunilor V
g
i V
in
. n realitate, datorit distribuiilor neuniforme ale

SADA Traductor
V
g
V
s
V
in
Fig. 2.30 Eroarea de mod comun n cazul conectrii
monofilare:
GndS
GndT
Achiziia i prelucrarea datelor
50

impedanei i izolaiei liniilor de transmisie, ntre cele dou tensiuni apar
diferene cunoscute sub numele de erori de mod comun.

Pentru determinarea acestora, din motive legate de simplificarea
calculelor se utilizeazn locul unei scheme cu parametrii distribuii, schema
echivalentcu parametrii concentrai din fig. 5.51. Prin aplicarea teoremei
superpoziiei, n condiiile pasivizrii sursei V
s
se obine:
V
(R R R R ) R
R (R R )(R R ) R R (R R ) R R (R R )
V
in
1 g 2 2 g1 S
2 g 2 1 g1 2 g 2 1 g1 1 g1 2 g 2
cm
=

+ + + + + +
S
. (2.15)
Ordinele de mrime pentru rezistenele care intervin n relaia (2.25) sunt:
pnla 1 k pentru R
1
i R
2
, zeci de M pentru R
s
i sute de M pentru R
g1

i R
g2
, astfel nct se poate aprecia cR
2
R
g2
<<R
s
i R
1
R
g1
<<R
s.

Cu aceste precizri relaia 2.25 devine:
V
R R R R
R R R R
V in
g g
g g
cm =

+ +
1 2 2 1
2 2 1 1 ( )( )
. (2.36)


















V
in
R
S
R
g1
R
g2
R
1

R
2

V
S

V
cm

SADA
Fig. 2.31 Schema echivalenta conectrii difereniale:
V
S
, V
cm
- tensiunile surselor de semnal i de mod comun;
R
1
, R
2
- impedanele liniilor de transmisie;
R
g1
, R
g2
- rezistenele de izolaie ale liniilor de transmisie;
R
S
- rezistena de sarcin; V
in
- tensiunea achiziionat.
SADA Traductor
V
s
V
in
Fig. 5.50 Conectarea difereniala unui traductor
GndS
GndT
Achiziia i prelucrarea datelor
51

Se definete raportul de rejecie de mod comun (CMMR- Common Mode
Rejection Ratio) ca fiind raportul dintre tensiunea de mod comun i tensiunea
produsde aceasta la intrarea SADA:
CMMR
V
V
R R R R
R R R R
cm
in
g g
g g
= =
+ +

( )( ) 2 2 1 1
1 2 2 1
. (2.37)
Dacrezistenele de izolaie au valori apropiate R
g1
~ R
g2
~ R
g
atunci:
CMMR
R
R R
g
1 2
~

(2.38)
sau exprimat n decibeli:
CMMR(db)=20lg(CMMR). (2.39)
Valori uzuale ale CMMR se situeazn intervalul 100-120 db n condiiile
unei asimetrii a liniilor de transmisie de pnla regul1 k.
De regul semnalul util achiziionat este nsoit de zgomote provocate
de fenomenul de inducie electromagnetic, regimurile tranzitorii n circuitele
electrice, procesul de eantionare etc.
Zgomotul produs de primele dousurse poate fi diminuat printr-o separare
a traseelor conductoarelor de semnal de cele ale cablurilor de alimentare cu
energie. Alturi de separarea traseelor, pentru rejectarea zgomotelor se
recomand:
- filtrarea hardware, cu filtre pasive sau/i active;
- torsadarea cablurilor de transmisie;
- ecranarea cablurilor cu mpmntarea ecranului ntr-un singur punct.
n figura 2.32 sunt prezentate toate cele 3 soluii pentru un semnal de
nivel mic de la un termocuplu.


In ceea ce privete mpmntarea, aceasta trebuie realizatntr-un
singur punct cu repsectarea prescripiilor n ceea ce privete rezistena electrica
prizei centrale.

Conductoare torsadate
Filtru
Ecran
Fig. 2.32 Soluie pentru rejectarea zgomotelor n circuitele de
i l
Achiziia i prelucrarea datelor
52

La realizarea mpmntrii echipamentele aferente sistemului de
conducere se grupeaz n 4 diviziuni dup cum urmeaz:
- subsistemul analogic;
- subsistemul numeric;
- subsistemul de alimentare cu energie;
- construcia metalic aferent.
Pentru fiecare subsistem se definete cte un punct de mas, iar toate
punctele locale de masse leagla priza unicde mpmntare (figura 2.32).
Toate conexiunile att la punctele locale de masct i la priza unicde
mpmntare se vor efectua cu conductoare multifilare scurte i groase.


Dup cum s-a vzut SIPC conecteaz dou entiti cu caracteristici
energetice complet diferite: calculatorul i procesul. Necesitatea proteciei
echipamentului de conducere i chiar a personalului de exploatare la tensiunile
periculoase conduce la ideea separrii galvanice ntre sursele de semnal
(traductoare) i echipamentul numeric.
Soluia o reprezintutilizarea amplificatoarelor cu izolare pentru SADA i
a simplei cuplri optice pentru SADN. Problema decuplrii galvanice se pune i
la transmiterea comenzilor, soluiile fiind aceleai ca la subsistemul de achiziie.
n figura 2.33 este prezentat schema principial a unui amplificator cu
decuplare, n care izolarea galvanic ntre intrare, ieire i sursa de alimentare
este evideniatprin utilizarea de simboluri diferite de conectare la mas pentru
cele 3 componente.

Massurs
alimentare
Masnumeric
Subsistem
numeric
Subsistem
analogic
Mas
construcie
metalic
Masanalogic
Masa general
a sistemului
Fig. 2.33 mpmntarea sistemului de conducere cu o singur priz.
Achiziia i prelucrarea datelor
53

n scopul izolrii galvanice, transferul semnalului de la amplificatorul de
intrare la cel de ieire se poate realiza prin cuplaj inductiv, optic sau chiar
capacitiv. Pentru cuplajul inductiv se realizeaz transformatoare cu band de
trecere 10
2
-10
6
Hz i tensiuni de strpungere mai mari de 5 kV. Pentru cuplajul
optic se utilizeaz ansambluri LED - fototranzistori cu tensiuni de strpungere
mai mari de 2,5 kV.
Prin intercalarea unui cablu optic ntre cele dou elemente ale cuplorului
se poate obine izolare pn la tensiuni de 10
2
-10
3
kV.
Izolarea galvanic ntre sursa de alimentare i intrarea respectiv ieirea
amplificatorului cu izolare se realizeaz prin intermediul unui convertor curent
continuu-curent continuu. Cuplajul optic prezinto band de trecere mai larg n
timp ce liniaritatea este mai bunn cadrul cuplajului inductiv.
Pentru transferul semnalului de la AI la AO se utilizeaz:
- modulaia n duratpentru cuplajul inductiv sau optic;
- modulaia n amplitudine a unei purttoare sinusoidale n cazul
cuplajului inductiv;
- modulaia n intensitate luminoasn cadrul cuplajului optic.




Ieire
Intrare
Convertor
CC / CC
A O A
SA
Fig. 2.34 Schema de principiu a unui amplificator cu
izolare: AI - amplificator de intrare; AO - amplificator de
ieire; SA - sursde alimentare.
Achiziia i prelucrarea datelor
54



n figura 2.35 se prezint schema principial a unui amplificator cu
cuplaj optic. Structura acestuia cuprinde 2 circuite optocuploare OC
1
i OC
2
,
fiecare constituit dintr-un ansamblu LED-fototranzistor. Optocuplorul OC
2

realizeaz separarea galvanic ntre intrarea i ieirea amplificatorului iar OC
1

este inclus n bucla de reacie negativ a amplificatorului de intrare. Cu notaiile
din figura 2.34 rezult:
I
U
R
E
R
i
1
1
1
2
= + , (2.40)
I
U
R
E
R
e
2
4
2
3
= + . (2.41)

Deoarece diodele celor dou optocuploare sunt conectate n serie, rezult
egalitatea curenilor din cele dou fototranzistoare, respectiv I
1
I
2
. Pe baza
acestei precizri i a relaiilor (2.40) i (2.41) se deduce ecuaia caracteristicii
statice a amplificatorului cu izolare:
u
R
R
u R
E
R
E
R
e i = +
|
\

|
.
|
4
1
4
1
2
2
1
. (2.42)
Se constat liniaritatea caracteristicii i independena acesteia fa de
caracteristicile optocuploarelor (n condiiile n care I
1
=I
2
)


--

+
AI --

+
AO
R
4
R
3
R
2

R
1

U
e

U
i

E
2

E
1
OC
2
OC
1
I
1

I
2
Fig. 2. 35 Structura principiala unui amplificator de
izolare cu cuplaj
Achiziia i prelucrarea datelor
Capitolul 3 55















Execuia aplicaiilor de timp real impune ca acestea s fie dezvoltate prin
tehnici care s permit rezolvarea problemelor specifice fr a se declana
conflicte n utilizarea resurselor mainii i cu respectarea constrngerilor de
natur temporal.
n prezentul capitol se va realiza o prezentare a principalelor mecanisme
specifice programrii n timp real. Acestei prezentri i se va aduga o abordare
succint a problemei formalizrii sistemelor de taskuri.

3.1. Strile i evoluia taskurilor
Aplicaiile de timp real se dezvolt apelnd la programarea paralel sau
concurent. Dou taskuri se numesc paralele sau concurente
1
dac prima
instruciune a unuia trebuie executat nainte de ncheierea ultimei instruciuni a
celuilalt. O execuie pur paralel este posibil n situaia n care maina pe care
se execut aplicaia conine mai mult de o Unitate Central de Procesare
(UCP). n cazul sistemelor cu o singur UCP execuia este pseudoparalel ,
timpul acesteia fiind partajat ntre mai multe taskuri.
Avantajul procesrii pseudoparalele este evideniat de urmtorul
exemplu n care se evalueaz gradul de utilizare a UCP pentru dou situaii i
anume:
- procesare secvenial;
- procesare pseudoparalel.
Exemplul 3.1
Fie trei uniti de program A, B, C caracterizate de distribuia temporal
a operaiilor specifice UCP (notate cu majuscule) i de intrare ieire I/E
(notate cu minuscule) din figura 3.1.


1
Atributul de paralel are n vedere execuia paralel sau pseudoparalel a mai multor aciuni.
Atributul concurent se refer la faptul c taskurile se afl n competiie pentru deinerea de resurse.
T Te eh hn ni ic ci i d de e i im mp pl le em me en nt ta ar re e
a a o op pe er ra a i ii il lo or r m mu ul lt ti it ta as sk ki in ng g
d de e a ac ch hi iz zi i i ie e i i p pr re el lu uc cr ra ar re e
a a d da at te el lo or r
C CA AP PI IT TO OL LU UL L
3
3

Achiziia i prelucrarea datelor
Capitolul 3 56









Pentru execuia secvenial diagrama de timp este ilustrat n figura 3.2,







iar pentru prelucrarea pseudoparalel n figura 3.3.
n varianta secvenial, din figura 3.2 se stabilesc urmtoarele valori
pentru t
uc-s
timpul efectiv al UCP i t
ex-s
timpul total de execuie:
t
ex-s
= 340 ut
t
uc-s
= 210 ut
valori cu care se calculeaz Gradul de utilizare a UCP secvenial Grut
UCP-s
% ,
t
t
Grut
S Ex
S UCP
S UCP
7 61
340
210
= = =

. (3.1)








Fig. 3.1. Secvene aferente execuiei a trei aplicaii A, B, C: ut uniti de timp.
A: A
1
a
1
A
2
a
2
A
3
0 30 50 80 120 130
t [ut]
B: B
1
b
1
B
2
0 20 40 60
t [ut]
C: C
1
c
1
C
2
c
2
C
3
0 10 20 60 80 100 110 120 140 150
t[ut]
c
3
C
3
c
4
C
4
C
5
UCP: A
1
A
2
A
3
0 30 50 80 120 130 150 170 190 200 210 250 270 290 300 310 330 340
t[ut]
B
1
B
2
C
1
C
2
C
3
C
4
C
5
I/E: a
1
a
2
0 30 50 80 120 150 170 200 210 250 270 290 300 310 330
b
1
c
1
c
2
c
3
c
4
t[ut]
Fig. 3.2. Execuia pur secvenial a aplicaiilor A, B, C: ut uniti de timp.
I/E: a
1
0 30 50 70 80 90 130 150 170 190 200 210 230
b
1
c
1
c
4
t[ut]
a
2
c
2
c
3
Fig. 3.3. Execuia pseudoparalel a aplicaiilor A, B, C: ut uniti de timp.
UCP: A
1
B
2
0 30 50 60 90 110 150 160 170 190 200 210 230 240
t[ut]
B
1
C
3
C
1
A
2
C
2
C
4
C
5
A
3
Achiziia i prelucrarea datelor
Capitolul 3 57

n varianta pseudoparalel
2
, din figura 3.3 se stabilesc urmtoarele
valori pentru t
uc-p
timpul efectiv al UCP i t
ex-p
timpul total de execuie:
t
ex-p
= 240 ut
t
uc-p
= 200 ut
valori cu care se calculeaz Gradul de utilizare a UCP pseudoparalel
Grut
UCP-P
% ,
t
t
Grut
P Ex
P UCP
P UCP
3 83
240
200
= = =

. (3.2)
Execuia intercalat a taskurilor presupune lucrul n ntreruperi, taskurile
executndu-se intercalat cu rutina te tratare a ntreruperilor, aspect evideniat n
figura 3.4.














n exemplul din figura 3.4 a se consider urmtoarea semnificaie a
taskurilor:
- A task de achiziie date de la CAN (iniiat de un semnal de
ntrerupere de la CAN la ncheierea conbersiei);
- B task de calcul comenzi (se executa la anumite intervale de
timp);
- C task de avertizare (se execut la nencadrarea ntre limite a
mrimii achiziionate din proces).

2
Se consider procesare pseudoparalel n regim de timp divizat time sharing.
Cerere ntrerupere
A A A B A C
.. ..
t
operaii
Execuie task
Execuie task
Execuie
rutin tratare
a
b
Cerere de
ntrerupere
Fig. 3.4. Execuia intercalat a taskurilor.
Achiziia i prelucrarea datelor
Capitolul 3 58
n figura 3.4 b este reprezentat execuia rutinei de tratare a unei
ntreruperi. Se remarc faptul c execuia acestei rutine presupune ntreruperea i
apoi reluarea unui task.
n afara lucrului n ntreruperi , execuia intercalat a taskurilor mai
presupune existena n cadrul sistemului de operare a mecanismelor pentru:
- salvarea i restaurarea strii unui task nainte, respectiv dup
ntrerupere;
- utilizarea neconflictual a resurselor critice (excludere mutual);
- coordonarea execuiei taskurilor interactive (sincronizare);
- transferul de informaie ntre taskuri (comunicare);
- activarea i dezactivarea taskurilor.
Cele cinci mecanisme sunt implementate n nucleul SOTRM (executiv),
care se afl n vecintarea imediat seciunii hardware i care se consider c
face parte din aplicaia de timp real. Dup cum se observ din figura 3.5, o
asemenea aplicaie mai conine taskuri sistem i taskuri utilizator.











O asemenea execuie implic existena n cadrul SOTRM a
mecanismelor pentru:
- salvarea i restaurarea strii taskurilor;
- utilizarea neconflictual a resurselor critice (excluderea mutual);
- coordonarea taskurilor interactive (sincronizarea);
- reglementarea schimbului de date ntre taskuri (comunicarea);
- activarea i dezactivarea taskurilor.
n mod obinuit un task are asociate n memoria intern trei seciuni i
anume:
Taskuri utilizator
Taskuri sistem
Nucleu SOTRM
Hardware
Fig. 3.5. Structura stratificat a unei aplicaii de timp real.
Achiziia i prelucrarea datelor
Capitolul 3 59
- seciunea de date conine operanzi i rezultate ;
- seciunea de cod conine codul care implementeaz algoritmul
aferent aplicaiei realizate de task;
- seciunea de stiv n care sunt salvate informaii care s permit
refacerea contextului la reluarea execuiei taskului dup o ntrerupere.
n structura unei aplicaii de timp real sunt incluse n mod obinuit
taskuri interactive i taskuri disjuncte.
- Taskurile interactive sunt taskurile care pe parcursul evoluiei lor
utilizeaz resurse n comun i fac schimb de informaie .
- Taskurile disjuncte sunt taskuri care nu interacioneaz, respectiv
care nu utilizeaz resurse n comun i nu fac schimb de informaie.
Evoluia unei aplicaii care conine numai taskuri disjuncte este unic
indiferent de viteza i ordinea de execuie a taskurilor.
n ceea ce privete evoluia unui sistem de taskuri interactive , aceasta
este influenat de doi factori i anume:
- modul de planificare a execuiei taskurilor;
- modul de efectuare a tranziie ntre stri i/sau substri.
Execuia unei aplicaii de timp real presupune evoluia taskurilor ntr-un
spaiu al strilor, n care tranziiile sunt provocate de directive care pot fi emise
de ctre planificator sau de ctre taskul aflat n execuie. n continuare vor fi
prezentate dou abordri echivalente care privesc strile i tranziiile taskurilor.
3.1.1. Strile i tranziiile taskurilor prima abordare
Conform acestei abordri un task se poate gsi ntr-una dintre
urmtoarele stri:
- necreat;
- creat;
- gata de execuie;
- execuie;
- blocat.
Aceste stri mpreun tranziiile posibile sunt ilustrate n figura 3.6
3
.


3
Aceast reprezentare n care strile sunt considerate noduri iar directivele arce, mai este cunoscut i
ca graf al tranziiilor.
Achiziia i prelucrarea datelor
Capitolul 3 60



















- Un task necreat este un task necunoscut de executivul de timp real.
Acestea sunt de regul rezidente n memoria extern i prin urmare nu au
rezervate n memoria intern zone pentru cod, date i stiv. Dac sistemul pe
care se execut aplicaia nu dispune de memorie extern, taskul necreat este
rezident n memoria intern, ns nu are alocate zone pentru date i stiv.
Dup cum se observ din figura 3.7 din starea necreat se poate ajunge
numai n starea creat prin directiva de creare. Din oricare stare, execuia
directivei suprimare determin tranziia n starea necreat.
- Un task este n starea creat dac este cunoscut de executiv, situaie
n care are atribuit un identificator i are alocate zone de memorie pentru date,
cod i stiv.

BLOCAT
CREAT
NECREAT
GATA DE
EXECUIE
Deblocare
Blocare
Dispecerizare
Dispecerizare
Dezactivare
D
e
z
a
c
t
i
v
a
r
e
Dezactivare
Activare
EXECUIE LOGIC
EXECUIE
FIZIC
Dispecerizare
Suprimare Suprimare Suprimare
Suprimare
Creare
Fig. 3.6. Evoluia taskurilor n spaiul strilor - abordarea 1.
Achiziia i prelucrarea datelor
Capitolul 3 61












Dup cum apare evideniat n figura 3.8, n starea creat se poate ajunge
prin directivele de creare (din starea necreat ) i dezactivare din celelalte stri.
Din starea creat, se poate ajunge n starea gata de execuie, prin directiva
activare sau necreat prin directiva de suprimare.










- Un task este n starea gata de execuie dac ndeplinete toate
condiiile pentru preluarea controlului UCP, respectiv dac este un task rulabil.
Cnd un task gata de execuie satisface condiia de prioritate sau de timp, prin
directiva de dispecerizare are loc tranziia n starea execuie logic. Alte tranziii
posibile din starea gata de execuie sunt n starea creat (directiva dezactivare) i
necreat (directiva suprimare). Dup cum se observ din figura 3.8, n starea
gata de execuie se poate ajunge numai din starea creat prin directiva de
activare.
- Un task este n starea execuie dac rularea sa a nceput i dac este
nc apt pentru rulare , indiferent c deine sau nu controlul UCP. Dac taskul
deine controlul UCP este n execuie fizic, altfel este n execuie logic. Cnd
taskul pierde controlul UCP poate trece n execuie logic, contextul fiind salvat
n stiv. Contextul mai salvat i la tranziia n starea blocat.

NECREAT
Creare
CREAT
BLOCAT
CREAT
EXECUIE
LOGIC
GATA DE
EXECUIE
Suprimare
Fig. 3.7. Tranziiile asociate strii necreat.
CREAT
Creare
BLOCAT
NECREAT
EXECUIE
LOGIC
GATA DE
EXECUIE
Suprimare
Fig. 3.8. Tranziiile asociate strii creat.
Dezactivare
NECREAT
GATA DE
EXECUIE
Activare
Achiziia i prelucrarea datelor
Capitolul 3 62











Dup cum reiese din figura 3.9, n care se prezint tranziiile strii
execuie, n aceast stare se poate ajunge din starea gata de execuie prin
directiva de dispecerizare sau blocat prin directiva de deblocare. Se observ de
asemenea c tot prin directiva dispecerizare se au loc tranziiile execuie fizic
execuie logic i invers.










- Un task este n starea blocat dac a fost n execuie fizic i a
devenit inapt pentru rulare, datorit apariiei unor condiii de blocare cum ar fi:
- ateptarea unui mesaj;
- ateptarea unui eveniment;
- ateptarea expirrii unui timp;
- ateptarea disponibilitii unei resurse critice, etc.
Tranziia n starea blocat este precedat de salvarea contextului, pentru
ca reluarea execuiei sale, la dispariia condiiei de blocare, s se fac din
punctul unde a fost ntrerupt.
Dezactivare
Dispecerizare
EXECUIE
LOGIC
Suprimare
Fig. 3.9. Tranziiile asociate strii gata de execuie.
NECREAT
GATA DE
EXECUIE
Activare
CREAT
CREAT
Suprimare
Fig. 3.10. Tranziiile asociate strii execuie.
NECREAT
EXECUIE LOGIC
EXECUIE
FIZIC
Dispecerizare
BLOCAT
BLOCAT
Deblocare
Blocare
CREAT
Dezactivare
Dispecerizare
GATA DE
EXECUIE
Dispecerizare
Achiziia i prelucrarea datelor
Capitolul 3 63
Dup cum reiese din figura 3.11, n starea blocat se poate ajunge numai
din starea execuie prin directiva blocare. n ceea ce privete tranziiile din
starea blocat, acestea pot fi n una din strile execuie (directiva deblocare),
creat (directiva dezactivare) sau necreat (directiva suprimare).














Aa dup cum s-a mai spus se poate considera c strile analizate mai sus
formeaz un spaiu de evoluie taskurilor. Tranziiile ntre stri sunt determinate
de directive sau primitive care pot fi lansate de ctre taskul aflat n execuie sau
de ctre executivul de timp real. n cele ce urmeaz vor fi prezentate unele
elemente aferente directivelor (primitivelor) aferente strilor primei abordri.
- Directiva Creare asigur tranziia NECREAT CREAT care
presupune:
- atribuirea unui indicator;
- alocarea de memorie pentru cod i stiv (dac taskul era rezident
nainte de creare zona de cod ar putea fi deja alocat).
Stiva este n mod curent utilizat pentru:
- stocarea variabilelor locale ale taskurilor;
- transmiterea parametrilor i memorarea adresei de retur la apelarea
unei funcii;
- salvarea contextelor la ieirea taskului din execuie fizic.
Crearea unui task se poate face din alt task n timpul rulrii sau n faza
de compilare. Pentru a lansa un task n execuie executivul trebuie s cunoasc
adresa de start, mrimea sivei i prioritatea, elemente care se comunic la creare.
- Directiva Activare presupune tranziia CREAT GATA DE
EXECUIE. Aceast directiv realizeaz activarea unui task i presupune
alocarea de memorie pentru date. Prin activare, care este interpretat ca o cerere
Dezactivare
Deblocare
EXECUIE
Suprimare
Fig. 3.11. Tranziiile asociate strii blocat.
NECREAT
BLOCAT
Blocare
CREAT
EXECUIE
Achiziia i prelucrarea datelor
Capitolul 3 64
de rulare, un task trece de la condiia de spectator la cea de competitor pentru
obinerea controlului UCP i implicit pentru rulare.
- Directiva Blocare presupune tranziia EXECUIE BLOCAT ceea
ce face ca respectivul task s ias din rndul taskurilor rulabile, ca urmare a
apariiei unei condiii de blocare a execuiei sale.
Dac taskul era n EXECUIE FIZIC , condiia de blocare se produce
n momentul rulrii (directiva de autoblocare este coninut n task). Este de
menionat faptul c ieirea din EXECUIE FIZIC presupune salvarea
contextului.
Dac taskul era n EXECUIE LOGIC blocarea sa este este solicitat
printr-o directiv introdus n taskul aflat n EXECUIE FIZIC.
- Directiva Dispecerizare este asociat urmtoarelor tranziii n
spaiul strilor:
- GATA DE EXECUIE EXECUIE FIZIC;
- EXECUIE FIZIC EXECUIE LOGIC;
- EXECUIE LOGIC EXECUIE FIZIC.
Prima tranziie este iniiat i realizat de ctre dispecer (planificator)
atunci cnd cel mai prioritar dintre taskurile rulabile este un task n starea GATA
DE EXECUIE, cruia i se confer controlul UCP. Intrarea n rulare a acestui
task este evident precedat de restaurarea contextului.
Al doilea tip de tranziie are loc atunci cnd taskul aflat n EXECUIE
FIZIC cedeaz controlul UCP prin execuia unei directive prin care solicit s-
i ntrerup execuia. O alt cauz o poate reprezenta existena unei ntreruperi
fizice a crei rutin de tratare apeleaz dispecerul de taskuri. n ambele situaii
se impune salvarea ntregului context al taskului care iese din EXECUIE
FIZIC.
Ultimul tip de tranziie este iniiat i realizat de ctre dispecer
(planificator) atunci cnd cel mai prioritar dintre taskurile rulabile este un task
n substarea EXECUIE LOGIC, cruia i se confer controlul UCP. Ca i n
cazul primului tip de tranziie intrarea n rulare este precedat de restaurarea
contextului.
- Directiva Deblocare presupune tranziia BLOCARE EXECUIE
LOGIC atunci cnd condiia care a determinat blocarea a disprut i taskul a
devenit din nou rulabil.
- Directiva Dezactivare poate determina una dintre urmtoarele
tranziii:
- GATA DE EXECUIE CREAT;
- BLOCAT CREAT;
- EXECUIE CREAT.
Achiziia i prelucrarea datelor
Capitolul 3 65
Prin toate aceste tranziii taskurile revin n starea CREAT pstrnd
alocat memorie pentru cod i stiv i indicatorii asociai la creare.
- Directiva Suprimare presupune realizarea uneia dintre urmtoarele
tranziii:
- CREAT - NECREAT
- GATA DE EXECUIE NECREAT;
- BLOCAT NECREAT;
- EXECUIE NECREAT.
Prin toate aceste tranziii taskurile revin n starea NECREAT cnd li se
memoria pentru date i stiv. Memoria de cod ar putea rmne alocat pentru o
posibil nou tranziie n starea CREAT. De asemenea oricare dintre aceste
tranziii determin anularea indicatorilor asociai la creare.

3.1.2. Strile i tranziiile taskurilor a doua abordare
n aceast abordare un task se poate gsi ntr-una dintre urmtoarele
stri:
- neinstalat;
- inactiv;
- activ,
strii activ fiindu-i asociate una dintre substrile:
- execuie;
- gata de execuie
- blocat.
Aceste stri mpreun tranziiile posibile sunt ilustrate n graful din
figura 3.12.
- Un task neinstalat este un task rezident n memoria intern sau
extern, necunoscut de executivul de timp real.
- Un task inactiv este un task instalat, pentru care fie nu s-a fcut un
apel de rulare fie i-a ncheiat rularea (prin stop natural sau forat).
- Un task activ este un task rulabil care se poate gsi ntr-una din
substrile execuie, gata de execuie, blocat.
- Substarea execuie corespunde situaiei n care taskul deine controlul
UCP. La sistemele cu o singur unitate central, un singur task se
poate gsi n aceast substare.
- Substarea gata de execuie este specific taskurilor care ateapt s
preia controlul UCP. Indicatorii asociai acestora se nscriu ntr-o
coad, execuia putndu-se efectua n dou moduri:
Achiziia i prelucrarea datelor
Capitolul 3 66
- ciclic (ROUND ROBIN) , taskurile fiind executate succesiv n
interiorul unei cuante de timp sau pn la terminarea normal;
- dup prioriti, controlul UCP fiind preluat de taskul cu prioritatea
cea mai ridicat.
- Substarea blocat este asociat taskurilor care se pot gsi ntr-una din
situaiile:
- ateapt s i se aloce memorie;
- ateapt producerea unui eveniment;
- ateapt realizarea unei condiii de timp;
- ateapt realizarea unei operaii de intrare / iere.



















Tranziiile ntre stri i substri se poate realiza n dou moduri i
anume:
- prin ntreruperi hardware sau software, contextul comutrii fiind
determinat de nivelul ntreruperii;
- prin apeluri ctre EXECUTIV din taskul aflat n EXECUIE.
Acestea sunt apeluri de subrutine nentreruptibile numite PRIMITIVE sau
Instalare
Fig. 3.12. Evoluia taskurilor n spaiul strilor - abordarea 2.
GATA DE
EXECUIE
EXECUIE
ACTIV
INACTIV
NEINSTALAT
tergere
Ateptare
Ateptare Preluare
Eliberare Continuare
BLOCAT
Start Stop forat
din alt task
Stop forat
din alt task
Stop normal
Achiziia i prelucrarea datelor
Capitolul 3 67
DIRECTIVE, contextul comutrii fiind determinat de numele i parametrii
directivei.
Exist dou categorii de directive i anume:
- directive care nu declar un eveniment semnificativ , dup a cror
execuie controlul UCP este returnat taskului ntrerupt;
- directive care declar un eveniment semnificativ , dup a cror
execuie controlul UCP este returnat taskului aflat pe prima poziie n coada
taskurilor GATA DE EXECUIE.
n cele ce urmeaz se prezint tranziiile ilustrate n graful din figura
3.12 i directivele asociate.
- Tranziia NEINSTALAT INACTIV se realizeaz prin directiva
Instalare care face cunoscut executivului taskul realiznd n acelai timp
crearea i alocarea blocului descriptor al taskului (BDT) care poate conine
urmtoarele elemente:
- parametrii ai taskului (adres de nceput, prioritate, identificator,
nume, etc.);
- mrimea stivei;
- indicatori ctre alte taskuri.
- Tranziia INACTIV NEINSTALAT se realizeaz prin directiva
tergere care elimin taskul din lista taskurilor cunoscute de ctre executiv i
dezactiveaz BDT.
- Tranziia INACTIV ACTIV care presupune trecerea taskului n
substarea GATA DE EXECUIE se realizeaz prin directiva Start. Aceast
directiv semnific practic un apel de rulare pentru respectivul task.
- Tranziia GATA DE EXECUIE EXECUIE se realizeaz printr-
o directiv de Preluare. Dup execuia acestei directive controlul este cedat
taskului din prima poziie a listei de ateptare la procesor. Dup cum se va arta
ulterior aceast list poate fi organizat dup prioriti sau respectnd principiul
rotaiei.
- Tranziia GATA DE EXECUIE BLOCAT se realizeaz printr-o
directiv de Ateptare, n situaia n care taskului nu i se mai poate aloca
memorie pentru stiv dac ar prelua controlul UCP.
- Tranziia GATA DE EXECUIE INACTIV se realizeaz printr-o
directiv de terminare forat (Stop forat) directiv lansat de ctre taskul aflat
n execuie. Aceast tranziie presupune meninerea BDT pentru respectivul task.
- Tranziia EXECUIE GATA DE EXECUIE se realizeaz printr-
o directiv de Eliberare. Controlul UCP este cedat ca urmare a declarrii unui
eveniment ca fiind semnificativ (cum ar fi expirarea cuantei de timp alocate, sau
trecerea n starea GATA DE EXECUIE , a unui task cu prioritate superioar.
Achiziia i prelucrarea datelor
Capitolul 3 68
- Tranziia EXECUIE BLOCAT se realizeaz printr-o directiv
de Ateptare, n situaia n care continuarea execuiei taskului este condiionat
de: producerea unui eveniment extern, realizarea unei condiii de timp,
realizarea unei operaii de intrare-ieire, etc.
- Tranziia EXECUIE INACTIV care presupune pstrarea BDT
se realizeaz la o terminare normal a taskului (Stop normal).
- Tranziia BLOCAT GATA DE EXECUIE se realizeaz printr-
o directiv de Continuare , lansat de ctre executiv dac situaia care a
determinat blocarea a disprut.
- Tranziia BLOCAT INACTIV se realizeaz printr-o directiv de
terminare forat (Stop forat) directiv lansat de ctre taskul aflat n execuie.
Ca i n cadrul altor tranziii n starea INACTIV i aceasta presupune meninerea
BDT pentru respectivul task.
Este de menionat faptul c tranziiile taskurilor n spaiul strilor
trebuie tratate n strns corelaie cu operaiile multitasking aferente rezolvrii
problemei interaciunii dintre taskuri, operaii care vor fi tratate pe parcursul
acestui capitol.

3.2. Dispecerizarea taskurilor
Dup cum s-a artat ntr-un sistem multitasking n timp real mai multe
taskuri se pot gsi la un moment dat n competiie pentru a deine controlul UCP
n scopul rulrii lor.
Procesul de dispecerizare reprezint ansamblul de aciuni prin care n
cadrul unei sesiuni de comutare este ales taskul care urmeaz a fi rulat. La baza
acestui proces realizat de dispecer st un algoritm adoptat din faza de
proiectare a executivului de timp real.
Variantele uzuale de dispecerizare sunt:
- dispecerizarea prin rotaie;
- dispecerizarea prin prioritizare;
- dispecerizarea prin prioritizare i rotaie.
n continuare vor fi prezentate aceste maniere de dispecerizare, cu
referire la prima abordare a strilor i tranziiilor taskurilor.
3.2.1. Dispecerizarea prin rotaie
Aceast variant presupune existena unei Liste de Ateptare la Procesor
LAP n care se nscriu elementele de identificare (indexurile) ale tuturor
taskurilor rulabile
4
.

4
Taskurile aflate ntr-una dintre strile Gata de execuie i Execuie.
Achiziia i prelucrarea datelor
Capitolul 3 69
Dispecerul va alege ntotdeauna pentru rulare taskul aflat n prima poziie
din LAP. Taskul aflat n rulare se consider c ocup ultima poziie din LAP , iar
takurile devenite rulabile se insereaz naintea primei poziii din list, aspect
relevat de reprezentarea din figura 3.13 a dispecerizrii prin rotaie.
















Cnd un task aflat n rulare este supus unui proces de comutare fr ca
acest lucru s fie provocat de dezactivare sau suprimare n faa sa stau dou
alternative:
- dac ndeplinete n continuare condiiile de rulare, i se asigur
rmnerea normal n LAP i nscrierea indexului su n penultima poziie din
list;
- dac nu mai ndeplinete condiiile de rulare , acesta se blocheaz i
este eliminat din LAP i nscris ntr-o list a taskurilor blocate.
Este de menionat faptul c trecerea n ultima poziie a taskului aflat n
rulare va determina avansul celorlalte taskuri n LAP.
Dac taskul aflat n rulare este supus unui proces de comutare datorat
dezactivrii sau suprimrii, atunci taskul este scos din LAP i trecut dup caz n
starea creat, respectiv necreat.
n modelul din figura 3.13 este surprins urmtoarea situaie:
- taskul 07 este n rulare i ocup ultima poziie din LAP;
- taskul 01 ocup prima poziie din LAP i este la iminena rulrii;
- taskurile 06, 02, 04, 09 ateapt n aceast ordine intrarea n rulare
dup taskul 01;
- taskul 05, dup ce s-a aflat pentru un timp n rulare a fost exclus din
LAP blocndu-se;
UCP
07 01
03
06 02 04 09
LAP
Prima poziie,
(cap de list)
Penultima
poziie
Ultima
poziie,
(coad de
list)
Punct inserare noi taskuri
Intrare taskuri devenite rulabile
Traseu circularizare taskuri
Fig. 3.13. Modelul dispecerizrii prin rotaie..
Ieire taskuri
dezactivate
Ieire taskuri
blocate
Ieire taskuri
suprimate
05
Achiziia i prelucrarea datelor
Capitolul 3 70
- taskul 03 , devenit rulabil urmeaz s fie inserat n LAP.

Figura 3.14 prezint situaia n care taskul 07 se mai afl n rulare, iar
taskul 03 a fost nscris n prima poziie din LAP.















Presupunnd c se produce un proces de comutare, iar taskul 07 rmne
n continuare rulabil, situaia se va prezenta ca n figura 3.15.
















Realizarea dispecerizrii prin rotaie necesit gestionarea unei liste
circulare de ntregi scuri care sunt asociai indexurilor taskurilor din list.
Fiecare nod din list va conine pe lng index i un pointer la urmtorul nod,
aspect evideniat n figura 3.16.


UCP
07 01 06
02
04 09
LAP
Prima poziie,
(cap de list)
Penultima
poziie
Ultima
poziie,
(coad de
list)
Punct inserare noi taskuri
Intrare taskuri devenite rulabile
Traseu circularizare taskuri
Fig. 3.14. Modelul dispecerizrii prin rotaie dup inserarea n LAP a taskului 03.
Ieire taskuri
dezactivate
Ieire taskuri
blocate
Ieire taskuri
suprimate
03
UCP
03 06 02
04
09 07
LAP
Prima poziie,
(cap de list)
Penultima
poziie
Ultima
poziie,
(coad de
list)
Punct inserare noi taskuri
Intrare taskuri devenite rulabile
Traseu circularizare taskuri
Fig. 3.15. Modelul dispecerizrii prin rotaie dup un proces de comutare n care taskul 07
a rmas rulabil.
Ieire taskuri
dezactivate
Ieire taskuri
blocate
Ieire taskuri
suprimate
01
Achiziia i prelucrarea datelor
Capitolul 3 71














n reprezentarea din figura 3.16 semnificaia notaiilor este urmtoarea:
- m, n, o, p reprezint indexurile taskurilor din LAP;
- m indexul taskului aflat n rulare;
- p indexul taskului care urmeaz s intre n rulare.
Gestionarea unei asemenea liste presupune implementarea a patru tipuri
de funcii i anume:
- funcia de inserare n LAP a unui task;
- funcia de eliminare din LAP a unui task;
- funcia de determinare a indexului taskului aflat n prima poziie
din LAP;
- funcia de iniializare a LAP.

3.2.2. Dispecerizarea prin prioritizare
Aceast manier de dispecerizare presupune alocarea pentru fiecare task
la crearea sa a unei prioriti. Toate taskurile rulabile sunt incluse ntr-o LAP
organizat ns pe baz de prioriti. Fiecare task ocup un loc conform
prioritii sale, n fruntea listei aflndu-se evident taskul cu cea mai mare
prioritate, iar n coada listei taskul cu prioritatea cea mai mic.
n cadrul unei sesiuni de comunicare dispecerul introduce n rulare
taskul cu cea mai puternic prioritate din LAP. Dac n intervalul de timp care
provoac procesul de comutare, nu este introdus n LAP un task cu prioritate
superioar celui aflat n rulare, atunci UCP va fi alocat pentru nc o sesiune de
rulare acestuia.
Introducerea n LAP a unui task poate fi consecina unei ntreruperi
fizice (care ar putea fi chiar cea care provoac procesul de comutare) sau a unei
aciuni de autoblocare a taskului aflat n rulare.
m

n

o
p
Ultima poziie
(coad de list)
Prima poziie
(cap de list)
Punct inserare
nod nou
Fig. 3.16. Componena listei circulare de ateptare la procesor.
Achiziia i prelucrarea datelor
Capitolul 3 72
n figura 3.17 este reprezentat modelul dispecerizrii cu prioritizare, cu
ase nivele de prioritate, n care un task identificat printr-un anumit index este
nscris n LAP potrivit prioritii sale.












n situaia evideniat n modelul din figura 3.17 sunt de subliniat
urmtoarele:
- taskul 03 de prioritate 1 este n rulare;
- poziiile corespunztoare prioritilor 0 i 3 nu sunt ocupate;
- taskul cu cea mai ridicat prioritate aflat n LAP este 03, aflat n
acelai timp i n rulare;
- un proces de comutare va asigura nc un interval de rulare pentru
taskul 03;
- dac dintr-un motiv oarecare taskul 03 este scos din LAP, taskul 07 de
prioritate 2 va fi trecut n rulare;
- dac la un moment dat taskul 05 ar fi inserat n LAP pe nivelul de
prioritate 0, atunci la proximul proces de comutare taskul 03 va trece
n execuie logic iar taskul 05 va fi adus n rulare.
Ca i n cazul precedent i realizarea dispecerizrii prin prioritizare
necesit gestionarea unei liste circulare de ntregi scuri. Un nod al unei
asemenea liste va conine pe lng indexul taskului i pointerul la urmtorul nod
i prioritatea, potrivit reprezentrii din figura 3.18.
n reprezentarea din figura 3.18 semnificaia notaiilor este urmtoarea:
- m, n, o, p reprezint indexurile taskurilor din LAP;
- a, b, c, d prioritile taskurilor cu indexurile m, n, o, p.


UCP
03
LAP
Sens
scdere
prioritate
Task
n
rulare
Intrare taskuri devenite rulabile
Fig. 3.17. Modelul dispecerizrii prin prioritizare.
Ieire taskuri
dezactivate
Ieire taskuri
blocate
Fig. 2.43.
Soluia lui

03
07

04
02
Intrare task
prioritate 0
Intrare task
prioritate 1
Intrare task
prioritate 2
Intrare task
prioritate 3
Intrare task
prioritate 4
Intrare task
prioritate 5
Achiziia i prelucrarea datelor
Capitolul 3 73

















Gestionarea unei asemenea liste presupune i n acest caz implementarea
celor patru tipuri de funcii specifice gestionrii listelor i anume:
- funcia de inserare n LAP a unui task innd de aceast dat cont
att de index ct i de prioritate;
- funcia de eliminare din LAP a unui task;
- funcia de determinare a indexului taskului aflat n prima poziie
din LAP;
- funcia de iniializare a LAP.

3.2.3. Dispecerizarea prin prioritizare i rotaie
Acest tip de dispecerizare (pentru care se va utiliza abrevierea DPR)
reprezint o combinaie ntre cele dou tipuri de dispecerizare analizate anterior.
DPR se caracterizeaz prin faptul c admite posibilitatea ca mai multe taskuri s
dein aceiai prioritate.
n consecin LAP este constituit practic dintr-o nlnuire de liste
circulare, fiecare astfel de list coninnd taskuri de aceiai prioritate. n figura
3.19 se prezint, pentru o situaie concret, un model de DPR.
n situaia ilustrat n figura 3.19 sunt de menionat urmtoarele aspecte:
- LAP cuprinde cinci liste circulare corespunztoare celor cinci
prioriti acceptate pentru taskurile rulabile, dintre care lista de
prioritate 1 este vid;
- taskul cu indexul 07 aparinnd listei circulare de prioritate 0 este n
execuie fizic, i ocup prin urmare ultima poziie n aceast list;
Ultima poziie
(coad de list)
Prima poziie
(cap de list)
Fig. 3.18. Lista de ateptare la procesor n cazul dispecerizrii prin prioritizare.
m
a
m
a
m
a
m
a
Sensul de scdere a prioritii
a b c d
Achiziia i prelucrarea datelor
Capitolul 3 74
- n ipoteza conservrii coninutului LAP, prin sesiuni succesive de
comutare vor intra n execuie fizic taskurile 01, 06, 02, 04, 09, apoi
din nou 07 .a.m.d. ;
- rularea taskurilor din lista de prioritate 2, (n ordinea 08, 03, 08, etc.),
va ncepe numai dup vidarea listei de prioritate 0;
- n general taskurile de pe o list circular asociat unei anumite
prioriti vor intra n rulare numai daca toate listele cu prioriti
superioare sunt vide (de exemplu taskurile din lista de prioritate 3 vor
fi rulate numai dac listele 0, 1, 2 sunt vide).



























Fig. 3.19. Modelul dispecerizrii prin prioritizare i rotaie.
UCP
07
Task
n
rulare
Ieire taskuri
dezactivate
Ieire taskuri
blocate
Ieire taskuri
suprimate
Intrare taskuri de prioritate 0
01 06 02 04 09
List circular - prioritate 0
Intrare taskuri de prioritate 1
List circular - prioritate 1
Intrare taskuri de prioritate 2
08 03
List circular - prioritate 2
Intrare taskuri de prioritate 3
14 10 05
List circular - prioritate 3
Intrare taskuri de prioritate 4
12
List circular - prioritate 4
Intrare taskuri devenite rulabile.
Traseu circularizare taskuri .
Achiziia i prelucrarea datelor
Capitolul 3 75
DPR se poate reduce la cele dou tipuri de dispecerizare prezentate
anterior n urmtoarele condiii:
- dac toate taskurile rulabile au aceiai prioritate DPR se reduce la
dispecerizarea prin rotaie;
- dac fiecare list conine cte un singur task rulabil DPR se reduce
la dispecerizarea prin prioritizare.
Realizarea DPR necesit gestionarea unei nlnuiri de liste circulare,
care se succed n sensul scderii prioritilor asociate. O asemenea nlnuire
presupune existena a dou tablouri corelate: un tablou al taskurilor i un tablou
al prioritilor.
Tabloul taskurilor implementeaz listele circulare conform regulilor
specifice dispecerizrii prin rotaie. Un element al tabloului, mpreun cu
indicele su reprezint un nod al unei liste. Indicele va avea semnificaia unui
index al taskului aferent nodului , elementul va avea ca valoare indexul asociat
succesorului acestui task.
Gestionarea LAP, pentru DPR comport aceleai funcii de la
precedentele tipuri de dispecerizri cu excepia funciei de eliminare, unde
trebuie precizat i prioritatea taskului eliminat.

3.3. Conflicte poteniale n sistemele multitasking
Dup cum s-a artat concurena pentru deinerea resurselor poate genera
situaii conflictuale. Pentru evitarea acestora i pentru ca taskurile s-i realizeze
obiectivele au fost formalizate aa numitele operaii multitasking ntre care o
importan aparte prezint: excluderea mutual, sincronizarea i comunicarea
5

Pentru implementarea acestor operaii sistemele de operare sau
executivele de timp real pun la dispoziie instrumente cum ar fi: semafoare, cutii
potale, mesaje de trecere, variabile de tip eveniment, fanioane de excluziune,
monitoare, etc.
3.3.1. Resurse i seciuni critice
n general termenul de resurs desemneaz orice element necesar unui
task pentru a putea fi rulat. Resursele pot fi de dou categorii i anume materiale
i logice.
n rndul resurselor materiale pot fi considerate:
- procesorul;
- memoria intern;
- memoriile externe;
- dispozitivele de intrare / ieire;

5
n mod obinuit acestea sunt cunoscute ca Operaii Fundamentale Multitasking.
Achiziia i prelucrarea datelor
Capitolul 3 76
- ceasul de timp real;
- dispozitivele speciale.
n resursele logice pot fi incluse:
- subrutinele (procedurile);
- masivele de date;
- fiierele;
- variabilele.
O alt clasificare mparte resursele n: resurse locale i resurse comune.
- Resursele locale sunt resursele care pot fi accesate de ctre un singur
task. Acestea pot fi n primul rnd de natur logic (subrutine, fiiere, variabile),
dar pot fi i de natur fizic, cum ar fi anumite dispozitive de intrare / ieire.
- Resursele comune sunt acele resurse care pot fi accesate de mai
multe taskuri. Acestea pot fi att de natur logic (subrutine, tampoane de date,
variabile, etc. ) ct i fizic (procesor, memorie, dispozitive de intrare/ieire
etc.).
La rndul lor resursele comune pot fi critice, partajabile, reentrante.
- O resurs comun asupra creia la un moment dat se poate
desfura o singur sesiune de lucru respectiv care poate fi accesat la un
moment dat de ctre un singur task se numete resurs critic. n aceast
categorie pot fi incluse procesorul, locaiile de memorie, echipamente de
intrare, subrutinele care i modific pe parcurs unele date proprii, etc.
- O resurs comun care admite ca n sesiuni de lucru s fie n
derulare asupraei la un moment dat (respectiv s poat fi accesat de ctre n
taskuri) se numete resurs partajabil cu n puncte de intrare.
- O resurs comun care admite s fie oricte sesiuni de lucru s fie
n derulare la un moment dat se numete resurs reentrant
6
.
n continuare vor fi tratate unele aspecte referitoare la utilizarea
neconflictual a resurselor critice. Seciunea dintr-un task n care este accesat o
resurs critic se numete seciune critic. n sistemele multitasking trebuie s
existe reglementri pentru accesarea seciunilor critice. n acest sens se impune
existena unor modaliti de implementare a excluderii mutuale.
Excluderea de ctre un task aflat ntr-o seciune critic referitoare la o
resurs a accesului altor taskuri de a accesa propriile seciuni critice referitoare
la aceiai resurs se constituie n excludere mutual.
Referitor la implementarea excluderii mutuale sunt de menionat
recomandrile fcute de prof. Andrew Tanenbaum de la Universitatea Vrijie
Amsterdam, Olanda n anul 1987.

6
Resursele reentrante pot fi considerate resurse partajabile cu n tinznd ctre infinit.
Achiziia i prelucrarea datelor
Capitolul 3 77
Sintetic aceste recomandri au n vedere urmtoarele aspecte:
1 orice seciune critic poate fi executat la un moment dat de ctre un
singur task (aceasta este practic esena excluderii mutuale care afirm c un
singur task se poate afla la un moment dat n propria seciune critic referitoare
la o resurs);
2 nu se poate face nici o ipotez n ceea ce privete viteza relativ i
frecvena de execuie a taskurilor (cu alte cuvinte la implementarea excluderii
mutuale nu pot fi avute n vedere considerente legate de frecvena sau viteza de
execuie a taskurilor);
3 orice task are dreptul s acceseze propria seciune critic referitoare
ala o anumit resurs dup un interval finit de timp;
4 orice task trebuie s evacueze o seciune critic proprie dup un
interval finit de timp;
5 taskurile nu se pot bloca n interiorul propriilor seciuni critice.
n continuare vor fi prezentate cteva modaliti de implementare a
excluderii mutuale.
3.3.2. Excluderea mutual realizat cu semafoare
Un semafor reprezint, conform introdus n anul 1965 de ctre
matematicianul olandez Edsger Wybe Dijkstra, un dublet format dintr-o
variabil de tip ntreg I i o coad de ateptare C, respectiv
). C , I ( S = (3.1)
La iniializare variabilei I i se atribuie o valoare 0
0
> I , iar coada C este vid.
Dac variabila I ia numai valorile 0 i 1 semaforul se numete binar iar dac ia
i alte valori ntregi, semaforul se numete general.
Asupra semafoarelor pot fi efectuate dou operaii denumite P (de la
cuvntul olandez Passeren a trece) i V (de la cuvntul olandez Vrigeven a
elibera). Aceste funcii sunt indivizibile
7
i se numesc primitive. n ceea ce
privete coada de ateptare , aceasta poate gestionat conform principiului
FIFO
8
, sau dup prioriti (univoce sau neunuivoce).
Primitiva P(S) presupune realizarea urmtoarelor operaii (ilustrate n
organigrama din figura 3.20):
1 - II-1;
2 dac 0 > I , funcia se ncheie i taskul n care aceasta se execut i
continu execuia;

7
Indivizibilitatea are n vedere faptul c cele dou funcii nu pot fi ntrerupte.
8
First Input First Output
Achiziia i prelucrarea datelor
Capitolul 3 78
3 dac I < 0, taskul n care se execut primitiva, iese din rndul
taskurilor rulabile, se blocheaz iar indexul su este nscris n coada de ateptare
C. n aceste mprejurri se provoac un proces de comutare care determin
trecerea n rulare (execuie fizic) a altui task.













Primitiva V(S) presupune realizarea urmtoarelor operaii (ilustrate n
organigrama din figura 3.21):
1 - II+1;
2 dac 0 s I , se deblocheaz taskul aflat pe prima poziie n coada de
ateptare la semafor i se nscrie n rndul taskurilor rulabile, dup care se face
apel la dispecer, dup care continu execuia taskului apelant ;
3 dac I > 0, taskul n care se execut primitiva, i continu execuia.
n timpul execuiei primitivei V(S), dac n urma incrementrii rezult
I0, dup deblocarea taskului aflat pe prima poziie n coada C se d controlul
dispecerului. Acesta decide funcie de prioritate dac aduce sau nu n execuie
taskul deblocat
9
.
Din definirea primitivelor P(S) i V(S) rezult urmtoarele precizri
referitoare la valorile variabilei I aferente semaforului (S):
- dac I > 0 , atunci aceasta reprezint numrul de taskuri care pot
executa primitiva P(S) fr a se bloca, presupunnd c ntre timp nu se execut
nici o primitiv V(S);

9
n figura 3.21 este surprins situaia n care continu execuia taskului apelant, deci taskul deblocat
este adus n execuie logic.
II-1
I<0
Se scoate taskul apelant din rndul
taskurilor rulabile, se blocheaz i se
nregistreaz n coada C
Se apeleaz dispecerul
DA NU
Continu execuia
taskului apelant
Se aduce n execuie alt task
Fig. 3.20. Execuia primitivei P(S).
Achiziia i prelucrarea datelor
Capitolul 3 79
- dac I 0 , atunci |I| reprezint numrul de taskuri blocate la
semaforul S i nregistrate n coada C.















Excluderea mutual cu semafoare presupune utilizarea unui singur
semafor binar, pe care l vom nota SEMEX, care se iniializeaz cu valoarea 1.
n fiecare task care trebuie s se exclud mutual, nainte de intrarea n seciunea
critic se execut o directiv P(SEMEX), iar dup ieirea din seciune o directiv
V(SEMEX).
Este clar c n intervalul de timp n care un task se afl n propria
seciune critic referitoare la o anumit resurs SEMEX=0. n aceste condiii
orice alt task ce va dori s accead n propria seciune critic referitoare la
aceiai resurs, va executa directiva P(SEMEX), ceea ce va determina blocarea
sa ntruct dup decrementare SEMEX =-1.
La ieirea din seciunea critic execuia directivei V(SEMEX) va
determina SEMEX=0 i conform celor precizate anterior , taskul aflat n prima
poziie n coada C aferent semaforului S , va fi deblocat
10
i va putea ptrunde
la rndul su n propria seciune critic.
Ca exemplu n figura 3.22 se prezint schemele logice aferente excluderii
mutuale cu semafoare a dou taskuri T1, T2.. Se observ c cele dou taskuri se
execut la intervale prestabilite t_ex_T1, t_ex_T1.


10
Pentru ca soluia s fie funcional, semaforul SEMEX nu trebuie aservit altor scopuri n afara
excluderii mutuale.
Continu execuia
taskului apelant
Fig. 3.21. Execuia primitivei P(S).
II+1
I 0
Se deblocheaz taskul aflat pe prima
poziie n coada C, se elimin din ea
i se nscrie ntre taskurile rulabile
Se apeleaz dispecerul
DA NU
Achiziia i prelucrarea datelor
Capitolul 3 80


















Avnd n vedere c SEMEX este iniializat cu valoarea 1, dac de
exemplu pentru T1se impune accesul n seciunea sa critic, acest lucru va fi
posibil ntruct directiva P(SEMEX) nu va bloca Taskul T1. Dac n timp ce T1
se afl n seciunea sa critic T2 va ajunge la iminena intrrii n seciunea sa
critic, acest deziderat nu se va putea realiza ntruct directiva P(SEMEX) va
determina blocarea Taskului T2 la semaforul SEMEX. Deblocarea se va produce
cnd T1 va termina de executat seciunea sa critic dup care va executa
directiva V(SEMEX). Ca urmare a acestei directive SEMEX va cpta valoarea 0
(zero) i T2 va deveni rulabil urmnd a fi planificat de dispecer pentru execuia
seciunii sale critice.
Din cele prezentate rezult c se realizeaz excluderea mutual, respectiv
un singur task se poate gsi la un moment dat n propria sa seciune critic.
3.3.3. Excluderea mutual realizat cu variabile de tip
eveniment
O variabil de tip eveniment este o variabil logic de tip speciala asupra
creia pot aciona trei tipuri de primitive i anume NSCRIE, TERGE i
ATEAPT.
Task T1
Iniializare T1
SEMEX=1
t
P1_T1
P(SEMEX)
SCr T1
V(SEMEX)
P2_T1
Task T2
Iniializare T2
SEMEX=1
t_ex_T2 ?
P1_T2
P(SEMEX)
SCr T2
V(SEMEX)
P2_T2
Fig. 3.22. Excluderea mutual cu semafoare:
P1_T1, ,P2_T2 proceduri ale taskurilor T1 i T2.
DA
DA
NU
NU
Achiziia i prelucrarea datelor
Capitolul 3 81
Considernd E o variabil de tip eveniment i
{ } FALS , ADEVARAT Ee ,
semnificaiile celor trei primitive sunt urmtoarele:
ADEVARAT E ) E ( INSCRIE = ;
FALS E ) E ( STERGE = ;
. ADEVARAT E
FALS E ) E ( ASTEAPTA
=
=
daca executia Continua
, daca taskul Blocheaza

Este de menionat faptul c primitiva ASTEAPTA se poate aplica i unei
funcii de o variabil eveniment F(E) respectiv
{ } FALS , ADEVARAT ) E ( F e ,
. ADEVARAT F(E)
FALS F(E) ) E ( ASTEAPTA
=
=
daca executia Continua
, daca taskul Blocheaza

Excluderea mutual cu variabile eveniment se bazeaz pe utilizarea unei
singure astfel de variabile, notate generic EVEX i care se iniialializeaz cu
valoarea ADEVRAT. n fiecare task care trebuie s se exclud mutual, nainte
de intrarea n seciunea critic se va executa o secven de directive ASTEAPT
(EVEX), TERGE(EVEX), iar dup ieirea din seciune o directiv
NSCRIE(EVEX).
Rezult c n intervalul de timp n care un task se afl n seciunea sa
critic referitoare la o anumit resurs EVEX=FALS. n aceste condiii orice alt
task ce va dori s accead n propria seciune critic referitoare la aceiai
resurs, se va bloca la execuia directivei ATEAPT(EVEX).
La ieirea din seciunea critic execuia directivei NSCRIE(EVEX) va
conduce la EVEX = ADEVRAT i conform celor precizate referitor la directiva
ATEAPT primul task blocat la variabila EVEX , va fi deblocat
11
i va putea
ptrunde la rndul su n propria seciune critic.
Ca exemplu n figura 3.23 se prezint schemele logice aferente excluderii
mutuale cu semafoare a dou taskuri T1, T2. Se observ c cele dou taskuri se
execut la intervale prestabilite t_ex_T1, t_ex_T1.
Avnd n vedere c variabila EVEX este iniializat cu valoarea
ADEVRAT, dac de exemplu pentru T1se impune accesul n seciunea sa
critic, acest lucru va fi posibil ntruct directiva ATEAPT (EVEX) nu va
bloca Taskul T1. Dac n timp ce T1 se afl n seciunea sa critic T2 va ajunge
la iminena intrrii n seciunea sa critic, acest deziderat nu se va putea realiza
ntruct directiva ATEAPT(EVEX) va determina blocarea Taskului T2 la

11
Ca i n cazul semafoarelor, variabila de tip eveniment EVEX va trebui utilizat numai la
implementarea excluderii mutuale.
Achiziia i prelucrarea datelor
Capitolul 3 82
variabila eveniment EVEX. Deblocarea se va produce cnd T1 va termina de
executat seciunea sa critic dup care va executa directiva NSCRIE(EVEX). Ca
urmare a acestei directive EVEX va cpta valoarea ADEVRAT i T2 va
deveni rulabil urmnd a fi planificat de dispecer pentru execuia seciunii sale
critice.

















Din cele prezentate rezult c prin utilizarea variabilelor de tip
eveniment se realizeaz excluderea mutual, respectiv un singur task se poate
gsi la un moment dat n propria sa seciune critic.
3.3.4. Excluderea mutual realizat cu mesaje i cutii potale
O cutie potal (CP) reprezint o structur al crui element central este
un tampon circular gestionat conform principiului FIFO. ntr-o CP taskurile pot
depune mesaje, accesibile oricrui task. n mod normal o CP se specific prin
Fig. 3.23. Excluderea mutual cu variabile de tip eveniment: P1_T1, ,P2_T2
proceduri ale taskurilor T1 i T2.
Task T1
Iniializare T1
EVEX=ADEV
t_ex_T1 ?
P1_T1
TERGE(EVEX)
SCr T1
P2_T1
?
EVEX=ADEV
ASTEAPTA (EVEX)
NSCRIE(EVEX)
DA
NU
NU
DA
Task T2
Iniializare T2
EVEX=ADEV
t_ex_T2 ?
P1_T2
TERGE(EVEX)
SCr T2
P2_T2
?
EVEX=ADEV
ASTEAPTA (EVEX)
NSCRIE(EVEX)
DA
NU
NU
DA
Achiziia i prelucrarea datelor
Capitolul 3 83
numrul de poziii ale tamponului circular i prin lungimea admis pentru un
mesaj.
Mesajele reprezint volume de date transferate ntre taskuri pe parcursul
evoluiei lor. Mesajele pot fi transmise direct ntre taskuri (caz n care se numesc
mesaje de trecere) su prin intermediul cutiilor potale. Din punct de vedere al
coninutului mesajele pot fi cu coninut fix sau variabil. Cele cu coninut fix se
numesc mesaje simbolice iar celelalte mesaje informaionale. n ceea ce privete
formatul i acesta poate fi fix sau variabil. n mod normal mesajele simbolice
sunt mesaje cu format fix.
O funcie de depunere (PUT) a unui mesaj ntr-o anume CP trebuie s
conin un pointer la variabila al crui coninut se depune, n timp ce o funcie
de extragere (GET) a unui mesaj dintr-o anume CP va trebui s conin un
pointer la variabila n care se depune mesajul extras.
Cutiile potale trebuie astfel gestionate nct s se produc blocarea
taskurilor pe operaii de depunere , atunci cnd CP este plin sau pe operaii de
extragere atunci cnd CP este vid.
Excluderea mutual cu cutii potale presupune utilizarea unei singure
CP pe care o vom nota CPEX n care primul task ce se iniializeaz depune un
mesaj simbolic, notat MESEX. nainte de intrarea n seciunea critic fiecare
task care trebuie s se exclud mutual va extrage MESEX din CPEX, iar dup
ieirea din seciunea critic l va redepune.
Rezult c n intervalul de timp n care un task se afl n seciunea sa
critic referitoare la o anumit resurs cutia potal CPEX este vid. n aceste
condiii orice alt task ce va dori s accead n propria seciune critic referitoare
la aceiai resurs, se va bloca la execuia funciei de preluare a mesajului
simbolic. Deblocarea
12
se va produce n momentul n care CPEX va conine din
nou mesajul simbolic MESEX
n figura 3.24 se prezint schemele logice aferente excluderii mutuale cu
semafoare a dou taskuri, T1i T2. Ca i n cazurile precedente cele dou taskuri
sunt sincronizate cu timpul, intervalele de execuie fiind t_ex_T1, t_ex_T1.
Avnd n vedere c la iniializare cutia potal CPEX va conine mesajul
simbolic MESEX, dac de exemplu pentru T1se impune accesul n seciunea sa
critic, acest lucru va fi posibil ntruct prin funcia de extragere GET va putea fi
preluat mesajul MESEX. Dac n timp ce T1 se afl n seciunea sa critic T2 va
ajunge la iminena intrrii n seciunea sa critic, acest deziderat nu se va putea
realiza ntruct funcia GET va determina Taskului T2 la cutia potal CPEX.
Deblocarea se va produce cnd T1 va termina de executat seciunea sa critic
dup care va executa funcia PUT de depunere a MESEX n CPEX.

12
Utilizarea csuei potal CPEX i a mesajului MESEX trebuie s fie numai n excludere mutual.
utilizat numai la implementarea excluderii mutuale.
Achiziia i prelucrarea datelor
Capitolul 3 84

n urma acestei depuneri T2 va deveni rulabil urmnd a fi planificat de
dispecer pentru execuia seciunii sale critice.
Din cele prezentate rezult c i prin utilizarea cutiilor potale i a mesajelor se
poate realiza excluderea mutual, respectiv se poate asigura prezena unui singur
task la un moment dat n propria sa seciune critic.
3.3.5. Alte modaliti de realizare a excluderii mutuale
n afara modalitilor prezentate de realizarea a excluderii mutuale (EM)
prezentate, o importan practic i altele, ntre care n cele ce urmeaz vor fi
abordate urmtoarele :
- EM prin dezactivarea ntreruperilor;
- EM prin fanioane de excluziune;
- EM prin blocuri resurs;
Fig. 3.24. Excluderea mutual cu cutii potale i mesaje:
P1_T1, ,P2 _T2 proceduri ale taskurilor T1 i T2.
PUT MESEX
Task T1
Iniializare T1
t_ex_T1 ?
P1_T1
PREIA MESEX din CPEX
SCr T1
P2_T1
?
MESEX n CPEX
DA
NU
DA
NU
DEPUNE MESEX n CPEX
Task T2
Iniializare T2
t_ex_T2 ?
P1_T2
PREIA MESEX din CPEX
SCr T2
P2_T2
?
MESEX n CPEX
DA
NU
DA
NU
DEPUNE MESEX n CPEX
CPEX
PUT MESEX
SAU
PUT
PUT
GET
GET
Achiziia i prelucrarea datelor
Capitolul 3 85
- EM prin monitoare.

A. Realizarea EM prin dezactivarea ntreruperilor. Aceast metod
presupune inhibarea sistemului de ntreruperi nainte de intrarea n
seciunea critic i reactivarea acestuia dup ieirea din seciunea critic.
Prin dezactivarea sistemului de ntreruperi este mpiedicat preluarea
UCP de la taskul care i execut propria seciune critic.
B. Realizarea EM cu ajutorul fanioanelor de excluziune. Un fanion de
excluziune (FE) reprezint o variabil logic iniializat cu valoarea 0 (zero)
asupra creia se pot efectua dou operaii i anume:
- testarea i forarea la 1 , numit operaie TAS - Test And Set;
- forarea la 0, numit operaie RES RESet.
Dup cum tratarea unui fanion implic sau nu apelarea dispecerului
fanioanele de excluziune pot fi active (FE-A) sau pasive (FE-P).
Implementarea EM, referitoare la o anumit resurs, cu ajutorul FE-P
presupune respectarea urmtoarelor reguli:
a FE-P este asociat numai EM pentru resursa n cauz;
b dac FE-P = 0 atunci c nici o seciune critic referitoare la
respectiva resurs nu este n rulare;
c dac FE-P = 1, rezult c un task execut propria seciune critic
referitoare la resursa n cauz;
d nainte de ptrunderea n seciunea critic se realizeaz n condiii de
indivizibilitate operaia TAS(FE-P);
d1 dac operaia TAS a gsit FE-P=1se reia ncepnd cu punctul d;
d2 dac operaia TAS a gsit FE-P=0 se face FE-P=1 dup care
se intr n seciunea critic;
e la prsirea seciunii critice se va efectua RAS(FE-P) care va
determina FE-P=0.
Un fanion de excluziune activ reprezint un ansamblu (dublet) format
dintr-un fanion de excluziune pasiv F i o coad de ateptare C. FE-P are rolul
de a indica printr-o operaie TAS existena sau nu a posibilitii accesului unui
task n seciunea sa critic referitoare la o resurs pus n coresponden cu
respectivul fanion. Coada de ateptare C nregistreaz taskurile care nu au putut
accesa propriile resurse critice referitoare la o resurs pus n coresponden cu
fanionul de excluziune pasiv F.
Utilizarea FE-A n cadrul implementrii EM, referitoare la o anumit
resurs, presupune respectarea urmtoarelor reguli:
Achiziia i prelucrarea datelor
Capitolul 3 86
a FE-A este asociat numai EM pentru resursa n cauz;
b n situaia n care F = 0 rezult c nici un task nu se afl n seciunea
sa critic;
c dac F = 1, atunci se afl n derulare o seciune critic;
d nainte de ptrunderea n seciunea critic se realizeaz n condiii de
indivizibilitate operaia TAS(F);
d1 dac operaia TAS a gsit F=1se realizeaz urmtoarele:
d11 autonscrierea taskului n coada C a FE-A;
d12 autoeliminarea sa din rndul taskurilor rulabile;
d13 autoblocarea i autonscrierea n lista taskurilor blocate;
d14 apelarea dispecerului;
d15 reluarea dup deblocare ncepnd cu punctul d;
d2 dac operaia TAS a gsit F=0 se face FE=1 dup care se intr
n seciunea critic;
e la prsirea seciunii critice se va efectua urmtoarea secven
indivizibil:
e1 efectuarea operaiei RES(F);
e2 deblocarea tuturor taskurilor nscrise n coada C i renscrierea
lor n rndul taskurilor rulabile.
C. Realizarea EM cu ajutorul blocurilor resurs. Un bloc resurs este
reprezentat de un triplet BR cu structura
), In , C , I ( BR =
unde: I i C pstreaz semnificaiile stabilite la descrierea semafoarelor;
In variabil n care se pstreaz indexul taskului n care s-a efectuat
ultima operaie de tip P.
n contextul EM taskul al crui index este nregistrat n In este
proprietarul resursei critice n cauz. Un semafor care asigur nregistrarea
proprietarului curent al resursei critice cruia i corespunde se numete bloc
resurs. Perechea de primitive P, V asociat unui bloc resurs se numete
gestionar de resurs.
Este important de subliniat faptul c la execuia primitivei V pentru un
BR are loc o comparaie a indexului taskului nscris n In cu cel al taskului n
care se execut primitiva. La necoinciden se semnaleaz o eroare, ntruct unei
primitive P executat ntr-un task trebuie s i corespund o primitiv V
executat n acelai task.


Achiziia i prelucrarea datelor
Capitolul 3 87
D. Realizarea EM cu ajutorul monitoarelor.
Conceptul de monitor a fost introdus Richard Hoare n 1974 ca
ansamblu de proceduri i variabile la care accesul este indivizibil. Referitor la
EM toate seciunile critice ale taskurilor care trebuie s se exclud se introduc n
monitor, devenind funcii sau proceduri ale acestuia.
De fiecare dat cnd un task intenioneaz s i execute propria seciune
critic va face apel la procedura corespunztoare a monitorului. ntruct un
singur task poate beneficia la un moment dat de serviciile monitorului, toate
celelalte taskuri care solicit servicii se vor bloca ateptnd eliberarea acestia.
n acest fel programatorul nu trebuie s fie preocupat de realizarea EM ci
de asigurarea prezenei la un moment dat n monitor a unui singur task

3.4. Sincronizarea taskurilor
De regul, n evoluia lor, taskurile unei aplicaii trebuie s se supun
unor relaii de ordine care s le asigure o anumit succesiune temporal.
De exemplu ntr-o aplicaie de conducere n timp real un task efectueaz
achiziia datelor din proces i le depune ntr-un buffer de unde vor fi preluate de
taskurile utilizator (reglare, supraveghere, monitorizare etc. ). n aceast situaie
taskurile beneficiare trebuie s atepte ncrcarea buffer-ului, dup care n cadrul
unei seciuni critice vor prelua datele.
Sincronizarea taskurilor reprezint procesul de punerea a unui task n
relaie cu alt task, cu timpul sau cu un eveniment extern. Dou taskuri se
consider sincronizate dac se pot stabili relaii predictibile ntre anumite
momente ale desfurrii lor. Sensul general al sincronizrii este acela de
coordonare n timp, decorelare.
n mod obinuit sincronizarea se poate face:
- funcie de producerea unui eveniment extern taskului;
- funcie de realizarea unei condiii de timp.
Sincronizarea cu timpul poate fi tratat ca o sincronizare cu evenimente
externe dac se consider impulsurile ceasului de timp real ca fiind astfel de
evenimente. Pentru realizarea sincronizrii sunt necesare funcii specifice de
tratare i anume:
- wait ateptare pn la producerea evenimentului;
- signal anunare c evenimentul s-a produs.
Metodele i mecanismele utilizate pentru realizarea sincronizrii se
deosebesc sub mai multe aspecte i anume:
- natura sincronizrii (cu evenimente externe sau cu timpul);
Achiziia i prelucrarea datelor
Capitolul 3 88
- momentul sincronizrii (cu nceputul, zona median sau sfritul unui
task):
- implementarea sincronizrii (prin faciliti ale limbajelor de
programare, ale limbajelor de comand sau ale monitoarelor).
Din punctul de vedere al sincronizrii cu timpul pot exista dou situaii,
ilustrate n figura 3.25, i anume:
- taskul ateapt expirarea unui interval de timp t dup care se
execut (figura 3.25 a);
- taskul se execut n interiorul cuantei de timp t.







n continuare vor fi prezentate cteva modaliti de implementare a
sincronizrii.
3.4.1. Sincronizarea realizat cu semafoare
Se va exemplifica pentru un sistem de dou taskuri T1 i T2 care trebuie
s se sincronizeze reciproc, n fiecare task fiind definit cte un punct de
sincronizare PS1 pentru T1, respectiv PS2 pentru T2. Sincronizarea trebuie astfel
realizat nct taskul Ti s nu poat trece de punctul su de sincronizare PSi pn
cnd cellalt task Tj nu a ajuns n punctul su de sincronizare PSj ( } , { j , i 1 0 e ).
Din analiza figurii 2.26, n care se prezint sincronizarea cu semafoare,
rezult c punctele de sincronizare se afl ntre procedurile P1 i P2 ale fiecrui
task. Cu alte cuvinte un task nu poate executa propria procedur P2 pn cnd
cellalt task nu i-a executat procedura P1.
Sincronizarea se realizeaz cu ajutorul a doua semafoare binare notate n
figura 3.26 cu SEMSYNC1 i SEMSYNC2 care n taskurile T1 i T2 se
iniializeaz cu valorile 1 respectiv 0. n punctul de sincronizare PSi al taskului
Ti se execut secvena P(SEMSYNCi), V(SEMSYNCj) cu } , { j , i 1 0 e .
Dac de exemplu T2 ajunge n PS2 nainte ca T1 s i execute
procedura P1, se va bloca ntruct SEMSYNC2=0. Taskul se va debloca dup ce
T1 depete PS1 deoarece va executa directiva V(SEMSYNC2).


t t

t
a
t t t

t
b
Fig. 3.25. Sincronizarea cu timpul:
a intervalul de execuie n afara intervalului de sincronizare t;
b intervalul de execuie n interiorul intervalului de sincronizare t.
Achiziia i prelucrarea datelor
Capitolul 3 89


















n figura 3.27 este ilustrat utilizarea sincronizrii cu un eveniment
extern. Taskul T1 trebuie s i execute procedura P2 numai dup producerea
evenimentului extern EVEXT. n acest scop se utilizeaz semaforul de
sincronizare SYMSYNC care se iniializeaz cu valoarea 0. Asupra acestui
semafor se execut o directiv de tip V n taskul T0 care supravegheaz
producerea evenimentului.











Fig. 3.26. Utilizarea semafoarelor pentru sincronizarea a dou taskuri:
P1_T1, ,P2_T2 proceduri ale taskurilor T1 i T2.
Task T1
Iniializare T1
SEMSYNC1=1
t_ex_T1 ?
P1_T1
P(SEMSYNC1)
PS1
P2_T1
DA
NU
V(SEMSYNC2)
Task T2
Iniializare T2
SEMSYNC2=0
t_ex_T2 ?
P1_T2
P(SEMSYNC2)
PS2
P2_T2
DA
NU
V(SEMSYNC1)
Fig. 3.27. Utilizarea semafoarelor n pentru sincronizarea cu un eveniment
extern: P1_T1, ,P2_T1 proceduri ale taskului T1.
Task T0
Iniializare T0
SEMSYNC=0
EVEXT?
DA
NU
V(SEMSYNC)
Task T1
Iniializare T1
SEMSYNC=0
P1_T1
P(SEMSYNC)
P2_T1
Achiziia i prelucrarea datelor
Capitolul 3 90

Semafoarele pot fi utilizate i n sincronizarea cu timpul, n figura 3.28
fiind prezentat un exemplu n acest sens. Taskul T1 trebuie s se execute la
intervale de timp t_ex_T1 . n acest scop se construiete taskul T0 cu rol de
planificator. Acesta execut o ateptare temporizat la semaforul de
sincronizare SYMSYNC iniializat cu valoarea 0. Ateptarea temporizat
presupune execuia directivei V(SEMSYNC) la expirarea intervalului t_ex_T1.
Aceast directiv va debloca taskul T1, care ntre momentele de execuie
ateapt pe o funcie P la acelai semafor, rezultatul fiind acela c taskul T1 se va
executa cu periodicitatea t_ex_T1
13
.













3.4.2. Sincronizarea realizat cu variabile de tip eveniment
Variabilele de tip eveniment (VTE) sunt adecvate sincronizrii cu
evenimente externe. n acest caz punctele de sincronizare sunt asociate unor
evenimente externe, la a cror producere se nscriu VTE.
Sincronizarea cu VTE va fi exemplificat pentru un sistem de trei taskuri
T1, T2, T3 cu urmtoarea funcionalitate:
- T1 se sincronizeaz cu evenimentul extern EVEX1;
- T2 se sincronizeaz cu evenimentul extern EVEX2;
- T3 se sincronizeaz cu ansamblul celor dou evenimente.
Dup cum se observ din figura 3.29 n care este ilustrat sincronizarea
celor trei taskuri celor dou evenimente li se asociaz variabilele de tip
eveniment VTE1 i VTE2 iniializate cu valoarea FALS. n ceea ce privete

13
Timpul de execuie al taskului T1 este inclus n acest interval.
Fig. 3.28. Utilizarea semafoarelor n pentru sincronizarea cu timpul:
P_T1 procedur a taskului T1.
Task T0
Iniializare T0
SEMSYNC=0
t_ex_T1 ?
DA
NU
V(SEMSYNC)
Task T1
Iniializare T1
SEMSYNC=0
P(SEMSYNC)
P_T1
Achiziia i prelucrarea datelor
Capitolul 3 91
taskul T3 execuia sa este condiionat de valoarea de adevr a funciei
2 1 VTE VTE F = .



















Se observ c P_T3 se execut numai dac F=ADEVRAT , cu alte
cuvinte dac s-au produs evenimentele EVEX1 i EVEX2. Dup execuie
variabilele VTE1 i VTE2 se terg i cele trei taskuri revin n starea de blocare, n
ateptarea producerii evenimentelor externe EVEX1 i EVEX2.

3.4.3.Sincronizarea realizat cu mesaje i cutii potale
Cutiile potale i mesajele pot fi utilizate att pentru implementarea
sincronizrii cu timpul, ct i cu evenimente externe.
n cazul sincronizrii cu timpul se utilizeaz de regul ateptarea
temporizat la o cutie potal vid. Mesajele implicate sunt de regul mesaje
simbolice, respectiv mesaje cu format i coninut fix. n continuare vor fi
prezentate dou soluii de sincronizare bazate pe cutii potale i mesaje.
O prim soluie, ilustrat n figura 3.30 presupune existena a dou
taskuri T1- cu rol de planificator i T2 care trebuie s se execute la intervale
t. Soluia implic prezena a trei cutii potale C0, C1, C2 cu urmtoarele
funcii:
- C0 CP destinat ateptrii temporizate;
Fig. 3.29. Utilizarea variabilelor de tip eveniment pentru sincronizarea a trei
taskuri: P_T1 ,P_T2, P_T3 proceduri ale taskurilor T1, T2, T3.
Task T1
Iniializare T1
VTE1=FALS
EVEX1?
DA
NU
NSCRIE(VTE1)
P_T1
Task T2
Iniializare T2
VTE2=FALS
EVEX2?
DA
NU
NSCRIE(VTE2)
P_T2
Task T3
Iniializare T3
F=FALS
F=ADEV ?
DA
NU
TERGE(VTE1)
P_T3
2 1 VTE VTE F =
TERGE(VTE2)
A

T
E
A
P
T


(
F
)

Achiziia i prelucrarea datelor
Capitolul 3 92
- C1 CP destinat transferului mesajului de sincronizare MES_SYNC;
- C2 CP destinat transferului mesajului de confirmare MES_CONF.





















Taskul T1 realizeaz urmtoarea secven de operaii:
1.1 ateapt un interval de timp t (intervalul de sincronizare) la
cutia potal vid C0;
1.2 la expirarea acestui intervalul transmite n cutia potal C1
mesajul de sincronizare MES_SYNC;
1.3 ateapt i preia din cutia potal C2 mesajul de confirmare
MES_CONF;
1.4 se revine la pasul 1.1 , intrndu-se din nou n starea de ateptare
temporizat.
Mesajul de confirmare MES_CONF este un mesaj cu form fix care
informeaz taskul planificator T1 n legtur cu funcionalitatea taskului T2, care
trebuie s se execute temporizat.
Fig. 3.30. Utilizarea cutiilor potale pentru sincronizarea cu timpul:
C0, C1, C2 cutii potale; P T2 procedur ale taskului T2.
Task T1
Iniializare T1
PREIA Mes din C0
Mes n C0 ?
NU
t=t ?
DA
C0
GET
DA
NU
TRIMITE MES_SYNC n C1
MES_CONF n C2?
NU
DA
PREIA MES_CONF din C2
Task T2
P_T2
TRIMITE MES_CONF n C2
Iniializare T2
MES_SYNC n C1?
PREIA MES_SYNC din C1
DA
NU
C1
C2
PUT
GET
GET
Achiziia i prelucrarea datelor
Capitolul 3 93
n ceea ce privete taskul T2 , acesta execut urmtoarea secven:
2.1 ateapt i preia din cutia potal C1 mesajul de sincronizare
MES_SYNC;
2.2 - transmite n cutia potal C2 mesajul de confirmare MES_CONF;
2.3 execut procedura P-T2.
Din secvena de mai sus rezult faptul c execuia taskului T2 se produce
n interiorul cuantei de timp t , aspect evideniat n figura 3.31.








Este posibil execuia taskului T2 n afara cuantei t, conform
reprezentrii din figura 3.32.







n aceast situaie nu se mai impune existena taskului planificator T1.
Taskul T2 ateapt la cutia potal vid C0 un interval de timp t, deblocarea
producndu-se la expirarea acestei cuante de timp. n figura 3.33 se prezint
structura adaptat a taskului T2 pentru acest tip de sincronizare.
Se observ c nu mai sunt necesare mesaje de sincronizare i de
confirmare. Dac se dorete monitorizarea funcionalitii taskului T2, atunci se
menine taskul T1 care va primete la fiecare execuie a lui T2 cte un mesaj de
confirmare.
Procedeul sincronizrii cu timpul, n condiiile existenei unui task
planificator poate extins i la implementarea sincronizrii cu un eveniment
extern, corespunztor reprezentrii din figura 3.34.
Fig. 3.31. Sincronizarea cu timpul: execuia taskului T2 se face n
interiorul cuantei de timp t.
t t t
Ex.
Task
T2
t
t
Ex.
Task
T2
Ex.
Task
T2
Ex.
Task
T2
Fig. 2.32. Sincronizarea cu timpul: execuia taskului T2 se face n
exteriorul cuantei de timp t.
t
t
Ex.
Task
T2
t
Ex.
Task
T2
t
Ex.
Task
T2
t
Ex.
Task
T2
Achiziia i prelucrarea datelor
Capitolul 3 94






































Fig. 3.33. Utilizarea unei cutii potale
vide pentru sincronizarea cu timpul:
C0 cutie potal; P_T2 procedur
ale taskului T2.
Task T2
Iniializare T2
PREIA Mes din C0
Mes n C0 ?
NU
t=t ?
DA
C0
GET
DA
NU
P_T2
Fig. 3.34. Utilizarea cutiilor potale pentru sincronizarea cu evenimente
externe: C0, C1, C2 cutii potale; P_T2 procedur ale taskului T2.
C2
C1
PUT
GET
Task T2
P_T2
TRIMITE
MES_CONF
n C2
Iniializare T2
PREIA
MES_SYNC
din C1
DA
NU
MES_SYNC
n C1?
Task T1
Iniializare T1
PREIA
MES_EV
din C0
DA
NU
TRIMITE
MES_SYNC
n C1
MES_EV
n C0?
NU
DA
PREIA
MES_CONF
din C2
MES_CONF
n C2?
PUT
GET
C0
GET
PUT
Iniializare T0
Task T0
EV_EXT ?
TRIMITE
MES_EV
n C0
NU
DA
Achiziia i prelucrarea datelor
Capitolul 3 95

Dup cum se observ, nainte de producerea evenimentului EV_EXT
taskurile T0, T1, T2 sunt blocate dup cum urmeaz:
- T0 n ateptarea producerii evenimentului EV_EXT;
- T1 la cutia potal C0 n ateptarea mesajului MES_EV care
confirm producerea evenimentului;
- T2 la cutia potal C1 n ateptarea mesajului de sincronizare
MES_SYNC.
Este important de subliniat faptul c dup primirea mesajului de
sincronizare, T2 trebuie s depun n cutia potal C2 mesajul de confirmare
MES_CONF.
Ca i n cazul sincronizrii cu timpul, taskul T1 poate fi eliminat n
situaia n care nu se dorete monitorizarea funcionalitii taskului T2, soluia
principial fiind prezentat n figura 3.35.















Dup cum se observ ntre momentele producerii evenimentului extern
EV_EXT taskurile T0 i T2 sunt blocate dup cum urmeaz:
- T0 n ateptarea producerii evenimentului EV_EXT;
- T2 la cutia potal C0 n ateptarea mesajului MES_EV referitor la
producerea evenimentului extern.

Fig. 3.35. Utilizarea unei cutiilor potale pentru sincronizarea cu evenimente
externe: C0, cutie potale; P_T2 procedur ale taskului T2.
Task T2
P_T2
Iniializare T2
PREIA
MES_EV
din C0
DA
NU
MES_EV
n C0?
C0
GET
PUT
Iniializare T0
Task T0
EV_EXT ?
TRIMITE
MES_EV
n C0
NU
DA
Achiziia i prelucrarea datelor
Capitolul 3 96
n aceste condiii taskul T2 este deblocat n momentul n care n cutia
potal C0 este depus MES_EV asociat producerii evenimentului extern.

3.4.4.Sincronizarea prin monitoare blocuri de ntlnire
La prezentarea excluderii mutuale a fost introdus conceptul de
monitor care poate fi utilizat i la sincronizarea taskurilor. n acest scop se
utilizeaz directive de tip WAIT i SIGNAL asupra unor variabile de tip condiie.
Pentru exemplificare considerm c evoluia unui task T1 aflat n
monitor este dependent la un moment dat de realizarea unei condiii de timp
sau a unui eveniment extern. n aceast situaie, la momentul respectiv se va
emite directiva WAIT(C), unde C este variabila de condiie asociat. Aceast
directiv va bloca taskul i l va scoate din monitor punndu-l ntr-o coad de
ateptare, iar n monitor va fi adus un alt task T2.
Dac ntre timp condiia pentru care a fost scos T1 se va ndeplini, T2 va
executa directiva SIGNAL(C), care va avea ca efect scoaterea din monitor a
taskului T2 i readucerea lui T1. Astfel se realizeaz execuia taskurilor la
anumite intervale de timp sau la producerea unor evenimente.
n anumite situaii se impune ca un numr de taskuri ale unui
sistem s ajung toate n anumite stadii ale rulrii lor, indiferent n ce ordine, i
numai dup aceea s poat avansa din nou.















Fig. 3.36. Exemplificarea tehnicii rendez-vous pentru
sincronizarea unui sistem de trei taskuri A, B, C.
Punct de ntlnire
rendez - vous
TASK A TASK B
TASK C
TASK A TASK B
TASK C
Achiziia i prelucrarea datelor
Capitolul 3 97
Se poate spune deci, c n spaiul multidimensional al evoluiei lor
taskurile i-au stabilit un punct de ntlnire, ilustrat n figura 3.36, dup care din
nou drumurile lor se despart.
O astfel de problem de sincronizare se rezolv prin intermediul unui
mecanism dezvoltat n jurul conceptului de bloc de ntlnire cunoscut n
literatura de specialitate ca bloc rendez vous (BRV).
Principial un BRV reprezint un ansamblu format dintr-o variabil
ntreag cu rol de contor i o coad de ateptare. Contorul indic iniial numrul
taskurilor care nc nu au ajuns la ntlnire. Coada nregistreaz indexurile
taskurilor care au sosit n punctul de ntlnire i care se blocheaz n ateptarea
celorlalte.
De fiecare dat cnd un task a ajuns n punctul de ntlnire coninutul
contorului cu o unitate. Atingerea valorii zero semnific realizarea ntlnirii i n
consecin se va trece la deblocarea taskurilor n ordinea n care acestea au fost
nregistrate n coada de ateptare.
n anumite situaii un BRV poate conine i facilitatea fixrii unui timp
limit n care taskurile trebuie s soseasc n punctul de ntlnire. Dac exist
taskuri care nu au ajuns n punctul de ntlnire n timpul fixat, aceasta se
contramandeaz i taskurile deja sosite se deblocheaz. Pentru ca taskurile
implicate n procesul rendez-vous s i continue evoluia dup trecerea prin
punctul de ntlnire n cunotin de cauz, se impune ca la deblocare s li se
furnizeze o informaie n care s se codifice succesul sau eecul ntlnirii.

3.5. Comunicarea ntre taskuri
Dup cum s-a artat procesarea datelor n regim concurent multitasking
implic pe lng utilizarea de resurse n comun i schimbul de informaie ntre
taskuri concretizat n operaia de comunicare. Uzual taskurile transfer
informaia sub form de mesaje care, dup cum s-a vzut la prezentarea
excluderii mutuale pot fi cu coninut variabil (mesaje informaionale) sau fix
(mesaje simbolice).
n mod obinuit comunicarea se implementeaz prin mecanismul
productor-consumator, taskurile putnd fi din acest punct de vedere
- taskuri de tip productor;
- taskuri de tip consumator.
Pentru facilitarea comunicrii sistemele de operare trebuie s pun la
dispoziie instrumente specifice, unul dintre acestea fiind conducta (pipe). O
conduct reprezint un tampon unidirecional gestionat conform principiului
FIFO, n care un task productor depune mesaje pe care le preia un task
consumator.
Achiziia i prelucrarea datelor
Capitolul 3 98
Mecanismul de comunicare prin conduct trebuie s asigure blocarea
taskului productor care ajunge n faa unei operaii de scriere i conducta este
plin. Acelai mecanism va trebui s blocheze un task de tip consumator aflat n
situaia de preluare a unui mesaj (citire) dintr-o conduct goal.
n situaia n care dou taskuri au att rol de productor, ct i de
consumator vor trebui utilizate dou conducte, situaie evideniat n figura 3.37.











Dup cum se observ Conducta 1 este deschis la scriere pentru taskul i i la
citire pentru taskul j, cu alte cuvinte cele dou taskuri ndeplinesc rolurile de
productor respectiv consumator. n ceea ce privete Conducta 2, aceasta este
deschis la scriere pentru taskul j i la citire pentru taskul i, rolurile celor dou
taskuri fiind inversate respectiv taskul i consumator, taskul j productor.
3.5.1. Utilizarea semafoarelor n comunicare
n mod uzual semafoarele sunt utilizate pentru gestionarea operaiilor de
nscriere respectiv de citire a mesajelor din conducte. n cele ce urmeaz va fi
prezentat un exemplu de comunicare, ilustrat principial n figura 3.38, prin
intermediul unui buffer BUF.









Taskul TPROD produce date (pdata) pe care le nscrie n BUF. Datele
(cdata) sunt extrase de taskul TCONS i utilizate n cadrul unei proceduri.
Conducta 1
Conducta 2
Taskul j
Taskul i
Fig. 3.37. Ilustrarea comunicrii prin conducte ntre dou taskuri.
Fig. 3.38. Gestionarea comunicrii prin conducta BUF .
BUF
.
.
.
0
1
2
N-1
0
1
2
N-1
NPROD
V(SGO
TCONS
cdata pdata
TPROD
Achiziia i prelucrarea datelor
Capitolul 3 99
La rezolvarea problemei de comunicare trebuie avute n vedere
urmtoarele aspecte:
1 TPROD trebuie s se blocheze atunci cnd BUF s-a umplut;
2 TCONS trebuie s se blocheze atunci cnt BUF este gol, respectiv
nu exist date disponibile;
3 operaiile de scriere n BUF, respectiv de citire din acesta trebuie s
se exclud reciproc.


























Fig. 3.39. Utilizarea semafoarelor n comunicare.
Task TPROD
t_ex_TPROD ?
P(SGOL)
DA
NU
Iniializare TPROD
SEMEX=1, SPLIN=0, SGOL=N
NPROD=0
P1_TPROD(pdata)
P(SEMEX)
BUF(NPROD)=pdata
NPROD=NPROD+1
NPROD=N ?
DA
NPROD=0
NU
V(SEMEX)
V(SPLIN)
P2_TPROD
Task TCONS
t_ex_TCONS ?
P(SPLIN)
DA
NU
Iniializare TCONS
SEMEX=1, SPLIN=0, SGOL=N
NCONS=0
P2_TCONS(cdata)
P(SEMEX)
cdata =BUF(NCONS)
NCONS=NCONS+1
NCONS=N ?
DA
NCONS=0
NU
V(SEMEX)
V(SGOL)
Fig. 2.43.
Achiziia i prelucrarea datelor
Capitolul 3 100
La rezolvarea problemei de comunicare trebuie avute n vedere
urmtoarele aspecte:
1 TPROD trebuie s se blocheze atunci cnd BUF s-a umplut;
4 TCONS trebuie s se blocheze atunci cnt BUF este gol, respectiv
nu exist date disponibile;
5 operaiile de scriere n BUF, respectiv de citire din acesta trebuie s
se exclud reciproc.
Gestiunea corect a buffer-ului se va face cu ajutorul a dou semafoare
generale SPLIN i SGOL (iniializate cu valorile 0 respectiv N) asociate
ncrcrii respectiv descrcrii acestuia. Fiecare nscriere n BUF va
presupune decrementarea decrementarea semaforului SGOL respectiv
aplicarea operaiei P(SGOL) i incrementarea semaforului SPLIN - aplicarea
operaiei V(SPLIN). Fiecare extragere din BUF va fi caracterizat de
operaiile inverse nscrierii respectiv V(SGOL) i P(SPLIN). Blocarea
taskurilor TPROD i TCONS n situaii de excepie
14
va fi realizat dup caz
de ctre semafoarele SPLIN sau SGOL, n conformitate cu cele discutate cu
ocazia prezentrii operaiilor P i V n paragraful 2.3.2.
Tot pentru gestiunea ncrcrii / descrcrii lui BUF sunt utilizate
contoarele NPROD i NCONS care parcurg ciclic valori de la 0 la N-1 ceea
ce asigur preluarea datelor conform strategiei FIFO.
Dup cum se observ din figura 3.39 n care sunt prezentate schemele
logice asociate celor dou taskuri pentru excluderea mutual se utilizeaz
semaforul binar SEMEX.
Seciunile critice ale celor dou taskuri includ:
- taskul TPROD: nscrierea n BUF i actualizarea contorului NPROD;
- taskul TCONS: preluarea din BUF i actualizarea contorului NCONS.
3.5.2. Utilizarea n comunicare a mesajelor i cutiilor potale
Mesajele de trecere i cutiile potale reprezint alte dou mijloace
destinate asigurrii comunicrii dintre taskuri. Mesajele se trimit direct de la un
taskul emitor ctre cel receptor, n timp ce cutiile potale reprezint faciliti
de comunicare care pot fi utilizate de ctre toate taskurile aferente aplicaiei de
timp real.
n figura 3.40 se prezint un exemplu de comunicare ntre dou taskuri n
care se utilizeaz ambele modaliti. Mesajul informaional MES_INF este
transmis de Taskul T1 sub forma unui mesaj de trecere n timp ce Taskul T2 va
trimite un mesajul simbolic de confirmare MES_CONF prin intermediul cutiei
potale CP1.

14
Buffer-ul BUF plin sau gol.
Achiziia i prelucrarea datelor
Capitolul 3 101





















Este important de subliniat faptul c transmiterea unui mesaj de trecere
este posibil dac taskul receptor este gata s l primeasc. n ceea ce privete
receptorul acesta se va bloca n ateptarea mesajului dac taskul emitor nu este
gata s l transmit.
n ceea ce privete mesajul de confirmare, Taskul T1 se blocheaz pn
la depunerea acestuia n cutia potal CP1.

3.6. Formalizarea sistemelor multitasking
Din cele expuse pe parcursul prezentului capitol exist dou
componente ale concurenei ntre activiti i taskuri i anume paralelismul i
interaciunea. Paralelismul se refer la execuia paralel sau pseudoparalel, iar
interaciunea are n vedere utilizarea n comun a resurselor i comunicarea.
n general pentru noiunea de concuren se accept urmtoarele dou
sensuri:
- competiie pentru obinerea resurselor necesare execuiei taskurilor;
Fig. 3.40. Utilizarea mesajelor de trecere i a cutiilor potale n comunicare.
CP1
Task T2
Iniializare T2
DA
PREIA MES_ INF de la T1
TRIMITE MES_CONF n CP1
P1_T2
T1 gata transmisie ?
NU
P2_T2
Task T1
Iniializare T1
DA
TRIMITE MES_ INF la T2
MES_CONF n CP1?
NU
DA
PREIA MES_CONF din CP1
P1_T1
T2 gata recepie ?
NU
NU
P1_T1
SEND
RECEIVE
PUT
Fig.
Achiziia i prelucrarea datelor
Capitolul 3 102
- ntlnire (intersecie) pentru realizarea n comun a scopurilor
aplicaiei din care fac parte taskurile.
Taskul ca unitate de baz a programrii concurente se bucur de
urmtoarele proprieti importante:
- indivizibilitate;
- secvenialitate;
- asincronism;
- temporalitate.
- Indivizibilitatea se refer la faptul c taskul este unitate atomic din
punctul de vedere al concurenei, cu alte cuvinte acesta nu poate fi divizat n alte
uniti crora SOTRM s le acorde n mod autonom resurse.
- Secvenialitatea presupune absena paralelismului n interiorul unui
task, n consecin execuia fiind pur secvenial.
- Asincronismul are n vedere o independen relativ a execuiei
taskurilor, cu excepia momentelor de interaciune cnd este necesar
sincronizarea.
- Temporalitatea atest faptul c taskul se manifest i este
recunoscut numai n intervalul cuprins ntre activarea i terminarea sa.
Taskurile pot interaciona n dou moduri i anume:
- direct prin concurena asupra unor resurse;
- indirect prin partajare resurselor i comunicare.
n cadrul interaciunii directe controlul concurenei se realizeaz din
interiorul taskurilor, n timp ce reglementrile aferente interaciunilor indirecte
revin SOTRM .
Consideraiile de mai sus au n vedere faptul c din punctul de vedere al
comportrii exterioare un task se specific prin urmtoarele trei elemente:
- intrrile (datele);
- ieirile (rezultatele);
- timpul de execuie.
n continuare vor fi prezentate cteva elemente care privesc formalizarea
sistemelor de taskuri i a interaciunilor din cadrul acestora.
Un sistem de taskuri S
T
este definit ca un dublet
) , ( S
T
< = T , (3.2)
n care { }
n
,T , T , T
2 1
= T este o mulime de taskuri iar < reprezint o relaie de
ordine total (preceden) definit pe mulimea T .
Achiziia i prelucrarea datelor
Capitolul 3 103
Pentru dou taskuri T e
j i
T , T relaia
j i
T T < semnific faptul c ultima
instruciune a taskului T
i
trebuie s se ncheie nainte de nceperea primei
instruciuni a taskului T
j
.
n mod obinuit unui task T e
i
T i sunt asociate dou evenimente
semnificative i anume:
i
T - iniierea taskului;
i
T - terminarea taskului.
- Iniierea unui task corespunde unei tranziii de stare care include:
- achiziia i asigurarea resurselor necesare execuiei taskului;
- iniializarea strii resurselor;
- transferul datelor de la intrare.
- Terminarea unui task are asociat o tranziie de stare care cuprinde:
- transferul rezultatelor la ieire;
- eventuala restaurare a strii resurselor;
- eliberarea resurselor.
Se reamintete faptul c o resurs reprezint o entitate fizic sau logic
utilizat de un task pe parcursul execuiei sale. n rndul resurselor pot fi
incluse UCP, dispozitive de intrare/ieire, memoria intern, memoria extern,
variabile, fiiere, proceduri, etc. Este important de subliniat faptul c
echipamentul gazd pe care ruleaz sistemul de taskuri se consider partajat n
resurse, definirea resurselor i partajarea fiind funcie de aplicaie.
Relaia de preceden ntr-un sistem de taskuri poate fi sugestiv
reprezentat printr-un graf de preceden. Acesta este un graf orientat care are
ca noduri elementele mulimii T , iar arcele sunt asociate relaiei de preceden.
Pentru dou taskuri T e
j i
T , T un arc de la T
i
la T
j
- respectiv arc(T
i
, T
j
) - apare
n graf numai dac
j i
T T < i nu exist un task T
k
astfel nct
j k i
T T T < < .
Pentru un graf de preceden prezint interes urmtoarele elemente:
- lungime a drumului ntre dou taskuri;
- task succesor i task predecesor;
- task iniial i task terminal;
- nivelul unui task neterminal;
- secven de execuie a unui task,
care vor fi definite n cele ce urmeaz.
Achiziia i prelucrarea datelor
Capitolul 3 104
- Lungimea drumului ntre dou taskuri care aparin unui graf de
preceden este egal cu numrul arcelor sau cu numrul nodurilor la care se
adug 1.
- ntr-un sistem format din n taskuri cu n j i s < s 1 , taskul T
i
se
numete predecesor al taskului T
j
, iar T
j
constituie succesor al T
i
. Dac 1 + = i j ,
T
i
este predecesor direct al lui T
j
, iar T
j
succesor direct al lui Ti. Dou taskuri
T e
l k
T , T se numesc independente dac taskul T
k
nu este nici succesor i nici
predecesor al taskului T
l
. Avnd n vedere c relaia de preceden implic o
ordonare temporal, rezult c dou taskuri pot fi concurente numai dac sunt
independente.
- Un task iniial este un task fr nici un predecesor, iar un task
terminal reprezint un task fr nici un succesor
- Un task neterminal este de nivel K dac cel mai lung drum care
pornete din el i se oprete ntr-un task terminal este de lungime K. Prin
definiie un task terminal este de nivel 1.
- Pentru un sistem de taskuri ) , ( S
T
< = T cu { }
n
,T , T , T
2 1
= T , o
secven de execuie reprezint un ir
} ,a , a , a {
n 2 2 1
= o , (3.3)
de evenimente a
i
asociate iniierii i terminrii taskurilor din S
T
care satisfac
urmtoarele condiii de preceden:
- pentru orice task T e
i
T simbolurile
i
i T , T apar o singur dat;
- dac i
m
T a = i
i n
T a = atunci n m< ;
- dac
i m
T a = i j
n
T a = cu
j i
T T < atunci n m< .
O secven parial de execuie este un subir al irului de forma
} a , , a , a {
k

2 1
= | , cu . n k 2 < (3.4)
Un task T e
p
T este activ dup o secven parial de execuie de tipul
celei din relaia (3.4) dac exist , k i s cu p
i
T a = , dar . k j ) ( T a
p j
s =
Oricrei secvene de execuie } ,a , a , a {
n 2 2 1
= o i corespunde o
secven de stri
} s , , s , s {
n 2 2 1
= o , (3.5)
unde S e
i
s cu n , , , i 2 1 = i S spaiul strilor sistemului pe care evolueaz
taskurile. Starea s0 este starea iniial a sistemului de calcul iar tranziia
i i
S S
1
este generat de evenimentul ai.
Achiziia i prelucrarea datelor
Capitolul 3 105
La tratarea sistemelor de taskuri este util ca acestea s fie considerate
sisteme nchise, respectiv s conin cte un singur task iniial i terminal.
Dac un sistem de taskuri ) , ( S
T
< = T cu { }
n
,T , T , T
2 1
= T nu este nchis,
atunci se construiete un sistem ) , ( S

T
< =
'
T cu { }
1 2 1 0 +
=
n n
T , ,T , T , T , T
'
T . n
sistemul de taskuri

T
S taskul T
0
este succesorul tuturor taskurilor sistemului S
T
,
iar taskul T
n+1
predecesorul acestora.
Dac } ,a , a , a {
n 2 2 1
= o este o secven de execuie pentru sistemul
T
S
atunci o secven pentru sistemul

T
S va fi de forma } T T a T T {
n
n

1
1
0
0
+
+ = o .
Din felul n care a fost construit sistemul

T
S rezult c acesta este nchis.
Dac taskurile T
0
i T
n+1
nu au alte funcii n afara celor precizate, atunci
sistemele
T
S i

T
S sunt echivalente din punctul de vedere al funciilor pe care
acestea le execut. n acest fel s-a realizat nchiderea sistemului iniial de
taskuri
T
S .
n figura 3.41 se prezint un exemplu de graf de preceden, pentru care
vor fi evideniate unele dintre noiunile prezentate mai sus.









Pentru graful din figura 3.41, n tabelul 3.1 se prezint lungimile
drumurilor ntre taskuri. Analiznd datele din acest tabel se observ c funcie
de calea aleas lungimile drumurilor pot s difere.
Tabelul 3.1
Nod
plecare
Nod
sosire
Cale Lungime
T
1
T
2
T
1
- T
2
2
T
1
T
4
T
1
- T
3 *
T
3
- T
4
3
T
1
T
7
T
1
- T
2 *
T
2
- T
7
3
T
1
T
7
T
1
- T
3 *
T
3
- T
4 *
T
4
- T
7
4
T
1

Fig. 3.41. Graf de preceden .
T
3
T
2

T
4
T
5
T
6
T
7
Achiziia i prelucrarea datelor
Capitolul 3 106

Tot din graf rezult taskurile succesoare i predecesoare. De exemplu
taskul T
3
este predecesor direct al lui T
4
, dar acesta este numai predecesor al lui
T
7
. n ceea ce privete taskurile iniial i terminal, taskul T
1
este task iniial al
grafului, iar T
7
task terminal.
Pe baza definiiei nivelului unui task, n tabelul 2.2 se prezint nivelele
taskurilor coninute n graful din figura 3.41.
Tabelul 3.2
Task T
1
T
2
T
3
T
4
T
5
T
6
T
7

Nivel 4 2 3 2 2 2 1

innd cont de definiia secvenei de execuie din relaia (3.3), n
continuare se prezint trei asemenea secvene posibile notate
1
,
2
,
3
dup cum
urmeaz:
7
7
6
6
5
5
4
4
3
3
2
2
1
1
1
T T T T T T T T T T T T T T = o ;
7
7
6 5
6 5
4
4
3 2
3 2
1
1
2
T T T T T T T T T T T T T T = o ;
7
7
2 6 5
6 5 2
4
4
3
3
1
1
3
T T T T T T T T T T T T T T = o .
Coordonarea unui sistem de taskuri presupune definirea i soluionarea
urmtoarelor probleme generale :
A - determinarea taskurilor;
B - blocarea taskurilor;
C - excluderea mutual a taskurilor;
D - sincronizarea taskurilor.
A - determinarea taskurilor
Un sistem de taskuri este determinat , dac prin evoluia sa conduce la
un rezultat unic, indiferent de ordinea de execuie a taskurilor sau de vitezele
acestora, n condiiile respectrii unor relaii de preceden definite.
Un sistem nedeterminat
15
poate fi transformat n unul determinat prin
adugarea unor relaii de preceden.
Pentru formalizarea determinrii vom considera V tuturor resurselor
sistemului pe care ruleaz taskurile. Fie o mulime { }
n
,M , M , M
2 1
= M de
submulimi ale lui V numite generic locaii de memorie. Numrul de locaii

15
Un sistem de taskuri care nu este determinat se numete nedeterminat.
Achiziia i prelucrarea datelor
Capitolul 3 107
reprezint numrul de tipuri de resurse ale sistemului, iar valoarea (coninutul)
locaiei M
i
reprezint numrul de resurse disponibile din clasa i.
Considerm n continuare mulimea de taskuri { }
n
,T , T , T
2 1
= T , o
secven de execuie a acestora } a , , a , a {
n 2 2 1
= o i o secven de stri
} s , , s , s {
n 2 2 1
= o .
Pentru sistemul de taskuri M
i
(k) reprezint valoarea celulei de memorie
M
i
dup execuia secvenei pariale } a , , a , a {
k

2 1
= .
n aceste condiii starea s
k
poate fi definit (n contextul problemei
determinrii taskurilor) astfel
( ) ( ) ( )
} k M , , k M , k M { s
m k

2 1
= . (3.6)
Fiecrui task T e
i
T i corespund dou submulimi ale mulimii M i
anume: D
Ti
domeniul de definiie ;
R
Ti
domeniul de valori,
astfel nct
. R D : T
Ti Ti i
(3.7)
Dou taskuri T e
j i
T , T se numesc neinterferente dac T
i
este succesor sau
predecesor al lui T
j
sau dac
u = = =
Ti Tj Tj Ti Tj Ti
R D R D R R . (3.8)
Cu alte cuvinte dou taskuri sunt neinterferente sunt condiionate n
raport cu relaia de preceden, sau dac mulimile rezultatelor sunt disjuncte i
mulimea de definiie a unui task este disjunct fa de mulimea rezultatelor
celuilalt task.
Pornind de la definiia determinrii taskurilor, rezult c n condiiile de
mai sus cele dou taskuri sunt determinate. Extrapolnd se poate spune c un
sistem de taskuri este determinat, dac oricare dou taskuri ale sistemului sunt
neinterferente, respectiv sunt determinate.
B blocarea taskurilor
Aceast situaie apare cnd un numr de taskuri este blocat ntr-o list
circular de ateptare, fiecare task ateptnd eliberarea unei resurse pe care o
deine un alt task.
Pentru exemplificare considerm mulimea de taskuri
{ }
n
,M , M , M
2 1
= M care se gsesc n situaia ilustrat n figura 3.42. Dup cum
se observ taskul T
1
deine resursa R
1
i ateapt eliberarea resursei R
n
, taskul T
2

deine resursa R
2
i ateapt eliberarea resursei R
1
.a.m.d. iar ultimul task T
n

deine resursa R
n
i ateapt eliberarea resursei R
n-1 .

Achiziia i prelucrarea datelor
Capitolul 3 108












Pentru a formaliza blocarea unui sistem de taskuri se consider m tipuri
de resurse R
1
, R
2
, . R
m
, , cantitile, disponibile din fiecare resurs fiind c
1
, c
2
, .
c
m
, iar capacitii sistemului i se asociaz vectorul
] ,c , c , c [
m

2 1
= C . (3.9)
Fie mulimea { }
n
,T , T , T
2 1
= T din cadrul unui sistem de taskuri, n care
fiecare task pe parcursul execuiei sale folosete un numr constant de resurse
din fiecare tip.
Pentru fiecare task se definete vectorul q
i
al cererilor suplimentare de
resurse pentru taskul T
i
,
] ,q , q , [q q
im i i i

2 1
= ; (3.10)
i vectorul e
i
al resurselor eliberate la terminarea taskului T
i
] ,e , e , [e e
im i i i

2 1
= , (3.11)
n care q
ij
, e
ij
reprezent numerele de resurse R
j
solicitate suplimentar / eliberate
de ctre taskul T
i
.
Pentru sistemul de taskuri se consider secvena de execuie
} , , , { T T T T T T
n n
n
2 2 1 2
2
1
1 o o o o = = , (3.12)
creia i corespunde secvena de stri
} s , , s , s {
n 2 2 1
= o . (3.13)
n relaia (3.13) o stare s
k
este explicitat prin vectorii
)] k ( ,A , ) k ( A , ) k ( A [ A(k)
m

2 1
= ; (3.14)
Fig. 3.42. Taskuri blocate ntr-o list circular.

T
1
T
2
T
3
T
4
T
n
T
n-2
T
n-1
R
1
R
2
R
3
R
4
R
n-1
R
n-2
R
n-1
Fig.
Achiziia i prelucrarea datelor
Capitolul 3 109
)] k ( ,Q , ) k ( Q , ) k ( Q [ Q(k)
m

2 1
= , (3.15)
unde: A(k) reprezint numrul de resurse alocate dup evenimentul a
k
;
Q(k) - numrul de resurse eliberate dup evenimentul a
k
;
A
j
(k)- numrul de resurse R
j
alocate dup evenimentul a
k
;
Q
j
(k)- numrul de resurse R
j
eliberate dup evenimentul a
k.

Vectorii A(k) i Q(k) sunt definii recursiv, astfel:
1
0 q ) Q( =
..
0 = Q(k) dac i
k
T a =
sau (3.16)
1 +
=
i
q Q(k) dac
i k
T a =


0 0 = ) A(
..
) k ( Q ) k ( A A(k) 1 1 + = dac i
k
T a =
sau (3.17)
i
e ) k ( A A(k) = 1 dac
i k
T a =


Din analiza grupurilor de relaii (3.16) i (3.17) rezult urmtoarele
aspecte:
a) vectorul cererilor de resurse Q este iniializat cu cererea primului
task (primul eveniment este 1 T );
b) dac evenimentul a
k
este iniierea unui task, atunci nu sunt cerute
resurse suplimentare;
c) dac a
k
reprezint terminarea unui task, se atribuie lui Q(k)
cererea urmtorului task (evenimentul urmtor va fi iniierea
acestuia);
d) vectorul resurselor alocate A este iniial zero;
e) dac a
k
reprezint iniierea unui task, se adaug la numrul de
resurse alocate numrul de resurse cerute curent;
f) dac a
k
este terminarea unui task, se scade din A(k-1) numrul
resurselor eliberate e
i
;
g) terminarea unui task T
i
este asociat cu eliberarea de resurse de
ctre acesta i cu solicitarea de resurse de ctre T
i + 1
;
Achiziia i prelucrarea datelor
Capitolul 3 110
h) Se presupune c, la sfritul secvenei de execuie, se elibereaz
toate resursele, adic :
0 2
1
= =

=
] ) k ( e ) k ( q [ n) A(
n
k
. (3.18)
n continuare vom considera un sistem de taskuri T format din mai multe
subsisteme , respectiv
N
T , , T , T
2 1
cu ,N , , l 2 1 = c , T T
l
,
unde { }
) l (
n
) l ( ) l (
l
,T , T , T
2 1
=
l
T cu ,N , , l 2 1 = . (3.19)
Subsistemele T
l
se execut n paralel, situaie n care secvenele
corespunztoare fiecrui subsistem se pot ntreptrunde.
Pentru un asemenea subsistem notm cu
-
) l (
i
q - vectorul cererilor suplimentare de resurse;
-
) l (
i
e - vectorul resurselor eliberate;
- ) k ( A
) l (
- numrul de resurse alocate dup evenimentul a
k
;

- ) k ( Q
) l (
- numrul de resurse eliberate dup evenimentul a
k
.
O secven de execuie a sistemului de taskuri T va fi de forma
} a , , a , , a , a {
n k 2 2 1
= o unde, (3.20)

N
n n n n + + + =
2 1
, (3.21)
un eveniment a
k
putnd fi asociat oricrui subsistem T
l
respectiv

) l (
i
k
T a = sau
) l (
i k
T a = cu
l
,n , , i 2 1 =
Starea sistemului de taskuri T va fi definit prin perechea de matrice
] ) k ( Q ), k ( A [ , unde
(
(
(
(
(

=
(
(
(
(
(

=
) k ( Q
) k ( Q
) k ( Q
) k ( Q
) k ( A
) k ( A
) k ( A
) k ( A
) l (
) (
) (
) l (
) (
) (

2
1
2
1
cu ,N , , l 2 1 = (3.22)
Referitor la elementele matricelor A(k) i Q(k) sunt utile urmtoarele
precizri:
a) dac 0 = ) k ( Q
) l (
subsistemul T
l
ateapt alocarea de resurse;
Achiziia i prelucrarea datelor
Capitolul 3 111
b) dac 0 = ) k ( A
) l (
i 0 = ) k ( Q
) l (
subsistemul T
l
este n execuie
sau ndeplinete condiiile pentru a continua execuia.
Un subsistem T
l
pentru care
0 = + ) k ( Q ) k ( A
) l ( ) l (
, (3.23)
se numete activ la momentul k , n sensul c are resurse alocate i/sau solicit
resurse noi.
Pentru un sistem de taskuri se definete vectorul resurselor disponibile la
momentul k

=
=
N
l
) l (
) k ( A C d(k)
1
, (3.24)
respectiv din capacitatea sistemului C se scade totalitatea resurselor alocate celor
N subsisteme la momentul k.
Dac un eveniment a
k
este o iniiere, respectiv
) l (
i
k
T a = , atunci aceasta
este permis dac resursele cerute ) k ( Q
) l (
nu depesc cantitatea de resurse
disponibile d(k), cu alte cuvinte
) k ( d ) k ( Q
) l (
s . (3.25)
O secven de execuie se numete valid dac toate iniierile de taskuri
sunt permise.
O situaie ntlnit n execuia unui sistem de taskuri este interblocarea,
pentru a crei definire vom considera o secven de execuie parial
} a , , a , a {
k

2 1
= o
i o secven corespunztoare de stri
} s , , s , s {
k

2 1
= o .
Se spune c exist o interblocare n stare s
k
dac exist o mulime
discret nevid } N , , , { I 2 1 c astfel nct pentru I l ) ( e , cererile s
depeasc disponibilitile, respectiv s fie satisfcut inegalitatea
16

e
+ >
I i
) i ( ) l (
) k ( A ) k ( d ) k ( Q . (3.26)
Prin definiie rezult c, pentru I l ) ( e 0 > ) k ( Q
) l (
, adic evenimentul
urmtor din subsistemul T
l
este o iniiere a unui task T
i
( } n , , , { i
l
2 1 e ), iar
aceast iniiere nu este permis pentru nici un indice I l e (ntruct cererea de
resurse este mai mare dect disponibilitatea). Mai mult, din definiie rezult c

16
Se spune de asemenea c fiecare sistem T
l
cu I l e este interblocat.
Achiziia i prelucrarea datelor
Capitolul 3 112
n ipoteza cea mai favorabil, dac se elibereaz toate resursele deinute n
prezent de celelalte taskuri, iniierea este de asemenea nepermis.
Problemele de baz care se pun n legtur cu interblocarea sunt:
detectarea i evitarea.
- Detectarea interblocrii presupune existena unui algoritm avnd
ca intrare starea curent s
k
, i care s precizeze dac n starea respectiv exist
interblocare.
- Evitarea interblocrii implic existena unui algoritm care, pornind
dintr-o stare dat i pe baza cunoaterii cererilor i eliberrilor de resurse
aferente evenimentelor din sistemul de taskuri, s precizeze dac exist secvene
n care s nu apar interblocri i s construiasc cel puin o asemenea secven.
C excluderea mutual a taskurilor
Dup cum s-a artat pe parcursul prezentului capitol anumite resurse
necesare execuiei unui sistem de taskuri sunt resurse critice i nu pot fi
deinute la un moment dat dect de un singur task. Seciunea dintr-un task n
care acesta acceseaz o seciune critic constituie o seciune critic.
n cadrul unui sistem de taskuri, acestea pot interaciona, prin accesul
concurent la diferite resurse critice sau prin transmiterea de date (mesaje) ntre
ele. Pentru buna desfurare a activitii sistemului de taskuri, n sensul
determinrii i evitrii interblocrii, trebuie prevzute anumite operaii specifice
(primitive) care, n esen, trebuie s asigure ca seciunile critice s nu se
execute n paralel (deci s nu se ntreptrund).
Excluderea mutual reprezint operaia prin care se asigur accesul la un
moment dat a unui singur task n propria seciune critic referitoare la o anumit
resurs. Este evident faptul c prin modul n care a fost introdus conceptul de
excludere mutual , aceast operaie asigur evitarea execuiei paralele a
seciunilor critice.
Pentru a sublinia importana excluderii mutuale se prezint n mai jos
secvenele aferente execuiei a dou taskuri T1 i T2.







Taskul T1 observ un eveniment exterior (care se produce complet
asincron), incrementnd variabila CONTOR (iniializat cu zero) dup apariia
Task T1
repet indefinit
{
{observ eveniment}
CONTORCONTOR+1
}
Fig. 2.43. Soluia lui Knuth
pentru realizarea excluderii
mutuale.
Achiziia i prelucrarea datelor
Capitolul 3 113
fiecrui eveniment. Taskul T2 consum evenimentele produse (le prelucreaz) i
reseteaz apoi variabila CONTOR, care dup cum se observ poate fi accesat
din ambele taskuri.
S presupunem c taskul T2 a preluat controlul i a consumat
evenimentele, dar nu a resetat nc variabila CONTOR. Dac n acest moment se
produce un eveniment, T2 este ntrerupt i controlul este preluat de taskul T1.
Acesta incrementeaz variabila CONTOR, cednd controlul taskului ntrerupt,
deci lui T2, care continu execuia din punctul n care a fost ntrerupt, resetnd
prin urmare variabila CONTOR. Rezult c evenimentul produs a rmas
neconsumat i prin urmare taskul T2 nu i-a realizat funcionalitatea.
Pentru a nu se ajunge la aceast disfuncie este necesar ca operaiile din
taskurile T1 i T2 s nu interfere, deci s se exclud mutual.
O prim soluie la problema excluderii mutuale a fost dat de Donald
Knuth. Pentru un sistem de taskuri { }
n
,T , T , T
2 1
= T care pot solicita fiecare o
resurs comun R , metoda lui Knuth presupune adugarea la fiecare task T
i
a
dou taskuri S
i
i U
i
situate din punct de vedere al precedenei naintea i
respectiv dup T
i
potrivit reprezentrii din figura 3.43.






Se introduc de asemenea o coad de ateptare i o variabil global p,
ambele iniializate cu zero. Coada este implementat printr-un tablou Q de
dimensiune n+1, n care se vor trece n ordine, indicii taskurilor care concureaz
pentru resursa R. n variabila global p se nscrie indicele ultimului task din
coada de ateptare. Iniializarea cu zero a cozii i variabilei indic faptul c n
coad nu ateapt nici un task.
Pentru explicarea funcionalitii taskurilor S
i
i U
i
se consider
urmtoarea organizare a acestora.
Task S
i
Task U
i

Q(p) i; if(p i) Q(0) Q(i);
p i; else
while (Q(0) i) {
{ p0;
; Q(0)0;
} }
S
i
T
i
U
i
Fig. 3.43. Soluia lui Knuth pentru realizarea excluderii mutuale.
Achiziia i prelucrarea datelor
Capitolul 3 114

- Taskul S
i
introduce T
i
n coada de ateptare (prin nscrierea indicelui
i n Q(p)) i poziionarea lui p n i) dup care ateapt (n ciclul while) pn
cnd T
i
ajunge n capul cozii (respectiv pn cnd Q(0)= i). Dup expirarea lui S
i
ncepe execuia propriu-zis a taskului T
i
.
- Taskul U
i
elimin taskul T
i
din coad i pune urmtorul task n capul
cozii (Q(0) Q(i)). Dac T
i
a fost ultima activitate din coad, atunci coada se
iniializeaz cu zero (p0, Q(0)0 adic se consider coada vid).
n vederea eliminrii interferenelor ntre diferite taskuri S
i
i S
j
sau ntre
taskuri S
i
i U
j
, trebuie ca activitile din S
i
i U
j
s fie indivizibile (s nu poat fi
ntrerupte). Pentru realizarea acestui deziderat, se consider dou proceduri
nentreruptibile enqueue (i) i remove (i) care nu pot interfera i al cror cod
simplificat se prezint mai jos.
enque(i) remove(i)
{ {
Q(p) i; if(p i) Q(0) Q(i);
p i; else
} {
p0;
Q(0)0;
}
}

n cuprinsul acestui capitol au fost prezentate i alte instrumente pentru
realizarea excluderii mutuale i anume: semafoare, variabile de tip eveniment,
cutii potate, blocuri resurs etc.
D sincronizarea taskurilor
Dup cum s-a menionat la prezentarea acestei operaii multitasking,
dou taskuri se consider sincronizate, dac se pot stabili relaii reciproce ntre
anumite momente ale execuiei lor.
n cadrul cooperrii a dou sau mai multe taskuri, trebuie semnalate
diverse evenimente, aciuni, etc., astfel nct funcionalitatea sistemului s fie
cea proiectat.
Sincronizarea unui task poate avea loc fie pe un eveniment exterior
taskului, fie pe o condiie de timp.
Pentru realizarea sincronizrii executivele de timp real pun la dispoziie
instrumente i tehnici care au fost prezentate n subcapitolul 3.4.
Achiziia i prelucrarea datelor
Capitolul 4 115















O etap n existena unui sistem de programe n timp real o reprezint
codificarea care presupune transpunerea algoritmului ntr-un program, utiliznd
n acest scop resurse adecvate.
Avnd n vedere specificitatea aplicaiilor de timp real rezult c mediile
de dezvoltare trebuie s rspund la rndul prin caracteristici unor cerine
specifice.
n prezentul capitol vor fi analizate aceste cerine i caracteristici i se va
prezenta un mediu de programare n timp real.


4.1. Cerinele i caracteristicile limbajelor de programare
n timp real
Limbajele de programare n timp real (LPTR) trebuie s prezinte
caracteristici i s ofere faciliti care s rspund n primul rnd problemelor
ridicate de execuia paralel sau pseudoparalel a taskurilor.
4.1.1. Tipuri de LPTR
nainte de evidenierea unor tipuri de LPTR vor fi prezentate cteva
elemente specifice unui metalimbaj de descriere. Acest metalimbaj presupune
descrierea unor noiuni cu ajutorul altora, care trebuie la rndul lor definite, pn
se ajunge la definiii n care intervin numai elementele de baz ale limbajului
(adic acelea care au semnificaie intrinsec, respectiv litere, cifre, semne
speciale, cuvinte cheie ).
Aceste elemente sunt considerate atomice iar lor li se aloc simboluri
terminale. Spre deosebire de elementele atomice, noiunilor sintactice care
urmeaz a se defini li se loc simboluri neterminale.
Metalimbajul de descriere reprezint un limbaj pentru descrierea
construciilor altui limbaj. n continuare se vor prezenta succint cteva elemente
R Re es su ur rs se e p pe en nt tr ru u
p pr ro og gr ra am ma ar re ea a n n t ti im mp p r re ea al l
a a d da at te el lo or r a ac ch hi iz zi i i io on na at te e
C CA AP PI IT TO OL LU UL L
4
4

Achiziia i prelucrarea datelor
Capitolul 4 116
aferente unui asemenea metalimbaj, n care pentru descriere se utilizeaz
grafurile sintactice.
Un asemenea graf conine urmtoarele elemente:
- simboluri terminale asociate unitilor atomice, care se prezint sub
forma unui cerc n care se nscrie respectiva unitate;
- simboluri neterminale asociate noiunilor sintactice, care se prezint
sub forma unor dreptunghiuri n care se nscrie respectiva noiune;
- arce orientate.
Graful se parcurge ntr-un singur sens de la unica sgeat care intr, la
unica sgeat care prsete graful.
ntr-un graf sintactic se regsesc n form specific elementele
programrii structurate i anume succesiunea (secvena), ramificaia, iteraia.
Succesiunea este implementat de concatenare (alipire), ramificaia de
alternativ, iar iteraia de repetiie.
De exemplu graful sintactic pentru simbolul cifr, care conine numai
simboluri terminale, se prezint ca n figura 4.1 i se interpreteaz n felul
urmtor: o cifr se reprezint cu ajutorul unuia dintre simbolurile 0, 1, , 9.






Dup cum se observ acest graf conine numai ramificaii n sensul c
pentru o cifr se trece o singur dat prin simbolul aferent.
Grafuri asemntoare se obin pentru noiunile liter mic (minuscul) i
liter mare (majuscul) cu ajutorul simbolurilor a, b, c, , x, y, z respectiv A, B,
C, , X, Y, Z.
Dac se dorete construcia grafului sintactic numr algebric cu semn, se
utilizeaz unitatea atomic semn i noiunea cifr potrivit reprezentrii din
figura 4.2.





0 1 2 8 9
. . .
Fig. 4.1. Graf sintactic pentru noiunea cifr.
+
-
cifr
Fig. 4.2. Graf sintactic pentru noiunea numr algebric.
Achiziia i prelucrarea datelor
Capitolul 4 117
Din punct de vedere structural exist o concatenare a noiunilor semn i
cifr. Definirea noiunii semn implic o ramificaie, iar pentru a forma numrul
din mai multe cifre o repetiie.
Un ultim exemplu se refer la definirea noiunii nume. Dup cum rezult
din figura 4.3 n care se prezint graful sintactic asociat, nume ncepe obligatoriu
cu o liter, care poate fi urmat sau nu alte litere sau cifre.







Alturi de descrierea pe care o realizeaz, metalimbajul contribuie i la
nelegerea i nsuirea rapid a construciilor sintactice specifice unui anumit
limbaj.
Principalul criteriu de clasificare a LPTR l reprezint forma sub care
taskurile solicit servicii SOTR respectiv interfaa sistem de operare LPTR,
pentru care exist urmtoarele modaliti de realizare:
a) n program se introduc explicit structuri de date i de cod necesare
efecturii serviciilor ; introducerea explicit poate avea n vedere i utilizarea
unor secvene n limbaj de asamblare pe lng construciile specifice LPTR
(exemple de limbaje RTL/2, FORTH, etc.);
b) n biblioteca obiect a limbajului se afl proceduri apelabile din
programul surs care apeleaz la rndul lor executivul de timp real (aceast
modalitate este n general specific extensiilor de timp real a unor limbaje de
nivel nalt, cum ar fi FORTRAN 77, BASIC etc.);
c) LPTR conine construciile adecvate structuri de date i de
instruciuni care permit exprimarea direct a serviciului dorit (exemple de
limbaje: EDISON, MODULA 2, ADA etc. ).

4.1.2. Cerine impuse LPTR
Principala cerin impus LPTR o reprezint desigur existena de
primitive care s implementeze operaiile multitasking i instrumentele de
implementare specifice.
n afara acestei cerine, un LPTR trebuie s satisfac i ale exigene
legate n principal de:
liter
Fig. 4.3. Graf sintactic pentru noiunea nume.
cifr
liter
Achiziia i prelucrarea datelor
Capitolul 4 118
- fiabilitate ;
- eficien ;
- flexibilitate ;
- claritate ;
- simplitate;
- portabilitate.
Fiabilitatea LPTR se refer la facilitile pe care trebuie s le ofere
limbajul respectiv pentru evitarea erorilor de programare i detectarea automat
n situaia n care acestea nu au putut fi evitate. Pe ct posibil detectarea erorilor
trebuie s se fac n faza de compilare pe maina gazd.
Eficiena LPTR are n vedere aspecte legate de efortul de dezvoltare
i de gradul de utilizare a resurselor mainii int pe care ruleaz aplicaia.
Cerina de eficien impune evident un efort ct mai redus dezvoltare i un grad
de utilizare ct mai ridicat al resurselor mainii int.
Flexibilitatea LPTR impune ca toate operaiile aferente unei aplicaii
de timp real s fie exprimate exclusiv prin mijloace ale limbajului.
Claritatea LPTR se refer la necesitatea existenei de resurse
(ncepnd cu cuvinte cheie i terminnd cu faciliti pentru modularizare i
structurare) care s permit elaborarea, descrierea i modificarea programelor
numai prin mijloace ale limbajului , fr a se face apel la mijloace auxiliare cum
ar fi schemele logice, pseudocodul, etc. Este de menionat faptul c n ceea ce
privete claritatea produsului program rezultat aceasta este influenat de stilul
programatorului care trebuie s se ncadreze n obiectivele ingineriei
programrii n timp real.
Simplitatea LPTR reprezint o cerin care are n vedere urmtoarele
aspecte:
- reducerea posibilitilor de erori n programare datorit unor
construcii sintactice complexe;
- volume mici i complexitate redus pentru compilare;
- obinerea unor programe obiect eficiente.
Portabilitatea LPTR presupune independena codului executabil de
tipul mainii int. n general portabilitatea contribuie la distribuire costurilor de
elaborare la mai multe aplicaii. Este de menionat faptul c portabilitatea este
mai greu de respectat la aplicaiile de timp real, deoarece pentru ridicarea
performanelor acestora se caut valorificarea la maximum a disponibilitilor
hardware ale mainii int.


Achiziia i prelucrarea datelor
Capitolul 4 119
4.1.3. Caracteristicile LPTR
Cerinelor de mai sus li se rspunde cu urmtoarele caracteristici ale
LPTR:
- structurare ;
- concuren ;
- programare la nivel fizic ;
- tratarea excepiilor ;
- compilare separat
- existena unitilor generice.

Structurarea
Cnd se vorbete de structurare se au n vedere aspecte legate de tipizare,
abstractizare i vizibilitate care se refer att la date ct i la cod.
Tipizarea exist practic n orice limbaj evoluat i presupune descrierea
datelor i a operaiilor n care sunt implicate, ntr-o terminologie orientat n
primul rnd spre aplicaie i mai puin ctre main.
Un tip de date este caracterizat prin mulimea valorilor pe care le pot lua
obiectele aferente i prin mulimea operaiilor care le sunt aplicabile.
Abstractizarea presupune conferirea caracterului de generalitate pentru
operaiile i funciile limbajului (n sensul apropierii de aplicaie i de
ndeprtare de main). Tipizarea reprezint alturi de ascundere o latur a
abstractizrii. Ascunderea presupune transparena n ceea ce privete folosirea
registrelor i a locaiilor de memorie precum i a transferurilor interne.
Vizibilitatea precizeaz zonele din program n care o entitate
identificabil printr-un nume este vizibil, respectiv poate fi modificat.
Structurile de date (SD) pot fi simple, compuse sau dinamice.
SD simple sunt tipurile de date care nu au componente, valorile lor fiind
uniti elementare fr structur intern analizabil (exemple: real, ntreg, logic,
caracter).
Un rol important l dein tipurile de enumerare definite de operator prin
indicarea tuturor valorilor tipului. Pornind de la tipul enumerat de baz se pot
genera:
- tipuri derivate care pot moteni numai o parte dintre atributele tipului
de baz;
- subtipuri care limiteaz gama valorilor posibile.
SD compuse sunt tipurile de date cu mai multe componente cu mai
multe componente (exemple: iruri, matrice, etc.). Acestea pot fi referite att
Achiziia i prelucrarea datelor
Capitolul 4 120
global, ct i pe componente. Ca SD compuse s-au impus tabloul (care grupeaz
componente de acelai tip) i articolul (care grupeaz componente de tipuri
diferite). Prin combinarea celor dou tipuri se pot obine structuri de orice
complexitate.
SD dinamice se caracterizeaz prin aceea c datele pot fi create i
distruse n timpul execuiei. Aceste variabile nu au nume (dac ar avea s-ar
transforma n variabile statice). Referirea la aceste variabile anonime se face
printr-o variabil de tip acces a crei valoare este adresa variabilei referite.
Structurile de cod (SC) pot fi de tip instruciune, bloc sau
procedur.
Instruciunile sunt grupate n structuri. Pe lng structurile de baz
(secven, selecie, iteraie) mai exist i structurile adiionale (cum ar fi
alternativa general CASE, iteraia cu test iniial sau final etc.)
Pot fi evideniate i structuri aferente aplicaiilor de timp real cum ar fi
structura iterativ cu ieire condiionat i structura iterativ cu un numr
necunoscut de pai.
Structura de bloc are n vedere abandonarea conceptului program
monolitic mprit n dou seciuni date i cod. Structurarea n blocuri prezint
urmtoarele avantaje:
- permite construcia modular rezultat din proiectarea prin detaliere
succesiv;
- ofer posibilitatea crerii de memorie local printr-o form restrns
de alocare dinamic a memoriei. n acest fel o parte a memoriei se
poate recicla , aceasta fiind rezervat la intrarea n bloc i eliberat
la ieirea din acesta;
- permite programatorului s controleze domeniile de definiie i de
vizibilitate a datelor.
Procedura reprezint o secven de operaii executate n scopul
rezolvrii unei probleme date, care poate fi apelat din mai multe module
program. Concepute iniial pentru a evita repetarea codului procedurile sunt
implicate n limbajele evoluate n structurarea programelor.
n ultim instan un program bine structurat va reprezenta o succesiune
de apeluri de proceduri. Lucrul cu proceduri permite proiectarea prin adncirea
gradului de detaliere.
O categorie aparte de procedur este reprezentat de funcie la crei
definire trebuie precizate numele i tipul precum i tipurile variabilelor
implicate.

Achiziia i prelucrarea datelor
Capitolul 4 121

Concurena
Programarea concurent este acel stil de programare care permite
implementarea prelucrrii paralele sau pseudoparalele a datelor.
Avnd n vedere cele dou laturi ale concurenei (paralelismul i
interaciunea) LPTR trebuie s ofere instrumente care s ofere posibilitatea
tranziiei taskurilor ntre stri i substri precum i implementarea operaiilor
multitasking (excludere mutual, sincronizare, comunicare).
n programarea concurent entitatea de baz este taskul care dup cum se
tie se bucur de proprietile de indivizibilitate, secvenialitate, asincronism,
dinamism.
Excluderea mutual prezentat pe larg n capitolul precedent presupune
interzicerea execuiei paralele a seciunilor critice referitoare la o aceiai resurs.
LPTR trebuie s asigure implementarea acestei operaii prin semafoare, cutii
potale, mesaje de trecere, monitoare , etc.
Sincronizarea taskurilor presupune n primul rnd o coordonare a
execuiei acestora n raport cu timpul sau cu evenimente externe. LPTR trebuie
s ofere mijloace care s implementeze nu numai corelarea cu timpul sau cu
evenimente ct i stabilitatea acestei relaii.
De asemenea trebuie create posibiliti pentru realizarea sincronizrii
implicite sau explicite sau cu timpul dup cum urmeaz:
- sincronizarea implicit specific realizrii disciplinei de acces la o
resurs comun care se partajeaz;
- sincronizarea explicit conform creia un program trebuie s atepte
(durat impredictibil) pn cnd altul va finaliza o anumit
activitate;
- sincronizarea cu timpul presupune c evenimentele cu care se
realizeaz sincronizarea sunt impulsurile ceasului de timp real.
Comunicarea ntre taskuri se poate realiza n dou moduri i anume:
- prin transfer efectiv, caz n care datele se copiaz dintr-o zon de
memorie a unui task, ntr-o zon de memorie a celuilalt i care se
realizeaz prin canale de comunicaie;
- prin partajare, caz n care datele se depoziteaz ntr-o zon
accesibil ambelor taskuri, i care se realizeaz printr-o zon
comun de memorie.
Programarea la nivel fizic
Acest stil de programare este aplicabil n primul rnd pentru realizarea
operaiilor de intrare-ieire, i se justific prin:
Achiziia i prelucrarea datelor
Capitolul 4 122
- realizarea lejer a interactivitii ntre taskuri;
- diversitatea perifericelor care necesit realizarea de module de control
de ctre programator, module care pot necesita prelucrri apropiate
de nivelul main;
- scderea timpului de ateptare pentru realizarea operaiilor de intrare
ieire.
Primele LPTR au rezolvat aceast problem prin inserarea de instruciuni
cod main ntre instruciuni ale limbajului de asamblare. La limbajele moderne
de nivel nalt apar perfecionri cum ar fi:
- reprezentarea registrelor prin tipuri de date compuse (tablouri,
articole, mulimi);
- crearea de mecanisme care s suspende temporar verificrile de tip i
care s permit programarea pe baza reprezentrilor interne.
Tratarea excepiilor
Excepiile reprezint situaiile anormale aprute n evoluia unui
program. Mecanismele de tratare a excepiilor trebuie s prezinte urmtoarele
caracteristici:
- simplitate n utilizare;
- s nu ncarce procedura de tratare dect la apariia excepiei;
- s trateze unitar toate tipurile de excepii.
Compilarea separat
Pornind de la modularizarea programelor acest procedeu are n vedere
compilarea separat a fiecrui modul. Unitile de program (de exemplu
taskurile) se compileaz individual, dar cu considerarea pentru verificare a
rezultatelor compilrii celorlalte module.
Compilarea separat este justificat , printre altele, de urmtoarele
aspecte:
- se permite dezvoltarea de aplicaii complexe pe sisteme cu
disponibiliti reduse;
- la modificri se vor compila numai modulele n care s-a intervenit.
Existena unitilor generice
Unitile generice reprezinte matrie pentru mulimi de uniti de uniti
de program. Din unitile generice se obin unitile de program propriuzise
(negenerice) prin generare de exemplu (sau instaniere).


Achiziia i prelucrarea datelor
Capitolul 4 123
4.2. Executivul de timp real RTK

RTK reprezint acronimul de la Real Time Kernel executiv de timp
real dezvoltat de On Time Company [www.on-time.com ]. Motivaia prezentrii
executivului n prezentul curs const n faptul c implementeaz cele mai
importante instrumente ale tratrii operaiilor multitasking i anume
semafoarele, cutiile potale i mesajele de trecere. De asemenea executivul
ofer posibilitatea nelegerii conceptului de task i urmrirea evoluiei
taskurilor.
4.2.1. Caracteristicile executivului RTK
RTK reprezint a fost dezvoltat pentru a oferi faciliti de timp real
1

sistemului de operare MS-DOS. n acest context RTKernel reprezint un
planificator multitasking de timp real pentru acest sistem de operare. nc de la
apariia sa nucleul a constituit un puternic suport pentru dezvoltarea software a
aplicaiilor de conducere a proceselor rulabile pe calculatoare DOS i ulterior pe
sisteme nglobate dedicate
2
.
RTK are o construcie compact care necesit spaii modeste de memorie
(n jur de 16 KBytes pentru cod i 6 KBytes pentru date) i ofer
programatorului instrumentele de baz necesare dezvoltrii unor aplicaii
eficiente de timp real.
ntre caracteristicile sale importante sunt de menionat urmtoarele:
poate opera cu un numr nelimitat de taskuri;
taskurilor li se pot asocia prioriti, care asigur o gestionare a
comportrii acestora;
prioritatea reprezint un numr natural cuprins ntre 1 i 64
3
;
exist posibilitatea ca dou sau mai multe taskuri s dein aceiai
prioritate;
timpul de comutare a strii taskurilor este n jur de 6 microsecunde;
comutrile ntre stri se pot realiza la orice moment de timp;
pune la dispoziia programatorului semafoare, cutii potale i mesaje
de trecere pentru tratarea operaiilor multitasking;
nucleul conine drivere pentru ecran, tastatur, port serial, port
paralel i reea.





1
Se are n vedere dezvoltarea de faciliti destinate implementrii execuiei pseudoparalele a taskurilor.
2
Embedded systems
3
P
1
< P
2
<.< P
64

Achiziia i prelucrarea datelor
Capitolul 4 124
4.2.2. Taskuri sub RTK
n context RTK un task reprezint o funcie C/C++ sau procedur Pascal
fr parametri
4
. La un task RTK variabilele locale sunt alocate pe o stiv proprie.
Existena acestei stive permite apelarea simultan a unei funcii din mai multe
taskuri, cu alte cuvinte nu exist probleme cu reentrana
5
. n ceea ce privete
accesarea variabilelor globale nu exist restricii. n figura 4.1 se prezint
structura unei aplicaii RTK destinat s ruleze sub sistemul de operare MS-DOS.




.
Dup cum s-a artat nu exist o limitare n ceea ce privete numrul
taskurilor utilizator, ns este obligatorie prezena unui task principal (main
task), care se creeaz la iniializarea nucleului.
Taskurile RTK sunt taskuri interactive, acestea evolund conform celor
evideniate n capitolul 2 ntr-un spaiu al strilor.
Un task RTK se poate gsi ntr-una dintre urmtoarele stri
6
:
Current;
Ready;
Suspended;
Blocked;
Delaiyng;
Timed,
ntre care pot avea loc tranziiile potrivit grafului ilustrat n figura 4.2.

4
n cele ce urmeaz se vor face referiri numai la varianta de RTK bazat pe utilizarea limbajului C.
5
Reentrana reprezint proprietatea unei funcii de a putea fi executat simultan de ctre mai multe
taskuri utilizator.
6
Strile Blocked i Timed mai pot avea i substri care vor fi evideniate la prezentarea funciilor
specifice.
Fig. 4.1. Structura unei aplicaii RTK.
Achiziia i prelucrarea datelor
Capitolul 4 125
Starea Current corespunde strii Execuie din prima abordare,
respectiv substrii Execuie din a doua abordare. Sub RTK un singur task se
poate gsi la un moment dat n aceast stare. Practic taskul aflat la un moment
dat n starea Current deine la respectivul moment controlul unitii centrale de
procesare (UCP). Dac nici un task utilizator nu este planificat pentru execuie,
controlul UCP este deinut de Idle Task creat la iniializarea RTKernel.






Dup cum se observ din figura 4.2, n starea Current se poate ajunge
numai din starea Ready, n timp ce din starea Current pot fi efectuate tranziii n
toate celelalte stri.
n ceea ce privete planificarea pentru execuie a taskurilor, aceasta se
poate face n mod preemptiv sau cooperativ, modul implicit fiind cel cooperativ.
Modul preemptiv (preemptive scheduling) corespunde ntreruperii periodice a
taskului aflat n execuie i transferul controlului ctre un task aflat n starea
Ready. Acest mod elimin posibilitatea acaparrii procesorului de ctre un
singur task. Procedeul mai este cunoscut i ca time-slice multitasking
(multitasking cu trane de timp)
7
. Modul cooperativ (cooperative multitasking)
presupune cedarea controlului procesorului de ctre taskul current ctre un alt
task aflat n starea Ready.
Starea Suspended corespunde strii Creat din prima abordare,
respectiv strii inactive din a doua abordare. Un task suspendat nu poate fi rulat

7
Pentru stabilirea tranei de timp se apeleaz funcia RTKTimeSlice din repertoriul de
instruc iuni al RTKernel.
Fig. 4.2. Graful de tranziie a taskurilor n RTK.
Achiziia i prelucrarea datelor
Capitolul 4 126
ntruct a fost stopat prin funcia RTKSuspend. Taskul poate redeveni rulabil
dac asupra sa se execut funcia RTKResume
8

Un task aflat n starea Blocked nu poate fi executat ntruct ateapt
producerea unui eveniment extern cum ar fi: un semnal de la un semafor,
sosirea unui mesaj ntr-o cutie potal, etc. Un asemenea task devine Ready
dup ce evenimentul ateptat s-a produs.
Starea Delaying corespunde unui task care a cedat voluntar
controlul procesorului pentru un anumit timp, prin execuia unei funcii
RTKDelay
9
. Tranziia Delaying Ready se realizeaz dup trecerea intervalului
de timp specificat prin funcie.
Un task se gsete n starea Timed dac ateapt un anumit timp
specificat producerea unui eveniment (din clasa celor specifice strii Blocked).
Ieirea din aceast stare se realizeaz la producerea evenimentului sau la
expirarea timpului.
Este de remarcat faptul c strile Blocked, Delaying, Timed pot fi
ncadrate n starea Blocat din prima abordare, respectiv substarea Blocat
specific celei de-a doua abordri. Examinnd figura 4.2 se observ c tranziia
n fiecare dintre cele trei stri se poate face din starea Current, ieirea fiind
numai ctre starea Ready.
Toate taskurile care nu sunt n starea Current sunt meninute n cozi
10

cum ar fi: coada taskurilor Ready, coada taskurilor care ateapt la un semafor,
la o cutie potal, etc.

4.2.3. Funcii de iniializare
Executivul RTK pune la dispoziia programatorului un numr de 210
funcii ale cror antete (headere) se gsesc n fiierul rtkernel.h care
trebuie inclus n programul surs prin directiva de preprocesare
#include "rtkernel.h"
De asemenea trebuie incluse tot printr-o directiv de preprocesare fiierul
cu antetele funciilor asociate driverului consolei
11
, respectiv
#include "rtkeybrd.h"

8
Cele dou funcii din repertoriul RTKernel vor fi prezentate n seciunea funciilor RTK de
administrare a taskurilor.
9
Funcia RTKDelay din repertoriul RTKernel va fi prezentate n seciunea funciilor RTK de
gestionare a timpului.
10
Coada (queue) reprezint o structur de date din care elementele sunt extrase n ordinea introducerii
(administrare FIFO First Input First Output).
11
n acest context prin driver se nelege o component software care permite sistemului de calcul s
comunice cu un anumit dispozitiv. Dac n program mai sunt utilizate i alte dispozitive, n afara
consolei, vor trebui iniializate i driverele acestora
Achiziia i prelucrarea datelor
Capitolul 4 127
Un program RTKernel conine funcii C i funcii specifice, acestea din
urm coninnd prefixul RTK. Pentru execuie va trebui construit un project C
care s includ codul surs i biblioteca rtkth.lib. n cele ce urmeaz vor fi
prezentate funcii semnificative care vizeaz:
- iniializarea nucleului;
- administrarea taskurilor;
- gestionarea timpului;
- gestionarea semafoarelor;
- gestionarea cutiilor potale;
- gestionarea mesajelor de trecere.

Din categoria funciilor de iniializare vor fi prezentate cele asociate
nucleului i driverului asociat consolei.
Funcia RTKernelInit iniializeaz nucleul RTK i are urmtoarea
form general
TaskHandle RTKernelInit(unsigned MainPrio); (4.1)
unde MainPrio este o variabil de tip unsigned care desemneaz
prioritatea taskului main.
Pentru a referi taskurile acestora li se pot asocia variabile de mnuire
handle de tip TaskHandle
12
. n funcia (4.1) variabila de tip TaskHandle
este pentru taskul main
13
.
La execuia funciei (4.1) sunt efectuate, printre altele, urmtoarele operaii
importante:
1) iniializarea structurilor interne de date;
2) verificarea dac un alt program RTKernel este ncrcat (n caz
afirmativ, programul n care se apeleaz funcia de iniializare este
abandonat cu transmiterea unui mesaj de eroare);
3) convertirea funciei main n taskul main i alocarea prioritii
specificate;
4) crearea taskului Idle
14
i alocarea prioritii zero;
5) iniializarea ceasului intern cu zero.

Funcia RTKeybrdInit iniializeaz driverul consolei i are
urmtoarea form general
void RTKeybrdInit(void); (4.2)

12
TaskHandle este un tip de variabil predefinit n RTKernel
13
Dac taskul main nu este referit TaskHandle poate lipsi.
14
Taskul Idle se execut atunci cnd nici un task utilizator nu se afl n starea Current.
Achiziia i prelucrarea datelor
Capitolul 4 128
Se observ c funcia (4.2) nu ntoarce nici o valoare i c lista de parametri
a acesteia este vid.
Exemplul 3.1
n acest exemplu se prezint utilizarea funciilor (4.1) i (4.2)
-----------------
#include "rtkernel.h"
#include "rtkeybrd.h"
#define prio_main 3
------------------
TaskHandle handle_main;
-----------------
handle_main= RTKernelInit(prio_main);
RTKeybrdInit();
-----------------
Observaie
Ieirea din RTKernel se realizeaz prin apelarea funciei C
exit(0).

4.2.4. Funcii de administrare a taskurilor
n aceast seciune pot fi identificate dou categorii de funcii i anume:
a) funcii pentru crearea, terminarea, dezactivarea i activarea
taskurilor;
b) funcii care furnizeaz informaii privind caracteristicile i
evoluia taskurilor.

Funcia RTKCreateTask permite crearea unui nou task din alt
task i are urmtoarea form general
TaskHandle RTKCreateTask(void *TaskCode(void), (4.3)
Unsigned Priority,unsigned Stack, char *Name);
n funcia de mai sus semnificaiile notaiilor din lista de argumente au
semnificaiile urmtoare:
- parametrul TaskCode reprezint o funcie C care conine codul ce
urmeaz a fi executat n noul task;
- parametrul Priority prioritatea noului task (ntreg fr semn);
- parametrul Stack dimensiunea n octei a stivei noului task (ntreg fr
semn);
Achiziia i prelucrarea datelor
Capitolul 4 129
- parametrul Name pointer de maximum 15 caractere la numele noului
task.
Funcia RTKCreateTask ntoarce o valoare ntr-un handle cu ajutorul
cruia va putea fi referit noul task. Dac n program nu exist astfel de referiri
variabila handle poate lipsi.

Funcia RTKSuspend permite dezactivarea unui task, respectiv
trecerea sa n starea Suspended i are urmtoarea form general
void RTKSuspend(TaskHandle Handle); (4.4)
n care parametrul Handle refer taskul care urmeaz a fi dezactivat
(trecut n starea Suspended). Dac taskul era deja suspendat , funcia nu are efect.

Funcia RTKResume permite activarea unui task, respectiv
trecerea sa n starea Ready i are urmtoarea form general
void RTKResume(TaskHandle Handle); (4.5)
n care parametrul Handle refer taskul care urmeaz a fi activat (trecut n
starea Ready). Dac taskul nu era suspendat, funcia nu are efect.

Funcia RTKSetPriority, care servete la schimbarea prioritii
taskului referit are urmtoarea form general
void RTKSetPriority(TaskHandle Handle,
unsigned Priority); (4.6)
n care parametrul Handle refer taskul a crui prioritate se va schimba,
iar Priority reprezint noua prioritate.

Funcia RTKGetTaskState returneaz ntr-o variabil de tip
TaskState
15
starea taskului referit prin Handle i are urmtoarea
form general
TaskState RTKGetTaskState(TaskHandle Handle); (4.7)
Dup execuiei se returneaz o valoare care corespunde uneia dintre
strile sau substrile n care se gasete taskul dup cum urmeaz:





15
Acest tip din RTKernel corespunde tipului enumerat din limbajul C.
Achiziia i prelucrarea datelor
Capitolul 4 130
Stare Explicaie
Ready Task pregtit (aflat n starea Ready)
Current Task n execuie (aflat n starea Current )
Suspended Task suspendat prin execuia funciei RTKSuspend
Delaying Task n ateptare dup apelarea funciei RTKdelay
BlockedWait Task blocat la un semafor dup execuia unei funcii RTKWait
TimedWait Task n ateptare temporizat la un semafor dup execuia
unei funcii RTKWaitTimed
BlockedPut
Task blocat la depunerea unui mesaj ntr-o cutie potal plin
dup execuia unei funcii RTKPut
BlockedGet
Task blocat la extragerea unui mesaj dintr-o cutie potal
goal dup execuia unei funcii RTKGet
TimedPut
Task n ateptare temporizat pentru depunerea unui mesaj
ntr-o cutie potal plin dup execuia unei funcii
RTKPutTimed
TimedGet
Task n ateptare temporizat pentru extragerea unui mesaj
dintr-o cutie potal goal dup execuia unei funcii
RTKGetTimed
BlockedSend
Task blocat n trimiterea unui mesaj pe care destinatarul nu l
poate recepiona, dup execuia unei funcii RTKSend
BlockedReceive Task blocat n ateptarea unui mesaj pe care expeditorul nc
nu l-a trimis, dup execuia unei funcii RTKReceive
TimedSend Task n ateptare temporizat pentru transmiterea unui mesaj,
dup execuia unei funcii RTKSendTimed
TimedReceive
Task n ateptare temporizat pentru recepia unui mesaj,
dup execuia unei funcii RTKReceiveTimed
Deadlocked Task blocat n transmiterea unui mesaj ctre un task
dezactivat (interblocare)
Illegal Argumentul Handle se refer la un task inexistent
Terminated Task terminat ca urmare a execuiei unei funcii
RTKTerminate

Funcia RTKGetTaskPrio, returneaz ntr-o variabil de tip
unsigned prioritatea taskului referit prin handle i are forma
general de mai jos
unsigned RTKGetTaskPrio(TaskHandle Handle); (4.8)

Achiziia i prelucrarea datelor
Capitolul 4 131
Funcia RTKGetTaskStack, are forma general de mai jos
unsigned RTKGetTaskStack(TaskHandle Handle); (4.9)
i returneaz ntr-o variabil de tip unsigned spaiul liber din stiva taskului
referit prin handle .
Exemplul 3.2
n acest exemplu se prezint utilizarea funciilor (4.3)(4.9)
-----------------
#include "rtkernel.h"
#include "rtkeybrd.h"
------------------
TaskHandle Handle_A;
TaskState State_A;
unsigned New_prio,Task_prio,Free_stack;
-----------------
Handle_A=RTKCreateTask(TaskA,5,1024," Task_A");
-----------------
RTKSuspend(Handle_A);
State_A=RTKGetTaskState(Handle_A);
RTKResume(Handle_A);
-----------------
Task_prio=RTKGetTaskPrio(Handle_A);
New_prio=Task_prio+2;
RTKSetPriority(Handle_A,New_prio);
Free_stack;= RTKGetTaskStack(Handle_A);
-----------------

4.2.5. Funcii de gestionare a timpului
Dup cum s-a menionat n capitolul precedent timpul prezint o mare
importan n sistemele de timp real. n acest context, executivul RTK menine
un ceas intern care poate fi setat sau citit. n RTK unitatea de msur pentru
timp este timer tick. O cuant de timp, respectiv un timer tick are aproximativ 55
ms. Aceast valoare rezult innd cont c timerul hardware al unui PC
genereaz de 2
16
ntreruperi pe or ceea ce reprezint aproximativ 18,2
ntreruperi/secund care corespunde unei perioade de aproximativ 55 ms.
Pentru gestionarea timpului RTK utilizeaz tipurile Time pentru a
memora momente i Duration pentru a memora durate, ambele de tipul
unsigned long. Dup cum s-a artat, la iniializarea executivului prin funcia
RTKernelInit ceasul intern este iniializat cu zero.
n continuare vor fi prezentate funciile uzuale RTK pentru gestionarea
timpului.
Achiziia i prelucrarea datelor
Capitolul 4 132
Funcia RTKSetTime care poate fi utilizat pentru setarea ceasului
intern la cu o valoare dorit are forma general
void RTKSetTime(Time NewTime); (4.10)
n care parametrul NewTime de tipul Time reprezint valoarea exprimat n ticks
la care va fi setat ceasul
16
.

Funcia RTKGetTime care poate fi utilizat pentru citirea ceasului
intern ntr-o variabil de tip Time are forma general
Time RTKGetTime(void); (4.11)
Exemplul 3.3
n acest exemplu se prezint utilizarea funciilor (4.10) i (4.11)
-----------------
#include "rtkernel.h"
#include "rtkeybrd.h"
------------------
Time Set_clock_time,Clock_time;
-----------------
Clock_time=Time RTKGetTime();
Set_clock_time=25468;
RTKSetTime(Set_clock_time);
-----------------
Funcia RTKDelay blocheaz taskul apelant pentru un interval
specificat printr-o variabil de tip Duration i are forma general
void RTKDelay(Duration Ticks); (4.12)
n care numrul de cuante Ticks se obine cu relaia
Iicks = 18 t, (4.13)
unde t reprezint intervalul de temporizare exprimat n secunde.

Funcia RTKDelaUntil permite execuia taskului apelant pn la
un moment impus de numrul de Ticks care figureaz ca
parametru al funcei i are forma general
void RTKDelayUntil(Time Ticks); (4.14)



16
La iniializarea RTK n cadrul funciei RTKernelInit se execut funcia RTKSetTime(0);
Achiziia i prelucrarea datelor
Capitolul 4 133
Exemplul 3.3
n acest exemplu se prezint un caz de utilizare a funciei
RTKDelay ntr-un sistem multitasking destinat afirii cu periodicitate de o
secund a datei i orei. Sistemul este constituit din taskurile TaskA i main.
Taskul TaskA se execut n bucl infinit i apeleaz cu
periodicitate de o secund funcia afordata care achiziioneaz i tiprete
elemente ale timpului sistem i anume zi, lun, an, or, minut, secund.
Aceste elemente se preiau n variabilele d i t care sunt de tipul struct date,
respectiv struct time din DOS. Afiarea se realizeaz la nivel de caracter n
regim alfanumeric n care ecranul este vzut ca o matrice cu 80 de coloane
i 25 de linii, potrivit figurii 3.3.

Poziionarea cursorului n coordonate absolute se realizeaz cu
instruciunea C gotoxy(x,y), unde parametrii x i y au semnificaiile din
figura 4.3.
Taskul main conine o prim seciune de declaraii i iniializri
i o a doua seciune n bucl infinit destinat supravegherii tastaturii. La
apsarea unei taste codul ASCII al acesteia este preluat i transferat ntr-o
variabil de tip caracter cu ajutorul instruciunii
char RTKGetCh(); (4.15)
La apsarea tastei E se iese din program, acionarea altei taste
rmnnd fr efect
//
// Program demonstrativ utilizare funcie RTKDelay
//
#include <dos.h>
#include <conio.h>
#include <stdio.h>
1 2
80
1
25
x
y
Fig. 4.3. Sectorizarea ecranului n regim alfanumeric
Achiziia i prelucrarea datelor
Capitolul 4 134
#include <stdlib.h>
#include "rtkernel.h"
#include "rtkeybrd.h"
//
struct date d;
struct time t;
//
afordata() //functie preluare si tiparire data si ora
{
getdate(&d); // preia data in variabila d
gettime(&T); // preia timpul in variabila t
gotoxy(55,3); //pozitioneaza cursorul
//se tiparesc: ziua, luna anul
cprintf("%02d-%02d-%4d",d.da_day,d.da_mon,d.da_year);
// se tiparesc: ora, minutul, secunda
cprintf(" 02d-%02d-%02d",t.ti_hour,t.ti_min,t.ti_sec);
}
//
//
TaskA() //task temporizare
{
for(;;) //bucla for infinita
{
RTKDelay(18); //temporizare o secunda
afordata(); //apelare functie afordata
} //sfarsit for
} //sfarsit TaskA
//
//
main() //task main
{
char c;
RTKernelInit(3); //initializare RTK
clrscr(); //stergere ecran
gotoxy(5,8); //pozitionare cursor
cprintf("E - Iesire");
RTKeybrdInit(); //initializare driver consola
RTKCreateTask(TaskA,5,1024,"Task A"); //creare Task A
//
for(;;) //bucla for infinita
{
c=RTGetCh(); //supraveghere tastatura
if(c==E) //testare fata de E
exit(0); //iesire
} //sfarsit for
} //sfarsit main




Achiziia i prelucrarea datelor
Capitolul 4 135
4.2.6. Funcii de gestionare a semafoarelor
Dup cum s-a vzut n capitolul precedent semaforul reprezint o
important resurs pentru realizarea tuturor celor trei operaii fundamentale
multitasking.
n context RTK un semafor poate fi privit ca un numrtor de evenimente
al crui coninut nu poate fi niciodat negativ. Echivalena cu definiia general
este imediat ntruct o nscriere de eveniment este asociat unei operaii de tip
V incrementare, iar o extragere de eveniment unei operaii de tip P
decrementare.
Din punctul de vedere al tipului, n RTK sunt recunoscute semafoarele de
tip binar i ntreg. Unui semafor binar i se pot asocia valorile 0 i 1, iar unuia
ntreg una dintre valorile 0, 1,,65535.
Un semafor poate fi folosit n orict de multe taskuri, iar ntr-un task pot fi
utilizate orict de multe semafoare. Cu alte cuvinte nu exist limitri n ceea ce
privete numrul te taskuri care pot utiliza un semafor sau al numrului de
semafoare care poate fi utilizat ntr-un task.
ntre funciile RTK de gestionare a semafoarelor o importan aparte
prezint cele de iniializare i de implementare a operaiilor de incrementare i
decrementare. Este de menionat faptul c n RTK, pentru ca o variabil s fie
tratat ca un semafor, aceasta trebuie declarat ca fiind de tipul Semaphore.
Funcia RTKCreateSemaphore permite crearea i iniializarea
unui semafor i are urmtoarea form general
Semaphore RTKCreateSemaphore(SemaType Typ,
unsigned InitialValue, char *Name); (4.16)
n funcia de mai sus semnificaiile notaiilor din lista de argumente au
semnificaiile urmtoare:
- parametrul Typ de tipul SemaType indic tipul semaforului i anume
Binary pentru tipul binar, respectiv Counting pentru tipul ntreg;
- parametrul InitialValue (ntreg fr semn) indic valoarea iniial
a noului semafor (0 sau 1 pentru un semafor binar sau una dintre valorile
0, 1, ,65535 pentru un semafor general
- parametrul Name pointer de maximum 15 caractere la numele noului
semafor, care este afiat de funcia RTKTaskInfo i de mesajele de
eroare.
Funcia RTKCreateSemaphore ntoarce o valoare ntr-o variabil de
tip Semaphore cu ajutorul cruia va putea fi referit noul semafor.

Achiziia i prelucrarea datelor
Capitolul 4 136
Observaie
Pentru funcia de iniializare este acceptat i forma RTKCreateSema.

Funcia RTKSemaValue permite returnarea ntr-o variabil de tip
ntreg fr semn, a numrului de evenimente memorat ntr-un
semafor i are urmtoarea form general

unsigned RTKSemaValue(Semaphore S); (4.17)
n care S indic semaforul referit.
Funcia RTKSignal memoreaz un eveniment ntr-un semafor i
are urmtoarea form general
void RTKSignal(Semaphore S); (4.18)
n care S indic semaforul referit.
Potrivit celor prezentate n capitolul 2 prin funcia RTKSignal se asigur
implementarea incrementrii semaforului S, respectiv a operaiei V(S).
Funcia RTKWait retrage (terge) un eveniment dintr-un semafor
i are urmtoarea form general
void RTKSWait(Semaphore S); (4.19)
n care S indic semaforul referit.
Potrivit celor prezentate n capitolul 2 prin funcia RTKWait se asigur
implementarea decrementrii semaforului S, respectiv a operaiei P(S).
Dac nici un eveniment nu este disponibil (respectiv dac S=0) taskul
apelant trece n starea BlockedWait. Taskul va rmne n aceast stare pn
cnd n semaforul S se va nscrie un eveniment, respectiv pn cnd se va
executa o funcie RTKSignal(S);
Funcia RTKWaitCond retrage (terge) un eveniment dintr-un
semafor, numai dac un asemenea eveniment este disponibil i
are urmtoarea form general
bool RTKSWaitCond(Semaphore S); (4.20)
n care S indic semaforul referit.
Potrivit celor prezentate n capitolul 2 prin funcia RTKWait se asigur
implementarea decrementrii semaforului S, respectiv a operaiei P(S).
Dac nici un eveniment nu este disponibil (respectiv dac S=0) taskul
apelant nu se blocheaz, respectiv nu trece n starea BlockedWait.
Achiziia i prelucrarea datelor
Capitolul 4 137
n situaia n care funcia se execut, respectiv semaforul S se
decrementeaz, n variabila logic de tip bool se nscrie valoarea logic
True, altfel n aceiai variabil se va nscrie valoarea False.
Funcia RTKWaitTimed retrage (terge) un eveniment dintr-un
semafor, numai dac un asemenea eveniment este disponibil sau
devine disponibil ntr-un interval de timp precizat printr-o
variabil de tip Duration i are urmtoarea form general
bool RTKSWaitTimed(Semaphore S,
Duration Timeout ); (4.20)
n care S indic semaforul referit.
Potrivit celor prezentate n capitolul 2 prin funcia RTKWait asigur n
general implementarea decrementrii semaforului S, respectiv a operaiei
P(S). Dac nici un eveniment nu este disponibil (respectiv dac S=0) taskul
apelant trece n starea TimedWait pentru un interval de timp Timeout.
n situaia n care funcia se execut, respectiv semaforul S se
decrementeaz, n variabila logic de tip bool se nscrie valoarea logic
True, altfel n aceiai variabil se va nscrie valoarea False.

Exemplul 3.4
n acest exemplu se prezint un caz de utilizare a semafoarelor
pentru realizarea sincronizrii taskurilor. Sistemul este constituit din
taskurile TaskA, TaskB i main.
Taskul TaskA are aceleai caracteristici i funcionalitate ca n
exemplul 3.3.
Taskul TaskB este blocat la semaforul binar SB iniializat cu
zero n taskul main. n momentul cnd din acest task se execut o funcie
RTKSignal(SB); se deblocheaz TaskB pentru 10 secunde. Pe durata
deblocrii pe ecran se afieaz numrul de secunde trecute. Dup trecerea
celor 10 secunde n TaskB se execut funcia RTKWait(SB), ceea ce va
determina revenirea TaskB n starea Blocked. De asemenea pe ecran se
afieaz starea n care se gsete TaskB, adic BLOCAT respectiv
EXECU IE.
Taskul main conine o prim seciune de declaraii i iniializri
i o a doua seciune n bucl infinit destinat supravegherii tastaturii. La
apsarea tastei B se execut funcia RTKSignal(SB), iar la apsarea
tastei E se iese din program. Ca i n exemplul precedent, acionarea altei
taste rmne fr efect.

Achiziia i prelucrarea datelor
Capitolul 4 138
//
// Program demonstrativ utilizare semafoare
//
#include <dos.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include "rtkernel.h"
#include "rtkeybrd.h"
//
Semaphore SB;
struct date d;
struct time t;
//
//
TaskA() //task temporizare
{
for(;;) //bucla for infinita
{
RTKDelay(18); //temporizare o secunda
afordata(); //apelare functie afordata
} //sfarsit for
} //sfarsit TaskA
//
//
TaskB() //task sincronizat
{
int i;
for(;;) //bucla for infinita
{
gotoxy(5,10);
cprintf("BLOCAT ");
RTKWait(SB), //decrementare semafor SB
gotoxy(5,10);
cprintf("EXECUTIE");
for(i=0;i<=9;i++) //bucla for in 10 pasi
{
RTKdelay(18); //temporizare o secunda
gotoxy(15,10);
cprintf("%d",i);//tiparire secunde trecute
} //sfarsit for finit
} //sfarsit for infinit
} //sfarsit TaskB
//
//
main() //task main
{
char c;
RTKernelInit(3); //initializare RTK
clrscr(); //stergere ecran
Achiziia i prelucrarea datelor
Capitolul 4 139
gotoxy(5,8); //pozitionare cursor
cprintf("B Executie taskB E - Iesire");
RTKeybrdInit(); //initializare driver consola
// Initializare semafor SB
SB=RTKCreateSema(Binary,0,"Semafor B");
// creare TaskA si TaskB
RTKCreateTask(TaskA,5,1024,"Task A");
RTKCreateTask(TaskB,5,1024,"Task B");
//
for(;;) //bucla for infinita
{
c=RTGetCh(); //supraveghere tastatura
if(c==B) //testarea fata de B
RTKSignal(SB); //incrementeaza semafor SB
if(c==E) //testare fata de E
exit(0); //iesire
} //sfarsit for
} //sfarsit main


4.2.7. Funcii de gestionare a cutiilor potale

O cutie potal (Mailbox) reprezint o zon de memorie (buffer de date)
care poate stoca un numr prefixat de mesaje. n RTKernel mesajele pot avea
orice dimensiune n condiiile configurrii unei cutii potale pn la maximum
64 KB.
Taskurile pot depune mesaje n sau pot extrage mesaje din cutii potale
n condiii reglementate prin funcii RTK. Aceste funcii trateaz cutia potal ca
fiind organizat ca o coad (queue) i n consecin administrat potrivit
strategiei FIFO
17
.
Taskul n care se execut o funcie de depunere ntr-o cutie potal care
este plin se blocheaz pn cnd se creeaz spaiu. De asemenea se blocheaz
taskul n care se execut o funcie de extragere a unui mesaj dintr-o cutie potal
goal.
Nu sunt limitri n ceea ce privete numrul de cutii potale care pot fi
utilizate de ctre un task i nici a numrului de taskuri n care se poate utiliza o
cutie potal.
n continuare vor fi prezentate principalele funcii RTK ce privesc
gestionarea cutiilor potale.
Funcia RTKCreateMailbox permite crearea i iniializarea unei
cutii potale i are urmtoarea form general



17
FIFO First Input First Output - strategie potrivit creia extragerea din coad se face n ordinea
introducerii.
Achiziia i prelucrarea datelor
Capitolul 4 140

Mailbox RTKCreateMailbox(unsigned DataLen,
unsigned Slots, char *Name); (4.21)
n funcia de mai sus semnificaiile notaiilor din lista de argumente au
semnificaiile urmtoare:
- parametrul DataLen de tipul unsigned indic lungimea n octei a
mesajelor care pot fi nscrise n cutia potal;
- parametrul Slots, tot de tipul unsigned precizeaz numrul
maxim de mesaje care pot fi stocat n cutia potal;
- Name - pointer de maximum 15 caractere la numele noii cutii potale,
care este afiat de funcia RTKTaskInfo i de mesajele de eroare.
Funcia RTKCreateMailbox ntoarce o valoare ntr-o variabil de tip
Mailbox cu ajutorul creia va putea fi referit noua cutie potal. semafor.
Funcia RTKMessages permite returnarea ntr-o variabil de tip
ntreg fr semn, a numrului de mesaje memorate ntr-o cutie
potal i are urmtoarea form general
unsigned RTKMessages(Mailbox Box); (4.22)
n care parametrul Box este asociat cutiei potale referite.
Funcia RTKClearMailbox realizeaz tergerea coninutului unei
cutii i are urmtoarea form general
void RTKClearMailbox(Mailbox Box); (4.23)
n care parametrul Box este asociat cutiei potale referite.
Funcia RTKPut care permite depunerea unui mesaj ntr-o cutie
potal are urmtoarea form general
void RTKPut(Mailbox Box, void *Data); (4.24)
n care variabila Box de tipul Mailbox refer cutia potal n care se face
depunerea, iar *Data este un pointer la data care se depune.
Funcia RTKGet care permite preluarea unui mesaj dintr-o cutie
potal are urmtoarea form general
void RTKget(Mailbox Box, void *Data); (4.25)
unde variabila Box de tipul Mailbox refer cutia potal din care se face
extragerea, iar *Data este un pointer la data n care se depune mesajul extras din
cutia potal.


Achiziia i prelucrarea datelor
Capitolul 4 141
Observaie
Funciile (4.24) i (4.25) sunt de tipul necondiionat, ntruct acestea
blocheaz taskul n care sunt apelate pn la eliminarea situaiei de excepie
(CP plin, n cazul funciei RTKPut, respectiv cutie potal goal n cazul
instruciunii RTKGet. Blocarea presupune tranziia ntr-una dintre strile
BlockedPut sau dup caz, BlockedGet.
Funcia RTKPutCond asigur depunerea unui mesaj ntr-o cutie
potal, numai dac exist spaiu disponibil. Forma general a
funciei este cea de mai jos,
bool RTKPutCond(Mailbox Box, void *Data); (4.26)
n care Box reprezint cutia potal referit, iar *Data este un pointer la data
care se depune.
Execuia acestei funcii nu determin blocarea taskului apelant n situaia
n care cutia potal referit este plin. n acest caz, n variabila logic de tip
bool se nscrie valoarea False care atest faptul c funcia nu s-a executat. n caz
contrar, respectiv la execuia cu succes a funciei, n aceiai variabil se va
nscrie valoarea True.
Funcia RTKGetCond permite preluarea unui mesaj dintr-o cutie
potal, numai dac un asemenea mesaj este disponibil. Forma
general a funciei este cea de mai jos,
bool RTKGetCond(Mailbox Box, void *Data); (4.27)
n care Box reprezint cutia potal referit, iar *Data este un pointer la data
care se depune.
Execuia acestei funcii nu determin blocarea taskului apelant n situaia
n care n cutia potal referit nu exist mesaje disponibile. n acest caz, n
variabila logic de tip bool se nscrie valoarea False care atest faptul c funcia
nu s-a executat, respectiv nu a fost preluat un mesaj. n caz contrar, respectiv la
execuia cu succes a funciei (preluarea unui mesaj), n aceiai variabil se va
nscrie valoarea True.
Funcia RTKPutTimed asigur depunerea unui mesaj ntr-o cutie
potal, numai dac exist spaiu disponibil, sau se creeaz
spaiu ntr-un interval de timp precizat printr-o variabil de tip
Duration. Funcia are forma general de mai jos,
bool RTKPutTimed(Mailbox Box, void *Data,
Duration Timeout); (4.28)
n care Box reprezint cutia potal referit, *Data este un pointer la data care se
depune iar Timeout intervalul de timp n care se ateapt crearea de spaiu.
Achiziia i prelucrarea datelor
Capitolul 4 142
Execuia acestei funcii nu determin blocarea taskului apelant n situaia
n care cutia potal referit are spaiu disponibil. n caz contrar taskul este
trecut n starea TimedPut pentru un timp care nu poate depi Timeout.
Dac s-a putut nscrie un mesaj n Box imediat sau n intervalul Timeout
execuia funciei se consider reuit, iar n variabila de tip bool se va nscrie
valoarea logic True. n caz contrar, respectiv la neexecuia cu succes a funciei,
n aceiai variabil se va nscrie valoarea False.
Funcia RTKGetTimed faciliteaz extragerea unui mesaj dintr-o
cutie potal, numai dac un asemenea mesaj exist sau apare
ntr-un interval de timp precizat printr-o variabil de tip
Duration. Funcia are furmtoarea forma general ,
bool RTKGetTimed(Mailbox Box, void *Data,
Duration Timeout); (4.29)
n care Box reprezint cutia potal referit, *Data este un pointer la data care se
depune iar Timeout intervalul de timp n care se ateapt crearea de spaiu.
Execuia acestei funcii nu determin blocarea taskului apelant n situaia
n care n cutia potal exist cel puin un mesaj. n caz contrar taskul este
trecut n starea TimedGet pentru un timp care nu poate depi Timeout.
Dac s-a putut prelua un mesaj n Box imediat sau n intervalul Timeout
execuia funciei se consider reuit, iar n variabila de tip bool se va nscrie
valoarea logic True. n caz contrar, respectiv la imposibilitatea prelurii unui
mesaj (respectiv neexecuia cu succes a funciei), n aceiai variabil se va
nscrie valoarea False.

Exemplul 3.5
n acest exemplu se prezint utilizarea unei cutii pentru realizarea
sincronizrii taskurilor. Sistemul este constituit din taskurile TaskA, TaskB
i main.
Taskul TaskA are aceleai caracteristici i funcionalitate ca n
exemplele 3.3 i 3.4.
Taskul TaskB este blocat pentru ateptarea sosirii unui mesaj n
cutia potal CP, iniializat n taskul main. n momentul cnd din acest
task se execut asupra cutiei potale CP o funcie RTKPut referitoare la
codul unei taste apsate, TaskB se deblocheaz. Dup deblocare se execut
o funcie RTKGet prin care se preia mesajul (care const din codul unui
caracter) din CP. Pentru vizualizarea caracterului recepionat, acesta se
tiprete. Dup aceast operaie TaskB trece din nou n starea BlokedPut.
Achiziia i prelucrarea datelor
Capitolul 4 143
De asemenea pe ecran se afieaz starea n care se gsete TaskB, adic B
ateapt la CP respectiv Sosit mesaj.
Ca i n exemplele precedente taskul main conine o prim
seciune de declaraii i iniializri i o a doua seciune n bucl infinit
destinat supravegherii tastaturii. La apsarea oricrei taste, alta dect E,
se execut o funcia RTKPut, prin care codul tastei apsate este depus n
CP. n ceea ce privete apsarea tastei E, aceast aciune va determina
ieirea din program. Ca i n exemplul precedent, acionarea altei taste
rmne fr efect.

//
// Program demonstrativ utilizare cutii postale
//
#include <dos.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include "rtkernel.h"
#include "rtkeybrd.h"
#define slots 1
//
Mailbox CP;
struct date d;
struct time t;
//
//
TaskA() //task temporizare
{
for(;;) //bucla for infinita
{
RTKDelay(18); //temporizare o secunda
afordata(); //apelare functie afordata
} //sfarsit for
} //sfarsit TaskA
//
//
TaskB() //task sincronizat
{
char i;
for(;;) //bucla for infinita
{
gotoxy(5,10);
cprintf("B asteapta la CP ");
RTKGet(CP,&i); //preia din CP si depune in i
RTKdelay(18); //temporizare o secunda
gotoxy(5,10);
//tipareste caracterul din i
Achiziia i prelucrarea datelor
Capitolul 4 144
cprintf("Sosit mesaj %c ",i);
} //sfarsit for infinit
} //sfarsit TaskB
//
//
main() //task main
{
char c;
RTKernelInit(3); //initializare RTK
clrscr(); //stergere ecran
gotoxy(5,8); //pozitionare cursor
cprintf("Orice tasta - mesaj E - Iesire");
RTKeybrdInit(); //initializare driver consola
// Initializare cutie postala CP
CP=RTKCreateMailbox(2,slots,"CP");
// creare TaskA si TaskB
RTKCreateTask(TaskA,5,1024,"Task A");
RTKCreateTask(TaskB,5,1024,"Task B");
//
for(;;) //bucla for infinita
{
gotoxy(5,9);
cprintf("Transmis din main mesajul ");
c=RTGetCh(); //supraveghere tastatura
gotoxy(41,9);
cprintf("%c"); //tipareste caracterul tastat
if(c==E) //testare fata de E
exit(0); //iesire
RTKPut(CP,&c); //altfel depune c in CP
} //sfarsit for
} //sfarsit main

4.2.8. Funcii de gestionare a mesajelor

Mesajul de trecere ( message passing) reprezint, alturi de cutiile
potale o alt facilitate de comunicare ntre taskuri oferit de executivul RTK. n
cazul mesajelor, spre deosebire de cutiile potale, n taskul expeditor trebuie
referit taskul destinatar prin intermediul variabilei taskhandle asociate. n ceea
ce privete taskul destinatar, n cazul acestuia nu trebuie nominalizat taskul
expeditor. Reamintim ca n cazul cutiei potale la depunerea unui mesaj nu
trebuie precizat destinatarul.
O alt diferen ntre cele dou modaliti de comunicare const n
absen unui buffer de date n cazul mesajelor. n aceste condiii n RTK nu
exist un tip predefinit pentru mesajele de trecere, ca n cazul semafoarelor i
cutiilor potale.
Achiziia i prelucrarea datelor
Capitolul 4 145
Avnd n vedere trsturile de mai sus rezult c pentru gestionarea
mesajelor exist numai funcii de transmitere i recepie. Ca i n cazurile
semafoarelor i cutiilor potale aceste instruciuni pot fi necondiionate,
condiionate i temporizate.
Funcia RTKSend asigur transmiterea unui mesaj ctre un task
destinatar i are forma general de mai jos
void RTKSend(TaskHandle Receiver,
void *Data); (4.30)
n care parametrul Receiver este un handler al taskului receptor, iar *Data
reprezint un pointer la data care se depune.
Mesajul va fi transmis dac taskul receptor este n ateptare pe una dintre
funciile RTKReceive sau RTKReceiveTimed
18
. n caz contrar taskul emitor
trece pentru un interval de timp nedeterminat n starea BlockedSend. Ieirea din
aceast stare se va produce n momentul n care n taskul destinatar se va
executa una dintre cele dou funcii de mai sus.

Funcia RTKReceive permite recepionarea unui mesaj de la un
task receptor i are forma general de mai jos
void RTKReceive(void *Data,
unsigned DataLen); (4.31)
n care *Data reprezint un pointer la data care se depune, iar DataLen
lungimea n octei a mesajului ateptat.
Mesajul va fi imediat recepionat dac un task emitor este n ateptare
pe una dintre funciile RTKSend sau RTKSendTimed
19
. n caz contrar taskul
receptor trece pentru un interval de timp nedeterminat n starea BlockedReceive.
Ieirea din aceast stare se va produce n momentul n care ntr-un task emitor
se va executa una dintre cele dou funcii de mai sus, pe handlerul
destinatarului.
Funcia RTKSendCond asigur transmiterea datelor altui task cu
condiia ca taskul receptor s fie gata s accepte imediat datele.
Dac aceast condiie nu este ndeplinit se continu execuia
taskului transmitor fr a se transmite datele. Forma general a
funciei este urmtoarea
Bool RTKSendCond(TaskHandle Receiver,
void *Data); (4.32)

18
Respectiv se gse te n una din strile BlockedReceive sau TimedReceive
19
Respectiv se gse te n una din strile BlockedSend sau TimedSend
Achiziia i prelucrarea datelor
Capitolul 4 146
n care parametrul Receiver este un handler (variabil de tip TaskHandle) al
taskului receptor, iar *Data este un pointer la datele care se transmit.

Execuia acestei funcii nu determin blocarea taskului apelant n situaia
n care datele n-au putut fi transmise. n acest caz, n variabila logic de tip bool
se nscrie valoarea False care atest faptul c funcia nu s-a executat. n caz
contrar, respectiv la execuia cu succes a funciei RTKSendCond, n aceiai
variabil se va nscrie valoarea logic True.
Funcia RTKReceiveCond preluarea datelor de la un alt task, cu
condiia ca acesta s fie gata s le transmit imediat. Dac aceast
condiie nu este ndeplinit se continu execuia taskului receptor
fr a se prelua datele. Forma general a funciei este urmtoarea
Bool RTKReceiveCond(void *Data,
unsigned DataLen ); (4.33)
n care *Data este un pointer la datele care se transmit, iar DataLen lungimea
n octei a mesajului ateptat.
Execuia acestei funcii nu determin blocarea taskului apelant n situaia
n care datele n-au putut fi preluate. n acest caz, n variabila logic de tip bool
se nscrie valoarea False care atest faptul c funcia nu s-a executat. n caz
contrar, respectiv la execuia cu succes a funciei RTKreceiveCond, n aceiai
variabil se va nscrie valoarea logic True.
Funcia RTKPSendTimed asigur trimiterea unui mesaj, numai
dac taskul destinatar devine disponibil pentru recepie ntr-un
interval de timp precizat printr-o variabil de tip Duration.
Funcia are forma general de mai jos,
bool RTKSendTimed(TaskHandle Receiver,
void *Data, Duration Timeout); (4.34)
n care parametrul Receiver este un handler al taskului receptor, *Data este
un pointer la data care se depune iar Timeout intervalul de timp n care se
ateapt disponibilizarea taskului receptor.
Execuia acestei funcii nu determin blocarea taskului apelant n situaia
n care taskul receptor poate prelua imediat datele. n caz contrar taskul este
trecut n starea TimedSend pentru un timp care nu poate depi Timeout.
Dac s-a putut transmite mesajul imediat sau n intervalul Timeout
execuia funciei se consider reuit, iar n variabila de tip bool se va nscrie
valoarea logic True. n caz contrar, funcia nu se execut, iar n aceiai
variabil se va nscrie valoarea False.
Achiziia i prelucrarea datelor
Capitolul 4 147
Funcia RTKReceiveTimed faciliteaz recepia unui mesaj,
numai dac un task emitor devine disponibil pentru
transmiterea datelor ntr-un interval de timp precizat printr-o
variabil de tip Duration. Funcia are urmtoarea form gene-
ral,
bool RTKReceiveTimed(void *Data,
unsigned DataLen Duration Timeout); (4.35)
n care *Data este un pointer la data care se depune, DataLen lungimea n
octei a mesajului ateptat, iar Timeout intervalul de timp n care se ateapt
disponibilizarea taskului receptor.
Execuia acestei funcii nu determin blocarea taskului apelant n situaia
n care taskul emitor poate transmite imediat datele. n caz contrar taskul este
trecut n starea TimedReceive pentru un timp care nu poate depi Timeout.
Dac s-a putut transmite mesajul imediat sau n intervalul Timeout
execuia funciei se consider reuit, iar n variabila de tip bool se va nscrie
valoarea logic True. n caz contrar, funcia nu se execut, iar n aceiai
variabil se va nscrie valoarea False.

Exemplul 3.6
n acest exemplu se prezint utilizarea mesajelor de trecere pentru
comunicarea ntre dou taskuri. Sistemul multitasking este constituit din
taskurile TaskA, TaskB i main.
Taskul TaskA are aceleai caracteristici i funcionalitate ca n
exemplele 3.3, 3.4 i 3.5.
Taskul TaskB are rolul de task receptor executnd n bucl
infinit o secven RTKReceive, cprintf. Rezult c acest task se gsete
cvasipermanent n starea BlockedReceive, deblocarea producndu-se n
momentul cnd TaskB a fost referit prin handlerul asociat HandleB n taskul
emitor. Dup recepia mesajului sub forma unui caracter, acesta este
tiprit n coordonate prestabilite, nsoit de mesajul B a recepionat.
Ca i n exemplele precedente taskul main conine o prim
seciune de declaraii i iniializri i o a doua seciune n bucl infinit
destinat supravegherii tastaturii. La apsarea oricrei taste, se intr ntr-o
bucl for pe 25 de pai , n care se transmit, ctre TaskB n ordine numerele
1, 2, , 25. Fiecare numr transmis este tiprit, iar intervalul dintre dou
transmisii este de o secund. Dac tasta apsat a fost E, aceast aciune
va determina ieirea din program.

Achiziia i prelucrarea datelor
Capitolul 4 148


//
// Program demonstrativ utilizare mesaje de trecere
//
#include <dos.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include "rtkernel.h"
#include "rtkeybrd.h"
//
TaskHandle HandleB;
struct date d;
struct time t;
//
//
TaskA() //task temporizare
{
for(;;) //bucla for infinita
{
RTKDelay(18); //temporizare o secunda
afordata(); //apelare functie afordata
} //sfarsit for
} //sfarsit TaskA
//
//
TaskB() //task receptor
{
char j2;
for(;;) //bucla for infinita
{
RTKReceive(&j2,2);// preia mesaj si depune in j2
Goto(5,8);
cprintf("B a receptionat %c ",j2);//tipareste j2
} //sfarsit for infinit
} //sfarsit TaskB
//
//
main() //task main
{
char c, j1=0;
int i;
RTKernelInit(3); //initializare RTK
clrscr(); //stergere ecran
gotoxy(5,8); //pozitionare cursor
cprintf("Orice tasta main transmite E - Iesire");
RTKeybrdInit(); //initializare driver consola
// creare TaskA si TaskB
Achiziia i prelucrarea datelor
Capitolul 4 149
RTKCreateTask(TaskA,5,1024,"Task A");
HandleB=RTKCreateTask(TaskB,5,1024,"Task B");
//
for(;;) //bucla for infinita
{
c=RTGetCh(); //supraveghere tastatura
//
for(i=1;i<=25;i++)//bucla for finita
{
j1++;
gotoxy(5,10);
cprintf("main transmite %c ",j1);
RTKSend(HandleB,&j1); //transmite catre TaskB
RTKDelay(18);
} //sfarsit for finit
//
if(c==E) //testare c fata de E
exit(0); //iesire
j1=0; //altfel initializeaza j1
} //sfarsit for infinit
} //sfarsit main



Ingineria aplicaiilor de timp real
150
















Se cunoate faptul c desfurarea unui proces necesit mai multe
categorii de resurse, ntre care o importan aparte prezint resursele materiale,
energetice, financiare, umane, informaionale. Este important de subliniat c un
proces nu reprezint un scop n sine ci se subordoneaz unor constrngeri
impuse sub forma a trei categorii de obiective i anume cele legate de calitate,
eficien, securitate.
Obiectivele de calitate se refer la respectarea specificaiilor de calitate
referitoare la produsele i serviciile rezultate ca urmare a desfurrii procesului.
Obiectivele de eficien presupun impun profitabilitatea respectivului proces, n
condiiile unei piee concureniale. n ceea ce privete obiectivele de securitate,
acestea au n vedere desfurarea procesului astfel nct s nu fie afectat
securitatea personalului de operare a mediului i a infrastructurii aferente
procesului.
Din punctul de vedere al conducerii fluxurile informaionale prezint o
importan deosebit ntruct prin intermediul acestora se realizeaz cunoaterea
procesului i se implementeaz comenzile.
n prima seciune a prezentului capitol trateaz problema procesrii
primare a informaiei preluate din proces i a celei destinate procesului sub
forma comenzilor.
A doua seciune prezint taskurile asociate unor algoritmi de reglare
numeric cu o arie larg de rspndire.
n ultima seciune sunt expuse cteva consideraii referitoare la
organizarea bazelor de date de proces (BDP) n calitate de principal resurs
destinat stocrii datelor aferente aplicaiilor de conducere n timp real.

5.1. Prelucrarea primar a datelor de proces
Aceste operaii sunt necesare din mai multe motive cum ar fi: extragerea
componentei utile din mrimile achiziionate, compatibilizarea cu dispozitivele
de conversie analog-numeric i numeric-analogic aferente sistemelor de
A Ap pl li ic ca a i ii i b ba az za at te e p pe e
a ac ch hi iz zi i i ia a d da at te el lo or r

C CA AP PI IT TO OL LU UL L
5
5

Ingineria aplicaiilor de timp real
151

interfa, testarea respectrii domeniilor pentru mrimile achiziionate i
comenzile elaborate.
Pornind de la aceast motivaie, n sfera prelucrrii primare a datelor de
proces sunt ncadrate urmtoarele tipuri de operaii:
- filtrarea mrimilor achiziionate;
- conversia n/din uniti inginereti;
- validarea mrimilor achiziionate i a comenzilor elaborate,
care vor fi prezentate n cele ce urmeaz.

5.1.1.Filtrarea mrimilor achiziionate
n general un filtru reprezint un bloc funcional cu proprieti selective
pentru anumite frecvene. Spre deosebire de filtrele analogice, la care intrarea i
ieirea sunt reprezentate de semnale analogice la cele numerice, att intrarea ct
i ieirea sunt constituite din secvene de numere, potrivit reprezentrii din
figura 5.1.






Practic un filtru numeric reprezint un algoritm care produce la ieire o
secven y[n] pornind de la o secven de intrare x[n] i care are ca obiectiv o
comportare selectiv fa de semnale de frecven diferit coninute n secvena
de intrare.
Un important criteriu mparte filtrele numerice n filtre nerecursive i
recursive.
n cazul unui filtru nerecursiv valoarea filtrat y[n] depinde de
ultimele N valori din secvena de intrare x[n] potrivit relaiei
y|n] = b|k] x|n -k] ,
N-1
k=0
(S.1)

unde h[k] reprezint coeficieni ai filtrului.
FILTRU
NUMERIC
y[n] x[n]
Fig. 5.1. Schema bloc a unui filtru numeric: x[n]- secven
numeric de intrare, y[n] secven numeric de ieire.
Ingineria aplicaiilor de timp real
152

Relaiei (5.1) i se poate ataa o schem de calcul de tipul celei din figura
5.2 care pune n eviden circulaia fluxului de date. Din analiza acestei figuri se
observ c valorile succesive x[n-k] se obin prin ntrzieri succesive cu
perioada de achiziie Te a mrimii de intrare x. Dup efectuarea produselor
b|k] x|n -k] valorile rezultate se nsumeaz ntr-un bloc sumator i n final
rezult mrimea filtrat y[n].











La filtrele recursive valoarea filtrat y[n] depinde att de ultimele
N valori din secvena de intrare x[n] , ct i de ultimele M valori din secvena de
ieire conform relaiei
y|n] = b|k] x|n -k] -b|]] y|n -]]
M
]=1
N-1
k=0
, (S.2)

unde h[k] i b[j] reprezint coeficieni ai filtrului.
Din relaia (5.2) se observ c n seciunea care include termenii
recursivi, respectiv cei care se refer la ieirea y , sunt coninui toi termenii
ncepnd cu y[n-1] . Pe baza acelorai consideraii ca n cazul nerecursiv n
figura 5.3 se prezint o schem de calcul a filtrului recursiv care implementeaz
relaia (5.2).

x[n-2]
Te Te
+
x[n]
Fig. 5.2. Schem de calcul al unui filtru nerecursiv.
x[n-1]
h[0]
h[1] h[2]
Te
x[n-(N-2)] x[n-(N-1)]
h[N-2] h[N-1]

y[n]
Ingineria aplicaiilor de timp real
153

















O variant simplificat a filtrului nerecursiv este aceea n care se
utilizeaz un singur coeficient. Dac acest coeficient este 1/N atunci filtrul se
numete cu mediere i relaia (5.1) devine
y|n] =
1
N
x|n -k] ,
N-1
k=0
(S.S)
unde N reprezint ultimele N valori ale intrrii.
Transpunnd relaia (5.3) pentru urmtorul pas rezult
y|n +1] =
1
N
x|n +1 - k] .
N-1
k=0
(S.4)
x[n-1]
Te Te
+
x[n]
Fig. 5.3. Schem de calcul al unui filtru recursiv.
h[0]
h[1] h[2]
Te
x[n-(N-2)] x[n-(N-1)]
h[N-2] h[N-1]

y[n]

y[n-M]
-b[M]
Te Te Te
-b[M-1] -b[1]
y[n-1] y[n-2] y[n-(M-1)]
Ingineria aplicaiilor de timp real
154

Prin scderea celor dou relaii se obine
y|n +1] -y|n] =
1
N
x|n +1 - k] -
1
N
x|n -k]
N-1
k=0
N-1
k=0
, (S.S)
care dup cteva transformri elementare devine
y|n +1] = y|n] +
1
N
(x|n +1] -x|n +1 -N]) . (S.6)
Relaia (5.6) este de tip recurenial ntruct valoarea curent a mrimii
filtrate y depinde de valoarea anterioar a acesteia i de dou valori ale intrrii
(valoarea curent i cea din urm cu N pai). Pentru determinarea valorii
ntrziate cu N pai se utilizeaz o structur de tip coad reprezentat n figura
5.4 pentru care se poate construi subalgoritmul AVANS_C a crui schem logic
este evideniat n figura 5.5.











Subalgoritmul AVANS_C are ca intrare valoarea curent achiziionat,
notat cu w_in n figura 5.5 i ca ieire valoarea ntrziat cu M perioade de
eantionare, notat cu w_out n aceiai figur.
Pentru construcia taskului FILTR_MED asociat filtrului cu mediere se
fac urmtoarele notaii:
- y[n+1] = YFC - valoare filtrat curent;
x[n+1-(N)]
x[n+1-(N-1)]
x[n+1]
x[n+1-(2)]
x[n+1-(1)]
x[n+1-(N)]
x[n+1]
Fig. 5.4. Organizarea cozii pentru relaia (5.6).
Ingineria aplicaiilor de timp real
155

- y[n] = YFA - valoare filtrat anterioar;
- x[n+1] = XAC - valoare achiziionat curent;
- x[n+1-N] = XAI - valoare achiziionat ntrziat.
















Cu aceste notaii relaia (5.6) devine
FC = FA + (XAC -XAI) N , (S.7)
care va fi utilizat n taskul care implementeaz algoritmul de filtrare cu
mediere, a crui schem logic este prezentat n figura 5.6.
Taskul FILTR_MED este sincronizat cu timpul, intervalul de execuie
fiind egal cu intervalul de eantionare, respectiv Te. La fiecare execuie este
apelat subalgoritmul AVANS_C n care parametrii fictivi capt valorile
w_in=XAC, respectiv w_out=XAI.
M,w_in
AVANS_C
w_out
w_out=z(M)
j=M
z(j)=z(j-1)
j=1
?
j=j-1
Nu
Da
z(1)=w_in
EXIT
Fig. 5.5. Schema logic aferent subalgoritmului de avans n coad.
Ingineria aplicaiilor de timp real
156

Se consider c valoarea achiziionat provine dintr-o baz de date de
proces BDP, iar valoarea filtrat este plasat n aceiai baz. ntruct BDP este
considerat resurs critic accesul la aceasta va trebui supus excluderii mutuale.
n acest scop se utilizeaz semaforul binar SEMEX potrivit procedurii indicate
n capitolul 2 al prezentei lucrri.






















Fig. 5.6. Schema logic asociat taskului FILTER_MED.
Initializare task
FILTER_MED
SEMEX=1, determin valori
iniiale pentru N,
YFC, YFA, XAC, XAI
t=Te ?
Nu
Da
P(SEMEX)
V(SEMEX)
N, XAC
AVANS_C
XAI
YFC=YFA+(XAC-XAI)/N
P(SEMEX)
V(SEMEX)
YFA=YFC
Preia din BDP
XAC
Transfera in BDP
YFC
Ingineria aplicaiilor de timp real
157

4.1.1. Circuitul informaional aferent unei aplicaii de conducere

ntr-o aplicaie de conducere n timp real poate fi evideniat urmtoarea
secven de operaii:
- achiziia din proces a datelor;
- determinrii comenzilor;
- implementarea n proces a comenzilor.
Realizarea acestei secvene traversarea frontierelor evideniate n figura
4.7, n care procesul este reprezentat de traductoare i elemente de execuie.

















Acestea se consider c genereaz, respectiv sunt acionate de semnale
analogice. ntruct procesarea impune intrri n form numeric i genereaz
rezultate n aceiai form, rezult necesitatea frontierei F1. Aceasta este
reprezentat de SIA (Subsistemul Intrrilor Analogice) i SEA (Subsistemul
Ieirilor Analogice) din structura sistemului de interfa cu procesul. n cazul
aparaturii inteligente de automatizare (Smart) aceast frontier este situat la
limita respectivei instrumentaii, iar transmiterea semnalelor se face n format
digital.
Dac respectiva aparatur este de natur analogic, atunci frontiera F1
este situat n zona echipamentului de procesarea i transmiterea semnalelor se
face n format digital.
Din cele expuse pn n prezent rezult c frontiera F1 schimb , funcie
de sensul de transmitere, natura semnalelor. Astfel, pe sensul de la proces are loc
F1


Calcul i
generare
comenzi
Semnale
analogice
de la traductoare
DIGITAL
uING
DIGITAL
uCNA
ANALOGIC DIGITAL
uCAN
ANALOGIC
Semnale
analogice
ctre elemente
de execu ie
uING



PROCES
F2
Fig. 5.7. Frontiere asociate circuitului informaional ntr-o aplicaie de
conducere.
DIGITAL
Ingineria aplicaiilor de timp real
158

o conversie analog / numeric, pe sensul ctre proces o conversie numeric /
analogic. Indiferent de sens mrimea analogic este exprimat n uniti
inginereti iar n mrimea numeric n uniti CAN (uCAN), respectiv CNA
1

(uCNA).
O alt frontier este F2 , la nivelul creia se pstreaz natura digital dar
se schimb coninutul mrimii. Astfel pe sensul de la proces se produce o
conversie n uniti inginereti, iar pe sensul ctre proces se realizeaz o
conversie din uniti inginereti.
Dac frontiera F1 este asociat sistemului de interfa cu procesul (SIP),
frontiera F2 este asociat conversiei n, respectiv conversiei din uniti
inginereti.
n figura 5.8 se prezint circuitul informaional, n cadrul unei aplicaii
de conducere, n care un regulator dup perturbaie elaboreaz un semnal de
comand care se transmite sub forma referinei externe unui sistem de reglare
automat cu aciune dup abatere. n aceast figur deasupra fiecrei sgei este
notat o mrime iar sub sgeat unitatea de msur.













Structura din figura 5.8 asigur invariana mrimii y2
2
la modificarea
perturbaiilor P2_1P2_k. Mrimea de comand a regulatorului dup
perturbaie REG PART este reprezentat de valoarea y1*, exprimat n uniti
inginereti uING, care se aplic n calitate de referin unui SRA abatere n care
REG AB reprezint regulatorul aferent acestui sistem. n aceiai figur CUI i
CIU reprezint convertoarele tensiune curent respectiv curent tensiune.

1
CAN i CNA sunt abrevieri pentru Convertor Analog Numeric, respectiv Convertor Numeric
Analog.
2
n raport cu referin a y2i
Fig. 5.8. Circuitul informaional ntr-un SRA ierarhizat.
BFA EE
TA
CUI
CAN
CNA
BC1
BC2
TPk
REG AB
mA
V
V
uCAN
uCNA
uING
uING
uING
SP2
F1 F2
iP1
iPk
CIU1
CIUk
mA
mA
uP1
uPk
TP1
V
P2
P2_k P2_1 P2_n
P1
y2
y1
SP1
u
r1
i1
u1
N1
y1*
uP
NP
P*
y2i


REG
PERT
Ingineria aplicaiilor de timp real
159

Analiznd figura 5.8 rezult c frontiera F1 este localizat la nivelul
CAN i CNA, componente ale subsistemelor de intrri respectiv ieiri analogice
din cadrul SIP.
n ceea ce privete frontiera F2, aceasta este implementat de blocurile
de calcul BC1 i BC2. Modulul BC1 parte integrant a unui sistem numeric de
msurat asigur conversia din uniti CAN n uniti inginereti. Funcia invers,
respectiv conversia uniti inginereti uniti CNA este asigurat de ctre
modulul BC2 care se consider inclus ntr-un sistem numeric te transmitere a
comenzii. n cele ce urmeaz vor fi prezentate elemente privind sinteza celor
dou module de calcul.

4.1.2. Conversia n uniti inginereti

Dup cum s-a menionat n paragraful anterior aceast conversie se
realizeaz de ctre blocul BC1, parte integrat a unui sistem numeric de msurat
la distan SNMD cu structura evideniat n figura 5.9.







n figura 5.9 mrimile sunt reprezentate prin variaii . Pentru o mrime z
care ia valori ntr-un domeniu [z
min,
z
max
] se definesc dou tipuri de variaii i
anume :
- variaia curent z = z -z
mn
, (S.7)
- variaia maxim z
mux
= z
mux
-z
mn
. (S.8)

Determinarea relaiei asociate modulului BC1 se va realiza impunnd
pentru SNMD o caracteristic static liniar, ilustrat n figura 5.10.










SNMD
x x
*
uING uING
Fig. 5.9. Structura unui sistem numeric de msurat la distan.
BC1
x i u N x
*
uING mA V
CIU
uCAN
CAN
uING
T
x
*
max
x
max
x
*
x
Fig. 5.10. Caracteristica static impus pentru
SNMD.

Ingineria aplicaiilor de timp real
160

Conversia curent-tensiune se realizeaz pe un rezistor de rezisten R,
astfel nct pentru CIU rezult o caracteristic liniar prezentat n figura 5.11 a.
n ceea ce privete CAN , pentru rezoluiile uzuale din sistemele
industriale de achiziie de 12 16 bii, caracteristica static poate fi aproximat
ca fiind liniar, potrivit reprezentrii din figura 5.11 b.











Avnd n vedere caracteristicile statice ilustrate n figurile 4.10 i 4.11
rezult c relaia aferent modulului BC1, din punctul de vedere al liniaritii,
va depinde numai de forma caracteristicii statice a traductorului T. n cele ce
urmeaz vor fi considerate dou situaii i anume:
- SNMD cu traductor de tip liniar;
- SNMD cu traductor de tip neliniar (ptratic).

Sinteza BC1 pentru un SNMD cu traductor liniar

n figura 5.12 este ilustrat caracteristica static a traductorului liniar
care se consider inclus n SNMD.







Caracteristicilor statice din figurile 4.104.12 li se asociaz urmtorul
sistem de ecuaii n abateri:
Fig. 5.11. Caracteristici statice ale convertoarelor: a CIU; b CAN.
u
max
i
max
u

i
a

N
max
u
max
N
u

b
i
max
x
max
i
x
Fig. 4.12. Caracteristica static a traductorului liniar
din structura SNMD.
Ingineria aplicaiilor de timp real
161



SNMD:
x
-
=
x
mux
-
x
mux
x ,
(S.9)
T:
i =
i
mux
x
mux
x ,
(5.1u)
CIU:
u =
u
mux
i
mux
i ,
(S.11)
CAN:
N =
N
mux
u
mux
u .
(S.12)

Rezolvnd sistemul format din ecuaiile (5.9)(5.11) rezult pentru
BC1 ecuaia

x
-
=
x
mux
-
N
mux
N ,
(S.1S)
sau impunnd pentru mrimea x
*
reprezentat n memorie acelai domeniu de
variaie ca pentru mrimea fizic

x
-
=
x
max
N
max
N.
(S.14)
Examinnd relaia (5.14) se observ c elementul BC1 este un element
liniar, a crui caracteristic static este reprezentat n figura 5.13.







Sunt situaii care necesit utilizarea ecuaiei modulului BC1 n valori
absolute. Pentru a obine aceast form, n ecuaia (5.14) se exprim abaterile
innd cont de relaiile (5.7), (5.8) i rezult

x
max
N
max
x
*
N
Fig. 5.13. Caracteristica static rezultat pentru
modulul de calcul BC1, n cazul traductorului
liniar..
Ingineria aplicaiilor de timp real
162


x
-
- x
mn
=
x
mux
-x
mn
N
mux
- N
mn
(N - N
mn
).
(S.1S)
Dup efectuarea calculelor n relaia (5.15) se obine,


x
-
=
x
mux
N
mn
-x
mn
N
mux
N
mux
- N
mn
+
x
mux
- x
mn
N
mux
- N
mn
N
(S.16)
sau
x
-
= a

+ a
1
N (S.17)
unde
o
0
=
x
mux
N
mn
-x
mn
N
mux
N
mux
- N
mn

(S.18)
o
1
=
x
mux
-x
mn
N
mux
- N
mn

(5.19)

O situaie frecvent ntlnit este aceea n care limita inferioar a
domeniului mrimii x este nul, respectiv x
min
= 0. n acest caz ecuaia (5.16)
devine
x
-
=
x
mux
N
mn
N
mux
- N
mn
+
x
mux
N
mux
- N
mn
N
(S.2u)

sau
x
-
= h

+ h
1
N (S.21)
unde
b
0
=
x
mux
N
mn
N
mux
- N
mn

(S.22)
b
1
=
x
mux
N
mux
- N
mn
.
(5.23)
Rezultatele de mai sus confirm faptul c indiferent de forma de
exprimare (prin variaii sau valori absolute) BC1 prezint o caracteristic static
liniar.


Ingineria aplicaiilor de timp real
163

Sinteza BC1 pentru un SNMD cu traductor neliniar
n cele ce urmeaz se va trata problema determinrii ecuaiei asociate
modulului BC1 n cazul unui traductor neliniar de tip ptratic. Se menin
ipotezele referitoare la liniaritate din cazul precedent, cu excepia traductorului,
care prezint caracteristica static ilustrat n figura 5.14, astfel nct pentru
SNMD rezult sistemul de ecuaii (5.24)(5.27).








SNMD:
x
-
=
x
mux
-
x
mux
x ,
(S.24)
T:
i =
i
mux
(x
mux
)
2
(x)
2
,
(5.2S)
CIU:
u =
u
mux
i
mux
i ,
(S.26)
CAN:
N =
N
mux
u
mux
u .
(S.27)
Rezolvnd sistemul format din ecuaiile (5.24)(5.27) , n raport cu
mrimea x
*
, rezult pentru BC1 ecuaia

x
-
=
x
mux
-
N
mux
N ,
(S.28)
sau impunnd pentru mrimea x
*
reprezentat n memorie acelai domeniu de
variaie ca pentru mrimea fizic

x
-
=
x
max
N
max
N.
(S.29)
Examinnd relaia (5.29) se observ c elementul BC1 este un element
neliniar, a crui caracteristic static este reprezentat n figura 5.15. Este de
remarcat faptul c neliniaritatea introdus de BC1 compenseaz neliniaritatea
Fig. 5.14. Caracteristica static a traductorului
neliniar din structura SNMD.
i
max
x
max
i
x
Ingineria aplicaiilor de timp real
164

traductorului T, astfel nct pe ansamblu caracteristica static a SNMD s rezulte
liniar.








Ca i n cazul precedent. sunt situaii care necesit utilizarea ecuaiei
modulului BC1 n valori absolute. Pentru a obine aceast form, n ecuaia
(5.29) se exprim abaterile innd cont de relaiile (5.7), (5.8) i rezult

x
-
- x
mn
=
x
mux
-x
mn
N
mux
- N
mn
N - N
mn
.
(S.Su)
Dup efectuarea calculelor n relaia (5.30), n situaia frecvent ntlnit
n practic x
min
= 0 se obine,

x
-
= x
mux
_
N - N
mn
N
mux
- N
mn
.
(S.S1)
sau
x
-
= _
- N
mn
(x
mux
)
2
N
mux
- N
mn
+
(x
mux
)
2
N
mux
- N
mn
N
(S.S2)

respectiv

x
-
= c

+c
1
N ,
(S.SS)

unde
c
0
=
- N
mn
(x
mux
)
2
N
mux
- N
mn
,
(S.S4)
Fig. 5.15. Caracteristica static rezultat pentru
modulul de calcul BC1, n cazul traductorului
neliniar..
x
max
N
max
x
*
N
Ingineria aplicaiilor de timp real
165

c
1
=
(x
mux
)
2
N
mux
- N
mn
.
(5.35)
Rezultatele de mai sus confirm faptul c indiferent de forma de
exprimare (prin variaii sau valori absolute) BC1 prezint o caracteristic static
neliniar care compenseaz neliniaritatea caracteristicii traductorului T.
n continuare se va deduce o funcie general asociat modulului BC1
indiferent de caracteristicile statice impuse pentru sistemul numeric de msurat
i traductor. Se menine ipoteza liniaritii blocului de conversie format din CIU
i CAN.
Pentru SNMD, caracteristicii statice i se asociaz funcia continu
x
-
= g(x) (S.S6)
cu
g(x
mux
) = x
mux
-
,
g(u) = u .

n ceea ce privete traductorul , caracteristica static a acestuia este
descris de funcia continu i inversabil
i = (x) (S.S7)
cu
(u) = u ,
(x
mux
) = i
mux
.
Se consider c funcia f este inversabil, iar funcia sa invers
x =
-1
(i) (S.S8)
cu

-1
(i
mux
) = x
mux
;

-1
(u) = u ,
este de asemenea continu.
nlocuind relaia (5.38) n (5.36) rezult
x
-
= g|
-1
(i)] , (S.S9)
unde prin nlocuirea lui i cu valoarea din relaia (5.26) se ajunge la

Ingineria aplicaiilor de timp real
166

x
-
= g _
-1
_
i
mux
u
mux
u]_ .
(S.4u)
Substituind n relaia (5.40) valoarea u din ecuaia CAN (5.27) se
ajunge la
x
-
= g _
-1
_
i
mux
u
mux

u
mux
N
mux
N]_ ,
(S.41)
respectiv
x
-
= g _
-1
_
i
mux
N
mux
N]_ .
(S.42)

n contextul figurii 4.9 se noteaz
K
1
=
N
mux
i
mux
,
(S.4S)
notaie care semnific amplificarea gruprii de convertoare CIU CAN.
nlocuind notaia (5.43), n relaia (5.42), se obine
x
-
= g|
-1
( K
1
-1
N)] ,
(S.44)
care reprezint ecuaia modulului BC1, n urmtoarele condiii:
- SNMV este caracterizat de funcia continu g relaia (5.36);
- T este caracterizat de funcia inversabil cu invers continu f
relaia (5.37);
- convertoarele CIU i CAN au comportare liniar, amplificarea
gruprii fiind K
1
.
n continuare vor fi prezentate dou exemple care trateaz aspecte
referitoare la conversia n uniti inginereti.
Exemplul 5.1.
Pentru SNMD nivel cu structura ilustrat n figura 5.16 se cunosc
urmtoarele elemente:
LT - E e |2uu 8uu] mm, i e |4 2u] mA, caracteristic
static liniar;
CIU - R = 250 , caracteristic static liniar;
CAN - N
max1
= 1023 uCAN sau N
max2
= 4095 uCAN, caracteristic
static liniar;
Ingineria aplicaiilor de timp real
167

S se determine:
a domeniul de valori al tensiunii la intrarea CAN;
b rezoluiile n
1
i n
2
ale CAN pentru cele dou valori N
max1

i N
max2
;
c valorile numerelor de cuante N
1
i N
2
n cazul unui nivel
din memorie H
*
=650mm .








Rezolvare
a conform legii lui Ohm, pentru rezistorul R se poate scrie
u
mn
= R I
mn
= 2Su 4 1u
-3
= 1 I ;
u
mux
= R I
mux
= 2Su 2u 1u
-3
= S I ;
b pentru un CAN se cunoate c N
mux
= 2
n
- 1 de unde rezult
n = log
2
(N
mux
+1), prin a crei aplicare se obine
n
1
= log
2
(1u2S +1) = log
2
1u24 = 1u bii ;
n
2
= log
2
(4u9S + 1) = log
2
4u96 = 12 bii .
c se determin pentru nceput valorile Nmin1 i Nmin2 apelnd la
caracteristica static a CAN ilustrat n figura 5.17;







LT

CAN

BC1
i
u
H
N
H
*
Qi
Qe
Fig. 5.16. Structura SNMD nivel pentru exemplul 4.1.
R
Fig. 4.17. Caracteristica static a CAN.
N
U
Nmax
Nmin
Umax Umin
Ingineria aplicaiilor de timp real
168

Caracteristica static liniar din figura 5.17 este descris de ecuaia
N =
N
mux
-N
mn
u
mux
-u
mn
u
de unde rezult
N
mn
=
N
mux
u
mux
u
mn

respectiv
N
mn1
=
N
mux1
u
mux
u
mn
=
1u2S
S
1 = 2u4,6 uCAN

N
mn2
=
N
mux2
u
mux
u
mn
=
4u9S
S
1 = 819 uCAN

Cu aceste valori se determin coeficienii din relaiile (5.18) i (5.19)
dup cum urmeaz:
o
01
=
E
mux
N
mn1
-E
mn
N
mux1
N
mux1
- N
mn1
=
8uu 2u4,6 -2uu 1u2S
1u2S -2u4,6
= -Su mm

o
02
=
E
mux
N
mn2
-E
mn
N
mux2
N
mux2
- N
mn2
=
8uu 819 - 2uu 4u9S
4u9S -819
= -Su mm


o
11
=
E
mux
-E
mn
N
mux1
- N
mn1
=
8uu - 2uu
1u2S -2u4,6
= u,7SS1S8 mmuCAN


o
11
=
E
mux
-E
mn1
N
mux2
- N
mn2
=
8uu -2uu
4u9S -819
= u,18S1Su mmuCAN


Pentru primul caz rezult urmtoarea ecuaie pentru modulul BC1
E
-
= o
01
+ o
11
N
respectiv
E
-
= -Su + u,7SS1S8 N
sau
Ingineria aplicaiilor de timp real
169

6Su = -Su + u,7SS1S8 N
1

Din ultima relaie rezult
N
1
=
7uu
u,7SS1S8
= 9S4,8 uCAN

Pentru al doilea caz rezult urmtoarea ecuaie pentru modulul BC1
E
-
= o
02
+ o
12
N
respectiv
E
-
= -Su + u,18S1Su N
sau
6Su = -Su + u,18S1Su N
2

Din relaia de mai sus rezult
N
2
=
7uu
u,18S1Su
= S822 uCAN

Exemplul 5.2.
Fie SNMD debit ilustrat n figura 5.18, pentru care se cunosc:
SNMD - caracteristic static impus liniar
FT - e |u 6u] mcb, i e |4 2u] mA, caracteristic static
neliniar (ptratic);
CIU - R = 250 , caracteristic static liniar;
CAN - N
max
= 2047 uCAN, caracteristic static liniar;
S se determine:
a domeniul de valori al tensiunii la intrarea CAN, rezoluia
n i numrul N
min
de uCAN ale acestuia;
b deducerea ecuaiei asociate BC1 pe baza relaiei (5.44),
considernd funcia g liniar;
c valoarea Q
*
a debitului reprezentat n memorie pentru
N=1500 uCAN.



Ingineria aplicaiilor de timp real
170










Rezolvare
a conform legii lui Ohm, pentru rezistorul R se poate scrie
u
mn
= R I
mn
= 2Su 4 1u
-3
= 1 I ;
de unde rezult U
max

u
mux
= u
mn
+u = 1 +4 = S I ;
n = log
2
(N
mux
+1) = log
2
(N
mux
+1) = log
2
2u48 = 11 bii.
Conform procedeului indicate n exemplul precedent rezult N
min
dup
cum urmeaz:
N
mn
=
N
mux
u
mux
u
mn
=
2u47
S
1 = 4u9,4 uCAN

b pentru SNMD funcia g , coeficientul K
1
i funcia f au formele de
mai jos:
g() =

mux
-

mux
,
(S.4S)
K
1
=
N
mux
i
mux
,
(S.46)
() =
i
mux
(
mux
)
2
()
2
,
(S.47)
u
Fig. 5.18. Structura SNMD debit pentru exemplul 4.2.
CAN
i
N Q
*
Q
R
BC1
FT
Ingineria aplicaiilor de timp real
171


Din relaia (5.47) rezult

-1
(i) =

mux
i
mux
i ,
(S.48)
respectiv,

-1
(K
1
-1
N) =

mux
i
mux

i
mux
N
mux
N.
(S.49)

Aplicnd relaia (5.44), rezultatul de mai sus conduce la

-
= g(
-1
(K
1
-1
N)) =

mux
N
mux

mux
-

mux
N.
(S.Su)
sau

-
=

mux
-
N
mux
N.
(S.S1)

Considernd domeniile pentru mrimile Q
*
i Q egale relaia (5.51)
devine

-
=

mux
N
mux
N.
(S.S2)
relaie identic cu relaia (5.29).
Pentru exprimarea n valori absolute se calculeaz mai nti N
min
apoi
coeficienii c
0
i c
1
cu relaiile (5.34) i (5.35). dup cum urmeaz
Ingineria aplicaiilor de timp real
172

c
0
=
- N
mn
(
mux
)
2
N
mux
- N
mn
=
-4u9,4 S6uu
2u47 -4u9,4
, = -9uu (mcb)
2


c
1
=
(
mux
)
2
N
mux
- N
mn
=
S6uu
2u47 -4u9,4
, = 2,197
[
mc
b

2
uCAN
.

Introducnd coeficienii c
0
i c
1
n relaia (5.33) se obine


-
= c
0
+c
1
N respectiv

-
=

-9uu +2,197 N
ultima relaie reprezentnd expresia caracteristicii statice a modulului
BC1.
Valoarea solicitat pentru debitul calculat Q
*
este

-
= -9uu +2,197 1Suu = 48,94 mcb

4.1.3. Conversia din uniti inginereti
Aa cum reiese din figura 5.8 n care se prezint circuitul informaional
ntr-un SRA ierarhizat aceast conversie se realizeaz de ctre blocul BC2, parte
integrat a unui sistem numeric de transmitere a comenzii la distan SNTD cu
structura evideniat n figura 5.19.







Ca i la conversia din uniti inginereti , mrimile sunt exprimate prin
variaii, semnificaiile tipurilor de variaii fiind cele din relaiile 4.7 i 4.8.
Determinarea relaiei asociate modulului BC2 se va realiza impunnd
pentru SNMD o caracteristic static liniar, ilustrat n figura 5.20.

Fig. 5.19. Structura unui sistem numeric de msurat la distan.
SRA
y i
u
N y
*
uING mA V
CNA
uCNA
CUI
uING
BC2 SNTD
y y
*
uING uING
Ingineria aplicaiilor de timp real
173










Att pentru convertorul tensiune curent CUI, ct i pentru cel analog
numeric CNA se presupun caracteristici statice liniare ilustrate n figura 5.21.











Avnd n vedere caracteristicile statice ilustrate n figurile 5.20 i 5.21
rezult c relaia aferent modulului BC2, din punctul de vedere al liniaritii,
va depinde numai de forma caracteristicii statice de msur a SRA. n cele ce
urmeaz vor fi considerate dou situaii i anume:
- SNTD care include SRA cu caracteristic de msur (CM) de tip
liniar;
- SNTD care include SRA cu caracteristic de msur (CM) de tip
neliniar;

Sinteza BC2 pentru un SNTD care include SRA cu CM liniar
n figura 5.22 este ilustrat caracteristica static a SRA cu CM liniar
care se consider inclus n SNTD.




Fig. 5.20. Caracteristica static impus pentru
SNTD.

y
*
max
y
max
y
*
y

Fig. 4.21. Caracteristici statice ale convertoarelor: a CUI; b CNA.
u
max
i
max
u
i

a

N
max
u
max
N

u
b
Fig. 5.22. Caracteristica static a SRA cu CM liniar
din structura SNTD.
i
max
y
max
i
y
Ingineria aplicaiilor de timp real
174

Caracteristicilor statice din figurile 4.344.36 li se asociaz urmtorul
sistem de ecuaii n abateri:


SNTD:
y =
y
mux
y
mux
-
y
-
,
(S.SS)
SRA:
y =
y
mux
i
mux
i ,
(5.S4)
CUI:
i =
i
mux
u
mux
u ,
(S.SS)
CNA:
u =
u
mux
N
mux
N .
(S.S6)

Rezolvnd sistemul format din ecuaiile (5.53)(5.56) rezult pentru
BC2 ecuaia

N =
N
mux
y
mux
-
y
-
,
(S.S7)
sau impunnd pentru mrimea y
*
reprezentat n memorie acelai domeniu de
variaie ca pentru mrimea fizic rezult

N =
N
max
y
max
y
-
.
(S.S8)
Examinnd relaia (5.58) se observ c elementul BC2 este un element
liniar, a crui caracteristic static este reprezentat n figura 5.23.







Ca i la conversia n uniti inginereti sunt situaii care necesit
utilizarea ecuaiei modulului BC2 exprimat n valori absolute. Pentru a obine
Fig. 5.23. Caracteristica static rezultat pentru
modulul de calcul BC2, n cazul SRA cu CM
liniar.
y
max
N
max
y
*
N

Ingineria aplicaiilor de timp real
175

aceast form, n ecuaia (5.58) se exprim abaterile innd cont de relaiile
(5.7), (5.8) i rezult


N - N
mn
=
N
mux
-N
mn
y
mux
- y
mn
(y
-
- y
mn
).
(S.S9)
Dup efectuarea calculelor n relaia (5.59) se obine,

N =
y
mux
N
mn
-y
mn
N
mux
y
mux
- y
mn
+
N
mux
-N
mn
y
mux
- y
mn
y
-

(S.6u)
sau
N = c

+ c
1
y
-
(S.61)
unde
c
0
=
y
mux
N
mn
-y
mn
N
mux
y
mux
- y
mn

(S.62)
c
1
=
N
mux
- N
mn
y
mux
- y
mn

(5.63)

O situaie frecvent ntlnit este aceea n care limita inferioar a
domeniului mrimii y este nul, respectiv y
min
= 0. n acest caz ecuaia (5.60)
devine
N = N
mn
+
N
mux
- N
mn
y
mux
y
-

(S.6S)

sau
N = d

+ d
1
y
-
(S.66)
unde
J
0
= N
mn
(S.67)

J
1
=
N
mux
- N
mn
y
mux
.
(S.68)
Rezultatele de mai sus confirm faptul c indiferent de forma de
exprimare (prin variaii sau valori absolute) BC2 prezint o caracteristic static
liniar.
Ingineria aplicaiilor de timp real
176

Sinteza BC2 pentru un SNTD care include SRA cu CM neliniar
n figura 5.24 este ilustrat caracteristica static a SRA cu CM neliniar
care se consider inclus n SNTD.







Caracteristicilor statice din figurile 5.20, 5.21 i 5.24 li se asociaz
urmtorul sistem de ecuaii n abateri:

SNTD:
y =
y
mux
y
mux
-
y
-
,
(S.69)
SRA:
y =
y
mux
i
mux
i ,
(5.7u)
CUI:
i =
i
mux
u
mux
u ,
(S.71)
CNA:
u =
u
mux
N
mux
N .
(S.72)

Rezolvnd sistemul format din ecuaiile (5.69)(5.72) rezult pentru
BC2 ecuaia

N =
N
mux
(y
mux
-
)
2
(y
-
)
2
,
(S.7S)
sau impunnd pentru mrimea y
*
reprezentat n memorie acelai domeniu de
variaie ca pentru mrimea fizic rezult

N =
N
max
(y
max
)
2
(y
-
)
2
.
(S.74)
Examinnd relaia (5.74) se observ c elementul BC2 este un element
liniar, a crui caracteristic static reprezentat n figura 5.25 compenseaz
neliniaritatea caracteristicii de msur a SRA.
Fig. 5.24. Caracteristica static a SRA cu CM
neliniar din structura SNTD.
i
max
y
max
i
y
Ingineria aplicaiilor de timp real
177








i n aceast caz sunt situaii care necesit utilizarea ecuaiei modulului
BC2 exprimat n valori absolute. Pentru a obine aceast form, n ecuaia (5.74)
se exprim abaterile innd cont de relaiile (5.7), (5.8) i rezult


N - N
mn
=
N
mux
-N
mn
(y
mux
- y
mn
)
2
(y
-
- y
mn
)
2
.
(S.7S)
Dup efectuarea calculelor n relaia (5.75) se obine,

N = e

+ e
1
y
-
+e
2
(y
-
)
2
(S.76)
unde
c
0
= N
mn
+
N
mux
-N
mn
(y
mux
- y
mn
)
2
(y
mn
)
2

(S.77)
c
1
= -2 y
mn

N
mux
-N
mn
y
mux
- y
mn

(5.78)
c
2
=
N
mux
-N
mn
(y
mux
- y
mn
)
2

(5.79)

Dac limita inferioar a domeniului mrimii y este nul, respectiv y
min
= 0 , ecuaia (5.76) devine
N =

+
2
(y
-
)
2
(S.8u)

unde

0
= N
mn
(S.81)
Fig. 5.25. Caracteristica static rezultat pentru
modulul de calcul BC2, n cazul SRA cu CM
neliniar.
y
max
N
max
y
*
N

Ingineria aplicaiilor de timp real
178

2
=
N
mux
-N
mn
(y
mux
)
2

(5.82)
Rezultatele de mai sus confirm faptul c indiferent de forma de
exprimare (prin variaii sau valori absolute) BC2 prezint o caracteristic static
neliniar care compenseaz neliniaritatea CM a SRA..

n continuare se va deduce o funcie general asociat modulului BC2
care s fie valabil pentru orice tip de caracteristici statice, liniare sau neliniare,
impuse pentru SNTD i CM a SRA. Se menine ipoteza liniaritii blocului de
conversie format din CUI i CNA.
Pentru SNTD, caracteristicii statice i se asociaz funcia continu
y = q(y
-
) (S.8S)
cu
q(y
mux
-
) = y
mux
,
q(u) = u .

n ceea ce privete SRA , caracteristica static de msur a acestuia este
descris de funcia continu i inversabil
y = b(i) (S.84)
cu
b(u) = u ,
b(i
mux
) = y
mux
.
Se consider c funcia h este inversabil, iar funcia sa invers
i = b
-1
(y) (S.8S)
cu
b
-1
(y
mux
) = i
mux
;
b
-1
(u) = u ,
este de asemenea continu.
Din ecuaiile (5.71) i (5.72) rezult
CNA+CUI:
N =
N
mux
i
mux
i .
(S.86)
n contextul figurii 4.33 se noteaz
Ingineria aplicaiilor de timp real
179

K
2
=
i
mux
N
mux
,
(S.87)
notaie care semnific amplificarea gruprii de convertoare CNA CUI,
astfel nct relaia (5.86) devine
N = K
2
-1
i .
(S.88)

nlocuind relaia (5.85) n (5.38) rezult

N = K
2
-1
b
-1
(y) .
(S.89)
n care substituind pe y cu valoarea din (5.83) se ajunge la

N = K
2
-1
h
-1
|q(y
-
)] .
(S.9u)

relaie care reprezint ecuaia modulului BC2, n urmtoarele condiii:
- SNTD este caracterizat de funcia continu q relaia (5.83);
- CM a SRA este reprezentat de funcia inversabil cu invers continu
h relaia (5.84);
- convertoarele CNA i CUI au comportare liniar, amplificarea
gruprii fiind K
2
. relaia (5.87).
n continuare vor fi prezentate dou exemple care trateaz aspecte
referitoare la conversia din uniti inginereti.

Exemplul 4.3.
Pentru SNTD cu structura ilustrat n figura 5.26 se cunosc urmtoarele
elemente:
SRA - E e |2uu 8uu] mm, caracteristic static liniar;
CUI - u e |u,2 1] I caracteristic static liniar;
CNA - N
max
= 1023 uCAN, caracteristic static liniar;
S se determine:
a rezoluia n a CNA i numrul minim N
min
de uCNA;
Ingineria aplicaiilor de timp real
180

b deducerea ecuaiei asociate BC2 pe baza relaiei (5.90),
considernd funcia q liniar;
c valoarea calculat H
*
a nivelului pentru care a rezultat un
numr N=600 uCNA








Rezolvare
a pentru un CNA (ca i n cazul CAN) se cunoate c N
mux
= 2
n
- 1
de unde rezult n = log
2
(N
mux
+1), prin a crei aplicare se obine
n = log
2
(1u2S + 1) = log
2
1u24 = 1u bii ;
pentru determinarea valorii Nmin se apeleaz la caracteristica static
a CNA ilustrat n figura 5.27.







Caracteristica static liniar din figura 5.27 este descris de ecuaia
u =
u
mux
- u
mn
N
mux
- N
mn
N
de unde rezult
N
mn
=
N
mux
u
mux
u
mn

LT
i u
H
* N
Qi
Qe
Fig. 5.26. Structura SNTD pentru exemplul 4.3.
LC
CUI CNA
BC2
Fig. 5.27. Caracteristica static a CNA.
N
U
Nmax Nmin
Umax
Umin
Ingineria aplicaiilor de timp real
181

respectiv
N
mn
=
1u2S
1
u,2 = 2u4,6 uCNA
b pentru SNMD funcia q , coeficientul K
2
i funcia h au formele de
mai jos:
q(E
-
) =
E
mux
E
mux
-
E
-
,
(S.91)
K
2
=
i
mux
N
mux
,
(S.92)
b(i) =
E
mux
i
mux
i ,
(S.9S)

Din relaia (5.47) rezult

b
-1
(E) =
i
mux
E
mux
E ,
(S.94)
respectiv,

b
-1
(q(E
-
)) =
i
mux
E
mux

E
mux
E
mux
-
E
-
.
(S.9S)

Aplicnd relaia (5.90), rezultatul de mai sus conduce la

N = K
2
-1
b
-1
(q(E
-
)) =
N
mux
i
mux

i
mux
E
mux
-
E
-
.
(S.96)
sau
N =
N
mux
E
mux
-
E
-
.
(S.97)
Ingineria aplicaiilor de timp real
182


Considernd domeniile pentru mrimile H
*
i H egale relaia (5.97)
devine
N =
N
mux
E
mux
E
-
.
(S.98)
relaie identic cu relaia (5.58).

c se calculeaz coeficienii c
0
i c
1
din relaiile (5.62) i (5.63) dup
cum urmeaz:
c
0
=
E
mux
N
mn
-E
mn
N
mux
E
mux
- E
mn
=
8uu 2u4,6 -2uu 1u2S
8uu -2uu
= -68,2 uCNA

c
1
=
N
mux
- N
mn
E
mux
- E
mn
=
1u2S -2u4,6
8uu - 2uu
= 1,S64 uCNAmm .

Rezult urmtoarea ecuaie pentru modulul BC2
N = c
0
+ c
1
E
-

respectiv
N = -62,8 + 1,S64 E
-

sau
6uu = -62,8 + 1,S64 E
-
.

Din ultima relaie rezult
E
-
=
662,8
1,S64
= 48S,92 mm .

Exemplul 5.4.
Fie SNTD ilustrat n figura 5.28, pentru care se cunosc:
SNTD - caracteristic static impus liniar
SRA - e |u 6u] mcb, caracteristic static neliniar (radical);
CUI - u e |u,4 2] I caracteristic static liniar ;
Ingineria aplicaiilor de timp real
183

CNA - n = 12 bit , caracteristic static liniar;
S se determine:
a numerele de N
min
i N
max
de uCNA pentru CNA;
b valorile coeficienilor pentru BC2;
c valoarea N a numrului de uCAN pentru un debit calculat
Q
*
= 45 mc/h.








Rezolvare

a N
mux
= 2
n
-1 = 2
12
-1 = 4u96 -1 = 4u9S uCNA
pentru determinarea valorii Nmin se apeleaz la caracteristica static a
CNA ilustrat n figura 5.28.







Caracteristica static liniar din figura 5.29 este descris de ecuaia
u =
u
mux
- u
mn
N
mux
- N
mn
N
de unde rezult
u
Fig. 5.28. Structura SNMD debit pentru exemplul 5.4.
i
N Q
*
Q
CUI
FT
FC
CNA BC2
Fig. 5.29. Caracteristica static a CNA.
N
U
Nmax=4095 uCANA Nmin
Umax = 2 V
Umin = 0,4 V
Ingineria aplicaiilor de timp real
184

N
mn
=
N
mux
u
mux
u
mn

respectiv
N
mn
=
4u9S
2
u,4 = 819 uCNA
c se calculeaz coeficienii f
0
i f
2
din relaiile (5.62) i (5.63) dup
cum urmeaz:

0
= N
mn
= 819 uCAN ,

2
=
N
mux
-N
mn
(
mux
)
2
=
4u9S -819
6u
2
=
S726
S6uu
= 1,uSS uCNA(mcb)
2
.

Rezult urmtoarea ecuaie pentru modulul BC2
N =
0
+
2

-

respectiv
N = 819 + 1,uSS (
-
)
2

sau cu datele din enun
N = 819 + 1,uSS (4S)
2
= 819 +1,uSS 2u2S = 2914,87S uCNA.

Observaie
Ctre CNA se va transmite una dintre valorile N=2914 uCNA sau
N=2915 uCNA, respectiv valoarea trunchiat sau aproximat prin adaos
(deoarece partea fracionar este > 0,5.

5.1.4 Validarea mrimilor achiziionate i a comenzilor elaborate
n sens strict operaiunea de validare a unei mrimi achiziionate
presupune testarea ncadrrii valorii rezultate n uniti inginereti n domeniul
declarat pentru respectiva mrime. O eventual nencadrare n domeniu va fi
declarat ca eveniment semnificativ, care va fi tratat prin execuia unei rutine de
testare a integritii funcionale a SNMD i avertizare.
n afara testrii ncadrrii n domeniu, mai pot fi testate i alte limite
asociate diferitelor tipuri de avertizri cum ar fi avertizarea de prevenire sau cea
de avarie, situate aa cum se observ din figura 5.44 n interiorul domeniului
traductorului.
Ingineria aplicaiilor de timp real
185












La nclcarea sunt trecute n execuie taskuri specifice sincronizate cu
aceste evenimente care determin dup caz pe lng avertizri aciuni de
blocare, izolare, neutralizare, etc.
nainte ca o comand calculat s fie aplicat SNTD au loc teste de
ncadrare n domeniul specificat i eventual ntre limite tehnologice sigure
situate, conform reprezentrii din figura 5.31 n interiorul domeniului
comenzilor valide.











O nencadrare n domeniul comenzilor valide va fi declarat ca
eveniment semnificativ, care va fi tratat ca i n cazul achiziiei prin execuia
unei rutine de testare a integritii funcionale a SNTD i avertizare.
nclcarea unei limite a domeniului de funcionare sigur va determina
de regul aplicarea ctre SNTD a valorii limitei nclcate, aspect evideniat n
procedura ilustrat n figura 5.32.
Este important c toate evenimentele semnificative aferente testrii
mrimilor achiziionate sau a comenzilor elaborate se nscriu in jurnalul cu
evenimente din baza de date de proces.
Fig. 5.30. Limite asociate diverselor tipuri de testri a unei mrimi achiziionate.
Domeniu Traductor
Limite avertizare de prevenire
Limite avertizare de avarie
Fig. 5.31. Limite asociate testrii unei comenzi calculate.
Domeniu Comenzi Valide
Domeniu Comenzi Sigure
Y Ymax Ymin
Ingineria aplicaiilor de timp real
186




























5.2. Taskuri asociate unor algoritmi uzuali de reglare
numeric
n prezentul subcapitol vor fi prezentate principalele taskuri asociate
unor algoritmi de reglare numeric cu o arie larg de rspndire.

5.2.1. Taskuri asociate unui SRA cu regulator PID
Se cunoate expresia comenzii unui regulator PID n form continu
u = u
0
+K
P
_c +
1
Ii
_ c()
t
0
J +IJ
Jc
J
_ ,

(S.99)
Fig. 5.32. Schema logic asociat procedurii de testare a unei comenzi calculate.
Y Ymax
Da
Nu
Nu
Y=Ycalc Y=Ymax
Da
Y=Ymin
RETURN
Preia din BDP
Ymin, Ymax
Y Ymin
PROCEDURA TESTARE
COMANDA CALCULATA
Ycalc
Transfera
Ycalc
Transfera
Y
Ingineria aplicaiilor de timp real
187


unde u este comanda;
u
0
- comanda n absena abaterii;
e abaterea;
Kp, Ti, Td parametri de acordare.

Prin discretizare, apelnd pentru calculul integralei la metoda
dreptunghiurilor; se obine pentru pasul k
u
k
= u
0
+K
P
_c
k
+
I
Ii
c
k
k
]=1
+
IJ
I
(c
k
-c
k-1
)_,

(S.1uu)
respectiv k-1
u
k-1
= u
0
+K
P
_c
k-1
+
I
Ii
c
k
k-1
]=1
+
IJ
I
(c
k-1
-c
k-2
)_ ,

(S.1u1)
unde T reprezint intervalul de eantionare.
Prin scderea relaiei (5.101) din relaia (5.100) rezult:
u
k
-u
k-1
= K
P
_c
k
-c
k-1
+
I
Ii
c
k
+
IJ
I
(c
k
- 2c
k-1
+c
k-2
)_ ,

(S.1u2)
sau dup unele grupri convenabile se obine relaia de mai jos (5.103)
u
k
= u
k-1
+K
P
_1 +
I
Ii
+
IJ
I
] c
k
+K
P
_-1 -2
IJ
I
] c
k-1
+ K
P
IJ
I
c
k-2
.
Din relaia (5.103) se observ c valoarea pasului curent al comenzii u
k

depinde de valoarea acesteia aferent pasului anterior u
k-1
i de valorile
abaterii e pentru trei pai consecutivi, respectiv c
k
,
c
k-1
,
c
k-2
.

Introducnd notaiile (5.104)
uC = u
k


EC = c
k


CC = K
P
_1 +
I
Ii
+
IJ
I
]

uA = u
k-1


EA = c
k-1

CA = K
P
_-1 - 2
IJ
I
]
(5.104)

EAA = c
k-2

CAA = K
P
IJ
I


Ingineria aplicaiilor de timp real
188

relaia (5.103) devine
uC = uA +CC EC +CA EA +CAA EAA
(S.1uS)
Pentru implementarea relaiei (5.105) aferent determinrii comenzii
regulatorului PID n form incremental se poate construi taskul REG_PID a
crui schem logic se prezint n figura 5.33.


























Fig. 5.33. Schema logic asociat taskului REG_PID.
Initializare task
REG_PID
SEMEX=1, stabilete valori
iniiale pentru UC, UA, EC,
EA, EAA.
t=T ?
Nu
Da
P(SEMEX)
V(SEMEX)
EC = I-R
uC = uA + CC EC +CA EA +CAA
UA=UC
Preia din BDP
I, CC, CA, CAA
EAA=EA
EAA=UA
Achiziionez R
Transfera UC
la EE via SEA
Ingineria aplicaiilor de timp real
189

Examinnd figura 5.33 se observ c taskul REG_PID este sincronizat
cu timpul, intervalul de execuie fiind T, respectiv intervalul de eantionare din
relaiile (5.100)(5.103). Referina I i coeficienii CC, CA, CAA se preiau din
baza de date de proces BDP n cadrul unei seciuni critice, excluderea mutual
fiind implementat cu semaforul binar SEMEX . Semnalul de reacie R i
comanda calculat UC se achiziioneaz de la traductor, respectiv se distribuie la
EE prin intermediul subsistemului ieirilor analogice SEA.
Operarea regulatorului se realizeaz prin taskul consol CNS_OP a crui
schem logic este prezentat n figura 5.34.
























Fig. 5.34. Schema logic asociat taskului
CONS_OP.
Tast ?
Nu
Da
P(SEMEX)
V(SEMEX)
Initializare task
CNS_OP
SEMEX=1, stabilete valori
iniiale pentru I, CC, EA, CAA.
EXIT
Calculeaz
CC, CA, CAA
I ?
Da
Nu
E ?
Da
D ?
Da
Nu
Nu
P?
Da
Nu
Modif Kp
Modif Ti
Modif Td
R ?
Da
Nu
Modif I
Transfera I,
CC, CA, CAA
n BDP
Ingineria aplicaiilor de timp real
190

Din figura 5.34 reiese c taskul CNS_OP este sincronizat cu un
eveniment extern legat de apsarea unei taste sau acionarea unui buton virtual.
La introducerea uneia dintre comenzile P, I sau D se execut procedurile de
modificare a parametrilor de acordare Kp, Ti respectiv Td, urmate fiecare de
secvena de recalculare a coeficienilor CC, CA i CAA. Dac se acioneaz
tasta R se iniiaz procedura de modificare a referinei I. Taskul CNS_OP ofer
i posibilitatea opririi programului la apsarea tastei E.
Indiferent de parametrul modificat se transfer n BDP referina i cei
trei coeficieni. Ca i n taskul REG_PID accesul la BDP se face ntr-o seciune
critic, pentru excluderea mutual fiind utilizat tot semaforul binar SEMEX.

5.2.2. Taskuri asociate unui SRA cu regulator bipoziional

Spre deosebire de regulatorul PID regulatorul bipoziional prezint
pentru mrimea de comand numai dou valori de tipul totul sau nimic. n figura
5.35 este prezentat structura unui SRA temperatur cu regulatorul TC
bipoziional.


















Acesta va conecta sau dup caz va deconecta nclzitorul electric 1 funcie de
valoarea curent a temperaturii T n raport cu starea de referin Tref.
Perturbaiile principale sunt reprezentate de temperatura ambiant Tm i de
debitul Qr prin serpentina de evacuare a cldurii 2.
Regulatorul TC prezint o caracteristic de tip releu cu hysterezis
ilustrat n figura 5.36 i descris de relaia (5.106).

a)
Fig. 5.35. Scheme ale SRA temperatura bipoziional: a - schema principiala; b -
schema de structura; 1 nclzitor electric; 2 serpentin evacuare cldur; Tref,
T - temperatura prescris, respectiv reglat; u - mrime de comanda (stare
contact); m - mrime de execu ie (debit caloric W); Tm temperatur ambiant;
Qr debit agent rcire.
b)
TT
Proces EE
TC
Qr
Tm
m
r
T
u
Tref
(W)
Tm
Qr
Tref
220 V
50 Hz
TT
TC
1
2
Ingineria aplicaiilor de timp real
191

















u = _
C0N Joc I Imin sau |(Imin < I < Imox) st I(k -1) = C0N]
EC0N Joc I Imox sau |(Imin < I < Imox) st I(k -1) = EC0N]
.
(S.1u6)

n relaia (5.106) Tmin i Tmax se calculeaz cu relaiile

Imin = Irc +
Eyst
2

(S.1u7)
Imox = Irc -
Eyst
2

(S.1u8)

HYST reprezint limea benzii de hysterezis.

Funcionarea SRA poate fi uor neleas pe baza caracteristicilor
dinamice din figura 5.37. La cuplarea sistemului, in situaia To < Tref
regulatorul va comanda conectarea (comanda CON) rezistenei de nclzire 1.
Temperatura va ncepe s creasc, iar in momentul in care va atinge valoarea
Tmax se va comanda deconectarea (comanda DECON) rezistenei de nclzire.
Ca urmare, temperatura va ncepe sa scad, iar la atingerea valorii Tmin se va
produce recuplarea rezistentei de nclzire.


Tmin
HYST
Tref
CON
Tmax
u
DECON
T
Fig. 5.36. Caracteristica static a unui regulator bipozi ional: u comand;
HYST l ime a benzii de hysterezis, Ti temperatur prescris; Tmin, Tmax
limite minim respectiv maxim permise pentru temperatura reglat.
Ingineria aplicaiilor de timp real
192















Examinnd caracteristica din figura 5.37 a se observ c regimul
permanent este unul oscilant n jurul valorii Tref cu amplitudinea HYST/2.
Pentru creterea preciziei de reglare ar trebui micorat limea benzii de
hysterezis HYST, ceea ce va determina o cretere a frecvenei de comutare cu
implicaii negative n ceea ce privete fiabilitatea regulatorului.
n realitate, datorita ineriei procesului, temperatura va continua sa creasc
i dup decuplarea rezistentei, respectiv s scad i dup recuplarea acesteia.
Pentru a se respecta limitele pentru temperatura T, comenzile CON i DECON
vor trebui anticipate, astfel nct comutrile s se produc la Tmin respectiv
Tmax.
Pentru implementarea algoritmului de reglare bipoziional a temperaturii
se propune taskul REG_BP a crui schem logic este evideniat n figura 5.38.
Din figura 5.52 reiese c taskul REG_BP este sincronizat cu timpul, intervalul
de execuie fiind Tcom. Valorile limit Tmin i Tmax se preiau din baza de date
de proces BDP n cadrul unei seciuni critice, excluderea mutual fiind
implementat cu semaforul binar SEMEX . Semnalul de reacie R corespunztor
temperaturii reglate T se achiziioneaz de la traductorul de temperatur iar
comanda U (CON sau DECON) se transmite ntreruptorului care conecteaz
respectiv deconecteaz nclzitorul electric prin intermediul subsistemului
ieirilor numerice al sistemului de interfa cu procesul.
Analiznd schema logic din figura 5.38 se observ c se poate comanda
nchiderea ntreruptorului (comanda CON), deschiderea ntreruptorului
(comanda DECON) sau se poate menine starea acestuia dac Imin < I <
Imox .
Fig. 5.37. Caracteristici dinamice asociate SRA temperatur cu regulator
bipoziional: a variaia n timp a comenzii u; b variaia n timp a
temperaturii reglate T.
a)
u
t
DECON
CON
b)
HYST Tmin
Tmax
Tref
T
0

T
t
Ingineria aplicaiilor de timp real
193



































Al doilea task asociat SRA temperatur cu regulator
bipoziional este taskul care CNS_BP a crui schem logic se
prezint n figura 5.39.


Fig. 4.38. Schema logic asociat taskului REG_BP.
t=Tcom ?
Nu
Da
P(SEMEX)
Preia din BDP
Tmin, Tmax
Achizi ioneaz R
i calculeaz T
V(SEMEX)
T Tmin ?
Nu
Initializare task
REG_BP
SEMEX=1, determin valoarea
iniial UC pentru comanda U
T Tmax ?
U = DECON
Da
Da
Nu
U= CON
Transmite U la EE
via SEN
Ingineria aplicaiilor de timp real
194






















Din figura 5.39 reiese c taskul CNS_BP este sincronizat cu un
eveniment extern legat de apsarea unei taste sau acionarea unui buton virtual.
La introducerea uneia dintre comenzile I sau H se execut procedurile de
modificare a referinei Tref sau limii benzii de hysterezis Hyst. Fiecare
modificare este urmat de recalcularea valorilor limit Tmin i Tmax. Programul
poate fi oprit din taskul CNS_BP prin apsarea tastei E.
Indiferent care parametru se modific, valorile calculate pentru Tmin i
Tmax se transfer n BDP n cadrul unei seciuni critice. Accesul n aceast
seciune este reglementat prin excludere mutual implementat cu semaforul
binar SEMEX, utilizat n acelai scop i n taskul REG_BP.

5.2.3. Taskuri asociate unui SRA cascad

Reglarea n cascad presupune, potrivit reprezentrii din figura
5.40, existena unui regulator principal C1 a crui mrime de comand
se aplic nu direct unui element de execuie ci unui SRA, care
conine regulatorul C2, n calitate de referin extern.
Fig. 5.39. Schema logic asociat taskului CNS_BP.
Tast ?
Nu
Da
P(SEMEX)
V(SEMEX)
EXIT
Calculeaz
Tmin, Tmax
H ?
Da
Nu
E ?
Da
Nu
Ini ializare task
CNS_BP
SEMEX=1, stabilete valori iniiale
pentru Tref, Hyst, Tmin, Tmax.
I?
Da
Nu
Modif Tref
Modif Hyst
Transfera
Tmin, Tmax
n BDP
Ingineria aplicaiilor de timp real
195

Bucla de reglare care conine regulatorul C1 se numete bucl
exterioar sau coordonatoare, iar cea care conine regulatorul C2
constituie bucla interioar sau subordonat. Din punctul de vedere al
ineriei, bucla interioar trebuie s fie mai rapid dect cea exterioar.










Pentru a exemplifica funcionalitatea unui SRA cascad, n
figura 5.41 este prezentat schema principial a unui sistem de reglare
automat a temperaturii T la ieirea unui cuptor tubular CT n cascad
cu presiunea combustibilului Pc.
















Pentru exemplul de mai sus regulatorul de temperatur TC este
coordonator, iar cel de presiune PC este subordonat, mrimea de comand u
1

fiind referin pentru acesta.
+
BF1
BF2 EE SP1
Tint
T1
T2
SP2
i1
*
i1

u1=i2
e1

e2 u2 m
y1
y2

r2
r1

+

-

-
P2

P1
Fig. 4.40. Schema de structur a unui SRA cascad.
EC1

C1
C2
EC1
T
Q
p
T
0

Q
c
CT
Q
a
RR
Fig. 5.41. Schema principial a unui SRA temperatur n cascad cu presiunea
combustibilului: TT, PT- traductoare de temperatur, presiune; TC, PC - regulatoare
de temperatur, presiune; RR - robinet de reglare.
TT
Ti
PT
PC
P
c

TC
u
1
=Pi
r
1

r
2
u
2
Ingineria aplicaiilor de timp real
196

Taskul asociat SRA cascad din figura 5.40, a crui schem logic este
ilustrat n figura 5.42 este sincronizat cu timpul, intervalul de execuie Texec
fiind impus de ineria SRA interior.



































K ?
Fig. 5.42. Schema logic asociat taskului REG_CASCAD.
t=Texec ?
Nu
Da
i2 = u1
Preia din BDP
i1*

K=2
Initializare task
REG_CASCADA
K=1, SEMEX=1stabilete valori
iniiale pentru comenzile u1 i u2
Selectare algoritm
regulator C1
1 2
Selectare algoritm
regulator C2
P(SEMEX)
V(SEMEX)
Achizi ionez
rk
ek = ik - rk
Calculeaz
comanda uk
K =2?
Transfera u2
la EE via SEA
K=1
Ingineria aplicaiilor de timp real
197

Examinnd schema logic din figura 5.56 se observ c cele dou
comenzi se determin n cadrul aceleiai cuante de timp, pentru selecia
algoritmilor afereni fiind utilizat contorul K. Preluarea referinei i1* se face n
cadrul unei seciuni critice, la care accesul se realizeaz prin excludere mutual.


5.2.4. Taskuri asociate unui SRA cu aciune combinat

Dup cum s-a artat n primul capitol al lucrrii de fa la
nivelul automatizrii convenionale exist dou tipuri fundamentale de
SRA i anume SRA cu aciune dup abatere (efect) i SRA cu aciune dup
perturbaie (cauz). Pentru a fructifica avantajele oferite cde cele dou principii
de reglare i a le diminua neajunsurile se utilizeaz reglarea combinat dup
abatere i perturbaie.
Un asemenea SRA acioneaz preventiv la modificarea perturbaiilor
luate n considerare i corectiv la modificarea celorlalte perturbaii i a referinei.
n aceste condiii la modificarea perturbaiilor considerate nu exist regim
tranzitoriu pentru mrimea reglat n timp ce modificarea altora determin un
regim staionar pentru aceasta pn la eliminarea diferenei dintre aceasta i
valoarea de referin.


















Fig. 5.43. Schema de structur a unui SRA combinat abatere perturbaie: CA , CP
regulatoare abatere, perturbaie, - sumator.
EE
SP2
Tint
Ta
m
ra

+
-

p21p2kp2n
Tp21
Tp2k
P2
y2


SP1
y1

P1
u

CP
.
.
.
.
.
.
r21
r2k
up
i

i

+

BF
e

ua
-

CA

EC

+

+
+
y

I

Ingineria aplicaiilor de timp real
198

n figura 5.43 se prezint schema de structur a unui SRA combinat
caracterizat de prezena a dou regulatoare i anume: CA cu aciune dup abatere
i CP cu aciune dup perturbaie. La modificarea uneia dintre perturbaiile
p21p2k regulatorul CP i va actualiza mrimea de comand up iar la
modificarea altor perturbaii va apare o abatere e 0 care va determina
actualizarea comenzii ua. n final comanda u care se aplic elementului de
execuie va rezulta ca sum a componentelor ua i up.
Pentru a exemplifica funcionalitatea unui SRA combinat , n
figura 5.44 este prezentat schema principial a unui sistem de reglare
combinat a temperaturii T la ieirea unui cuptor tubular CT.


















La variaii ale debitului de produs Qp i/sau temperaturii acestuia T
0
,
regulatorul TCp i va modifica mrimea de comand up. La variaii ale altor
perturbaii va aprea o diferen ntre T i Ti care va determina modificarea de
ctre regulatorul TCa a comenzii ua.
Taskul asociat SRA combinat din figura 5.57, a crui schem logic
este prezentat n figura 5.59 este sincronizat cu timpul, intervalul de execuie
Texec fiind impus de ineria procesului.
Examinnd schema logic din figura 5.59 se observ c cele dou
comenzi se determin n cadrul aceleiai cuante de timp, pentru selecia
algoritmilor afereni fiind utilizat contorul K. Preluarea referinei i se face n
cadrul unei seciuni critice, la care accesul se realizeaz prin excludere mutual.
up
ua
Fig. 5.44. Schema principial a unui SRA temperatur combinat cu aciune dup
abatere i perturbaie: TTa, TTp - traductoare de temperatur; FTp - traductor de
debit; TCa, Tcp - regulatoare de temperatur abatere, perturbaie,; RR - robinet de
reglare, - sumator.
T
Q
p
T
0
Q
c

CT
rp
1

u
Q
a

RR
TCp
I
TTa
T
i

TTp
TCa
FTa
Ti
rp
2
ra
Ingineria aplicaiilor de timp real
199







































Fig. 5.45. Schema logic asociat taskului REG_COMB.
K ?
t=Texec ?
Nu
Da
u = ua+up
Preia din BDP i
K=2
Initializare task
REG_COMB
K=1, SEMEX=1stabilete valori
iniiale pentru comenzile ua i up
Selectare algoritm
regulator CA
1 2
Selectare algoritm
regulator CP
P(SEMEX)
V(SEMEX)
e = i - ra Calculeaz
comanda up
K =2?
Transfera u
la EE via SEA
K=1
Calculeaz
comanda ua
Achiziionez ra
via SIA
P(SEMEX)
V(SEMEX)
Preia din BDP I
Achiziionez ra,
r21r2k via SIA
Nu
Da
Ingineria aplicaiilor de timp real
200

5.2.5. Taskuri asociate unui SRA multivariabil

Un proces multivariabil este caracterizat de intrri i ieiri multiple. n
majoritatea cazurilor aceste procese sunt caracterizate de interaciuni. Aceste
interaciuni presupun modificarea mai multor ieiri la modificarea unei singure
intrri.
Reglarea unui asemenea proces are ca principal obiectiv realizarea
decuplrii, respectiv variaia unei singure ieiri atunci cnd este modificat o
referin.
n figura 5.46 se prezint un SRA multivariabil cu aciune dup abatere n
care procesul este caracterizat de interaciuni. Aceste interaciuni sunt
concretizate de subprocesele SP21 i SP12 care semnific influenarea ieirii y2
de ctre mrimea de execuie m1 i a ieirii y1 de ctre mrimea m2. Decuplarea
va trebui s elimine aceste interaciuni, cu alte cuvinte comanda u1 va influena
numai ieirea y1 iar comanda u2 numai ieirea y2.
n acest scop reculatorul multivariabil RMV este structurat n patru
blocuri funcionale care asigur compensri n vederea anulrii efectelor produse
de subprocesele SP21 i SP12.
.

















Dup cum indic figura 5.46 comenzile u1 i u2 se formeaz potrivit relaiilor de
mai jos
Fig. 4.46. Schema de structur a unui SRA multivariabil: RMV regulator
multifuncional; BF11BF22 blocuri funcionale ale RMV, SP11 SP22 -
subprocese , - sumatoare.
BF11

SP11


BF21
BF12
SP21
SP12
u11
u21
u12
u22
i1
*
e1

r1

e2

y2

u2
u1
+

+
+
+

+

+ +
BF22
SP22


T1
EE1
T2
EE2
Ti1
Ti2
i1

+
i2
*
i2

+

+

-
-

m1
m2
y1

RMV

PROCES
r2

Ingineria aplicaiilor de timp real
201

u1 = u11 +u21 ;
(S.1u9)
u2 = u22 + u12.
(S.11u)

n relaiile (5.109) i (5.109) ntr-o component de forma uKJ indicele
K este asociat canalului destinaie iar indicele J canalului surs.
Pentru a exemplifica funcionalitatea unui SRA multivariabil ,
n figura 5.47 este prezentat schema principial a unui sistem de
reglare multivariabil a compoziiilor produselor extrase la vrful i
baza unei coloane de fracionare binar.



















Regulatorul RMV este astfel proiectat nct s asigure numai
modificarea compoziiei pentru care s-a schimbat referina (de exemplu la
creterea specificaiei x
Di
s se modifice corespunztor numai concentraia x
D

nu i x
B
.
Taskul asociat SRA multivariabil combinat din figura 5.46, a crui
schem logic este prezentat n figura 5.48 este sincronizat cu timpul,
intervalul de execuie Texec fiind impus i n acest caz de ineria procesului.
Fig. 5.47. Schema principial a unui SRA concentraie multivariabil: RMV regulator
multivariabil; x
Di
, x
Bi
referine pentru SRA compoziie produse vrf i baz.
PC
P
FC
LC
H
B
H
Bi
FC
Qab
B
FC
FC
LC
H
VRi
H
VR
P
i
D, x
D
B, x
B
Bi
L(t)
F x
F
RMV
AT
x
D
AT
Li
x
Di
x
Bi
Ingineria aplicaiilor de timp real
202





































Fig. 4.48. Schema logic asociat taskului REG_MULTIVAR.
J = 1 ?
t=Texec ?
Nu
Da
Preia din BDP iJ
K=2
Initializare task
REG_MULTIVAR
J=1, SEMEX=1stabilete valori
iniiale pentru comenzile u1 i u2
Selectare algoritm
regulator cKJ
P(SEMEX)
V(SEMEX)
eJ = iJ - rJ
K =1?
Transfer u1 i u2
la EE via SEA
K=1
Calculeaz
comanda uKJ
Achiziionez rJ
via SIA
K=1
J=2
u1 = u11+u12
u2 = u21+u22
Da
Da
Nu
Nu
Ingineria aplicaiilor de timp real
203

Examinnd schema logic din figura 5.62 se observ c toate
componentele celor dou comenzi se determin n cadrul aceleiai cuante de
timp, pentru selecia algoritmilor afereni fiind utilizate variabilele de tip contor
K i J. Preluarea referinei i1 i i2 se face n cadrul unei seciuni critice, la care
accesul se realizeaz prin excludere mutual.
Al doilea task asociat SRA multivariabil este taskul care
CNS_MULTIVAR a crui schem logic se prezint n figura 5.49.























Acest task este sincronizat cu un eveniment extern legat de apsarea unei
taste sau acionarea unui buton virtual. La introducerea uneia dintre comenzile I
sau J se execut procedurile de modificare a referinelor, exprimate n uniti
ale mrimilor reglate, i1* sau i2* . Indiferent de modificare, n continuare se
recalculeaz referinele, exprimate n uniti n care se calculeaz comenzile, i1
i i2. Practic aceast ultim procedur este asociat traductoarelor de intrare
Ti1 i Ti2.
Fig. 4.49. Schema logic asociat taskului CNS_MULTIVAR.
Tast ?
Nu
Da
P(SEMEX)
V(SEMEX)
EXIT
Calculeaz
i1, i2
J ?
Da
Nu
E ?
Da
Nu
Iniializare task
CNS_MULTIVAR
SEMEX=1, stabilete valori iniiale
pentru i1, i2,
I?
Da
Nu
Modif i1
*
Modif i2
*
Transfera
i1, i2
n BDP
Ingineria aplicaiilor de timp real
204

Indiferent de referina modificat , se transfer n BDP ambele referine
recalculate. Ca i n taskul REG_MUTIVAR, accesul la BDP se face ntr-o
seciune critic, pentru excluderea mutual fiind utilizat tot semaforul binar
SEMEX.
5.3. Baze de date de proces

n general o baz de date reprezint o mulime de date organizate dup
anumite criterii n scopul de a facilita prelucrarea acestora ntr-un anumit tip de
aplicaii.
Aplicaiile de conducere timp real impun prezena ntr-o baz de date
aferent a datelor care privesc:
- cunoaterea strii procesului;
- elaborarea mrimilor de comand;
- adoptarea unor decizii de natur tehnico economic legate de
proces.
O baz de date care conine date organizate pentru a fi utilizate n
aplicaii de conducere n timp real se numete baz de date de proces (BDP).
Aplicaiile care privesc consultarea i actualizarea unei BDP trebuie s fie
compatibile cu cerinele impuse prelucrrii n timp real. Cu alte cuvinte execuia
celor dou tipuri de aplicaii nu trebuie s determine ntrzieri peste limitele
admise.
Un sistem de gestiune aferent unei BDP trebuie s rspund
urmtoarelor cerine importante:
- s asigure securitatea datelor;
- s asigure integritatea datelor;
- s asigure independena datelor.
Cerina de securitate impune existena de proceduri care s permit
accesul la date numai pentru persoanele i/sau programele autorizate. Aceste
proceduri impun implementarea unui sistem adecvat de chei de acces, parole,
etc. Tot pentru securitate se poate apela la criptarea datelor, ns trebuie s se
in cont c operaiile de criptare/decriptare sunt consumatoare de timp.
Cerina de integritate presupune protecia datelor la o funcionare
necorespunztoare a echipamentului pe care ruleaz aplicaiile sau chiar a
programelor aferente acestor aplicaii. O posibilitate de asigurare a acestei
cerine o reprezint crearea copiilor de siguran pentru BDP.
Cerina de independen implic adoptarea unor structuri de descriere a
datelor care s nu implice schimbri ale acestora la nlocuirea sau modificarea
programelor aferente aplicaiilor de conducere.
ntr-o BDP sunt uzual cuprinse urmtoarele categorii de date:
Ingineria aplicaiilor de timp real
205

a) date din proces n cadrul fiierelor istorice ale valorilor
parametrilor;
b) comenzi aplicate procesului n cadrul fiierelor istorice ale valorilor
comenzilor;
c) evenimente semnificative din proces n cadrul jurnalului
evenimentelor;
d) adrese ale perifericelor de proces (traductoare i elemente de
execuie);
e) referine i parametri de acordare pentru regulatoarele automate
dup abatere;
f) parametri de acordare a modelelor aferente automatizrii avansate;
g) intervenii ale personalului de operare, n cadrul jurnalelor de
intervenii;
h) date privind funcionalitate sistemului de conducere n timp real.
n evoluia unei BDP intervin urmtoarele etape:
a) structurarea bazei de date;
b) ncrcarea datelor n baz;
c) actualizarea datelor n baz.
Structurarea BDP implic adoptarea de structuri pentru organizarea
datelor, definirea atributelor i a tabelelor etc.
ncrcarea datelor se refer la datele din categoriile d, e, f din
enumerarea de mai sus i este realizat la iniializarea sistemului programelor de
conducere.
Actualizarea datelor se realizeaz prin funciile achiziie date, generare
comenzi, intervenii operator.
Din punctul de vedere al amplasamentului seciuni ale BDP se pot gsi
n memoria primar sau secundar (pe harddisk sau suporturi externe). n
memoria primar sunt locate datele a cror schimbare se realizeaz cu o
frecven ridicat, cum ar fi de exemplu referinele regulatoarelor dup abatere.
Pe harddisk sunt pstrate date asociate evoluiei procesului (parametri, comenzi,
evenimente), ns nu pentru perioade ndelungate. Pentru perioade de timp mari
datele se arhiveaz i se transfer pe suporturi externe magnetice sau optice.

S-ar putea să vă placă și