Sunteți pe pagina 1din 217

NICOLAE PARASCHIV

ACHIZIIA I PRELUCRAREA DATELOR

UNIVERSITATEA PETROL - GAZE DIN PLOIETI 2008

Achiziia i prelucrarea datelor

CAPITOLUL

Problematica sistemelor de achiziie i prelucrare a datelor

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.
Capitolul 1

Achiziia i prelucrarea datelor

Obiective MC

Comenzi OC

Rezultate

Fig. 1.1. Sistem de conducere deschis: MC - mijloc de conducere; OC - obiect condus (proces).

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.
Perturbaii Obiective MC Feedback Fig. 1.2. Sistem de conducere cu aciune dup efect. Comenzi OC Rezultate

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.
Capitolul 1

Achiziia i prelucrarea datelor

Feedforward Obiective MC Comenzi OC

Perturbaii Rezultate

Fig. 1.3. Sistem de conducere cu aciune dup cauz.

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.
Feedforward Obiective MC Feedback Fig. 1.4. Sistem de conducere cu aciune dup efect i dup cauz. Comenzi OC Perturbaii Rezultate

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.

Capitolul 1

Achiziia i prelucrarea datelor

Este de menionat faptul c pentru primele trei fucii apar co nstrngeri 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
F L M,

(1.1) L este numrul total de variabile specifice procesului; M - numrul de relaii independente dintre cele L variabile; F numrul gradelor de libertate.

unde:

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;


Capitolul 1

Achiziia i prelucrarea datelor

- 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 automatiz rii 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.
i DA m P Pr a r1 rk y I
DA

p1 pk pn b

P m
Pr

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

Capitolul 1

Achiziia i prelucrarea datelor

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.
Parametri de acordare i C Perturbaii

EE

Proces

Parte variabil
r

Parte fixat
a

Perturbaii

T I C u EE Proces y

Parte variabil

Parte fixat

Fig. 1.6. SRA cu evidenierea prilor fixat i variabil: SRA abatere; SRA perturbaie.

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 c ror valori se determin prin calcul. Prezena reglrii avansate nu exclude reglarea convenional, cele dou categorii coexistnd n cadrul sistemelor ierarhice de conducere.

Capitolul 1

Achiziia i prelucrarea datelor

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 m rimi 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. SCS
z1 v1 z2 v2 zn vn

SCI1
p1 r1 m1 r2

SCI2
p2 pn m2 rn

SCIn
mn

SP1

SP2

SPn

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.

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.

Capitolul 1

Achiziia i prelucrarea datelor

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.
Limite de avertizare
P1lim Pklim Pnlim


u BLC EAA AA
Tn

AO

T1 Tk

P1

Pk

Pn

Parametri din proces Fig. 1.8. Structura unui sistem de avertizare (SAA) : BLC - bloc logic de comand; EAA - element acionare avertizoare; AO - avertizor optic; AA avertizor acustic.

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

Capitolul 1

Achiziia i prelucrarea datelor

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;

Capitolul 1

Achiziia i prelucrarea datelor

procesarea comenzilor n vederea transmiterii c tre elementele de execuie; - generarea de rapoarte. -

COP

MEC

BGR CTR BDP ABDP

Procesare Date

Procesare Comenzi

SEN

SIA

SEA

TA EEN PROCES

EEA

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.

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 solicit ri pe care utilizatorii le adreseaz sistemului de timp real. Aceste solicit ri 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.

Capitolul 1

10

Achiziia i prelucrarea datelor

Pentru exemplificare n figura 1.10, se prezint structura unui sistem tranzacional, unde tranzaciile sunt introduse de la un terminal.
T1

MAT1

MACU
T2

MGT

MMT

MATk

SGBD

Tn

MATn

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.

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:

Capitolul 1

11

Achiziia i prelucrarea datelor

- servicii comune pentru programe aplicative; - planificare i coordonarea programelor aplicative. n categoria serviciilor comune categorii de servicii: - 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. sunt de regul incluse urmtoarele

- alocarea unitii centrale de procesare;

Capitolul 1

12

Achiziia i prelucrarea datelor

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 planificatorul1 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 timp2; - planificarea pe condiii de evenimente3. 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 intrareieire.

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 2

Engl. -scheduler Engl. - time driven 3 Engl. - event driven

Capitolul 1

13

Achiziia i prelucrarea datelor

planificator ntr-o coad de ateptare, care poate fi organizat funcie de prioriti4, sau n ordinea sosirii. n mod curent SOTRM preia controlul UCP n urmtoarele situaii: - apariia unui eveniment extern procesului sau a operatorului); (de exemplu ntreruperi din partea

apariia unui eveniment intern ( cum ar fi o ntrerupere asociat unei operaii de intrare-ieire); apelarea de ctre taskul aflat n execuie a unei funcii realizate de ctre SOTRM;

- o ntrerupere de la ceasul de timp real; -

- 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 ieit5 , conform creia taskurile cu prioritate egal intr n execuie n ordinea sosirii; timp divizat6, 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
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
4

Capitolul 1

14

Achiziia i prelucrarea datelor

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 multiprogramare7. 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 intrareieire. 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 programele de aplicaie (taskuri), realiznd principial urmtoarele funcii importante: - semnalarea strii perifericului (liber sau ocupat);
-

cu

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
Multiprogramarea presupune o execu ie 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).
7

Capitolul 1

15

Achiziia i prelucrarea datelor

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 facilit i 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
Capitolul 1

16

Achiziia i prelucrarea datelor

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 condi ii 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 finalizare8. 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 u or 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.

Capitolul 1

17

Achiziia i prelucrarea datelor

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.

Capitolul 1

18

Achiziia i prelucrarea datelor

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 con ine 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.
Start dezvoltare aplicaie

Analiz Codificare Nu Validare Specificaii Da Nu Validare Proiectare Nu Validare Nu Expirare contract intreinere Da ncheiere dezvoltare aplicaie Fig. 1.11. Procesul iterativ asociat etapelor din existena unui produs informatic. Da Validare Da ntreinere Nu Nu Validare Da Instalare testare Da Da Nu Validare Da

Capitolul 1

19

Achiziia i prelucrarea datelor

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 implica i, 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.

Capitolul 1

20

Achiziia i prelucrarea datelor

CAPITOLUL

Elemente componente ale sistemelor de achiziie

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 func ional a dispozitivelor destinate schimbului de informa ii 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.

21

Achiziia i prelucrarea datelor

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.

ITF

CP MS

EP

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.

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.
MD

BSF RTI RTE

MA MC

Periferic

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.

22

Achiziia i prelucrarea datelor

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 t1, t2, i t3).
D7 MSb 1 t D6 1 t 1 D5 t D4 1 t 1 D3 t 1 D2 t D1 1 t D0 1 LSb 1 t

Imp.
t t1 t2 t3

Fig. 2.3 Diagram de timp pentru transmisia paralel: D7D0 - biii care se transmit; MSb - bitul cel mai semnificativ; LSb - bitul cel mai puin semnificativ.

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
23

Achiziia i prelucrarea datelor

Output) , PIA (Programmable Interface Adapter), PPF Peripheral Interface). 2.1.2. Transferul serial al informaiei

(Programmable

Transmisia serial, care este mai lent dect cea paralel, se folosete pentru transferul informa iei 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 1 0 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.

Start U
1

Stop b0 b 1 b2 b3 b4 b5 b6 b7

Ateptare
t

U
1

Impulsuri de la generatorul local t

t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 Fig. 2.4. Transmisie serial asincron 8/10.

24

Achiziia i prelucrarea datelor

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;
25

Achiziia i prelucrarea datelor

- 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 P2
Fig. 2.5. Sistem puternic cuplat cu mai multe magistrale:

M1

M2
26

Achiziia i prelucrarea datelor

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. P1 P2
Fig. 2.6. Sistem puternic cuplat cu o singur magistral.

M1

M2

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 Kij 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. P1
K11

P2
K12

M1
K21 K22

M2
Fig. 2.7. Sistem cu magistrale ncruciate.

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
27

Achiziia i prelucrarea datelor

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).
AMS_8 AMS_32

P1
AMS_16

S1

P2
AMS_16

P3
AMS_8

P4

S2

P5

S8

S9
AMS_8

S5

S6

S7

S10

S11

Fig. 2.8. Comunicaia prin magistrala AMS : P - procesoare (module MASTER); S - module subordonate (SLAVE).

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.
28

Achiziia i prelucrarea datelor

VMS VME

I/E

P
VMX

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

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.

29

Achiziia i prelucrarea datelor

a)

b)

c)

d)

Fig. 2.10. Tipuri de reele de comunicaie: a - stea; b - multipunct; c - n bucl; d - de tip plas cu conectare complet.

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 influen at 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;

30

Achiziia i prelucrarea datelor

- 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. CALCULATOR

SADA SAD

SADN

SDCA SDC

SDCN

P R O C E S
Fig. 2.11. Structura generala unui SIPC.

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.

31

Achiziia i prelucrarea datelor

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 compatibiliz rii 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.
32

Achiziia i prelucrarea datelor

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

I1 I2

EPP EPP

AFAP

DER

CAN

RT

M U X A
BC a)

MD

In

EPP

I1

EPP

A1

DER1

CAN1

RT

M U X N
In EPP
An DERn CANn

MD

BC b) Fig. 2.12. Structuri de SADA: a - cu un singur CAN i multiplexare analogic; b - cu mai multe CAN i multiplexare numeric.

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.

33

Achiziia i prelucrarea datelor

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 A1,, 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 . Rezisten a acestuia se calculeazcu relaia:
R U max Imax

(2.1) - R este rezistena rezistorului;


34

n care:

Achiziia i prelucrarea datelor

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

i
1

Traductor

CAN
0.2 i [mA ] 4 20

a)

b)

Fig. 2.13. Conversia curent - tensiune: a - schema de conectare; b - caracteristica static.

Aplicnd relaia (2.1) rezultpentru R valoarea : 1 0,2 R 500 3 (20 4)10 Filtrarea are drept principal, scop rejecia tensiunilor parazite induse n cablurile de conectare. Uzual se folosesc filtre simple trece jos iar n situa ii 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.
35

Achiziia i prelucrarea datelor

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.

I0 I1 Y

EN 1 1 1 1 1 1 1 1 0

A2 0 0 0 0 1 1 1 1 *

A1 0 0 1 1 0 0 1 1 *

A0 0 1 0 1 0 1 0 1 *

Y I0 I1 I2 I3 I4 I5 I6 I7 -

I7

EN A2 A1 A0 a)

b)

Fig. 2.14. MUXA cu opt intrri: a - schema principial; b - selecia intrrilor.

Dup cum se observ din figura 2.14.b, cuvntul de adres este format din 4 bii, din care 3 sunt pentru selecia canalului (A2,A1,A0) iar bitul EN (enable) este utilizat pentru selecia MUX. Orice combinaie A2A1A0 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 log2n+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 ;
36

Achiziia i prelucrarea datelor

- viteza de comutaie ridicat chiar n cazul unor frecvene de ordinul 250 parametri / secund; - durata de via ridicatsituat ntre 106 i 109 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).
4 3 2 1

U Fig. 2.15. Schema principiala unui releu reed: 1 - lamelfix; 2 - capsuldin sticl; 3 - bobin; 4-lamelmobil.

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).
D RC UC Ui G U0 RS S

Fig. 2.16. Comutator electronic realizat cu FET: RS - rezistende sarcin; RC - rezistenaferentcanalului de intrare; Ui tensiune de intrare; U0 - tensiune de ieire; UC - tensiune de comand; D dren; S - surs; G - gril.

Cu notaiile din figura 2.16 expresia tensiunii la ieire este: U0 Rs Rc r Ui


DS(ON)

Rs

(2.2)

37

Achiziia i prelucrarea datelor

n care rDS(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 m n 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).
1 2 n 1 2 n
MUX 2

MUX 1

1 2 n 1 2
Y

MUX 1

MUX 2

1 2 m n
Y MUX 0

1 2 n

MUX m

1 2 n

MUX m

a)

b)

Fig. 2.17. Configuraii de multiplexoare: a - paralel; b - serie.

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:

38

Achiziia i prelucrarea datelor

Y EN (A0 A1 D0 A0 A1 D1 A0 A1 D2 A0 A1 D3)

(4.3)
D
3

D1

D2

EN

