Documente Academic
Documente Profesional
Documente Cultură
CAPITOLUL
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
Perturbaii Rezultate
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
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 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
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
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
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
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.
Capitolul 1
COP
MEC
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
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.
Capitolul 1
11
- 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
Capitolul 1
12
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
Capitolul 1
13
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;
- 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
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
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
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.
- 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
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
Capitolul 1
17
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
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
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
CAPITOLUL
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
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
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
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
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
24
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
- 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
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
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
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
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
- 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
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
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
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
n care:
- 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)
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
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)
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
- 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.
Rs
(2.2)
37
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)
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
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
+ U2
De la
(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
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.
C4
2R
4R
8R
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
Funcioanrea DER are loc n douetape i anume: obinerea informaiei, caracterizatde timpul de obinere T0; memorarea informaiei, caracterizatde timpul de memorare TM.
41
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
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
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
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)
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
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
45
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
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
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
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
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
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
O alternativ la filtrarea hardware o reprezint filtrarea software, prin introducerea unor bucle de ntrziere n rutinele care prelucreaz informaia furnizat de contacte.
48
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
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
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
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
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
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
In ceea ce privete mpmntarea, aceasta trebuie realizatntr-un singur punct cu repsectarea prescripiilor n ceea ce privete rezistena electrica prizei centrale.
51
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
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
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
E1 R3
E2
R2
R4
-AI
I2 R1 I1 Ui OC1 OC2
-AO
Ue
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
CAPITOLUL
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.
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
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]
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]
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]
I/E:
0 30
a1 b1 c1
50
a2
c2
c3
c4
t[ut]
70 80 90 130
Capitolul 3
56
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).
Capitolul 3
57
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
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
- 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
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
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
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
Dispecerizare Activare
CREAT GATA DE EXECUIE
EXECUIE LOGIC
Dezactivare
CREAT
Suprimare
NECREAT
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
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
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
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
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
- 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
Eliberare
Start
Stop normal
Instalare
tergere
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
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
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.
Capitolul 3
68
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
07
Ultima poziie, (coad de list)
01
06
02
04
09
Penultima poziie
03
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
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
07
Ultima poziie, (coad de list)
03
01
Prima poziie, (cap de list)
06
02
LAP
04
09
Penultima poziie
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
03
Ultima poziie, (coad de list)
01
06
Prima poziie, (cap de list)
02
04
LAP
09
07
Penultima poziie
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
m n
Ultima poziie (coad de list)
o p
Prima poziie (cap de list) Punct inserare nod nou
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
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
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
m a m
Prima poziie (cap de list)
a m a m a
Ultima poziie (coad de list)
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
- 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
14
10
05
12
Intrare taskuri de prioritate 4 Intrare taskuri devenite rulabile.
Capitolul 3
74
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.
Capitolul 3
75
- 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
Capitolul 3
76
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
Indivizibilitatea are n vedere faptul c cele dou funcii nu pot fi ntrerupte. First Input First Output
Capitolul 3
77
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
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
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
Se apeleaz dispecerul
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
t
DA P1_T1 P(SEMEX) SCr T1 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
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
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)
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
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
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
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
- 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
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
D.
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
Capitolul 3
87
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
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
P1_T1
P(SEMSYNC)
89
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.
Capitolul 3
90
Iniializare T2 VTE2=FALS
Iniializare T3 F=FALS
F VTE1VTE2
EVEX2? DA NU F=ADEV ? DA
NSCRIE(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.
Capitolul 3
ATEAPT (F)
91
- 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
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
Task T2 Iniializare T2
DA
Mes n C0 ? NU
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
C1 PUT
NU
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
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
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
n aceste condiii taskul T2 este deblocat n momentul n care n cutia potal C0 este depus MES_EV asociat producerii evenimentului extern.
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
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.
Capitolul 3
97
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
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
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)
P2_TPROD
P2_TCONS(cdata)
99
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.
Capitolul 3
100
Task T1 Iniializare T1
Task T2 Iniializare T2
P1_T1
NU T2 gata recepie ? DA TRIMITE MES_ INF la T2 RECEIVE
P1_T2
SEND
NU MES_CONF n CP1? NU DA
Fig.
CP1
PUT
P1_T1
P2_T2
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.
101
- 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
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
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.
{a1,a2,,a2n}
i corespunde o (3.5)
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
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
'
'
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
{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
Cale
Lungime 2 3 3 4 105
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
Capitolul 3
106
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
Fig.
T1
R1 T2 R2 T3 R3
Tn Rn-1
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
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
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
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
qi ei
(l)
(l)
l)
Q l)
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
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
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)
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
I este interblocat.
111
Capitolul 3
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
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
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
113
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
CAPITOLUL
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.
Capitolul 4
115
aferente unui asemenea metalimbaj, n care pentru descriere se utilizeaz grafurile sintactice. Un asemenea graf conine urmtoarele elemente: simboluri terminale asociate unitilor atomice, care se prezint sub forma unui cerc n care se nscrie respectiva unitate; simboluri neterminale asociate noiunilor sintactice, care se prezint sub forma unor dreptunghiuri n care se nscrie respectiva noiune; arce orientate. Graful se parcurge ntr-un singur sens de la unica sgeat care intr, la unica sgeat care prsete graful. ntr-un graf sintactic se regsesc n form specific elementele programrii structurate i anume succesiunea (secvena), ramificaia, iteraia. Succesiunea este implementat de concatenare (alipire), ramificaia de alternativ, iar iteraia de repetiie. De exemplu graful sintactic pentru simbolul cifr , care conine numai simboluri terminale, se prezint ca n figura 4.1 i se interpreteaz n felul urmtor: o cifr se reprezint cu ajutorul unuia dintre simbolurile 0, 1, , 9.
Dup cum se observ acest graf conine numai ramificaii n sensul c pentru o cifr se trece o singur dat prin simbolul aferent. Grafuri asemntoare se obin pentru noiunile liter mic (minuscul) i liter mare (majuscul) cu ajutorul simbolurilor a, b, c, , x, y, z respectiv A, B, C, , X, Y, Z. Dac se dorete construcia grafului sintactic numr algebric cu semn, se utilizeaz unitatea atomic semn i noiunea cifr potrivit reprezentrii din figura 4.2. + cifr Fig. 4.2. Graf sintactic pentru noiunea numr algebric.
Capitolul 4
116
Din punct de vedere structural exist o concatenare a noiunilor semn i cifr. Definirea noiunii semn implic o ramificaie, iar pentru a forma numrul din mai multe cifre o repetiie. Un ultim exemplu se refer la definirea noiunii nume. Dup cum rezult din figura 4.3 n care se prezint graful sintactic asociat, nume ncepe obligatoriu cu o liter, care poate fi urmat sau nu alte litere sau cifre.
Alturi de descrierea pe care o realizeaz, metalimbajul contribuie i la nelegerea i nsuirea rapid a construciilor sintactice specifice unui anumit limbaj. Principalul criteriu de clasificare a LPTR l reprezint forma sub care taskurile solicit servicii SOTR respectiv interfaa sistem de operare - LPTR, pentru care exist urmtoarele modaliti de realizare: a) n program se introduc explicit structuri de date i de cod necesare efecturii serviciilor ; introducerea explicit poate avea n vedere i utilizarea unor secvene n limbaj de asamblare pe lng construciile specifice LPTR (exemple de limbaje RTL/2, FORTH, etc.); b) n biblioteca obiect a limbajului se afl proceduri apelabile din programul surs care apeleaz la rndul lor executivul de timp real (aceast modalitate este n general specific extensiilor de timp real a unor limbaje de nivel nalt, cum ar fi FORTRAN 77, BASIC etc.); c) LPTR conine construciile adecvate - structuri de date i de instruciuni - care permit exprimarea direct a serviciului dorit (exemple de limbaje: EDISON, MODULA 2, ADA etc. ). 4.1.2. Cerine impuse LPTR
Principala cerin impus LPTR o reprezint desigur existena de primitive care s implementeze operaiile multitasking i instrumentele de implementare specifice. n afara acestei cerine, un LPTR trebuie s satisfac i ale exigene legate n principal de:
Capitolul 4
117
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
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
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
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
- 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
1 2 3
Capitolul 4
123
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.
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
Starea Current corespunde strii Execuie din prima abordare, respectiv substrii Execuie din a doua abordare. Sub RTK un singur task se poate gsi la un moment dat n aceast stare. Practic taskul aflat la un moment dat n starea Current deine la respectivul moment controlul unitii centrale de procesare (UCP). Dac nici un task utilizator nu este planificat pentru execuie, controlul UCP este deinut de Idle Task creat la iniializarea RTKernel.
Dup cum se observ din figura 4.2, n starea Current se poate ajunge numai din starea Ready, n timp ce din starea Current pot fi efectuate tranziii n toate celelalte stri. n ceea ce privete planificarea pentru execuie a taskurilor, aceasta se poate face n mod preemptiv sau cooperativ, modul implicit fiind cel cooperativ. Modul preemptiv (preemptive scheduling) corespunde ntreruperii periodice a taskului aflat n execuie i transferul controlului ctre un task aflat n starea Ready. Acest mod elimin posibilitatea acaparrii procesorului de ctre un singur task. Procedeul mai este cunoscut i ca time-slice multitasking (multitasking cu trane de timp)7. Modul cooperativ (cooperative multitasking) presupune cedarea controlului procesorului de ctre taskul current ctre un alt task aflat n starea Ready. Starea Suspended corespunde strii Creat din prima abordare, respectiv strii inactive din a doua abordare. Un task suspendat nu poate fi rulat
Pentru stabilirea tranei de timp se apeleaz funcia RTKTimeSlice din repertoriul de instruc iuni al RTKernel.
7
Capitolul 4
125
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
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
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" ----------------------------------
4.2.4.
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
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
Capitolul 4
129
Stare Ready Current Suspended Delaying BlockedWait TimedWait BlockedPut BlockedGet TimedPut
TimedGet
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
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
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
Capitolul 4
132
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
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
#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
4.2.6.
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
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
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
// // 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
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.
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
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
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
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
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
} // // //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
Capitolul 4
144
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
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
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
// // 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
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
CAPITOLUL
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.
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
151
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
x[n-1] Te h[2]
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
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
5.5
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]
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
AVANS_C
w_out=z(M)
j=M
z(j)=z(j-1)
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
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)
V(SEMEX)
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
F1
F2
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
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
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
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
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
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
xmax
159
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
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
xmax
Caracteristicilor statice din figurile 4.104.12 li se asociaz urmtorul sistem de ecuaii n abateri:
160
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
5.15
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
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
xmax
, 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
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
(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
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
5.40
5.41 5.42
, respectiv .
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
CAN - Nmax1 = 1023 uCAN sau Nmax2 = 4095 uCAN, caracteristic static liniar;
166
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
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
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
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
50
4095
50
0,733138
0,183150
respectiv sau
168
0,733138
0,183150 0,183150
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
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
N u i R
Q*
CAN
BC1
FT
Q
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
5.45 , 5.46
,
,
5.47
170
5.48
respectiv,
. 5.49
5.50
sau
5.51
. 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
3600
2047
409,4 ,
2,197
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
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
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
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
173
Caracteristicilor statice din figurile 4.344.36 li se asociaz urmtorul sistem de ecuaii n abateri:
SNTD:
5.53
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
aceast form, n ecuaia (5.58) se exprim abaterile innd cont de relaiile (5.7), (5.8) i rezult
5.59
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
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
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:
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
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
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
(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
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
5.87 ,
notaie care semnific amplificarea gruprii de convertoare CNA - CUI, astfel nct relaia (5.86) devine .
5.88
5.89
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
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
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
de unde rezult
180
respectiv
1023 0,2 1
204,6
5.91
5.92 , , 5.93
respectiv,
. 5.95
sau
. 5.96
. 5.97
181
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:
68,2
204,6 200
1023
800
1,364
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
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*
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
de unde rezult
183
respectiv
4095 0,4 2
819
819
4095
1,035
/ / .
60
urmtoarea
ecuaie
pentru
modulul
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
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
Transfera Ycalc
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.99
186
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 , , .
(5.104) 2
187
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)
EAA=UA
V(SEMEX)
EAA=EA
Achiziionez R
UA=UC
EC = I-R
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
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.
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
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
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
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
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
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
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
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
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
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
P(SEMEX)
i2 = u1
V(SEMEX)
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
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
P(SEMEX)
P(SEMEX)
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
199
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
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
Nu t=Texec ? Da P(SEMEX)
eJ = iJ - rJ
K=1
J=2
K=2
u1 = u11+u12 Nu J=1? Da
202
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
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.
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
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
(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