Y W Fig. 2.18. MUXN pe un bit cu patru intrri: A1, A0 - bii selecie canal; EN - bit selecie MUXN; D0D3 - intrri numerice; Y - ieire direct; W - ieire negat.

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 func ie 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 Ci.
39

Achiziia i prelucrarea datelor

C1 R/8 R1 R/4 R/2 U1 R Circuit de comand C2 C3 C4 R2

+ U2

De la

calculator Fig. 2.19. AFAP cu rezisten variabil pe intrare.

Amplificarea structurii prezentate n figura 2.19 este


A R2 R1

(3.4)

n care rezistena de intrare R1 se determin cu relaia R1 R (2 c1 2 c2 2 c3 2 c4) , (3.5) unde ci are valori logice 0 sau 1 funcie de starea deschis sau nchis a comutatoarelor Ci. n tabelul 4.1 se prezint valorile |A|1 pentru toate combinaiile posibile ale comutatoarelor, n situaia R=R2.
Tabelul 2.1 Valori posibile pentru A C1 C2 C3 C4 A 0 0 0 0 0 0 0 0 1 1 0 0 1 0 2 0 0 1 1 3 0 1 0 0 4 0 1 0 1 5 0 1 1 0 6 0 1 1 1 7 1 0 0 0 8 1 0 0 1 9 1 0 1 0 1 1 0 1 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1
3 2 1 0 1

Eroarea tipic a structurii din figura 2.19 este datorat faptului c rezistenele comutatoarelor introduse de comutatoarele Ci (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.

40

Achiziia i prelucrarea datelor

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.

Circuit de comand De la calculator R R U1 + U2 C1 C2 C


3

C4

2R

4R

8R

Fig. 2.20. AFAP cu rezistene variabile pe reacie.

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.

De la calculator

BC

U1

K CM

U2

Fig. 2.21. Structura principial a unui DER

Funcioanrea DER are loc n douetape i anume: obinerea informaiei, caracterizatde timpul de obinere T0; memorarea informaiei, caracterizatde timpul de memorare TM.
41

Achiziia i prelucrarea datelor

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 num rul canalului cruia i este repartizat valoarea respectiv. Mrimea de intrare Ui este repartizatcanalului k dacea satisface relaia de apartenenla acest canal: Lk Ui Lk
1

(2.6)

n care Lk i Lk-1 sunt limitele superioare ale canalelor k, respectiv k-1. Diferena celor dou limite U Lk Lk
1

(2.7)

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

n care UR reprezint o tensiune de referin. Uzual N se exprim n numr de cuante sau numr de uniti CAN (uCAN). 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 Ui iar lui BSMin i se asociaz reprezint 1/2n din acelai diapazon. Dac n reprezint lungimea n bii a cuvntului convertit (rezoluia), atunci numrul maxim de cuante (canale) va fi Nmax 2n 1, (2.9) iar valoarea unui canal se va obine:

42

Achiziia i prelucrarea datelor


n 1

N
i 0

a i 2 i , ai

{0,1},

(2.10)

Cunoscnd valoarea tensiunii de referin UR i lungimea cuvntului convertit n se poate determina limita maxim a domeniului tensiunii de intrare Ui max (2 1) UR (2.11) Considernd un canal identificat prin valoarea sa medie, rezult eroarea inerent de cuantificare ca fiind U / 2 , respectiv 1/2BSMin.
N
111 110 101 100 011 010 001 000 0.5
C

Bsmin

Ui 1.5 2.5 3.5 4.5 5.5 6.57.0 * UR

Bsmin - Bsmin
0.5 1.5 2.5 3.5 4.5 5.5 6.57.0 * UR Ui

Fig. 2.22. Caracteristica de transfer ideala unui CAN cu rezoluia de 3 bii: N numr de cuante; Ui - tensiunea de intrare; UR - tensiunea de referin; c - eroarea de cuantificare.

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.
43

Achiziia i prelucrarea datelor

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.
3Uref /4 R Uref R 2Uref /4 R Uref /4 R Y1 Y2 Uin Codificator Y3

Bit2 (BSMax)

Bit1 (BSMin)

Fig. 2.23. CAN paralel pe doi 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 C1, C2, C3 funcie de valorile tensiunii Uin.
Tabelul 2.2 Valori logice asociate CAN pe doi bii Uin
0 Uref /4 Uref /4 2 Uref /4 2Uref /4 3 Uref /4 3Uref /4 Uref

Y3 0 0 0 1

Y2 0 0 1 1

Y1 0 1 1 1

Bit2 0 0 1 1

Bit1 0 1 0 1

44

Achiziia i prelucrarea datelor

Din tabelul 2.2 rezult urmtoarele funcii logice pentru codificator: Bit2 Bit1 Y3Y2 1Y Y3Y
2

Y3Y2 1Y

( Y3 Y1

Y3)Y2 (Y3Y

Y1 Y2 Y1 (2.12)
2

Y1

Y3Y2

Y3Y2)Y 1 (2.13)

n cazul general, pentru o rezoluie a CAN de n bii sunt necesare 2n-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 UCNA este aplicat comparatorului C. Configuraia biilor din RAS face ca prima comparaie a lui Uin s se efectueze cu Umax/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 3Umax/4 iar n al doilea Umax/4. Procesul continu prin comparaii succesive ale tensiunii Uin cu aproximaii tot mai bune ale sale, pn cnd se determin BSMin.

RAS
Uin Start Tact Registru deplasare 1 2 n
Sfrit conversie

+ -

Intrar date

Ieire serie

BSMax

UCNA

Min

Ieire paralel

BS

CNA

Umax

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

45

Achiziia i prelucrarea datelor

Uin

Da

u in

4U max 8

Nu

100
6U

000
Nu
6 U8max

Da

u in

max

Da

u in

Nu

110

100

110

100

7U u in
max

U
n

ui

max

u
in

U
max

u
in

U max

Da

Nu

Da

Nu

Da

Nu

Da

Nu

111

110

101

100

011

010

001

000

Fig. 2.25. Selectarea codului pentru un CAN cu aproximaii succesive cu n = 3 bii.

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 Ur care reprezint cea mai bun aproximaie a semnalului de intrare realizat cu n bii este :
i ai {01 (2.14) 2 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. i 1

Ur U max

ai

000 0 1

001 2

010 3

011 4

100 5

101 6

110 7

111 8 * Umax/8 46

Fig. 2.26. Alocarea canalelor pentru un CAN cu n = 3 bii.

Achiziia i prelucrarea datelor

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.
I11 I1m EPP1

M
EPP1

RT

U
MD

X
In1 Inm EPPn

N
EPPn

BC

Fig. 2.27 Structura principiala unui SADN.

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
47

Achiziia i prelucrarea datelor

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.
Ui Ui t Ue Formator Ue t U

Uimin

Uimax

Ui

Fig. 2.28. Formarea impulsurilor n cadrul EPP.

Aceast structur permite achiziia a n grupe fiecare format din cte m parametri numerici. Elementele de jonc iune 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).
R Ue Vcc Ue

t Vcc R Ue t

Fig. 2.29. Schem pentru filtrarea oscilaiilor mecanice.

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

Achiziia i prelucrarea datelor

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)

Traductor
GndT

Vs Vg

Vin

SADA
GndS

Fig. 2.30 Eroarea de mod comun n cazul conectrii monofilare:

Din figura 2.30 se observc Vin=Vs+Vg, Vg fiind neglijabildactraductorul i SADA au punctele de masapropiate. Intruct n condiii industriale Vg poate fi de ordinul zecilor sau chiar sutelor de V, o conectare de tipul celei din fig. 5.49 nu este posibil dect 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 Vg i Vin. n realitate, datorit distribuiilor neuniforme ale

49

Achiziia i prelucrarea datelor

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

Vs

SADA
GndS

Fig. 5.50 Conectarea difereniala unui traductor

Pentru determinarea acestora, din motive legate de simplificarea calculelor se utilizeazn locul unei scheme cu parametrii distribui i, schema echivalentcu parametrii concentrai din fig. 5.51. Prin aplicarea teoremei superpoziiei, n condiiile pasivizrii sursei Vs se obine:
(R1 Rg2 R2 R V in RS(R2 Rg2)(R1 Rg1)
g1

)R S
cm

(2.15)

R2Rg2(R1 Rg1)

R1Rg1(R2 Rg2)V

Ordinele de mrime pentru rezistenele care intervin n relaia (2.25) sunt: pnla 1 k pentru R1 i R2 , zeci de M pentru Rs i sute de M pentru Rg1 i Rg2, astfel nct se poate aprecia cR2Rg2<<Rs i R1Rg1<<Rs. Cu aceste precizri relaia 2.25 devine:
Vin
g1 R2 V R1 R2 R (R2 Rg2)(R1 R g 1) cm

(2.36)

R2

VS R1

Rg2

Vin

Vcm

Rg1

SADA

Fig. 2.31 Schema echivalenta conectrii difereniale: VS , Vcm - tensiunile surselor de semnal i de mod comun; R1 , R2 - impedanele liniilor de transmisie; Rg1 , Rg2 - rezistenele de izolaie ale liniilor de transmisie; RS - rezistena de sarcin; Vin - tensiunea achiziionat. 50

Achiziia i prelucrarea datelor

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 in
cm

(R2 Rg2)(R1 R

g1)

R1 R 2 R2 R g1

(2.37) Rg2 Rg atunci: (2.38)

Dacrezistenele de izolaie au valori apropiate Rg1


CMMR Rg R1 R 2

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 solu ii pentru un semnal de nivel mic de la un termocuplu.

Conductoare torsadate

Filtru Ecran

Fig. 2.32 Soluie pentru rejectarea zgomotelor n circuitele de

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

Achiziia i prelucrarea datelor

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 mas ct i la priza unicde mpmntare se vor efectua cu conductoare multifilare scurte i groase.
Subsistem analogic Subsistem numeric

Masanalogic

Masnumeric

Massurs alimentare

Mas construcie metalic

Masa general a sistemului Fig. 2.33 mpmntarea sistemului de conducere cu o singur priz.

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.
52

Achiziia i prelucrarea datelor

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 102-106 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 102-103 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.

Intrare

AO
Ieire

Convertor CC / CC
SA

Fig. 2.34 Schema de principiu a unui amplificator cu izolare: AI - amplificator de intrare; AO - amplificator de ieire; SA - sursde alimentare.

53

Achiziia i prelucrarea datelor

E1 R3

E2

R2

R4

-AI
I2 R1 I1 Ui OC1 OC2

-AO
Ue

Fig. 2. 35 Structura principiala unui amplificator de izolare cu cuplaj

n figura 2.35 se prezint schema principial a unui amplificator cu cuplaj optic. Structura acestuia cuprinde 2 circuite optocuploare OC 1 i OC2, fiecare constituit dintr-un ansamblu LED-fototranzistor. Optocuplorul OC2 realizeaz separarea galvanic ntre intrarea i ieirea amplificatorului iar OC1 este inclus n bucla de reacie negativ a amplificatorului de intrare. Cu notaiile din figura 2.34 rezult:
I1 Ui R I2
1

E1 R2 E2 R3

, .

(2.40) (2.41)

Ue R4

Deoarece diodele celor dou optocuploare sunt conectate n serie, rezult egalitatea curenilor din cele dou fototranzistoare, respectiv I1I2. Pe baza acestei precizri i a relaiilor (2.40) i (2.41) se deduce ecuaia caracteristicii statice a amplificatorului cu izolare:
ue R ui R4 R 1
4

E1

E2

R2 R1

(2.42)

Se constat liniaritatea caracteristicii i independena acesteia fa de caracteristicile optocuploarelor (n condiiile n care I1=I2)
54

Achiziia i prelucrarea datelor

CAPITOLUL

Tehnici de implementare a operaiilor multitasking de achiziie i prelucrare a datelor

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 concurente1 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 eviden iat 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.

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.
1

Capitolul 3

55

Achiziia i prelucrarea datelor

A: B: C:

A1 a1 A2 a2 A3
0 30 50 80 120 130

t [ut]

B1 b1 B2
0 20 40 60

t [ut]

C1 c1 C2 c2 C3 c3 C4 c4 C5
0 10 20 60 80 100 110 120 140 150

t[ut]

Fig. 3.1. Secvene aferente execuiei a trei aplicaii A, B, C: ut - uniti de timp.

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

UCP:

A1
0 30

A2
50 80

A3 B1

B2 C1

C2

C3

C4

C5 t[ut]

120 130 150 170 190 200 210 250 270 290 300 310 330 340

I/E:
0 30

a1
50 80

a2
120

b1
150 170

c1

c2

c3

c4

t[ut]

200 210 250 270 290 300 310 330

Fig. 3.2. Execuia pur secvenial a aplicaiilor A, B, C: ut - uniti de timp. iar

pentru prelucrarea pseudoparalel n figura 3.3. n varianta secvenial, din figura 3.2 se stabilesc urmtoarele valori pentru tuc-s - timpul efectiv al UCP i tex-s - timpul total de execuie: tex-s = 340 ut tuc-s = 210 ut valori cu care se calculeaz Gradul de utilizare a UCP secvenial - GrutUCP-s
GrutUCP t
S

UCP S Ex S

210 340

61,7%

(3.1)

UCP:

A1 B1 C1 A2 B2 C2 A3
0 30 50 60

C3

C4

C5

t[ut]

90 110 150 160 170

190 200 210 230 240

I/E:
0 30

a1 b1 c1
50

a2

c2

c3

c4

t[ut]

70 80 90 130

150 170 190 200 210 230

Fig. 3.3. Execuia pseudoparalel a aplicaiilor A, B, C: ut - uniti de timp.

Capitolul 3

56

Achiziia i prelucrarea datelor

n varianta pseudoparalel2, din figura 3.3 se stabilesc urmtoarele valori pentru tuc-p - timpul efectiv al UCP i tex-p - timpul total de execuie: tex-p = 240 ut tuc-p = 200 ut valori cu care se calculeaz Gradul de utilizare a UCP pseudoparalel GrutUCP-P
GrutUCP
P

tUCP t Ex

P P

200 240

83,3%

(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.
operaii

..

..

t
Cerere de ntrerupere

Execuie task Cerere ntrerupere Execuie rutin tratare Execuie task Fig. 3.4. Execuia intercalat a taskurilor.

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).

Se consider procesare pseudoparalel n regim de timp divizat - time sharing.

Capitolul 3

57

Achiziia i prelucrarea datelor

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.
Taskuri utilizator Taskuri sistem Nucleu SOTRM Hardware

Fig. 3.5. Structura stratificat a unei aplicaii de timp real.

O asemenea execuie implic existena n cadrul SOTRM 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:
Capitolul 3

58

Achiziia i prelucrarea datelor

- 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.63.

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

Capitolul 3

59

Achiziia i prelucrarea datelor

Dispecerizare Deblocare
BLOCAT EXECUIE LOGIC EXECUIE FIZIC

Blocare

Dezactivare

Dezactivare Dezactivare

Dispecerizare Dispecerizare

CREAT

Activare Suprimare
NECREAT

GATA DE EXECUIE

Suprimare

Suprimare Suprimare

Creare
Fig. 3.6. Evoluia taskurilor n spaiul strilor - abordarea 1.

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.

Capitolul 3

60

Achiziia i prelucrarea datelor

EXECUIE LOGIC BLOCAT CREAT GATA DE EXECUIE Fig. 3.7. Tranziiile asociate strii necreat.

Suprimare

NECREAT

Creare
CREAT

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.
NECREAT EXECUIE LOGIC BLOCAT

Creare Suprimare
CREAT

NECREAT

Dezactivare
GATA DE EXECUIE

Activare

GATA DE EXECUIE

Fig. 3.8. Tranziiile asociate strii creat.

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.

Capitolul 3

61

Achiziia i prelucrarea datelor

Dispecerizare Activare
CREAT GATA DE EXECUIE

EXECUIE LOGIC

Dezactivare

CREAT

Suprimare

NECREAT

Fig. 3.9. Tranziiile asociate strii gata de execuie.

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. Dispecerizare Deblocare
BLOCAT

Blocare
BLOCAT EXECUIE LOGIC

Dezactivare Dispecerizare
GATA DE EXECUIE EXECUIE FIZIC

CREAT NECREAT

Suprimare Dispecerizare

Fig. 3.10. Tranziiile asociate strii execuie.

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.

Capitolul 3

62

Achiziia i prelucrarea datelor

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).
EXECUIE

Deblocare
EXECUIE

Blocare
BLOCAT

Dezactivare

CREAT

Suprimare
NECREAT Fig. 3.11. Tranziiile asociate strii blocat.

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

Capitolul 3

63

Achiziia i prelucrarea datelor

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 si 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.
Capitolul 3

64

Achiziia i prelucrarea datelor

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:

Capitolul 3

65

Achiziia i prelucrarea datelor

- 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.
ACTIV

Ateptare Ateptare
BLOCAT GATA DE EXECUIE

Preluare
EXECUIE

Continuare Stop forat din alt task

Eliberare

Start

Stop forat din alt task


INACTIV

Stop normal

Instalare

tergere

NEINSTALAT Fig. 3.12. Evoluia taskurilor n spaiul strilor - abordarea 2.

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

Capitolul 3

66

Achiziia i prelucrarea datelor

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 printro 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 printro 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.
Capitolul 3

67

Achiziia i prelucrarea datelor

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 printro 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 rulabile4.

Taskurile aflate ntr-una dintre strile Gata de execuie i Execuie.

Capitolul 3

68

Achiziia i prelucrarea datelor

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.
Ieire taskuri suprimate Traseu circularizare taskuri

UCP
Ieire taskuri 05 blocate

Punct inserare noi taskuri

07
Ultima poziie, (coad de list)

01

06

02

04

09
Penultima poziie

Ieire taskuri dezactivate

Prima poziie, (cap de list) LAP Intrare taskuri devenite rulabile

03

Fig. 3.13. Modelul 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;

Capitolul 3

69

Achiziia i prelucrarea datelor

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.
Ieire taskuri suprimate Traseu circularizare taskuri

UCP
Ieire taskuri blocate

Punct inserare noi taskuri

07
Ultima poziie, (coad de list)

03

01
Prima poziie, (cap de list)

06

02
LAP

04

09
Penultima poziie

Ieire taskuri dezactivate

Intrare taskuri devenite rulabile

Fig. 3.14. Modelul dispecerizrii prin rotaie dup inserarea n LAP a taskului 03.

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

UCP
Ieire taskuri blocate

Punct inserare noi taskuri

03
Ultima poziie, (coad de list)

01

06
Prima poziie, (cap de list)

02

04
LAP

09

07
Penultima poziie

Ieire taskuri dezactivate

Intrare taskuri devenite rulabile

Fig. 3.15. Modelul dispecerizrii prin rotaie dup un proces de comutare n care taskul 07 a rmas rulabil.

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.

Capitolul 3

70

Achiziia i prelucrarea datelor

m n
Ultima poziie (coad de list)

o p
Prima poziie (cap de list) Punct inserare nod nou

Fig. 3.16. Componena listei circulare de ateptare la procesor.

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 priorit i. 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.

Capitolul 3

71

Achiziia i prelucrarea datelor

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.
Fig. 2.43. Soluia lui UCP
Ieire taskuri blocate Intrare taskuri devenite rulabile Intrare task prioritate 0

03 07

Sens
Intrare task prioritate 1 Intrare task prioritate 2 Intrare task prioritate 3 Intrare task prioritate 4 Intrare task prioritate 5

03
Task n rulare

scdere prioritate

04 02 LAP

Ieire taskuri dezactivate

Fig. 3.17. Modelul dispecerizrii prin prioritizare.

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.

Capitolul 3

72

Achiziia i prelucrarea datelor

m a m
Prima poziie (cap de list)

a m a m a
Ultima poziie (coad de list)

Sensul de scdere a prioritii

Fig. 3.18. Lista de ateptare la procesor n cazul dispecerizrii prin prioritizare.

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 pozi ie 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 corespunz toare 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;

Capitolul 3

73

Achiziia i prelucrarea datelor

- 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 priorit i superioare sunt vide (de exemplu taskurile din lista de prioritate 3 vor fi rulate numai dac listele 0, 1, 2 sunt vide).
Traseu circularizare taskuri . List circular - prioritate 0

UCP

01

06

02

04

09

Intrare taskuri de prioritate 0 List circular - prioritate 1 Ieire taskuri suprimate Intrare taskuri de prioritate 1 List circular - prioritate 2 Ieire taskuri blocate

07
Task n rulare

08

03
Intrare taskuri de prioritate 2 List circular - prioritate 3

Ieire taskuri dezactivate

14

10

05

Intrare taskuri de prioritate 3 List circular - prioritate 4

12
Intrare taskuri de prioritate 4 Intrare taskuri devenite rulabile.

Fig. 3.19. Modelul dispecerizrii prin prioritizare i rotaie.

Capitolul 3

74

Achiziia i prelucrarea datelor

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.

Capitolul 3

75

Achiziia i prelucrarea datelor

- 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/ie ire 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 reentrant6. 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.

Capitolul 3

76

Achiziia i prelucrarea datelor

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
S (I,C).

(3.1)

La iniializare variabilei I i se atribuie o valoare I0 0, 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 indivizibile7 i se numesc primitive. n ceea ce privete coada de ateptare , aceasta poate gestionat conform principiului FIFO8, 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 I continu execuia;
7 8

0 , funcia se ncheie i taskul n care aceasta se execut i

Indivizibilitatea are n vedere faptul c cele dou funcii nu pot fi ntrerupte. First Input First Output

Capitolul 3

77

Achiziia i prelucrarea datelor

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. II-1
NU DA

I<0
Continu execuia taskului apelant Se scoate taskul apelant din rndul taskurilor rulabile, se blocheaz i se nregistreaz n coada C Se apeleaz dispecerul

Se aduce n execuie alt task Fig. 3.20. Execuia primitivei P(S).

Primitiva V(S) presupune realizarea urmtoarelor operaii (ilustrate n organigrama din figura 3.21): 1 - II+1; 2 - dac I 0 , 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 deblocat9. 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);
n figura 3.21 este surprins situaia n care continu execuia taskului apelant, deci taskul deblocat este adus n execuie logic.
9

Capitolul 3

78

Achiziia i prelucrarea datelor

dac I 0 , atunci |I| reprezint numrul de taskuri blocate la semaforul S i nregistrate n coada C. II+1
NU

I 0

DA

Se deblocheaz taskul aflat pe prima poziie n coada C, se elimin din ea i se nscrie ntre taskurile rulabile

Continu execuia taskului apelant

Se apeleaz dispecerul

Fig. 3.21. Execuia primitivei P(S).

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 deblocat10 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.

Pentru ca soluia s fie funcional, semaforul SEMEX nu trebuie aservit altor scopuri n afara excluderii mutuale.
10

Capitolul 3

79

Achiziia i prelucrarea datelor

Task T1 Iniializare T1 SEMEX=1 NU NU

Task T2 Iniializare T2 SEMEX=1

t
DA P1_T1 P(SEMEX) SCr T1 V(SEMEX)

t_ex_T2 ? DA P1_T2 P(SEMEX) SCr T2 V(SEMEX)

P2_T1

P2_T2

Fig. 3.22. Excluderea mutual cu semafoare: P1_T1, ,P2_T2 proceduri ale taskurilor T1 i T2.

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 execu ia 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.
Capitolul 3

80

Achiziia i prelucrarea datelor

Considernd E o variabil de tip eveniment i


E ADEVARAT,FALS ,

semnificaiile celor trei primitive sunt urmtoarele:


INSCRIE(E) STERGE( E) E E ADEVARAT ; FALS ;
Blocheaza taskul daca E FALS, Continua executia daca E ADEVARAT .

ASTEAPTA( E)

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

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 deblocat11 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
Ca i n cazul semafoarelor, variabila de tip eveniment EVEX va trebui utilizat numai la implementarea excluderii mutuale.
11

Capitolul 3

81

Achiziia i prelucrarea datelor

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.
Task T1 Iniializare T1 EVEX=ADEV NU t_ex_T1 ? DA P1_T1 NU
EVEX=ADEV ASTEAPTA (EVEX)

Task T2 Iniializare T2 EVEX=ADEV NU t_ex_T2 ? DA P1_T2 NU

EVEX=ADEV ASTEAPTA (EVEX)

DA

DA

TERGE(EVEX)

TERGE(EVEX)

SCr T1
NSCRIE(EVEX)

SCr T2
NSCRIE(EVEX)

P2_T1

P2_T2

Fig. 3.23. Excluderea mutual cu variabile de tip eveniment: P1_T1, ,P2_T2 proceduri ale taskurilor T1 i T2.

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
Capitolul 3

82

Achiziia i prelucrarea datelor

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. Deblocarea12 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.
Utilizarea csuei potal CPEX i a mesajului MESEX trebuie s fie numai n excludere mutual. utilizat numai la implementarea excluderii mutuale.
12

Capitolul 3

83

Achiziia i prelucrarea datelor

n urma acestei depuneri T2 va deveni rulabil urmnd a fi planificat de dispecer pentru execuia seciunii sale critice.
Task T1 Iniializare T1
PUT MESEX NU

Task T2 Iniializare T2
PUT MESEX SAU

t_ex_T1 ?
DA

t_ex_T2 ?
DA

NU

P1_T1

P1_T2

NU

?
MESEX n CPEX DA

MESEX n CPEX DA PREIA MESEX din CPEX GET CPEX PUT PUT DEPUNE MESEX n CPEX

NU

PREIA MESEX din CPEX GET

SCr T1
DEPUNE MESEX n CPEX

SCr T2

P2_T1

P2_T2

Fig. 3.24. Excluderea mutual cu cutii potale i mesaje: P1_T1, ,P2 _T2 proceduri ale taskurilor T1 i T2.

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;
Capitolul 3

84

Achiziia i prelucrarea datelor

- 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:

Capitolul 3

85

Achiziia i prelucrarea datelor

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
BR (I ,C, In),

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 c ruia i corespunde se nume te 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.

Capitolul 3

86

Achiziia i prelucrarea datelor

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 corespunz toare 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 sincroniz rii 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 sincroniz rii se deosebesc sub mai multe aspecte i anume: - natura sincronizrii (cu evenimente externe sau cu timpul);

Capitolul 3

87

Achiziia i prelucrarea datelor

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.
t t t a b t t t t

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.

n continuare vor fi prezentate cteva modalit i 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 ( i, j {0,1} ). 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 i,j {0,1}. 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).

Capitolul 3

88

Achiziia i prelucrarea datelor

Task T1 Iniializare T1 SEMSYNC1=1 NU t_ex_T1 ? DA P1_T1 P(SEMSYNC1) PS1 V(SEMSYNC2) P2_T1

Task T2 Iniializare T2 SEMSYNC2=0 NU t_ex_T2 ? DA P1_T2 P(SEMSYNC2) PS2 V(SEMSYNC1) P2_T2

Fig. 3.26. Utilizarea semafoarelor pentru sincronizarea a dou taskuri: P1_T1, ,P2_T2 proceduri ale taskurilor T1 i T2.

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.
Task T0 Iniializare T0 SEMSYNC=0 NU EVEXT? DA V(SEMSYNC) P2_T1 Fig. 3.27. Utilizarea semafoarelor n pentru sincronizarea cu un eveniment extern: P1_T1, ,P2_T1 proceduri ale taskului T1.
Capitolul 3

Task T1 Iniializare T1 SEMSYNC=0

P1_T1

P(SEMSYNC)

89

Achiziia i prelucrarea datelor

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_T113 .
Task T0 Iniializare T0 SEMSYNC=0 NU t_ex_T1 ? DA V(SEMSYNC) P_T1 P(SEMSYNC) Task T1 Iniializare T1 SEMSYNC=0

Fig. 3.28. Utilizarea semafoarelor n pentru sincronizarea cu timpul: P_T1 procedur a taskului T1.

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.

Capitolul 3

90

Achiziia i prelucrarea datelor

taskul T3 execuia sa este condiionat de valoarea de adevr a funciei F VTE1VTE2.


Task T1 Task T2 Task T3

Iniializare T1 VTE1=FALS NU EVEX1? DA NSCRIE(VTE1) NU

Iniializare T2 VTE2=FALS

Iniializare T3 F=FALS

F VTE1VTE2
EVEX2? DA NU F=ADEV ? DA

NSCRIE(VTE2)

P_T3 P_T1 P_T2


TERGE(VTE1) TERGE(VTE2)

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.

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;

Capitolul 3

ATEAPT (F)

91

Achiziia i prelucrarea datelor

- C1 - CP destinat transferului mesajului de sincronizare MES_SYNC; - C2 - CP destinat transferului mesajului de confirmare MES_CONF.
Task T1 Task T2 Iniializare T1 Iniializare T2
DA Mes n C0 ? NU PREIA Mes din C0 GET C0 NU t=t ? C1 TRIMITE MES_CONF n C2 PUT NU MES_CONF n C2? DA PREIA MES_CONF din C2 C2 GET DA TRIMITE MES_SYNC n C1 GET MES_SYNC n C1? DA PREIA MES_SYNC din C1 NU

P_T2

Fig. 3.30. Utilizarea cutiilor potale pentru sincronizarea cu timpul: C0, C1, C2 - cutii potale; P T2 procedur ale taskului T2.

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 po tal 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 .

Capitolul 3

92

Achiziia i prelucrarea datelor

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.
t t t t t
Ex. Task T2 Ex. Task T2 Ex. Task T2 Ex. Task T2

Fig. 3.31. Sincronizarea cu timpul: execuia taskului T2 se face n interiorul cuantei de timp t.

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

Ex. Task T2

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.

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.

Capitolul 3

93

Achiziia i prelucrarea datelor

Task T2 Iniializare T2
DA

Mes n C0 ? NU

PREIA Mes din C0 GET C0 NU t=t ? DA P_T2

Fig. 3.33. Utilizarea unei cutii potale vide pentru sincronizarea cu timpul: C0 - cutie potal; P_T2 procedur ale taskului T2.

Task T0 Iniializare T0
NU

Task T1 Iniializare T1
NU

Task T2 Iniializare T2

EV_EXT ? DA TRIMITE MES_EV n C0 PUT GET C0

NU MES_SYNC n C1? GET DA PREIA MES_SYNC din C1 TRIMITE MES_CONF n C2

MES_EV n C0? DA PREIA MES_EV din C0 TRIMITE PUT MES_SYNC n C1

C1 PUT

NU

MES_CONF n C2? DA PREIA GET MES_CONF din C2

P_T2
C2

Fig. 3.34. Utilizarea cutiilor potale pentru sincronizarea cu evenimente externe: C0, C1, C2 - cutii potale; P_T2 procedur ale taskului T2.
Capitolul 3

94

Achiziia i prelucrarea datelor

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.
Task T2 Task T0 Iniializare T2 Iniializare T0
NU MES_EV n C0? DA PREIA MES_EV din C0 NU

EV_EXT ? DA TRIMITE MES_EV n C0 C0 PUT

GET

P_T2

Fig. 3.35. Utilizarea unei cutiilor potale pentru sincronizarea cu evenimente externe: C0, - cutie potale; P_T2 procedur ale taskului T2.

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.

Capitolul 3

95

Achiziia i prelucrarea datelor

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.
TASK A TASK B TASK C

Punct de ntlnire rendez - vous

TASK A

TASK B

TASK C

Fig. 3.36. Exemplificarea tehnicii rendez-vous pentru sincronizarea unui sistem de trei taskuri A, B, C.

Capitolul 3

96

Achiziia i prelucrarea datelor

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 con inutul 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 cuno tin 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.

Capitolul 3

97

Achiziia i prelucrarea datelor

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.
Taskul i Conducta 1

Conducta 2

Taskul j Fig. 3.37. Ilustrarea comunicrii prin conducte ntre dou taskuri.

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.
BUF
NPROD
N-1

V(SGO
N-1

TPROD

pdata
2 1 0 2 1 0

cdata

TCONS

Fig. 3.38. Gestionarea comunicrii prin conducta 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.

Capitolul 3

98

Achiziia i prelucrarea datelor

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.
Task TPROD
Iniializare TPROD SEMEX=1, SPLIN=0, SGOL=N NPROD=0

Task TCONS
Iniializare TCONS SEMEX=1, SPLIN=0, SGOL=N NCONS=0 NU

NU t_ex_TPROD ? DA P1_TPROD(pdata)

t_ex_TCONS ? DA

Fig. 2.43.
P(SPLIN)

P(SGOL)

P(SEMEX) BUF(NPROD)=pdata NPROD=NPROD+1 DA NPROD=N ? NPROD=0 NU V(SEMEX) V(SPLIN)

P(SEMEX) cdata =BUF(NCONS) NCONS=NCONS+1 DA NCONS=N ? NCONS=0 NU V(SEMEX) V(SGOL)

P2_TPROD

P2_TCONS(cdata)

Fig. 3.39. Utilizarea semafoarelor n comunicare.


Capitolul 3

99

Achiziia i prelucrarea datelor

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 excepie14 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.

Capitolul 3

100

Achiziia i prelucrarea datelor

Task T1 Iniializare T1

Task T2 Iniializare T2

P1_T1
NU T2 gata recepie ? DA TRIMITE MES_ INF la T2 RECEIVE

P1_T2

NU T1 gata transmisie ? DA PREIA MES_ INF de la T1

SEND

NU MES_CONF n CP1? NU DA

TRIMITE MES_CONF n CP1

Fig.
CP1

PUT

PREIA MES_CONF din CP1

P1_T1

P2_T2

Fig. 3.40. Utilizarea mesajelor de trecere i a cutiilor potale n comunicare.

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;
Capitolul 3

101

Achiziia i prelucrarea datelor

- 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 ST este definit ca un dublet
ST (T , ) ,

(3.2)

n care T TT 2,,Tn este o mulime de taskuri iar < reprezint o relaie de 1, ordine total (preceden) definit pe mulimea T .

Capitolul 3

102

Achiziia i prelucrarea datelor

Pentru dou taskuri Ti ,Tj T relaia Ti T j semnific faptul c ultima instruciune a taskului Ti trebuie s se ncheie nainte de nceperea primei instruciuni a taskului Tj . n mod obinuit unui task Ti T i sunt asociate dou evenimente semnificative i anume: Ti - iniierea taskului; Ti - 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 Ti ,Tj T un arc de la Ti la Tj - respectiv arc(Ti, Tj) - apare n graf numai dac Ti T ji nu exist un task Tk astfel nct T
i

Tk

Tj

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.

Capitolul 3

103

Achiziia i prelucrarea datelor

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 1 i j n, taskul Ti se numete predecesor al taskului Tj, iar Tj constituie succesor al Ti. Dac j i 1, Ti este predecesor direct al lui Tj, iar Tj succesor direct al lui Ti. Dou taskuri T ,T T se numesc independente dac taskul Tk nu este nici succesor i nici k l predecesor al taskului Tl. 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 ST secven de execuie reprezint un ir {a1,a2,,a2n},
(T , ) cu T T1, T
2,,Tn

,o

(3.3)

de evenimente ai asociate iniierii i terminrii taskurilor din ST care satisfac urmtoarele condiii de preceden: - pentru orice task Ti T simbolurile Ti ,Ti apar o singur dat; - dac a - dac a
m m

T i i a T i a
i

n n

T atunci m
i

n;
j

T j cu T

atunci m

n.

O secven parial de execuie este un subir al irului de forma {a1,a2,,ak } , cu k celei din relaia (3.4) dac exist i 2n. (3.4) Un task Tp T este activ dup o secven parial de execuie de tipul k , cu
a
i

T p , dar aj T ( )j
p

k.

Oricrei secvene de execuie secven de stri { 1,s2,,s2n} , unde si S cu i

{a1,a2,,a2n}

i corespunde o (3.5)

1,2,,n i S - spaiul strilor sistemului pe care evolueaz

taskurile. Starea s0 este starea iniial a sistemului de calcul iar tranziia S S este generat de evenimentul ai.
i 1 i

Capitolul 3

104

Achiziia i prelucrarea datelor

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 ST

(T , ) cu T
'
'

T1,T2,,Tn nu este nchis,

atunci se construiete un sistem ST (T , ) cu T T0,TT 1, 2,,T ,Tn n 1 . n sistemul de taskuri ST taskul T0 este succesorul tuturor taskurilor sistemului ST, iar taskul Tn+1 predecesorul acestora. Dac {a1,a2,,a2n } este o secven de execuie pentru sistemul

atunci o secven pentru sistemul ST va fi de forma

{T0T0aTn 1Tn 1}

Din felul n care a fost construit sistemul ST rezult c acesta este nchis. Dac taskurile T0 i Tn+1 nu au alte funcii n afara celor precizate, atunci sistemele S i S sunt echivalente din punctul de vedere al funciilor pe care T T acestea le execut. n acest fel s-a realizat nchiderea sistemului ini ial de taskuri S T n figura 3.41 se prezint un exemplu de graf de preceden, pentru care vor fi evideniate unele dintre noiunile prezentate mai sus.
T1 T3 T2 T4 T5 T6 Fig. 3.41. Graf de preceden .

T7

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 T1 T1 T1 T1
Capitolul 3

Nod sosire T2 T4 T7 T7 T1- T2

Cale

Lungime 2 3 3 4 105

T1- T3 * T3- T4 T1- T2 * T2- T7 T1- T3 * T3- T4 * T4- T7

Achiziia i prelucrarea datelor

Tot din graf rezult taskurile succesoare i predecesoare. De exemplu taskul T3 este predecesor direct al lui T4, dar acesta este numai predecesor al lui T7. n ceea ce privete taskurile iniial i terminal, taskul T1 este task iniial al grafului, iar T7 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 Nivel T1 4 T2 2 T3 3 T4 2 T5 2 T6 2 T7 1

innd cont de defini ia secvenei de execuie din relaia (3.3), n continuare se prezint trei asemenea secvene posibile notate 1, 2, 3 dup cum urmeaz:
T 1 T T 2 T T 3 T T 4 T T 5T T 6T T 7T
1 1 2 3 4 5 6 7

;
T7 ; T7T7

2 3

T1T1T2T3T2T3T4T4 T1T1T3T3T4

T5T6T5T6T7

T4T2 T5T6T5T6T2

Coordonarea unui sistem de taskuri presupune definirea i soluionarea urmtoarelor probleme generale : A B C D determinarea taskurilor; blocarea taskurilor; excluderea mutual a taskurilor; sincronizarea taskurilor.

A - determinarea taskurilor Un sistem de taskuri este determinat , dac prin evoluia sa conduce la un rezultat unic, indiferent de ordinea de execu ie 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 M M1,M2,,Mn 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.

Capitolul 3

106

Achiziia i prelucrarea datelor

reprezint numrul de tipuri de resurse ale sistemului, iar valoarea (coninutul) locaiei Mi reprezint numrul de resurse disponibile din clasa i. Considerm n continuare mulimea de taskuri T T1,T2,,Tn , o secven de execuie a acestora {a1,a2,,a2n} i o secven de stri { 1,s2,,s2n} Pentru sistemul de taskuri Mi(k) reprezint valoarea celulei de memorie Mi dup execuia secvenei pariale {a1,a2,,ak } n aceste condiii starea sk poate fi definit determinrii taskurilor) astfel sk {M1 k ,M2 k ,,Mm k } (n contextul problemei (3.6)

Fiecrui task Ti T i corespund dou submulimi ale mulimii M i anume: DTi - domeniul de definiie ; RTi - domeniul de valori, astfel nct
i :DTi

RTi.

(3.7)

Dou taskuri Ti ,Tj T se numesc neinterferente dac Ti este succesor sau predecesor al lui Tj sau dac RTi RTj DTi RTj DTj RTi (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 M M1,M2,,Mn care se gsesc n situaia ilustrat n figura 3.42. Dup cum se observ taskul T1 deine resursa R1 i ateapt eliberarea resursei Rn , taskul T2 deine resursa R2 i ateapt eliberarea resursei R1 .a.m.d. iar ultimul task Tn deine resursa Rn i ateapt eliberarea resursei Rn-1 .
Capitolul 3

107

Achiziia i prelucrarea datelor

Fig.

T1

R1 T2 R2 T3 R3

Tn Rn-1

Tn-1 Rn-2 Tn-2 Rn-1 R4 T4

Fig. 3.42. Taskuri blocate ntr-o list circular.

Pentru a formaliza blocarea unui sistem de taskuri se consider m tipuri de resurse R1, R2, . Rm, , cantitile, disponibile din fiecare resurs fiind c1, c2, . cm, iar capacitii sistemului i se asociaz vectorul C [c1,c2,,cm] (3.9) Fie mulimea T T1,T2,,Tn 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 qi al cererilor suplimentare de resurse pentru taskul Ti , qi ei [qi1,qi2,,qim] ; [ei1,ei2,,eim] , (3.10) i vectorul ei al resurselor eliberate la terminarea taskului Ti (3.11) n care qij , eij reprezent numerele de resurse Rj solicitate suplimentar / eliberate de ctre taskul Ti . Pentru sistemul de taskuri se consider secvena de execuie T1T1T2T2TnTn creia i corespunde secvena de stri { 1,s2,,s2n} n relaia (3.13) o stare sk este explicitat prin vectorii A(k) [A1(k),A2(k),,Am(k)] ; (3.14) (3.13) {
1, 2

,,

2n

},

(3.12)

Capitolul 3

108

Achiziia i prelucrarea datelor

Q(k)

[Q1(k),Q2(k),,Qm(k)] ,

(3.15)

unde: A(k) reprezint numrul de resurse alocate dup evenimentul ak ; Q(k) - numrul de resurse eliberate dup evenimentul ak ; Aj(k)- numrul de resurse Rj alocate dup evenimentul ak ; Qj(k)numrul de resurse Rj eliberate dup evenimentul ak. Vectorii A(k) i Q(k) sunt definii recursiv, astfel: Q(0) q 1 .. Q(k) 0 sau Q(k) q A(0) 0 .. A(k) A(k 1) Q(k 1) sau A(k) A(k 1) e
i
i 1

dac ak T i (3.16) dac a


k

dac ak T i (3.17) dac a


k

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 T1 ); b) dac evenimentul ak este iniierea unui task, atunci nu sunt cerute resurse suplimentare; c) dac ak 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 ak reprezint iniierea unui task, se adaug la numrul de resurse alocate numrul de resurse cerute curent; f) dac ak este terminarea unui task, se scade din A(k-1) numrul resurselor eliberate ei; g) terminarea unui task Ti este asociat cu eliberarea de resurse de ctre acesta i cu solicitarea de resurse de ctre Ti + 1 ;
Capitolul 3

109

Achiziia i prelucrarea datelor h)

Se presupune c, la sfritul secvenei de execuie, se elibereaz toate resursele, adic :


n

A(2n)
k 1

[q( k) e(k)]

(3.18)

n continuare vom considera un sistem de taskuri T format din mai multe subsisteme , respectiv T1 ,T2,,T N cu Tl T , l 1,2,,N,
(l) (l) (l) cu l 1,2,,N . (3.19) Tl T ,T21 ,,T n l Subsistemele Tl se execut n paralel, situaie n care secvenele corespunztoare fiecrui subsistem se pot ntreptrunde.

unde

Pentru un asemenea subsistem notm cu


-

qi ei

(l)

- vectorul cererilor suplimentare de resurse; - vectorul resurselor eliberate; -

(l)
l)

numrul de resurse alocate dup evenimentul ak;

Q l)

- numrul de resurse eliberate dup evenimentul ak.

O secven de execuie a sistemului de taskuri T va fi de forma {a1,a2,,ak ,,a2n } unde, n n1 n2 n N , un eveniment ak putnd fi asociat oricrui subsistem Tl respectiv a
k

(3.20) (3.21)

Ti

(l)

sau

Starea sistemului de taskuri T va fi definit prin perechea de matrice [ A(k),Q(k) ] , unde A(1)(k) A (k) A(k) Q(k)
(2 )

(l) i

cu

i 1,2,,n

Q(1)(k) Q(2)(k) cu l 1,2,,N (3.22)

A(l)(k) Q(l)(k) Referitor la elementele matricelor A(k) i Q(k) sunt utile urmtoarele precizri: a) dac Q(l)(k) 0 subsistemul T l ateapt alocarea de resurse;

Capitolul 3

110

Achiziia i prelucrarea datelor


(l)

b) dac A (k) 0 i Q (k) 0 subsistemul T l este n execuie sau ndeplinete condiiile pentru a continua execuia. Un subsistem T l pentru care A(l)(k) Q(l)(k) 0, (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)

d(k) C
l 1

A (k) ,

(l)

(3.24)

respectiv din capacitatea sistemului C se scade totalitatea resurselor alocate celor N subsisteme la momentul k. Dac un eveniment ak este o iniiere, respectiv ak este permis dac resursele cerute Q disponibile d(k), cu alte cuvinte
)

Ti , atunci aceasta

(l)

(l)

(k) nu depesc cantitatea de resurse

Q( (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 {a1,a2,,ak } i o secven corespunztoare de stri { 1,s2,,sk } Se spune c exist o interblocare n stare sk dac exist o mulime discret nevid I {1,2,,N } astfel nct pentru ( )l I , cererile s depeasc disponibilitile, respectiv s fie satisfcut inegalitatea 16
Q (k) d( k)
(l) i I

A (k).

(i)

(3.26)

Prin definiie rezult c, pentru ( )l I Q(l)(k) 0, adic evenimentul urmtor din subsistemul Tl este o iniiere a unui task Ti (i {1,2,,nl}), iar aceast iniiere nu este permis pentru nici un indice l I (ntruct cererea de resurse este mai mare dect disponibilitatea). Mai mult, din definiie rezult c
16

Se spune de asemenea c fiecare sistem Tl cu l

I este interblocat.
111

Capitolul 3

Achiziia i prelucrarea datelor

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 sk, 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 interac iona, 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.
Task T1 repet indefinit { {observ eveniment} CONTORCONTOR+1 } Fig. 2.43. Soluia lui Knuth pentru realizarea excluderii mutuale.

Taskul T1 observ un eveniment exterior (care se produce complet asincron), incrementnd variabila CONTOR (iniializat cu zero) dup apariia
Capitolul 3

112

Achiziia i prelucrarea datelor

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 T T1,T2,,Tn care pot solicita fiecare o resurs comun R , metoda lui Knuth presupune adugarea la fiecare task Ti a dou taskuri Si i Ui situate din punct de vedere al precedenei naintea i respectiv dup Ti potrivit reprezentrii din figura 3.43.

Si

Ti

Ui

Fig. 3.43. Soluia lui Knuth pentru realizarea excluderii mutuale.

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 Si i Ui se consider urmtoarea organizare a acestora.
Task Si Q(p) i; p i; while (Q(0) i) { ; }
Capitolul 3

Task Ui if(p i) Q(0) Q(i); else { p0; Q(0)0; }

113

Achiziia i prelucrarea datelor

Taskul Si introduce Ti 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 Ti ajunge n capul cozii (respectiv pn cnd Q(0)= i). Dup expirarea lui Si ncepe execuia propriu-zis a taskului Ti. Taskul Ui elimin taskul Ti din coad i pune urmtorul task n capul cozii (Q(0) Q(i)). Dac Ti 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 Si i Sj sau ntre taskuri Si i Uj, trebuie ca activitile din Si i Uj 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) { Q(p) i; p i; } remove(i) { if(p i) Q(0) Q(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.

Capitolul 3

114

Achiziia i prelucrarea datelor

CAPITOLUL

Resurse pentru programarea n timp real a datelor achiziionate

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 cerin e 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

Capitolul 4

115

Achiziia i prelucrarea datelor

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.

Fig. 4.1. Graf sintactic pentru noiunea cifr.

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. + cifr Fig. 4.2. Graf sintactic pentru noiunea numr algebric.

Capitolul 4

116

Achiziia i prelucrarea datelor

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.

liter liter cifr


Fig. 4.3. Graf sintactic pentru noiunea nume.

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:
Capitolul 4

117

Achiziia i prelucrarea datelor

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.

Capitolul 4

118

Achiziia i prelucrarea datelor

4.1.3. LPTR: -

Caracteristicile LPTR

Cerinelor de mai sus li se rspunde cu urmtoarele caracteristici ale 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
Capitolul 4

119

Achiziia i prelucrarea datelor

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 procedur. (SC) pot fi de tip instruciune, bloc sau

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.

Capitolul 4

120

Achiziia i prelucrarea datelor

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 st ri 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 posibilit i pentru realizarea sincroniz rii 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:
Capitolul 4

121

Achiziia i prelucrarea datelor

- 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 aplica ii 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).

Capitolul 4

122

Achiziia i prelucrarea datelor

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 trat rii 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 real1 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 dedicate2. 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 643; 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 2 3

Se are n vedere dezvoltarea de faciliti destinate implementrii execuiei pseudoparalele a taskurilor.


Embedded systems P1< P2<.< P64

Capitolul 4

123

Achiziia i prelucrarea datelor

4.2.2. Taskuri sub RTK n context RTK un task reprezint o funcie C/C++ sau procedur Pascal fr parametri4. 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 reentrana5. 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.

Fig. 4.1. Structura unei aplicaii RTK.

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 stri6: Current; Ready; Suspended; Blocked; Delaiyng; Timed, ntre care pot avea loc tranziiile potrivit grafului ilustrat n figura 4.2.
n cele ce urmeaz se vor face referiri numai la varianta de RTK bazat pe utilizarea limbajului C. 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.
4 5

Capitolul 4

124

Achiziia i prelucrarea datelor

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.

Fig. 4.2. Graful de tranziie a taskurilor n RTK.

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

Pentru stabilirea tranei de timp se apeleaz funcia RTKTimeSlice din repertoriul de instruc iuni al RTKernel.
7

Capitolul 4

125

Achiziia i prelucrarea datelor

ntruct a fost stopat prin funcia RTKSuspend. Taskul poate redeveni rulabil dac asupra sa se execut funcia RTKResume8 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 execu ia unei funcii RTKDelay9. 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 cozi10 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 consolei11 , respectiv #include "rtkeybrd.h"
Cele dou funcii din repertoriul RTKernel vor fi prezentate n sec iunea funciilor RTK de administrare a taskurilor. 9 Funcia RTKDelay din repertoriul RTKernel va fi prezentate n sec iunea 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
8

Capitolul 4

126

Achiziia i prelucrarea datelor

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); unde MainPrio este o variabil de tip unsigned prioritatea taskului main. (4.1) care desemneaz

Pentru a referi taskurile acestora li se pot asocia variabile de mnuire handle de tip TaskHandle12. n funcia (4.1) variabila de tip TaskHandle este pentru taskul main13. La execuia funciei (4.1) sunt efectuate, printre altele, urmtoarele operaii importante: 1) 2) iniializarea structurilor interne de date; 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); convertirea funciei main n taskul main i alocarea prioritii specificate; crearea taskului Idle 14 i alocarea prioritii zero; iniializarea ceasului intern cu zero. Funcia RTKeybrdInit iniializeaz driverul consolei i are urmtoarea form general void RTKeybrdInit(void);
TaskHandle este un tip de variabil predefinit n RTKernel 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.
12 13

3) 4) 5)

(4.2)

Capitolul 4

127

Achiziia i prelucrarea datelor

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 #define TaskHandle handle_main= RTKeybrdInit(); ----------------"rtkernel.h" prio_main 3 handle_main; RTKernelInit(prio_main); #include "rtkeybrd.h" ----------------------------------

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), Unsigned Priority,unsigned Stack, char *Name); (4.3)

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);

Capitolul 4

128

Achiziia i prelucrarea datelor

- parametrul Name task.

- pointer de maximum 15 caractere la numele noului

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 TaskState15 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.

Capitolul 4

129

Achiziia i prelucrarea datelor

Stare Ready Current Suspended Delaying BlockedWait TimedWait BlockedPut BlockedGet TimedPut

TimedGet

BlockedSend BlockedReceive TimedSend TimedReceive Deadlocked Illegal Terminated

Explicaie Task pregtit (aflat n starea Ready) Task n execuie (aflat n starea Current ) Task suspendat prin execuia funciei RTKSuspend Task n ateptare dup apelarea funciei RTKdelay Task blocat la un semafor dup execuia unei funcii RTKWait Task n ateptare temporizat la un semafor dup execuia unei funcii RTKWaitTimed Task blocat la depunerea unui mesaj ntr-o cutie potal plin dup execuia unei funcii RTKPut Task blocat la extragerea unui mesaj dintr-o cutie potal goal dup execuia unei funcii RTKGet Task n ateptare temporizat pentru depunerea unui mesaj ntr-o cutie potal plin dup execuia unei funcii RTKPutTimed Task n ateptare temporizat pentru extragerea unui mesaj dintr-o cutie potal goal dup execuia unei funcii RTKGetTimed Task blocat n trimiterea unui mesaj pe care destinatarul nu l poate recepiona, dup execuia unei funcii RTKSend Task blocat n ateptarea unui mesaj pe care expeditorul nc nu l-a trimis, dup execuia unei funcii RTKReceive Task n ateptare temporizat pentru transmiterea unui mesaj, dup execuia unei funcii RTKSendTimed Task n ateptare temporizat pentru recepia unui mesaj, dup execuia unei funcii RTKReceiveTimed Task blocat n transmiterea unui mesaj ctre un task dezactivat (interblocare) Argumentul Handle se refer la un task inexistent 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)

Capitolul 4

130

Achiziia i prelucrarea datelor

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 216 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.
Capitolul 4

131

Achiziia i prelucrarea datelor

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); 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;

(4.11)

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); n care numrul de cuante Ticks se obine cu relaia 18 , (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) (4.12)

16

La iniializarea RTK n cadrul funciei RTKernelInit se execut funcia RTKSetTime(0);

Capitolul 4

132

Achiziia i prelucrarea datelor

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. x
1 1 2 80

25 Fig. 4.3. Sectorizarea ecranului n regim alfanumeric

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>

Capitolul 4

133

Achiziia i prelucrarea datelor

#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

Capitolul 4

134

Achiziia i prelucrarea datelor

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.

Capitolul 4

135

Achiziia i prelucrarea datelor

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); n care S indic semaforul referit. Funcia RTKSignal memoreaz un eveniment ntr-un semafor i are urmtoarea form general void RTKSignal(Semaphore S); 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); n care S indic semaforul referit. Potrivit celor prezentate n capitolul 2 prin func ia 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); n care S indic semaforul referit. Potrivit celor prezentate n capitolul 2 prin func ia 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. (4.20) (4.19) (4.18) (4.17)

Capitolul 4

136

Achiziia i prelucrarea datelor

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 func ia 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 g sete 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.

Capitolul 4

137

Achiziia i prelucrarea datelor

// // 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

Capitolul 4

138

Achiziia i prelucrarea datelor

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 FIFO17. 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

FIFO - First Input First Output - strategie potrivit creia extragerea din coad se face n ordinea introducerii.
17

Capitolul 4

139

Achiziia i prelucrarea datelor

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); 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); 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. (4.23) (4.22)

Capitolul 4

140

Achiziia i prelucrarea datelor

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.

Capitolul 4

141

Achiziia i prelucrarea datelor

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 recep ionat, acesta se tiprete. Dup aceast operaie TaskB trece din nou n starea BlokedPut.

Capitolul 4

142

Achiziia i prelucrarea datelor

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
Capitolul 4

143

Achiziia i prelucrarea datelor

} // // //task main 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

cprintf("Sosit mesaj %c ",i); //sfarsit for infinit //sfarsit TaskB

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 po tale, 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 po tale 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.

Capitolul 4

144

Achiziia i prelucrarea datelor

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 necondi ionate, 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 RTKReceiveTimed18. 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 RTKSendTimed19. 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 19

Respectiv se gse te n una din strile BlockedReceive sau TimedReceive Respectiv se gse te n una din strile BlockedSend sau TimedSend

Capitolul 4

145

Achiziia i prelucrarea datelor

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 unsigned DataLen ); *Data, (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.

Capitolul 4

146

Achiziia i prelucrarea datelor

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 general, 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.

Capitolul 4

147

Achiziia i prelucrarea datelor

// // 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 //apelare functie afordata 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 // // //task main 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
Capitolul 4

148

Achiziia i prelucrarea datelor

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 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

TaskB

Capitolul 4

149

Ingineria aplicaiilor de timp real

CAPITOLUL

Aplicaii bazate pe achiziia datelor

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
150

Ingineria aplicaiilor de timp real

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.
x[n]

FILTRU NUMERIC

y[n]

Fig. 5.1. Schema bloc a unui filtru numeric: x[n]- secven numeric de intrare, y[n] - secven numeric de ieire.

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

5.1

unde h[k] reprezint coeficieni ai filtrului.

151

Ingineria aplicaiilor de timp real

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 valorile rezultate se nsumeaz ntr-un bloc sumator i n final rezult mrimea filtrat y[n]. x[n-2] x[n-1] x[n-(N-2)] x[n-(N-1)] x[n] Te Te Te h[0] h[1] h[2] h[N-2] h[N-1]

+
y[n]
Fig. 5.2. Schem de calcul al unui filtru nerecursiv.

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

5.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).

152

Ingineria aplicaiilor de timp real

x[n] Te h[0] h[1]

x[n-1] Te h[2]

x[n-(N-2)] Te h[N-2] h[N-1]

x[n-(N-1)]

+
-b[M] -b[M-1] -b[1]

y[n]

y[n-M]

Te y[n-(M-1)] y[n-2]

Te y[n-1]

Te

Fig. 5.3. Schem de calcul al unui filtru recursiv.

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 1

5.3

unde N reprezint ultimele N valori ale intrrii. Transpunnd relaia (5.3) pentru urmtorul pas rezult 1 1

5.4

153

Ingineria aplicaiilor de timp real

Prin scderea celor dou relaii se obine 1 1


5.5

care dup cteva transformri elementare devine x 1 1 1 x 1 N . 5.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.
x[n+1-(N)]

x[n+1-(N)]

x[n+1-(N-1)]

x[n+1-(2)]

x[n+1-(1)]

x[n+1]

Fig. 5.4. Organizarea cozii pentru relaia (5.6).

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;
154

Ingineria aplicaiilor de timp real

- y[n] - x[n+1] - x[n+1-N]

= YFA = XAC = XAI

- valoare filtrat anterioar; - valoare achiziionat curent; - valoare achiziionat ntrziat.


M,w_in w_out

AVANS_C

w_out=z(M)

j=M

z(j)=z(j-1)

j=j-1 Nu j=1 ? z(1)=w_in Da

EXIT Fig. 5.5. Schema logic aferent subalgoritmului de avans n coad.

Cu aceste notaii relaia (5.6) devine XAC XAI /N , 5.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.

155

Ingineria aplicaiilor de timp real

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.
Initializare task FILTER_MED SEMEX=1, determin valori iniiale pentru N, YFC, YFA, XAC, XAI

Nu t=Te ? Da P(SEMEX)

Preia din BDP XAC V(SEMEX) YFA=YFC N, XAC AVANS_C XAI YFC=YFA+(XAC-XAI)/N

P(SEMEX)

Transfera in BDP YFC

V(SEMEX)

Fig. 5.6. Schema logic asociat taskului FILTER_MED. 156

Ingineria aplicaiilor de timp real

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.

ANALOGIC Semnale analogice de la traductoare ANALOGIC Semnale analogice ctre elemente de execu ie

DIGITAL uCAN

DIGITAL uING

PROCES

DIGITAL uCNA

DIGITAL uING

Calcul i generare comenzi

F1

F2

Fig. 5.7. Frontiere asociate circuitului informaional ntr-o aplicaie de conducere.

Acestea se consider c genereaz, respectiv sunt acionate de semnale analogice. ntruct procesarea impune intr ri 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
157

Ingineria aplicaiilor de timp real

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 CNA1 (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.
F2 F1
uP1 P* NP uP iP1
P2_1 P2_k P2_n

CIU1
V uPk mA iPk mA

TP1 TPk
P2 P1 y1

BC1 REG uING PERT


y1*

CAN
uCAN

CIUk
V

REG AB
N1 u1

BC2
uING y2i

CNA
uCNA V

CUI

i1

BFA

EE
u

SP1

SP2

y2 uING

mA r1

TA

Fig. 5.8. Circuitul informaional ntr-un SRA ierarhizat.

Structura din figura 5.8 asigur invariana mrimii y22 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

158

Ingineria aplicaiilor de timp real

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.
x i u N x* x x*

T
uING mA

CIU
V

CAN
uCAN

BC1
uING uING

SNMD
uING

Fig. 5.9. Structura unui sistem numeric de msurat la distan.

n figura 5.9 mrimile sunt reprezentate prin variaii . Pentru o mrime z care ia valori ntr-un domeniu [zmin, zmax] se definesc dou tipuri de variaii i anume : - variaia curent - variaia maxim

5.7 5.8

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

Fig. 5.10. Caracteristica static impus pentru SNMD.

xmax

159

Ingineria aplicaiilor de timp real

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.
u Nmax umax N

imax

umax

Fig. 5.11. Caracteristici statice ale convertoarelor: a - CIU; b - CAN.

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.
i imax

Fig. 4.12. Caracteristica static a traductorului liniar din structura SNMD.

xmax

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

Ingineria aplicaiilor de timp real

SNMD: T:

5.9 (5.10

, 5.11 , 5.12 .

CIU: CAN:

Rezolvnd sistemul format din ecuaiile (5.9)(5.11) rezult pentru BC1 ecuaia , sau impunnd pentru mrimea x* reprezentat n memorie acelai domeniu de variaie ca pentru mrimea fizic . 5.14

5.13

Examinnd relaia (5.14) se observ c elementul BC1 este un element liniar, a crui caracteristic static este reprezentat n figura 5.13.
x* xmax

Fig. 5.13. Caracteristica static rezultat pentru modulul de calcul BC1, n cazul traductorului liniar..
Nmax N

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

161

Ingineria aplicaiilor de timp real

5.15

Dup efectuarea calculelor n relaia (5.15) se obine,


5.16

5.17

sau

unde

5.18

(5.19)

O situaie frecvent ntlnit este aceea n care limita inferioar a domeniului mrimii x este nul, respectiv xmin = 0. n acest caz ecuaia (5.16) devine 5.20 sau unde

5.21

5.22

(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.

162

Ingineria aplicaiilor de timp real

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 p tratic. 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).
i imax

Fig. 5.14. Caracteristica static a traductorului neliniar din structura SNMD.


x

xmax

SNMD: T: CIU: CAN:

5.24 (5.25 5.26

, 5.27 .

Rezolvnd sistemul format din ecuaiile (5.24)(5.27) , n raport cu mrimea x* , rezult pentru BC1 ecuaia

5.28

sau impunnd pentru mrimea x* reprezentat n memorie acelai domeniu de variaie ca pentru mrimea fizic 5.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
163

Ingineria aplicaiilor de timp real

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


x* xmax

Fig. 5.15. Caracteristica static rezultat pentru modulul de calcul BC1, n cazul traductorului neliniar..
Nmax N

Ca i n cazul precedent. sunt situa ii 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

5.30

Dup efectuarea calculelor n relaia (5.30), n situaia frecvent ntlnit n practic xmin = 0 se obine, 5.31

sau

5.32

respectiv

5.33

unde

5.34

164

Ingineria aplicaiilor de timp real

(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 cu
,

5.36

0.

n ceea ce privete traductorul , caracteristica static a acestuia este descris de funcia continu i inversabil cu 0 cu

0,

5.37

Se consider c funcia f este inversabil, iar funcia sa invers 5.38

0,

este de asemenea continu. nlocuind relaia (5.38) n (5.36) rezult , 5.39 unde prin nlocuirea lui i cu valoarea din relaia (5.26) se ajunge la

165

Ingineria aplicaiilor de timp real

5.40

Substituind n relaia (5.40) valoarea u din ecuaia CAN (5.27) se ajunge la

5.41 5.42

, respectiv .

n contextul figurii 4.9 se noteaz ,

5.43

notaie care semnific amplificarea gruprii de convertoare CIU - CAN. nlocuind notaia (5.43), n relaia (5.42), se obine , 5.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 K1. 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 urmtoarele elemente: LT CIU 200 800 static liniar; , 4 20 5.16 se cunosc , caracteristic

R = 250 , caracteristic static liniar;

CAN - Nmax1 = 1023 uCAN sau Nmax2 = 4095 uCAN, caracteristic static liniar;
166

Ingineria aplicaiilor de timp real

S se determine: a b c
Qi H

- domeniul de valori al tensiunii la intrarea CAN; - rezoluiile n1 i n2 ale CAN pentru cele dou valori Nmax1 i Nmax2 ; - valorile numerelor de cuante N1 i N2 n cazul unui nivel din memorie H* =650mm .
i N H* u

LT

CAN

BC1

Qe Fig. 5.16. Structura SNMD nivel pentru exemplul 4.1.

Rezolvare a - conform legii lui Ohm, pentru rezistorul R se poate scrie 250 4 10 1 ; 250 20 10 5 ; b - pentru un CAN se cunoate c log

2 - 1 de unde rezult

1, prin a crei aplicare se obine


1 log 1024 ;

10

log

log

log 4096

12

c - se determin pentru nceput valorile Nmin1 i Nmin2 apelnd la caracteristica static a CAN ilustrat n figura 5.17;
N Nmax Fig. 4.17. Caracteristica static a CAN. Nmin Umin Umax U

167

Ingineria aplicaiilor de timp real

Caracteristica static liniar din figura 5.17 este descris de ecuaia


de unde rezult

respectiv

1023 1 5 4095 1 5

204,6

819

Cu aceste valori se determin coeficienii din relaiile (5.18) i (5.19) dup cum urmeaz: 800 204,6 200 1023

1023 800 819

204,6 200 4095 819

50

4095

50

800 1023 800 4095

200 204,6 200 819

0,733138

0,183150

Pentru primul caz rezult urmtoarea ecuaie pentru modulul BC1

respectiv sau
168

0,733138

Ingineria aplicaiilor de timp real

650 0,733138 rezult 700 0,733138 954,8 Din ultima relaie

Pentru al doilea caz rezult urmtoarea ecuaie pentru modulul BC1

0,183150 0,183150

respectiv sau 650

Din relaia de mai sus rezult 700 0,183150 3822

Exemplul 5.2. Fie SNMD debit ilustrat n figura 5.18, pentru care se cunosc: SNMD - caracteristic static impus liniar FT CIU 0 60 / , neliniar (ptratic); 4 20 , caracteristic static

R = 250 , caracteristic static liniar;

CAN - Nmax = 2047 uCAN, caracteristic static liniar; S se determine: a - domeniul de valori al tensiunii la intrarea CAN, rezoluia n i numrul Nmin 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.

169

Ingineria aplicaiilor de timp real

N u i R

Q*

CAN

BC1

FT
Q

Fig. 5.18. Structura SNMD debit pentru exemplul 4.2.

Rezolvare a - conform legii lui Ohm, pentru rezistorul R se poate scrie 250 4 10 1 ; de unde rezult Umax

5 ;

log

log

log 2048

11

Conform procedeului indicate n exemplul precedent rezult Nmin dup cum urmeaz:

2047

409,4

b - pentru SNMD funcia g , coeficientul K1 i funcia f au formele de mai jos:

5.45 , 5.46

,
,

5.47

170

Ingineria aplicaiilor de timp real

Din relaia (5.47) rezult

5.48

respectiv,

. 5.49

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

5.50

sau

5.51

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

. 5.52

relaie identic cu relaia (5.29). Pentru exprimarea n valori absolute se calculeaz mai nti Nmin apoi coeficienii c0 i c1 cu relaiile (5.34) i (5.35). dup cum urmeaz

171

Ingineria aplicaiilor de timp real

409,4 360 2047 409,4 , 900 /

3600

2047

409,4 ,

2,197

Introducnd coeficienii c0 i c1 n relaia (5.33) se obine


respectiv 2,197

ultima relaie reprezentnd expresia caracteristicii statice a modulului BC1. Valoarea solicitat pentru debitul calculat Q* este

2,197 1500

48,94

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.
y
*

BC2
uING

N
uCNA

CNA

u
V

CUI

i
mA

SRA

y
uING

SNTD

y
uING

uING

Fig. 5.19. Structura unui sistem numeric de msurat la distan.

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.

172

Ingineria aplicaiilor de timp real y ymax

Fig. 5.20. Caracteristica static impus pentru SNTD.

y*max

y*

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

umax

umax

Nmax

Fig. 4.21. Caracteristici statice ale convertoarelor: a - CUI; b - CNA.

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.
y ymax

Fig. 5.22. Caracteristica static a SRA cu CM liniar din structura SNTD.


i imax

173

Ingineria aplicaiilor de timp real

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

SNTD:

5.53

SRA: CUI: CNA:


(5.54 , 5.55 , 5.56 .

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

5.57

sau impunnd pentru mrimea y reprezentat n memorie acelai domeniu de variaie ca pentru mrimea fizic rezult 5.58 . Examinnd relaia (5.58) se observ c elementul BC2 este un element liniar, a crui caracteristic static este reprezentat n figura 5.23.
N Nmax

Fig. 5.23. Caracteristica static rezultat pentru modulul de calcul BC2, n cazul SRA cu CM liniar.
ymax y*

Ca i la conversia n uniti inginereti sunt situaii care necesit utilizarea ecuaiei modulului BC2 exprimat n valori absolute. Pentru a obine

174

Ingineria aplicaiilor de timp real

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

5.59

Dup efectuarea calculelor n relaia (5.59) se obine, sau unde

5.60

5.61

5.62 (5.63)

O situaie frecvent ntlnit este aceea n care limita inferioar a domeniului mrimii y este nul, respectiv ymin = 0. n acest caz ecuaia (5.60) devine

5.65

sau unde

5.66 5.67

(5.68)

Rezultatele de mai sus confirm faptul c indiferent de forma de exprimare (prin variaii sau valori absolute) BC2 prezint o caracteristic static

liniar.
175

Ingineria aplicaiilor de timp real

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.
y ymax

Fig. 5.24. Caracteristica static a SRA cu CM neliniar din structura SNTD.


i imax

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

, , ,

5.69

SRA: CUI:

(5.70 5.71 5.72

CNA:

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

5.73

sau impunnd pentru mrimea y* reprezentat n memorie acelai domeniu de variaie ca pentru mrimea fizic rezult . 5.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.

176

Ingineria aplicaiilor de timp real N Nmax

Fig. 5.25. Caracteristica static rezultat pentru modulul de calcul BC2, n cazul SRA cu CM neliniar.
ymax y*

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

5.75

Dup efectuarea calculelor n relaia (5.75) se obine, unde


5.76 5.77

(5.78)

(5.79)

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

5.80

5.81

177

Ingineria aplicaiilor de timp real

(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 cu

5.83

0 0.

n ceea ce privete SRA , caracteristica static de msur a acestuia este descris de funcia continu i inversabil cu 0 cu

0,

5.84

Se consider c funcia h este inversabil, iar funcia sa invers 5.85

0,

este de asemenea continu. Din ecuaiile (5.71) i (5.72) rezult CNA+CUI: n contextul figurii 4.33 se noteaz
178

5.86

Ingineria aplicaiilor de timp real

5.87 ,

notaie care semnific amplificarea gruprii de convertoare CNA - CUI, astfel nct relaia (5.86) devine .

5.88

nlocuind relaia (5.85) n (5.38) rezult

5.89

n care substituind pe y cu valoarea din (5.83) se ajunge la . 5.90

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 K2. - 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 CUI 200 0,2 800 , caracteristic static liniar; 1 caracteristic static liniar;

CNA - Nmax = 1023 uCAN, caracteristic static liniar; S se determine: a - rezoluia n a CNA i numrul minim Nmin de uCNA;

179

Ingineria aplicaiilor de timp real

b c

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

Qi

i LT LC

CUI

CNA

BC2

Qe

Fig. 5.26. Structura SNTD pentru exemplul 4.3.

Rezolvare
2 - 1 a - pentru un CNA (ca i n cazul CAN) se cunoate c de unde rezult log 1, prin a crei aplicare se obine

log

log 1024

10

pentru determinarea valorii Nmin se apeleaz la caracteristica static a CNA ilustrat n figura 5.27.
U Umax Fig. 5.27. Caracteristica static a CNA. Umin Nmin Nmax N

Caracteristica static liniar din figura 5.27 este descris de ecuaia


de unde rezult

180

Ingineria aplicaiilor de timp real

respectiv

1023 0,2 1

204,6

b - pentru SNMD funcia q , coeficientul K2 i funcia h au formele de mai jos:

5.91

5.92 , , 5.93

Din relaia (5.47) rezult 5.94


respectiv,

. 5.95

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

sau

. 5.96

. 5.97

181

Ingineria aplicaiilor de timp real

Considernd domeniile pentru mrimile H* i H egale relaia (5.97) devine


5.98

relaie identic cu relaia (5.58). c - se calculeaz coeficienii c0 i c1 din relaiile (5.62) i (5.63) dup cum urmeaz:

800 204,6 800

200 1023 200


/ .

68,2

204,6 200

1023
800

1,364

Rezult urmtoarea ecuaie pentru modulul BC2

1,364

respectiv sau 600 1,364 . Din ultima relaie rezult 662,8 1,364 485,92

Exemplul 5.4. Fie SNTD ilustrat n figura 5.28, pentru care se cunosc: SNTD - caracteristic static impus liniar SRA CUI 0 0,4 60 / , caracteristic static neliniar (radical); 2 caracteristic static liniar ;

182

Ingineria aplicaiilor de timp real

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

CUI

CNA

BC2

Q*

Fig. 5.28. Structura SNMD debit pentru exemplul 5.4.

Rezolvare a

4096

4095

pentru determinarea valorii Nmin se apeleaz la caracteristica static a CNA ilustrat n figura 5.28.
U Umax = 2 V Fig. 5.29. Caracteristica static a CNA. Umin = 0,4 V N Nmin Nmax=4095 uCANA

Caracteristica static liniar din figura 5.29 este descris de ecuaia


de unde rezult

183

Ingineria aplicaiilor de timp real

respectiv

4095 0,4 2

819

c - se calculeaz coeficienii f0 i f2 din relaiile (5.62) i (5.63) dup cum urmeaz:


819

4095

819 3726 3600

1,035

/ / .

60

Rezult BC2 respectiv

urmtoarea

ecuaie

pentru

modulul

1,035 sau cu datele din enun

1,03545 Observaie

1,0352025

2914,875

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.
184

Ingineria aplicaiilor de timp real

Domeniu Traductor

Limite avertizare de prevenire Limite avertizare de avarie Fig. 5.30. Limite asociate diverselor tipuri de testri a unei mrimi achiziionate.

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.
Domeniu Comenzi Valide

Ymin

Ymax

Domeniu Comenzi Sigure Fig. 5.31. Limite asociate testrii unei comenzi calculate.

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 test rii mrimilor achiziionate sau a comenzilor elaborate se nscriu in jurnalul cu evenimente din baza de date de proces.
185

Ingineria aplicaiilor de timp real PROCEDURA TESTARE COMANDA CALCULATA Ycalc

Transfera Ycalc

Preia din BDP Ymin, Ymax

Y Ymin

Da

Nu
Y Ymax

Da

Nu
Y=Ymin Y=Ycalc Y=Ymax

Transfera Y

RETURN

Fig. 5.32. Schema logic asociat procedurii de testare a unei comenzi calculate.

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 1

5.99

186

Ingineria aplicaiilor de timp real

unde

u este comanda; u0 - 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

5.100

respectiv k-1

5.101

unde T reprezint intervalul de eantionare. Prin scderea relaiei (5.101) din relaia (5.100) rezult:

5.102

sau dup unele grupri convenabile se obine relaia de mai jos (5.103)

Din relaia (5.103) se observ c valoarea pasului curent al comenzii depinde de valoarea acesteia aferent pasului anterior i de valorile abaterii e pentru trei pai consecutivi, respectiv , , .

Introducnd notaiile (5.104) 1

(5.104) 2

187

Ingineria aplicaiilor de timp real

relaia (5.103) devine 5.105

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.
Initializare task REG_PID SEMEX=1, stabilete valori iniiale pentru UC, UA, EC, EA, EAA.

Nu t=T ? Da P(SEMEX)

Preia din BDP I, CC, CA, CAA

EAA=UA

V(SEMEX)

EAA=EA

Achiziionez R

UA=UC

EC = I-R

Transfera UC la EE via SEA

Fig. 5.33. Schema logic asociat taskului REG_PID. 188

Ingineria aplicaiilor de timp real

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.
Initializare task CNS_OP SEMEX=1, stabilete valori iniiale pentru I, CC, EA, CAA.

Nu Tast ? V(SEMEX) Da P? Nu Da I? Nu Da D? Nu Calculeaz CC, CA, CAA Modif Td P(SEMEX) Modif Ti Da Modif Kp Transfera I, CC, CA, CAA n BDP

Da R ? Nu Nu E? Da EXIT 189 Fig. 5.34. Schema logic asociat taskului CONS_OP. Modif I

Ingineria aplicaiilor de timp real

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.

Qr Tm

TT
Qr TC Tm T EE
Proces

Tref 2 1
220 V 50 Hz

u m (W) TT

TC Tref a)
r

b)

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.

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).
190

Ingineria aplicaiilor de timp real

u CON

HYST

DECON T
Tmin Tref Tmax

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.

1 1

5.106

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

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.

191

Ingineria aplicaiilor de timp real

u CON

a)
DECON T Tmax
Tref Tmin T0 HYST

b)
t

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.

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 .
192

Ingineria aplicaiilor de timp real

Initializare task REG_BP SEMEX=1, determin valoarea iniial UC pentru comanda U

Nu t=Tcom ? Da P(SEMEX) Preia din BDP Tmin, Tmax V(SEMEX) Achizi ioneaz R i calculeaz T Nu T Tmin ? Nu Da

T Tmax ? Da U = DECON

U= CON

Transmite U la EE via SEN

Fig. 4.38. Schema logic asociat taskului REG_BP.

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

193

Ingineria aplicaiilor de timp real

Ini ializare task CNS_BP SEMEX=1, stabilete valori iniiale pentru Tref, Hyst, Tmin, Tmax.

Nu Tast ? V(SEMEX) Da I? Nu Da H ? Nu Nu E? Da EXIT Fig. 5.39. Schema logic asociat taskului CNS_BP. Calculeaz Tmin, Tmax P(SEMEX) Modif Hyst Da Modif Tref Transfera Tmin, Tmax n BDP

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 execu ie ci unui SRA, care conine regulatorul C2, n calitate de referin extern.
194

Ingineria aplicaiilor de timp real

Bucla de reglare care conine regulatorul C1 se numete bucl exterioar sau coordonatoare, iar cea care con ine regulatorul C2 constituie bucla interioar sau subordonat. Din punctul de vedere al ineriei, bucla interioar trebuie s fie mai rapid dect cea exterioar.
C1
EC1 i1* i1 e1 u1=i2 EC1 e2 + r2 u2 m y2

C2
BF1 BF2 EE T2
r1

P2

P1 y1

Tint
+ -

SP2

SP1

T1

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

Pentru a exemplifica func ionalitatea 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.
Qp T0 CT

T
r1

Qa

Pc Qc

PT

r2
PC

TT

u1=Pi
TC

Ti

u2 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.

Pentru exemplul de mai sus regulatorul de temperatur TC este coordonator, iar cel de presiune PC este subordonat, mrimea de comand u1 fiind referin pentru acesta.

195

Ingineria aplicaiilor de timp real

Taskul asociat SRA cascad din figura 5.40, a crui schem logic este ilustrat n figura 5.42 este sincronizat cu timpul, intervalul de execu ie Texec fiind impus de ineria SRA interior.
Initializare task REG_CASCADA K=1, SEMEX=1stabilete valori iniiale pentru comenzile u1 i u2

Nu t=Texec ? Da 1 K? Selectare algoritm regulator C1 Selectare algoritm regulator C2 2

P(SEMEX)

i2 = u1

Preia din BDP i1*

V(SEMEX)

Achizi ionez rk K=2 ek = ik - rk Calculeaz comanda uk K=1

Transfera u2 la EE via SEA

K =2? Fig. 5.42. Schema logic asociat taskului REG_CASCAD. 196

Ingineria aplicaiilor de timp real

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 lucr rii 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.
p21p2kp2n

Tp21 Tp2k
r21 i I r2k P2

CP CA
i EC e ua + up +

SP2
+

y2

P1 u m + y1

Tint

+ -

BF

EE

SP1

Ta
r a

Fig. 5.43. Schema de structur a unui SRA combinat abatere - perturbaie: CA , CP regulatoare abatere, perturbaie, - sumator.

197

Ingineria aplicaiilor de timp real

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 perturba iile 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.
Qp T0 CT

FTa

TTp

rp1 Ti

rp2 Qc u
RR

T Qa
TTa

I
TCp

up

ua

ra
TCa

Ti

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.

La variaii ale debitului de produs Qp i/sau temperaturii acestuia T0 , 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.
198

Ingineria aplicaiilor de timp real

Initializare task REG_COMB K=1, SEMEX=1stabilete valori iniiale pentru comenzile ua i up

Nu t=Texec ? Da 1 K? Selectare algoritm regulator CA Selectare algoritm regulator CP 2 K=1

P(SEMEX)

P(SEMEX)

Preia din BDP i

Preia din BDP I

V(SEMEX) Achiziionez via SIA e = i - ra ra

V(SEMEX) Achiziionez ra, r21r2k via SIA Calculeaz comanda up Transfera u la EE via SEA

Calculeaz comanda ua

Nu K=2 K =2?

Da u = ua+up

Fig. 5.45. Schema logic asociat taskului REG_COMB.

199

Ingineria aplicaiilor de timp real

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 interac iuni. 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.
T1
e1 u11

r1 i1
*

i1

Ti1

BF11
+ +

u1

m1

EE1

SP11
+

y1

BF21 u21

SP21

RMV
BF12 u12
+ i2
*

PROCES
SP12
+ u2 +

i2

Ti2

BF22
r2 e2 u22

EE2
m2

SP22

y2

T2

Fig. 4.46. Schema de structur a unui SRA multivariabil: RMV - regulator multifuncional; BF11BF22 - blocuri funcionale ale RMV, SP11 - SP22 subprocese , - sumatoare.

Dup cum indic figura 5.46 comenzile u1 i u2 se formeaz potrivit relaiilor de mai jos

200

Ingineria aplicaiilor de timp real

1 2

21 ; 12.

5.109 5.110

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.
P AT xD PC Pi

HVR

xDi xBi

Li

RMV
L(t) Bi

FC

LC FC

HVRi

xF
HB Qab B

LC

HBi

D, xD

FC

AT

B, xB
FC

Fig. 5.47. Schema principial a unui SRA concentraie multivariabil: RMV - regulator multivariabil; xDi, xBi - referine pentru SRA compoziie produse vrf i baz.

Regulatorul RMV este astfel proiectat nct s asigure numai modificarea compoziiei pentru care s-a schimbat referina (de exemplu la creterea specificaiei xDi s se modifice corespunztor numai concentraia xD nu i xB. Taskul asociat SRA multivariabil combinat din figura 5.46, a c rui 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.
201

Ingineria aplicaiilor de timp real

Initializare task REG_MULTIVAR J=1, SEMEX=1stabilete valori iniiale pentru comenzile u1 i u2

Nu t=Texec ? Da P(SEMEX)

Preia din BDP iJ

V(SEMEX) Achiziionez rJ via SIA

eJ = iJ - rJ

K=1 Transfer u1 i u2 la EE via SEA u2 = u21+u22

K=1

J=2

Selectare algoritm regulator cKJ Calculeaz comanda uKJ Da K =1? Nu

K=2

u1 = u11+u12 Nu J=1? Da

Fig. 4.48. Schema logic asociat taskului REG_MULTIVAR.

202

Ingineria aplicaiilor de timp real

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.
Iniializare task CNS_MULTIVAR SEMEX=1, stabilete valori iniiale pentru i1, i2,

Nu Tast ? V(SEMEX) Da I? Nu Da J? Nu Nu E? Da EXIT Fig. 4.49. Schema logic asociat taskului CNS_MULTIVAR. Calculeaz i1, i2 P(SEMEX) Modif i2* Da Modif i1* Transfera i1, i2 n BDP

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.

203

Ingineria aplicaiilor de timp real

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 urmtoarelor cerine importante: - s asigure securitatea datelor; - s asigure integritatea datelor; - s asigure independena datelor. trebuie s rspund

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:
204

Ingineria aplicaiilor de timp real

a) b) c)

date din proces n cadrul fiierelor istorice ale valorilor parametrilor; comenzi aplicate procesului n cadrul fiierelor istorice ale valorilor comenzilor; evenimente semnificative evenimentelor; din proces n cadrul jurnalului

d) adrese ale perifericelor de proces execuie); e) f) g)

(traductoare i elemente de

referine i parametri de acordare pentru regulatoarele automate dup abatere; parametri de acordare a modelelor aferente automatizrii avansate; 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.

205