CATEGORII DOCUMENTE |
Aeronautica | Comunicatii | Electronica electricitate | Merceologie | Tehnica mecanica |
Scopul acestei lucrari este de a oferi o solutie de simplificare a procedeului de introducere a valorilor parametrilor de acord pentru un sistem de reglare automata, astfel incat, chiar si o persoana mai putin avizata sa poata acorda regulatoare pentru diverse procese industriale.
Vom folosi o aplicatie pentru un dispozitiv PDA, care calculeaza valorile parametrilor de acord, in functie de datele primite cu privire la parametrii procesului.
Lucrarea de fata isi propune sa prezinte doua dintre metodele de acordare a regulatoarelor: un algoritm de acordare a regulatoarelor PID prin metoda caracteristicilor de frecventa si un algoritm de acordare a regulatoarelor PID de tip RST, implementate pe un dispozitiv PDA.
Utilizarea unui astfel de dispozitiv inlesneste in mod evident munca, intrucat este usor de folosit si poate fi tinut permanent la indemana.
Mai intai, vor fi prezentate fundamentele teoretice ale proiectului algoritmii folositi, dispozitivele pe care poate fi implementata solutia, precum si mediul de programare folosit (Microsoft Visual C++ embedded).
Apoi, in partea a doua (studiul de caz), vor fi descrise metodele implementate, cu exemplificari.
In final, se trag concluziile legate de tema abordata in lucrare, incercand inca o data sa se scoata in evidenta obiectivul urmarit. De asemenea vor fi prezentate cateva perspective de abordare in vederea imbogatirii variantelor de implementare si a tipurilor de algoritmi utilizati in reglarea automata.
In aplicatiile industriale, in cadrul structurilor cu unul sau mai multe grade de libertate, sunt utilizate legi de reglare conventionale sau neconventionale.
Cea mai simpla lege de reglare este de tip proportional. Daca ne referim la structura clasica de SRA cu reactie unitara si un singur grad de libertate, se poate defini legea de reglare de tip P sub forma:
In acest caz putem spune ca regulatorul are o comportare de tip P, iar functia de transfer atasata acestuia este:
Este evident ca un asemenea regulator are o comportare ideala. Comportarea reala a unui regulator de tip P este determinata de modul de implementare a legii de reglare de tip P.
Ideal, pentru o treapta unitara aplicata la intrare (ε(t) = 1(t)), raspunsul este o treapta de amplitudine egala cu factorul de amplificare.
Un regulator P poate controla orice proces stabil, insa performantele obtinute sunt limitate, iar eroarea in regim stationar pentru referinta treapta este diferita de zero.
In mod traditional se foloseste banda de proportionalitate (BP) pentru a descrie actiunea proportionala:
Daca la componenta P se adauga o componenta de tip integral (I), se obtine cunoscuta lege de reglare PI data de relatia:
(1)
Ca si in cazul legii de reglare de tip P, coeficientul KR poarta denumirea de factor de amplificare al componentei P, iar raportul poarta denumirea de factor de amplificare al componentei integrale. In acest caz putem scrie relatia (1) sub forma:
(2)
Se poate observa ca factorul de amplificare KR este chiar coeficientul ce defineste componenta proportionala KP, iar coeficientul KI este determinat atat de KR cat si de constanta de timp a actiunii integrale Ti. Functia de transfer atasata legii de reglare PI este:
(3)
De remarcat faptul ca pentru si componenta proportionala se dubleaza ().
In unele lucrari, constanta de timp Ti este cunoscuta si sub numele timpul de dublare.
Spre deosebire de regulatorul P, unde numai KR este ajustabil, in cazul regulatorului PI sunt ajustati cei doi parametrii KR si Ti sau KP si KI. Este de retinut faptul ca, prin ajustarea constantei integrale Ti, se modifica efectul actiunii de integrare, iar prin modificarea factorului proportionalitate KR se modifica atat componenta integrala, cat si cea proportionala.
Comportarea reala a regulatorului PI, tinand seama de modul de implementare a legii de reglare, este diferita de comportarea ideala.
Prezenta componentei integrale in structura unui algoritm de reglare poate genera efecte nedorite ca urmare a saturarii, insa se asigura eroare stationara egala cu zero in cazul semnalul de iesire in regim stationar are valori sub limita de saturare.
In acest caz, la componenta proportionala se adauga o componenta derivativa:
(4)
sau
(5)
Unde KD = KRTd.
Functia de transfer ce defineste comportarea unui regulator PD este:
(6)
unde KR este amplificarea proportionala, iar Td este constanta de timp atasata componentei derivative (timpul derivativ). Ambele componente sunt ajustabile prin modificarea prin modificarea KP si KD.
Componenta derivativa evidentiaza faptul ca iesirea u(t) este proportionala cu viteza de variatie a erorii.
Timpul derivativ Td reprezinta intervalul de timp prin care componenta derivativa anticipeaza efectul actiunii proportionale.
Aceasta componenta, desi prezinta avantajul comportarii anticipative, are insa dezavantajul ca amplifica semnalele de tip zgomot si poate cauza efecte de saturatie in comportarea elementului de executie.
Componenta derivativa nu poate fi utilizata niciodata singura, aceasta fiind efectiva numai in perioada tranzitorie (pentru ε(t) = const., comanda derivativa uD = 0).
De remarcat faptul ca legea de reglare PD, asa cum evidentiaza relatia (5), reprezinta un sistem nerealizabil fizic. Cel mai adesea, legea de reglare PD este definita printr-o functie de transfer de forma:
(7)
Unde α << 1 reprezinta coeficientul de filtrare al componentei derivative.
Functia de transfer (6) evidentiaza o comportare de tip anticipatie intarziere (lead-lag) cu factor de amplificare (de proportionalitate) neunitar.
Un model uzual pentru algoritmul PD este:
(8)
Unde α se alege in concordanta cu banda de frecventa in care se gaseste zgomotul.
Combinatia actiunilor de reglare proportionala, integrala si derivativa conduce in mod natural la algoritmul cel mai popular, cunoscut ca algoritmul sau legea de reglare de tip PID.
Aceasta lege ideala de reglare are forma:
(9) sau
(10)
unde:
- factor de proportionalitate (efectul proportional);
- factorul integral;
- factorul derivativ.
Functia de transfer atasata acestui regulator este:
(11)
(12)
Ca si in cazul legii de reglare de tip PD, functia de transfer (9) evidentiaza un sistem nerealizabil fizic. Pentru realizabilitatea fizica a legii de reglare PID pot fi utilizate diferite variante ale acesteia.
O prima varianta a legii de reglare PID include constanta de timp αTd pentru filtrarea componentei derivative:
(13)
cu α << 1.
O a doua varianta presupune utilizarea unui algoritm PID cu filtrare. In acest caz se realizeaza o combinatie eficienta a componentelor P, PI si PD cu filtrare:
(14)
Astfel, prin filtrarea componentei derivative se asigura realizabilitatea algoritmilor si se atenueaza efectul componentei derivative asupra semnalelor de tip zgomot.
In afara de legile de reglare PID cu filtrarea componentei derivative, sunt utilizate si variante de algoritmi PID modificati, algoritmi care prelucreaza diferit eroarea, iesirea masurata si chiar referinta.
A acorda un regulator conventional PID presupune determinarea valorilor optime ale parametrilor KR, Ti si Td care asigura pentru un proces dat comportarea dorita a SRA in raport cu referinta si perturbatiile ce actioneaza asupra procesului. Tinand seama ca modelele simplificate ale proceselor contin cel mai adesea incertitudini structurale si parametrice, determinarea analitica a parametrilor de acord este orientativa cel mai adesea, ramanand ca valorile optime ale parametrilor sa fie validate experimental. Acesta este motivul pentru care frecvent vorbim de acordarea experimentala pe obiect a regulatoarelor selectate in concordanta cu particularitatile procesului si cu cerintele de performanta dorite. Experienta a validat solutii eficiente pentru diferite clase de procese in ceea ce priveste tipul de algoritm de reglare si structura optima de SRA. In aceste conditii, ramane de acordat regulatorul pentru regimuri precizate de functionare intr-un context perturbator cunoscut cu suficient de buna precizie.
Separarea obiectelor conduse in functie de valoarea constantelor de timp si de valoarea timpului mort se impune tinand seama de particularitatile proceselor lente si foarte lente din punct de vedere al reglarii sau conducerii.
Este cunoscut faptul ca procesele rapide, caracterizate in general prin valori ale constantelor de timp dominante mai mici de 10 secunde si constante de timp parazite, in general, cu un ordin de marime mai reduse decat constantele de timp dominante, sunt descrise prin modele matematice cu o buna precizie. In aceste conditii este posibila, cu bune rezultate, utilizarea unor metode analitice pentru determinarea valorilor optime ale parametrilor de acord.
Astfel, punand conditia ca durata regimului tranzitoriu sa fie minima (banda de frecventa cat mai mare), rezulta relatii de calcul ale parametrilor de acord in functie de parametrii modelului.
Daca vom considera metode matematice de forma:
(15)
unde T1 si T2 sunt constante de timp dominante, iar Treprezinta suma tuturor constantelor parazite de timp (T<< min(T1, T2)) si algoritmul de reglare recomandat de tip PID de forma:
(16)
Atunci functia de transfer a caii directe este:
(17)
In aceasta relatie, θ1 si θ2 au semnificatia constantelor de timp atasate unor elemente de anticipatie incluse in structura algoritmului de reglare de tip PID.
In conditiile in care , si sunt cunoscute cu precizie, se pot alege parametrii regulatorului astfel:
; ;
Unde << min(T1, T2).
Cu aceasta alegere a parametrilor de acord se obtine:
(18)
Este evident si faptul ca SRA asigura eroare stationara egala cu zero, iar raspunsul tranzitoriu este influentat numai de valoarea constantei de timp , care are valoare foarte redusa.
In aceste conditii, performantele SRA sunt determinate de , banda de frecventa fiind data de relatia:
.
Aceasta relatie rezulta cu usurinta din (18), care poate fi pusa sub forma:
,
unde , .
O asemenea acordare a algoritmului de reglare asigura o valoare constanta a suprareglajului ( σ = 4.3% ), iar durata regimului tranzitoriu rezulta in functie de :
.
Pentru cazul in care referinta este rampa unitara, rezulta o eroare permanenta (eroare de viteza):
.
Banda de frecvente in acest caz este cu atat mai mare cu cat este mai mic.
Procesele lente sunt caracterizate prin modele aproximative, avand constante de timp mai mari de 10 secunde si, cel mai adesea, contin si timp mort. Pentru alegerea tipului de regulator, proiectantul de SRA, are in general la baza o serie de criterii verificate in practica, tinand seama de caracteristicile procesului si de performantele impuse. Prezenta timpului mort in functionarea unui proces tehnologic impune o serie de precautii in alegerea tipului de regulator, putandu-se recomanda atat regulatoarele liniare PI si PID, cat si regulatoarele neliniare de tip bipozitional sau tripozitional.
Componenta derivativa se include intr-un algoritm de reglare pentru proces cu timp mort numai in masura in care se obtine o imbunatatire a performantelor. Pentru valori ale raportului τ/TP < 0.2 se pot recomanda algoritmi neliniari, in masura in care cerintele de performanta nu sunt foarte inalte.
Amplitudinea si frecventa perturbatiilor trebuie luate in consideratie la alegerea tipului de regulator. Astfel, pentru procese cu constanta de timp medie si un timp mort redus, la o amplitudine medie a perturbatiilor si o frecventa redusa a acestora, se recomanda un regulator proportional bipozitional sau un regulator P. Pentru o frecventa mai mare a perturbatiilor, avand diverse amplitudini, se recomanda un algoritm PI, iar pentru un proces cu mai multe constante de timp si timp mort redus, la o amplitudine mare a perturbatiilor si o frecventa mare a acestora, se recomanda un algoritm PID.
De asemenea, pentru procese cu doua sau mai multe constante de timp dominante, nu se recomanda un regulator P, ci un regulator PI sau PID, care anuleaza eroarea stationara si asigura o viteza de raspuns mai ridicata. In functie de tipul marimii reglate, de perturbatiile procesului fizic, sunt recomandate diverse tipuri de regulatoare, avand in vedere dinamica procesului (τ, TP) si caracterul perturbatiilor.
Astfel, pentru reglari de nivel pot fi utilizate, atat regulatoarele P, cat si regulatoarele PI, aceasta in functie de precizia urmarita si de tipul perturbatiilor. Daca perturbatiile in cazul reglarii de nivel sunt determinate, atat de variatia debitului de intrare, cat si de variatia debitului de iesire, iar abaterea stationara se cere a fi a fi zero, se recomanda un regulator PI, ai carui parametrii de acord sunt diferiti pentru gaze si lichide, avand in vedere ca pentru lichide constanta de timp este mai redusa decat pentru gaze.
In cazul unor reglari de debite si amestecuri de fluid, dat fiind ca asemenea procese sunt caracterizate printr-o constanta de timp mica si o amplificare mare, sunt recomandate regulatoarele PI. Prezenta zgomotelor determinate de variatiile debitului face inoportuna utilizarea componentei derivative la reglarea debitelor. La reglari de temperatura, unde raportul τ/TP este mare, sunt recomandate regulatoarele PI sau PID.
In tabelul (1) se prezinta sintetic recomandari pentru alegerea tipului de regulator pentru diverse functii de transfer ale procesului si cu evidentierea unor restrictii asupra performantelor ce pot fi atinse in anumite conditii impuse.
Tabelul 1
Legea de reglare/Tipul procesului |
P |
PI |
PD |
PID |
|
DA |
DA daca se impun cerinte asupra erorii stationare |
DA daca este precis determinat |
NU |
|
DA cu performante reduse |
DA cu restrictii asupra amplifica |
Se utilizeaza rar |
DA Cu restrictii asupra amplificarii |
|
Rar utilizat, performante scazute |
DA |
Se utilizeaza rar |
DA |
|
DA |
NU |
NU |
NU |
|
NU |
DA |
NU |
Rar, in functie de tipul timpului mort si de efectul componentei D |
In tabelul 2 se prezinta unele recomandari privind algoritmul de reglare pentru diversi parametrii tehnologici, cu evidentierea unor particularitati ale modelului procesului.
Tabelul 2
Legea de reglare/Tipul procesului |
P |
PI |
PD |
PID |
Temperatura |
DA, daca < 0.1 |
DA |
DA |
DA, in functie de raportul τ/TP |
Presiune |
DA daca nu exista timpi morti prea mari |
DA |
In cazuri speciale | |
Debit |
NU |
DA |
NU | |
Nivel |
DA Daca nu exista timpi morti prea mari |
DA |
DA |
Odata stabilita legea de reglare pentru un proces dat, se impune luarea in consideratie a tipului de regulator din punct de vedere al agentului purtator de semnal. Din punctul de vedere al legilor de reglare P, I sau D, sistemele pneumatice si electronice sunt echivalente. Alegerea unui regulator pneumatic sau electronic este determinata de tipul procesului, de tipul parametrilor reglati, de tipul elementelor de executie si de tipul traductoarelor.
Siguranta in medii cu pericol de explozie si incendii poate constitui un argument in favoarea regulatoarelor pneumatice, insa regulatoarele electronice prevazute cu siguranta intrinseca pot fi utilizate in asemenea medii.
Pentru procesele la care sunt utilizate traductoare pneumatice si elemente de executie pneumatice, se recomanda un regulator pneumatic, avand in vedere ca in acest caz se foloseste un singur agent purtator de informatie.
Considerentele economice constituie, de asemenea, un element important in adoptarea solutiei pneumatice sau electronice. In cazul in care se cere automatizarea complexa a unui proces tehnologic cu ajutorul unui calculator de proces, reglarea conventionala cu regulatoare electronice prezinta avantaje in comparatie cu reglarea pneumatica, data fiind complexitatea instalatiilor de cuplare a aparaturii pneumatice la calculatoare.
Pentru acordarea regulatoarelor destinate proceselor lente, pot fi utilizate mai multe criterii. Criteriul modulului poate fi extins la acordarea regulatoarelor pentru procese lente, permitand delimitarea domeniilor de variatie a parametrilor care asigura satisfacerea cerintelor de performanta in raport cu variatia referintei, precum si selectarea valorilor care asigura comportarea optima in raport cu actiunea perturbatiei aditive care actioneaza asupra procesului.
Alegerea si acordarea regulatoarelor pentru procese cu timp mort reprezinta una dintre problemele cele mai dificile in practica reglarii automate, aceasta datorita, atat dificultatilor de determinare cu precizie a timpului mort ce caracterizeaza procesul, cat si influentei nefavorabile a timpului mort asupra comportarii tranzitorii a unui sistem de reglare automata.
Pentru acordarea regulatoarelor pentru procese cu timp mort pot fi utilizate criterii bazate pe metoda limitei de stabilitate, criterii bazate pe rezultate ale identificarii experimentale sau criterii experimentale avand procesul in functiune.
Dificultatile legate de identificarea cu precizie a proceselor lente, comportarea neliniara a unor asemenea procese, precum si caracterul aleatoriu al anumitor perturbatii ce intervin in functionarea proceselor fac ca metodele analitice de acordare a regulatoarelor sa aiba un caracter limitat.
De cele mai multe ori, dupa o acordare pe baza unui criteriu dat, se impune verificarea performantelor si reajustarea parametrilor de acord. De asemenea, in functie de frecventa si amplitudinea perturbatiilor se impune corectarea parametrilor de acord.
Metodele practice de acordare au la baza experienta acumulata in alegerea si acordarea regulatoarelor. Astfel, pentru un sistem dat, in functiune, cu marimea de referinta si cu marimile perturbatoare mentinute constante, prin modificarea parametrilor de acord pana se ajunge la limita de stabilitate, se determina amplitudinea si frecventa oscilatiilor intretinute.
Folosind aceste marimi caracteristice ce caracterizeaza limita de stabilitate a sistemului, se determina valorile parametrilor de acord ai regulatorului.
Metoda Ziegler-Nichols se aplica la acordarea regulatorului pentru procese lente la care perturbatiile sunt determinate de sarcina si au o durata mare.
Pentru un regulator PID, se fixeaza acordul pentru la valoarea maxima () si pentru la valoarea minima ( = 0) si se modifica pana ce marimea de iesire a sistemului y intra intr-un regim de oscilatii neamortizate, deci sistemul ajunge la limita de stabilitate. Valoarea si perioada oscilatiilor neamortizate sunt utilizate pentru determinarea parametrilor de acordare optima. Pentru a obtine un raport ¼ intre amplitudinea celei de-a doua oscilatii pozitive si amplitudinea primei oscilatii pozitive (amortizarea in sfert de amplitudine), criteriul Ziegler-Nichols recomanda urmatoarele valori de acordare optima, in functie de si :
Pentru regulatoarele P:
(19)
Pentru regulatoarele PI:
(20)
Se remarca o reducere a factorului de amplificare (16) fata de regulatorul P, justifica ca urmare a necesitatii compensarii efectelor nefavorabile ale componentei I asupra procesului tranzitoriu.
Pentru regulatoarele PID parametrii optimi se calculeaza cu relatiile:
(21)
Se remarca o crestere a lui si o reducere a lui , care determina cresterea factorului total de amplificarea, datorata imbunatatirii performantelor tranzitorii ca urmare a prezentei componentei D.
Pentru cazul in care exista interinfluenta intre parametri (adica modificarea unui parametru influenteaza valorile celorlalti parametrii de acord), relatiile de calcul sunt:
(22)
In acest caz, factorul total de amplificare se reduce foarte putin fata de cazul anterior.
Metoda Offereins permite determinarea parametrilor optimi de acord pornind de la si determinate ca in cazul precedent.
In cazul utilizarii unui regulator PI, pentru a obtine un raspuns optim la aplicarea unei perturbari se recomanda:
(23)
unde reprezinta valoarea limitata a lui pentru care se depaseste limita de stabilitate mentinand . Astfel se mareste factorul , pana la depasirea limitei de stabilitate si se retine valoarea lui .
In ceea ce priveste componenta D, metoda prevede verificarea prealabila a eficientei acestei componente asupra performantelor sistemului.
Aceasta verificare se face punand acordul pentru la valoarea maxima si pentru la valoarea minima, iar valoarea se modifica pana aproape de . Daca marimea lui are ca efect o crestere a gradului stabilitate, imbunatatind performantele tranzitorii si departand sistemul de limita de stabilitate, atunci influenta componentei D este pozitiva. Pentru determinarea valorii optime a constantei , se mentine in jurul valorii si se mareste pana cand calitatea regimului tranzitoriu si deci gradul de stabilitate nu se mai imbunatatesc. Valoarea lui de la care se atinge acest efect este adoptata ca valoare optima.
Aplicarea acestei metode de acordare necesita precautie, avand in vedere ca procesul este fortat sa oscileze cu o anumita amplitudine a oscilatiilor, care poate deveni periculoasa in anumite conditii de functionare.
De mentionat ca atingerea limitei de stabilitate pentru SRA se poate ajunge si prin introducerea in bucla de reglare a unui releu ideal.
Alte metode practice de determinare a parametrilor optimi de acord au la baza raportul caracteristic pentru un proces cu timpul mort si o constanta de timp :
.
Pentru a determina parametrii ce caracterizeaza comportarea procesului la un semnal de comanda de tip treapta se parcurg urmatoarele etape:
se aplica la intrarea procesului care se afla in regim stationar caracterizat prin si , in bucla deschisa, la un moment de timp , o treapta de la la , care poate fi cuprinsa intre (10 20%) din intreaga scala;
se calculeaza noua valoare de regim stationar a iesirii si se inregistreaza raspunsul procesului la o intrare ;
se calculeaza parametrii modelului matematic cu relatiile:
, si
Cu valorile parametrilor , si obtinute pe cale experimentala se calculeaza parametrii de acord ai regulatoarelor PID folosind diferite relatii.
Relatiile Ziegler-Nichols:
pentru regulator P:
(24)
pentru regulator PI:
(25)
pentru regulator PID, cu q = 0:
(26)
pentru regulator PID, q = 1:
(27)
Relatiile W. Oppelt:
pentru regulator P:
(28)
pentru regulator PI:
(29)
pentru regulator PID:
(30)
Relatiile (30) sunt apropiate de relatiile (26).
Relatiile Kapelovici::
Pe baza unor cercetari experimentale, au fost stabilite relatii pentru calculul parametrilor optimi de acord, asigurand un raspuns tranzitoriu aperiodic cu durata minima si un raspuns cu suprareglaj maxim σ = 20%. In tabelul 3 sunt prezentate aceste relatii de calcul:
Tabelul 3
Tipul regulatorului |
Raspuns aperiodic si durata minima a raspunsului |
Raspuns oscilant cu σ = 20% si durata minima a raspunsului. |
I |
|
|
P |
|
|
PI |
|
|
PID |
|
|
Relatiile Chien, Hrones, Reswich
Pe baza unor incercari pe modele, in tabelele (4) si (5) relatiile de calcul ale parametrilor optimi de acord pentru o comportare optima la variatii treapta ale intrarii si la variatia perturbatiei. S-au luat in discutie raspunsuri tranzitorii aperiodice cu durata minima si raspuns cu σ = 20% si durata minima, atat la variatii ale marimii de intrare (tab. 4), cat si pentru comportarea optima la perturbatii (tab. 5). Reprezentarea grafica in scara logaritmica a relatiilor ce permit determinarea parametrilor de acord al unui regulator PID, pentru un proces ce contine timp mort si o constanta de timp, ilustreaza dependenta parametrilor de acord de acest raport .
De remarcat importanta deosebita a acestui raport asupra performantelor sistemului cu timp mort.
Tabelul 4
Tipul regulatorului |
Raspuns aperiodic si durata minima a raspunsului |
Raspuns oscilant cu σ = 20% si durata minima |
P |
|
|
PI |
|
|
PID |
|
|
Tabelul 5
Tipul regulatorului |
Raspuns aperiodic si durata minima a raspunsului |
Raspuns oscilant amortizat cu σ = 20% |
P |
|
|
PI |
|
|
PID |
|
|
Adoptarea unor relatii de acordare depinde de conditiile concrete in care functioneaza sistemul de reglare automata. Astfel, pentru un sistem in care marimea de intrare sufera variatii relativ frecvente (procese cu desfasurare discontinua, prezenta unui calculator la nivelul ierarhic superior, incadrarea regulatorului intr-o bucla interioara la reglarea in cascada sau intr-o schema de reglare de raport) se adopta relatiile din tabelul 3.
Diversitatea criteriilor practice de acordare a regulatoarelor evidentiaza faptul ca problema acordarii regulatoarelor pentru procese lente este o problema spinoasa, care depinde de gradul de cunoastere a procesului si experienta acumulata in alegerea si acordarea regulatoarelor.
Caracterul neliniar al proceselor, identificarea imprecisa a proceselor lente nu permit stabilirea unor relatii generale pentru calculul parametrilor de acord.
Metodele practice de acordare prin in cercari pot fi utilizate cu bune rezultate in alegerea si acordarea regulatoarelor pentru procese lente.
Tinand seama de analiza facuta in 3, pot fi utilizati pentru alegerea algoritmului si/sau a structurii de reglare a proceselor cu timp mort parametrii sintetici , respectiv . Pot fi intalnite urmatoarele situatii:
In acest caz nu se recomanda regulator PID acordat prin metode Ziegler-Nichols. Sunt recomandate regulile propuse de Cohen si Coon, Heng si Hegglund. Se recomanda, reglarea feedforward pentru procese cu valori mari ale timpului mort.
Desi < 1, procedura Ziegler-Nichols de acordare da rezultate slabe. Se recomanda utilizarea altor metode de acordare si structuri de reglare directa (feedforward) si cu predictor Smith.
Se obtin rezultate bune apeland la procedura Ziegler-Nichols de acordare a regulatoarelor PID. In acest caz, actiunea derivativa cel mai adesea contribuie la imbunatatirea performantelor.
Procesele cu integrator pot fi considerate ca procese stabile cu tinzand catre zero. In cazul in care cerintele de performanta nu sunt foarte ridicate, pot fi utilizate legile de reglare P sau PI. In unele cazuri, performantele pot fi imbunatatite semnificativ prin adaugarea componentei derivative.
In aceste situatii, se recomanda regulatoarele PD. Utilizarea unui regulator PID acordat prin metoda Ziegler-Nichols nu asigura performante bune. De remarcat faptul ca actiunea derivativa contribuie esential la obtinerea unor performante bune.
In conditiile unor incertitudini importante, tinand seama de cunostintele acumulate in activitatea de conducere a proceselor lente si foarte lente, se poate cu usurinta trece la structuri de conducere ierarhizate. Regulatoarele bazate pe cunostinte pot fi utilizate la nivelul ierarhic superior pentru selectia structurii de reglare (cu un grad de libertate, cu doua grade de libertate, reglare in cascada, reglare combinata sau reglare cu predictor Smith) si pentru alegerea si acordarea legii de reglare. Astfel, tinand seama de particularitatile procesului, de natura perturbatiilor si de cerintele de performanta impuse, se poate adopta solutia de reglare cea mai potrivita apeland la tehnici inteligente de conducere.
Un regulator proportional integral derivativ (regulator PID) este un mecanism generic de reglare in bucla cu reactie inversa (regulator) utilizat la scara larga in sistemele de reglare industriale. Un regulator PID incearca sa corecteze eroarea dintre o variabila de proces masurata si o marime de referinta dorita, prin calcularea si mai apoi determinarea unei actiuni de corectare care poate regla procesul in mod corespunzator si rapid, pentru a mentine o eroare minima.
Fig.1 O diagrama bloc a unui regulator PID
Calculul (algoritmul) regulatorului PID implica trei componente separate: valoarea proportionala, valoarea integrala si valoarea derivativa. Valoarea proportionala determina reactia la eroarea actuala, valoarea integrala determina raspunsul pe baza sumei erorilor recente si valoarea derivativa determina raspunsul in functie de nivelul de variatie a erorii.
Media ponderata a acestor actiuni este folosita pentru a regla procesul printr-un element de reglare precum pozitia unei valve de reglare sau de alimentare cu energie a unui element de incalzire. Prin acordarea celor trei constante in algoritmul regulatorului PID, acesta din urma poate furniza o lege de reglare proiectata pentru cerinte specifice ale procesului. Raspunsul regulatorului poate fi descris in termeni de putere de reactie a regulatorului la o eroare, nivelul la care regulatorul supraregleaza referinta si gradul de oscilatie al sistemului. Este de retinut faptul ca folosirea algoritmului de reglare PID nu garanteaza o reglare optima a sistemului si nici stabilitatea lui.
Anumite aplicatii pot cere folosirea doar a unuia sau doua dintre metodele disponibile pentru furnizarea unei reglari adecvate a sistemelor. Acest lucru se obtine prin impunerea cerintei de performanta ca iesirile nedorite sa fie zero. Un regulator PID se va numi un regulator PI, PD, P sau I in absenta respectivelor legi de reglare. Regulatoarele PI sunt indeosebi obisnuite, intrucat componenta derivativa este foarte sensibila la zgomotul de masurare si absenta caracteristicii integrale poate impiedica sistemul sa atinga cerintele de performanta impuse din cauza actiunii de reglare.
Datorita diversitatii domeniului teoriei si practicii reglarii, sunt uzitate mai multe denumiri conventionale pentru variabilele relevante.
Un exemplu familiar al unei reglari in bucla este efortul facut de o persoana pentru a mentine apa dusului la o temperatura ideala, efort ce implica combinarea a doua suvoaie de proces, de apa rece si de apa calda. Persoana atinge apa pentru a-i estima temperatura. Pe baza acestei masurari persoana respectiva realizeaza o actiune de reglare: foloseste robinetul de apa rece pentru a ajusta procesul. Persoana repeta aceasta bucla de reglare intrare-iesire, ajustand suvoiul de apa calda pana ce temperatura procesului este stabilizata la valoarea dorita.
Estimarea temperaturii apei prin atingere reprezinta o actiune de masurare a valorii procesului sau a variabilei procesului (VP). Temperatura dorita este numita masura de referinta (MR). Iesirea regulatorului si intrarea procesului (pozitia robinetului) se numeste variabila manipulata (VM). Diferenta intre valoarea masurata si masura de referinta reprezinta eroarea (e), adica prea cald sau prea rece si cat de cald sau rece.
Similar unui regulator, o persoana decide cat sa schimbe pozitia robinetului (VM) dupa ce estimeaza temperatura (VP), astfel rezultand eroarea. Prima estimare este echivalentul unei actiuni proportionale a unui regulator PID. Actiunea integrala a unui regulator PID poate fi obtinuta pe masura ce temperatura se regleaza pana cand este aproape de valoarea dorita. Actiunea derivativa poate fi obtinuta pe masura ce se observa ca apa devine mai calda sau mai rece, si cat de rapid se intampla acest lucru, anticipand o schimbare viitoare si temperand ajustarile pentru o curgere blanda la temperatura dorita (MR).
Operand o schimbare prea mare atunci cand eroare este mica este echivalent cu un regulator cu cerinte de performante inalte si va duce la suprareglaj. Daca regulatorul ar face in mod repetat variatii care ar fi prea mari si ar supraregla tinta in mod repetat, aceasta bucla de reglare ar fi denumita bucla instabila iar iesirea ar oscila in jurul masurii de referinta intr-o sinusoida constanta, crescatoare sau descrescatoare. O persoana nu ar putea face asta pentru ca oamenii sunt regulatoare de adaptare, ce invata din istoria procesului, dar regulatoarele PID nu au abilitatea de a invata si de aceea trebuie sa fie setate corect. Impunerea cerintelor corecte de performanta pentru o reglare eficienta este cunoscuta sub numele de acordarea regulatorului.
Daca un regulator porneste de la regimul stationar cu eroare zero (VP = MR), atunci variatii ulterioare ale regulatorului vor fi raspunsuri la variatiile altor intrari masurate sau nemasurate ale procesului ce il au impact asupra lui si in consecinta asupra VP-ul. Variabilele care influenteaza procesul, altele decat VM sunt cunoscute sub numele de perturbatii. Regulatoarele sunt folosite in general pentru a elimina perturbatiile si/sau pentru a implementa variatii in referinta. Schimbarile in temperatura de alimentare a apei constituie o perturbatie pentru procesul dusului.
In teorie, un regulator poate fi folosit pentru a regla orice proces ce are o iesire masurabila (VP), o valoare ideala cunoscuta a acelei iesiri (MR) si o intrare a procesului (VM) ce va afecta VP relevanta. Regulatoarele sunt folosite in industrie pentru a regla temperatura, presiunea, rata de curgere, compozitia chimica, viteza si practic orice alta variabila masurabila.
Ca urmare a istoriei lor vechi, simplitatii, teoriei bine fundamentata si cerintele de mentinere si setare simple, regulatoarele PID sunt optiuni bune pentru multe din aceste aplicatii.
Legea de reglare de tip PID este denumita dupa cele trei variabile ale sale de corectare, a caror suma constituie variabila manipulata (VM). Astfel:
unde Piesire, Iiesire, si Diesire sunt contributiile la iesirea procesului de reglare de tip PID fiecarei din aceste trei componente, asa cum sunt definite mai jos.
Componenta proportionala
Fig. 2 Un grafic VP vs timp, pentru 3 valori ale Kp (Ki si Kd considerate constante)
Componenta proportionala (uneori denumita performanta) imprima o variatie iesirii, proportionala cu valoarea actuala a erorii. Raspunsul proportional poate fi reglat multiplicand eroarea cu o constanta Kp numita performanta proportionala.
Componenta proportionala este determinata de:
unde
: variabila proportionala de iesire
: castigul proportional, un parametru de acord
: eroare = MR VP
: timpul sau timpul simultan (prezentul)
O performanta proportionala inalta determina o variatie mare a iesirii la o variatie data a erorii. In cazul in care performanta proportionala este prea inalta, sistemul poate deveni instabil. In contrapartida, o performanta proportionala scazuta determina un raspuns mic al iesirii la o eroare de intrare mare si un regulator mai putin reactiv (sau senzitiv). Daca performanta proportionala este prea mica, actiunea de reglare poate fi prea mica atunci cand raspunde la perturbatiile sistemului.
In absenta perturbatiilor, reglarea proportionala pura nu se va stabiliza la valoarea sa tinta, dar va retine o eroare de regim stationar ce este o functie de performanta proportionala si performanta procesului. In ciuda compromisului regimului stationar, atat teoria acordarii cat si practica industriala sugereaza ca caracteristica proportionala este cea care ar trebui sa determine cea mai mare parte din variatia iesiii.
Componenta integrala
Fig. 3 Un grafic VP vs timp pentru trei valori ale lui Ki (Kp si Kd se considera constante)
Contributia variabilei integrale este proportionala atat cu marimea erorii cat si cu durata erorii. Insumand eroarea instantanee in timp (integrand eroarea) se obtine compensarea cumulata care ar fi trebuit sa fie ajustata mai devreme. Eroarea cumulata este mai apoi multiplicata cu performanta integrala si adaugata iesirii regulatorului. Magnitudinea contributiei a componentei integrale la intreaga actiune de reglare este determinata de performanta integrala, Ki
Variabila integrala este determinata astfel:
unde
: Variabila integrativa a iesirii
: Castigul integrativ, un parametru de acordare
: Eroarea = MR VP
: Timpul sau timpul simultan (prezentul)
: O variabila integrala dummy
Componenta integrala (atunci cand este adaugata componentei proportionale) accelereaza miscarea procesului catre marimea de referinta si elimina eroarea reziduala in regim stationar ce apare doar la un regulator proportional. Totusi, intrucat variabila integrala raspunde la erorile cumulate din trecut, poate folosi valoarea prezenta pentru a ocoli marimea de referinta (trece peste marimea de referinta si apoi creeaza o deviere in cealalta directie).
Componenta derivata
Fig. 4 Un grafic VP vs timp pentru trei valori ale lui Kd (Kp si Ki se considera constante)
Viteza de variatie a erorii procesului e calculata prin determinarea coeficientului aferent erorii in timp (i.e. prima sa derivata fata de timp) si prin inmultirea acestei viteze de variatie cu performanta derivativa Kd. Marimea contributiei componentei derivative asupra legii de reglare totale este denumita performanta derivata, Kd.
Componenta derivata este data de:
unde
Componenta derivativa incetineste viteza de variatie a iesirii regulatorului si acest efect este cel mai evident aproape de marimea de referinta. Prin urmare, reglarea derivativa este utilizata pentru a reduce suprareglajul produs de componenta integrala si pentru a imbunatati stabilitatea corelata a procesului de reglare. Totusi, diferentierea unui semnal amplifica zgomotul si astfel aceasta componenta a regulatorului este extrem de sensibila la zgomotul si poate face ca procesul sa devina instabil daca zgomotul si performanta derivativa sunt suficient de mari.
Caracteristicile proportionala, integrala si derivativa sunt insumate pentru a calcula iesirea legii de reglare de tip PID. Definind u(t) ca iesirea regulatorului, forma finala a algoritmului PID este:
(31)
Si parametrii de acord sunt:
Performanta proportionala, Kp
Valori mai mari inseamna in mod normal un raspuns mai rapid deoarece cu cat eroarea este mai mare, cu atat este mai mare si compensatia caracteristicii proportionale. O performanta excesiv de mare conduce la o instabilitate si o oscilatie a procesului.
Performanta integrala, K
Valorile mai mari inseamna ca erorile de regim stationar sunt eliminate mai repede. Compromisul inseamna suprareglaj mai mare : orice eroare negativa integrata in timpul raspunsului tranzitoriu trebuie integrata separat de eroarea pozitiva inainte sa atingem starea de stationaritate.
Performanta derivativa, K
Valorile mai mari scad suprareglajul dar incetinesc raspunsul tranzitoriu si pot conduce la instabilitate datorita amplificarii semnalului de tip zgomot in diferentierea erorii.
Daca parametrii legii de reglare de tip PID (performanta caracteristicilor proportionale, integrale si derivative) sunt alesi incorect, intrarea procesului de reglare poate fi instabila, adica iesirea sa deviaza, cu sau fara oscilatie, si este limitata doar de saturatie sau perturbatii mecanice. A acorda bucla de reglare inseamna ajustarea parametrilor sai de reglare (performanta/legatura proportionala, performanta integrala/restabilita, performanta derivativa/masura) la valorile optime pentru obtinerea raspunsului de reglare dorit.
Comportamentul optim in variatia procesului sau variatia referintei difera in functie de aplicatie. Unele procese nu trebuie sa nu permita un suprareglaj al variabilei de proces dincolo de referinta daca, de exemplu, acest lucru ar fi nesigur. Alte procese trebuie sa minimalizeze energia consumata pentru atingerea unei noi referinte. In general, se cere ca raspunsul sa fie stabil (inversul instabilitatii) si procesul nu trebuie sa oscileze oricum am combina conditiile procesului cu marimile de referinta. Unele procese au un grad de non-liniaritate si astfel parametrii care lucreaza bine in conditii maxime nu lucreaza cand procesul incepe de la conditie nula.
Exista cateva metode pentru a acorda bucla PID. Cele mai eficiente metode implica in general dezvoltarea unor forme a modelului procesului, apoi alegerea P, I si D pe baza dinamicii parametrilor modelului. Metodele manuale de acordare pot fi relativ ineficiente.
Alegerea unei metode va depinde in mare parte de masura in care bucla poate fi luata sau nu offline pentru acordare, si de timpul de raspuns al sistemului. Daca sistemul poate fi luat offline, cea mai buna metoda de acordare deseori implica supunerea sistemului la un pas de variatie a intrarii, masurand iesirea ca o functie de timp si utilizand acest raspuns pentru a determina parametri legii de reglare.
Tabelul 6
METODA |
ALEGEREA UNEI METODE DE ACORDARE |
|
Avantaje |
Dezavantaje |
|
Acordare manuala |
Nu necesita calcule matematice. Metoda online |
Necesita personal experimentat |
ZieglerNichols |
Metoda demonstrata. Metoda online.. |
Procese dereglate, unele incercari-si-erori, acordari foarte agresive |
Instrumente Software |
Acordare consistenta. Metoda online sau offline. Poate include analiza valvelor si senzorilor. Permite simularea inaintea descarcarii. |
Unele costuri si traininguri implicate. |
Cohen-Coon |
Modele de proces bune. |
Unele calcule matematice. Metoda offline. Buna doar pentru procese de prima serie. |
Acordarea manuala
Daca sistemul trebuie sa ramana online, o metoda de acordare este setarea in prima instanta a valorilor Ki si Kd la zero. Apoi trebuie marita Kp pana cand iesirea buclei oscileaza, apoi Kp ar trebui sa fie lasat la aproximativ jumatate din valoare necesara in cazul unui raspuns de tip ,,amortizare in sfert de amplitudine. Apoi se cere marirea lui Ki pana orice compensatie este corecta in suficient timp pentru proces. Totusi, o valoare prea mare a lui Ki va produce instabilitate. In sfarsit, se mareste Kd daca este nevoie, pana ce bucla este acceptabil de rapida pentru a-si atinge referinta dupa o perturbatie mare. Totusi, o valoare prea mare a lui Kd va produce raspuns si suprareglaj excesive. O acordare rapida a buclei de reglare PID de obicei provoaca un suprareglaj mic pentru a atinge referinta mai repede; totusi, unele sisteme nu pot accepta suprareglajul, caz in care se cere un sistem in bucla inchisa de reglare,,prea umed ceea ce va necesita setarea Kp la o valoare semnificativ mai mica decat jumatate din valoarea lui Kp la care intervin oscilatii.
Efectele maririi parametrilor |
||||
Parametri |
Timpul de crestere |
Overshoot |
Timpul de legatura |
Eroarea la echilibru |
Kp |
Descreste |
Creste |
Schimbare mica |
Descrestere |
Ki |
Descreste |
Crestere |
Creste |
Elimina |
Kd |
Nedefinit (Descrestere mica sau crestere) |
Descreste |
Descreste |
Niciun efect |
Metoda ZieglerNichols
O alta metoda de acordare este cunoscuta in mod conventional ca metoda Ziegler-Nichols, introdusa de John G. Ziegler si Nathaniel B. Nichols. Ca si in cazul metodei de mai sus, performantele Ki si Kd sunt prima data stabilite la zero. Performanta P este crescuta pana ce atinge valoarea critica, Kc la care iesirea buclei de reglare incepe sa oscileze. Kc si perioada oscilatiei Pc, sunt utilizate pentru a stabili performantele in felul urmator:
Metoda ZieglerNichols |
||||
Tipul de Reglare |
Kp |
Ki |
Kd | |
P |
0.50Kc | |||
PI |
0.45Kc |
1.2Kp / Pc | ||
PID |
0.60Kc |
2Kp / Pc |
KpPc |
Software de acordare PID
Cele mai moderne facilitati industriale nu mai acorda buclele de reglare folosind metodele de calcul manual prezentate mai sus. In schimb, programele software de acordare PID si optimizare a buclei de reglare sunt utilizate pentru a garanta rezultate consistente. Aceste pachete de programe vor aduna datele, vor dezvolta modele de procese,si vor sugera acordarea optima. Unele pachete software pot chiar dezvolta acordarea prin strangerea de date de la variatiile referintei. Acordarea matematica a buclei PID induc un impuls in sistem, apoi utilizeaza frecventa raspunsului sistemului reglat pentru a desemna valorile buclei de reglare PID. In buclele cu timpi de raspuns de cateva minute, este recomandata acordarea matematica a buclei, pentru ca metoda incercari si erori pot dura cateva zile doar pentru a gasi un set stabil de valori ale buclei. Valorile optime sunt mai greu de gasit. Unele bucle de reglare digitale au o caracteristica de auto-reglare prin care variatii foarte mici ale referintei sunt trimise catre proces, permitand regulatorului insusi sa calculeze valorile de acordare optime. Alte formule sunt disponibile pentru acordarea buclei conform unor criterii de performanta diferite.
Algoritmul PID de baza prezinta unele provocari privind procesele de reglare care au fost provocate de modificari minore in formularul PID.
O problema comuna rezultata din implementarile teoretice ale PID este windup-ul integral. Aceasta problema poate fi provocata de:
Initializarea componentei integrale a regulatorului la o valoare dorita
Cresterea referintei cu o viteza potrivita
Ø Scoaterea din functiune a functiei integrale pana ce VP a intrat in zona de reglare
Ø Limitarea perioadei de timp in care eroare integrala este calculata
Ø Prevenirea acumularii de catre caracteristica integrala a unor valori predeterminate ale limitelor inferioare si superioare.
Multe bucle PID regleaza un dispozitiv mecanic (de exemplu, o valva). Intretinerea mecanica poate presupune un cost mare si folosirea regulatorului poate duce la degradarea raspunsului mecanic la un semnal de intrare, sub forma unui stiction sau deadband. Rata uzurii mecanice este determinata de cat de des un dispozitiv este activat pentru a se face o schimbare. Atunci cand uzura este o problema majora, e posibil ca bucla PID sa aiba un deadband de iesire pentru a reduce frecventa de activare a iesirii (valva). Acest lucru este obtinut prin modificarea regulatorului pentru a mentine iesirea stabila daca schimbarea ar fi mica (cuprinsa in sirul deadband definit). Iesirea calculata trebuie sa depaseasca deadband-ul inainte ca iesirea actuala sa se schimbe.
Caracteristicile proportionala si derivativa pot produce o miscare excesiva in iesire cand un sistem este supus la o crestere instantanee a vitezei erorii, precum o variatie mare a referintei. In cazul caracteristicii derivative, acest lucru se datoreaza luarii derivativei erorii, care este foarte mare in cazul unei schimbari instantanee a vitezei. Prin urmare, unii algoritmi PID suporta urmatoarele modificari:
Ø Derivativa iesirii
In acest caz, regulatorul PID masoara derivativa cantitatii de iesire, mai degraba decat derivativa erorii. Iesirea este intotdeauna continua ( adica niciodata nu are o variatie a vitezei). Pentru ca acest lucru sa fie eficient, derivata iesirii trebuie sa aiba acelasi semn ca derivata erorii.
Ø Cresterea referintei
In aceasta modificare, referinta este mutata gradual de la valoarea sa veche la o noua valoare specificata folosind o functie liniara sau o functie a vitezei la prima diferenta. Acest lucru evita discontinuitatea prezenta intr-o simpla schimbare a vitezei.
Ø Ponderarea referintei
Ponderarea referintei utilizeaza multiplicatori diferiti pentru eroare in functie de care element al regulatorului este utilizat. Eroarea in caracteristica integrala trebuie sa fie eroarea de procesului de reglare optima pentru a evita erori de regim stationar. Acest lucru afecteaza raspunsul referintei regulatorului. Acesti parametri nu afecteaza raspunsul la perturbatii si zgomot de masurare.
In timp ce regulatoarele PID sunt aplicabile in multe probleme de reglare, ei pot avea performante slabe in alte aplicatii.
Regulatorii PID, cand sunt folositi singuri, pot oferi performante slabe cand cerintele de performanta ale buclei de reglare PID trebuie reduse astfel incat sistemul regulator sa nu aiba suprareglaj, sa nu oscileze sau sa varieze in jurul marimii de referinta. Performanta sistemului regulator poate fi imbunatatita prin combinarea procesul de reglare feedback (sau bucla-inchisa) de reglare a unui regulator PID cu procesul de reglare feed-forward (sau bucla-deschisa).
Informatiile despre sistem ( cum ar fi inertia si acceleratia dorite) pot fi reglate feed-forward si pot fi combinate cu iesirea PID pentru a imbunatati performanta generala a sistemului. Doar valoarea reglarii feed-forward poate deseori sa ofere cea mai mare parte din iesirea regulatorului. Regulatorul PID poate fi atunci utilizat in primul rand pentru a raspunde la orice diferenta sau eroarea ce ramane intre referinta (SP) si valoarea actuala a variabilei de proces (PV). De vreme ce iesirea feed-forward nu este afectata de procesul feedback, nu poate determina sistemul de reglare sa oscileze, astfel imbunatatind raspunsul si stabilitatea sistemului.
De exemplu, in majoritatea sistemelor de reglare a miscarii, pentru a accelera incarcatura mecanica sub reglare, mai multa forta sau cuplu de torsiune sunt cerute de masina de forta prima, motor sau de transmisia electrica. Daca o viteza a buclei de reglare PID este folosita pentru a regla viteza sarcinii si comanda fortei sau a cuplului de sarcini fiind aplicate de masina de forta prime, atunci este benefica considerarea acceleratiei instantanee dorita pentru sarcina, scalarea adecvata a acelei valori si adaugarea la iesirea vitezei buclei de reglare PID. Acest lucru inseamna ca oricand sarcina este accelerata sau micsorata, o cantitate proportionala de forta este comandata de masina de forta prime indiferent de reglarea feedback. In aceasta situatie, bucla PID foloseste informatiile feedback pentru a imprima orice crestere sau descrestere a iesirii combinate pentru a reduce diferenta ramasa intre referinta procesului si feedback. Lucrand impreuna, bucla deschisa de reglare feed-forward si bucla inchisa de reglare pot oferi un sistem de reglare mai sensibil, stabil si de incredere.
O alta problema cu care se confrunta regulatoarele PID este aceea ca sunt liniari. Astfel, performanta regulatoarelor PID in sistemele non-liniare (precum sistemele HVAC) este variabila. Deseori regulatoarele PID sunt mariti prin metode precum PID gain scheduling sau fuzzy logic. Problemele ale aplicatiilor practice viitoare pot aparea de la instrumentarea conectata la regulator. Pentru a obtine o performanta adecvata a reglarii sunt necesare o rata destul de mare de esantion, masurarea preciziei si masurarea acuratetei .
O problema a caracteristicii derivative este faptul ca cantitati mici masurare sau zgomotul procesului pot provoca variatii mari ale iesirii. De obicei, este de ajutor filtrarea masurarilor cu un filtru low-pass pentru a indeparta componentele de zgomot cu frecventa mare. Totusi, filtrarile low-pass si reglarea derivativelor se pot anula una pe cealalta, deci reducerea zgomotului prin instrumentatie este o alegere mult mai buna. Alternativ, banda diferentiala poate fi inchisa in multe sisteme cu pierderi mici de reglare. Acest lucru este echivalent cu folosirea regulatorului PID ca un regulator PI.
Un avantaj distinct al regulatoarelor PID este acela ca dooua regulatoare PID pot fi folosite impreuna pentru a produce o performanta dinamica mai buna. Acesta se numeste reglarea PID in cascada. In reglarea in cascada sunt doua PID-uri aranjate astfel incat un PID regleaza referinta celuilalt. Un regulator PID actioneaza ca o bucla de reglare exterioara, care regleaza parametrul fizic initial, precum nivelul fluid al vitezei. Celalalt regulator actioneaza ca o bucla de reglare interioara, care citeste iesirea buclei de reglare exterioara ca referinta, de obicei regland un parametru, rata a fluxului sau acceleratie cu variatie mare. Poate fi demonstrat matematic ca frecventa de lucru a regulatorului este crescuta si timpul constant al obiectului este redus folosind regulatorul PID in cascada.
In istoria timpurie a procesului automatic de reglare, regulatorul PID a fost implementat ca un dispozitiv mecanic. Acesti regulatori mecanici foloseau un lever, spring si mass si erau deseori alimentati cu aer comprimat. Acesti regulatori pneumatici erau odata standardul industriei.
Regulatorii electronici analogi pot fi facuti dintr-un semiconductor sau tub de amplificare, un condensator si o rezistenta. Buclele de reglare electronica analogica PID erau deseori gasite in niste sisteme electronice mult mai complexe, de exemplu, pozitionarea ventilatorului unui disk-drive, conditionarea energiei unei alimentari cu energie, sau chiar circuitul detectarii de miscare al unui seismometru modern. In zilele noastre, regulatorii electronici au fost in mare parte inlocuiti de regulatorii digitali, implementati cu microregulatoare sau FPGAs.
Cele mai moderne regulatoare PID din industrie sunt implementate in legi de reglare logice programabili (PLCs) sau ca regulatoare digitale cu panel de montare. Implementarile software au avantajul ca sunt relative ieftine si sunt flexibile in ceea ce priveste implementarea algoritmului PID.
Exemplu
Iata o bucla simpla de software care implementeaza un algoritm PID
previous_error = 0
integral = 0
start:(32)
unde
Ti este timpul integral
Td is the timpul derivativ
In legea de reglare ideala paralela
(33)
parametrii de performanta sunt relationati cu parametrii legii de reglare standard prin si . Aceasta lege paralela in care parametrii sunt considerati simple performante, este cea mai generala si flexibila forma. Totusi, este de asemenea si legea in care parametrii au cea mai mica interpretare fizica si este rezervata in general pentru tratarea teoretica a regulatoarelor PID. Legea standard, in ciuda faptului ca este usor mai complexa din punct de vedere matematic, este mai des folosita in industrie.
Cateodata este util sa scriem regulatorul PID in forma Laplace:
(34)
Avand regulatorul PID scris in legea Laplace si avand functia de transfer a sistemului de reglare, este mai usor sa determinam functia de transfer a buclei inchise a sistemului.
O alta lege de reprezentare a regulatorului PID este legea seriala sau de interactionare
(35)
Unde parametrii sunt legati de parametrii legii standard prin:
si cu
Aceasta lege consta intru-un regulator PD si un regulator PI in serie, si a facut ca regulatorii timpurii sa fie mai usor de construit. Cand regulatorii au devenit digitali mai tarziu, multi au continuat sa foloseasca legea de interactionare.
Folosirea echipamentelor numerice pentru reglarea automata a sistemelor, a condus la introducerea unei viziuni tehnice noi in Automatica. Sistemele de reglare automata continue au fost inlocuite cu sisteme numerice de reglare, iar calculatorul ofera calitati inteligente in faza de proiectare si implementare a comenzii. Un algoritm numeric de comanda, cu doua grade de libertate de tip RST este propus si o colectie de metode consacrate, pentru proiectarea comenzii bazata pe model, sunt prezentate. Aceste metode se gasesc la originea multor algoritmi de reglare, cu structuri de la cele mai simple de tip clasic PID, pana la cele mai complexe, bazate pe tehnici predictive, adaptive sau robuste.
Pentru proiectarea algoritmului de reglare (comanda) este necesara specificarea performantelor dorite pentru sistemul in bucla inchisa si cunoasterea modelului dinamic al procesului (model de comanda si/sau de perturbatie).
Considerand aceste elemente date, obiectivul este de a determina structura si parametrii algoritmului de comanda.
Structura numerica a unui sistem in bucla inchisa este ilustrata de Figura 5.
Fig. 5: Sistem numeric in bucla inchisa.
Ansamblu CNA-proces continuu-CAN, reprezinta procesul discretizat PD, la care intrarea este secventa kN si iesirea este secventa kN . Intrarea uc si iesirea yc din Figura 1 sunt marimi intermediare asociate procesului continuu.
Structura de reglare numerica propusa, ofera urmatoarele avantaje: frecventa de esantionare este aleasa in functie de banda de trecere a procesului continuu, sinteza directa a comenzii este adaptata la modelul procesului discretizat si folosirea inteligentei calculatorului pentru proiectarea unor algoritmi de comanda mai performanti decat algoritmii clasici, traditionali.
O lege numerica de reglare poate fi exprimata in reprezentare generala dupa cum urmeaza :
(36)
In aceasta relatie, r(k) este marimea de referinta, u(k) este comanda numerica, y(k) este iesirea sistemului si , , sunt parametrii regulatorului numeric.
In majoritatea cazurilor, algoritmii de reglare pot fi reprezentati prin ecuatia (1) si numai memoria lor (numarul coeficientilor) schimba comportamentul comenzii. Aceasta memorie este dictata de complexitatea procesului si de performantele impuse pentru sistemul in bucla inchisa
Plecand de la expresia (36) data mai sus, este posibila constructia unor structuri particulare de algoritmi pentru proiectarea si calculul comenzii numerice. Vom considera in acest subcapitol un algoritm numeric, cu doua grade de libertate de tip RST, care permite o mai mare flexibilitate si uniformitate pentru proiectarea si implementarea comenzii in sistemele numerice de reglare
Putem folosi operatorul de intarziere q-1 pentru a exprima (1) intr-o forma polinomiala, echivalenta:
(37)
unde:
In fapt, polinoamele R, S si T sunt componente ale comenzii regulatorului numeric.
Structura sistemului numeric corespunzatoare ecuatiei
(37) este prezentata de Fig. 6.
Fig. 6: Structura numerica cu algoritm de reglare de tip RST
In aceasta reprezentare, modelul matematic al procesului comandat, presupus cunoscut, este de tip ARX, dat de polinoamele A si B:
(39)
Functia de transfer globala a sistemului reprezentat de Figura 3 se exprima dupa cum urmeaza:
(40)
Structura precedenta poate fi imbunatatita cu ajutorul unui modul aditional (generator de traiectorie) pentru constructia unui sistem cu performante independente in urmarire (la schimbarea referintei) si in reglare (la respingerea perturbatiilor).
In acest caz, o traiectorie de referinta y*(k) este construita cu ajutorul generatorului de traiectorie Bm(q-1)/Am(q-1) de tip ARX, ca in Fig. 7, unde:
(41)
Cu aceasta imbunatatire, transferul global r(k)->y(k), este exprimat prin relatia evidenta, care include si actiunea suplimentara a generatorului de urmarire :
(42)
Fig. 7 Comanda RST cu generator de traiectorie
Intr-o configuratie clasica de reglare, regulatorul PID continuu cu filtraj pe actiunea derivativa, este definit prin functia de transfer traditionala:
(43)
Notam prin: KIR castigul sau amplificarea regulatorului, Ti Td IR* constante pentru actiunea integrala, respectiv derivativa, N IN* - constanta de filtraj. Intrarea in algoritmul de comanda este eroarea de reglare, adica diferenta dintre marimea de referinta si marimea de iesire reglata, iar marimea de la iesirea din regulator este comanda numerica u(k).
Sa notam ca algoritmul PID descris prin relatia (9) se aplica cu cele mai bune rezultate pentru procese reprezentate prin modele de ordinul unu si doi fara, si cu timp mort avand limitare la timpul mort (inferior unei perioade de esantionare).
Regulatorul PID numeric este obtinut prin discretizarea algoritmului PID continuu, folosind spre exemplu urmatoarea relatie aproximativa:
unde h este perioda de esantionare.
Obtinem atunci functia de transfer discreta :
(44)
Din relatia (44), se obtine imediat expresia functiei de transfer in operatorul de intarziere q-1:
(45)
unde:
(46)
Este posibila exprimarea algoritmului PID sub forma canonica RST prin polinoame de ordinul doi cu restrictia T=R, dupa cum urmeaza
(47)
Remarcam faptul ca regulatorul numeric este caracterizat prin 4 parametri: r0, r1, r2 si s1, ce urmeaza sa fie evaluati in faza de proiectare. Schema sistemului in bucla inchisa este reprezentata in Fig. 8, iar functia de transfer in acest caz se scrie ca mai jos:
Fig. 8 Sistem de reglare cu comanda PID exprimata in forma canonica RST.
Sa notam ca factorul (1-q-1) exprima efectul de integrare (numerica), iar factorul (1 + s1q-1) exprima efectul de filtrare (numerica).
Performantele sistemului pot fi specificate, in conformitate cu metoda alocarii polilor pentru sistemul in bucla inchisa, printr-o distributie de poli dorita, introdusa prin polinomul caracteristic al sistemului P(q-1), cu exprimarea urmatoare:
(48)
In practica, se alege P(q-1) un polinom de ordinul doi (cu coeficienti cunoscuti, respectiv radacini impuse) sugerat de existenta unei solutii pentru ecuatia polinomiala din (48), deci avem:
Acesta reprezinta, echivalentul discretizat al unui model continuu de ordinul doi, in reprezentare standard
Rezulta ca, pentru calculul parametrilor regulatorului PID trebuie rezolvata urmatoarea ecuatie polinomiala
Se pot face urmatoarele comentarii :
Produsul B(q-1)R(q-1) defineste zerourile sistemului in bucla inchisa. Regulatorul PID nu simplifica deci zerourile procesului si atunci algoritmul PID poate fi folosit si pentru reglarea proceselor avand un model cu zerouri instabile;
Regulatorul PID introduce zerouri suplimentare prin factorul R(q-1), care depinde de A(q-1), B(q-1) si P(q-1) si care pot afecta performantele tranzitorii ale sistemului.
Regulatorul PID in versiune ameliorata este un PID numeric care nu introduce zerouri suplimentare, contrar cu cazul precedent.
Pentru a obtine efectul scontat, functia de transfer dorita in bucla inchisa se impune de la inceput, sub forma:
(49)
unde B(q-1) reprezinta zerourile procesului care raman neafectate, P(q-1) defineste polii alocati pentru sistemul in bucla inchisa si factorul P(1)/B(1) este introdus pentru a asigura un castig static unitar de la marimea de intrare (referinta) la iesirea sistemului. Polinomul P(q-1) verifica de asemenea identitatea.
Pentru a putea ajunge la structura numerica ilustrata de Fig. 6, impunem conditia naturala ca perechea S(q-1) si R(q-1) sa fie obtinuta din ecuatia (47).
Functia de transfer a sistemului in bucla inchisa se identifica cu cea impusa prin relatia (49).
(50)
Rezulta imediat, exprimarea polinomului T(q-1):
(51)
deoarece S(1) = 0 si atunci, P(l) = B(1)R(1).
Regulatorul PID versiunea ameliorata, contine polinoamele S(q-1) si R(q-1) identice cu cele ale algoritmului PID precedent, singura diferenta este ca T(q-1) =R(l) (o constanta), in loc de T(q-1) = R(q-1) (un polinom de gradul doi).
In acest caz, se pastreaza castigul static unitar al sistemului in bucla inchisa fara sa introducem efectul zerourilor prin R(q-1).
Alocarea polilor este o strategie cunoscuta care se aplica aici pentru calculul unui regulator RST fara restrictie pentru gradele polinoamelor A(q-1), B(q-1) daca nu au factori comuni (adica daca sunt coprime), fara restrictie pentru timpul mort si pentru zerourile procesului.
Este o metoda de proiectare in care nu se simplifica deci zerourile procesului. Procesul este dat prin modelul sau cunoscut, sub forma :
(52)
unde d este timpul mort, un numar intreg al perioadei de esantionare, iar modelul este exprimat prin polinoamele:
(53)
In acest caz, functia de transfer a sistemului in bucla inchisa (ansamblul proces si regulator RST) se exprima astfel:
(54)
unde prin polinomul caracteristic:
(55)
se specifica asa cum s-a precizat, performantele sistemului de reglare.
Pornind de la relatiile anterioare, putem sa scriem ecuatia polinomiala care aloca polii doriti :
(56)
Ecuatia (56) are o solutie unica in conditiile urmatoare:
Pentru a rezolva ecuatia (56) folosim forma matriciala de reprezentare:
unde:
si M este matricea lui Sylvester (de dimensiunea (na+nb+d+1) x (na+nb+d+1)) asociata polinoamelor A(q-1) si B(q-1). Polinoamele A(q-1) si B(q-1) fiind coprime, este bine cunoscut ca aceasta matrice este inversabila.
Vectorul x care contine coeficientii necunoscuti ai polinoamelor S(q-1) si R(q-1) se obtine atunci simplu prin inversarea matricei M :
In practica, dorim ca iesirea y(k) a sistemului de reglare sa urmareasca o traiectorie impusa y*(k). Aceasta traiectorie poate sa fie generata si memorata cu ajutorul unui model de referinta, ca in Fig. 7.
Functia de transfer a modelului de referinta, generatorului de traiectorie, este de forma :
,
unde polinoamele Am(q-1) si Bm(q-1), sunt definite prin relatiile (41). Prin raspunsul acestui model se genereaza traiectoria dorita, iar relatia de mai sus, reprezinta exprimarea discretizata a unui model continuu de ordin 2 in reprezentare standardizata, de forma:
.
Este de precizat faptul ca aceasta functie de transfer trebuie sa fie realizata de la referinta r(k) si iesirea y(k). In cazul metodei alocarii polilor, nu este posibil acest lucru deoarece se pastreaza zerourile procesului (adica al polinomului B(q-1)) si intarzierea pura nu poate fi compensata.
Are loc identitatea urmatoare (vezi schema din Fig. 7):
Rezulta ca T(q-1) trebuie sa contina termeni nenuli in q+1,.., qd+1, ceea ce ar contrazice definitia din (38).
Obiectivul va fi atunci sa generam traiectoria de referinta, cu relatia:
si sa alegem T(q-1) pentru un transfer ideal, unitar, intre y*(k) si y(k) iar performantele dinamice in reglare sa fie asigurate prin P(q-1).
Acest rationament ne conduce la alegerea evidenta pentru polinomul T(q-1):
unde G este un castig constant, definit prin:
.
Aceasta alegere conduce la exprimarea urmatoare pentru marimea reglata,
Aceasta metoda permite obtinerea comportamentului dorit al sistemului in urmarire (la schimbarea marimii de referinta) independent de comportamentul impus aceluiasi sistem, in reglare (la respingerea perturbatiilor).
Contrar cu metoda de alocare a polilor, aceasta metoda conduce la simplificarea zerourilor modelului procesului, si asigura deci realizarea performantelor dorite in urmarire si in reglare, ca doua obiective independente.
Strategia de proiectare dezvoltata in continuare, permite calcularea unui regulator numeric RST pentru sisteme stabile si instabile, fara restrictii impuse pentru gradele polinoamelor A(q-1) si B(q-1) ale modelului procesului si pentru timpul mort al procesului.
Ca urmare a simplificarii zerourilor, ea se aplica numai la modele care au zerourile stabile (sisteme cu faza minima). Aceasta metoda nu tolereaza atunci o valoare fractionara a timpului mort, superioara unei jumatati din perioada de esantionare.
Structura sistemului in bucla inchisa este cea reprezentata de Fig. 7. Iesirea din modelul de urmarire Bm(q-1)/Am(q-1) specifica traiectoria dorita y*(k), care trebuie sa fie urmarita de y(k), eventual intarziata cu timpul (d+1). Rezulta ca r(k) contribuie la calculul valorii y*(k-d-1) = y(k) prin generatorul de traiectorie.
Polii in bucla inchisa sunt alocati prin polinomul caracteristic P(q-1).
Calculul pentru polinoamele R(q-1), S(q-1) si T(q-1) se face in doua etape. In prima etapa, cu ajutorul R(q-1) si S(q-1), trebuie sa alocam polii pentru bucla inchisa specificati prin P(q-1) (obiectiv in reglare) si simplificam zerourile modelului esantionat al procesului. In a doua etapa, determinam precompensatorul T(q-1) , pentru a reproduce traiectoria de referinta y*(k-d-1) la iesirea sistemului in bucla inchisa.
Ca sa punem in evidenta intarzierea pura a sistemului, consideram urmatoarea exprimare pentru polinomul B:
(57)
Daca eliminam modelul de urmarire si precompensatorul din schema din Fig. 6, functia de transfer in bucla inchisa se exprima dupa cum urmeaza:
(58)
Impunem acum conditia:
(59)
Polinomul P(q-1) fiind deja specificat, obtinem ecuatia :
(60)
care permite calculul lui R(q-1) si S(q-1).
Introducem o factorizare pentru polinomul S(q-1) de forma :
Obtinem atunci o exprimare redusa a ecuatiei (25):
(61)
Aceasta ecuatie are o solutie unica pentru:
(62)
Ecuatia (61) poate fi pusa sub forma matriceala:
,
unde M este matricea lui Sylvester, avand dimensiunile (na+d+2) x (na + d + 2) si evident:
(63)
Aici pi sunt coeficientii polinomului caracteristic P(q-1), dupa notatia obisnuita. Solutia ecuatiei (61) se obtine atunci prin inversarea matricei M:
Polinomul T(q-1) este calculat impunand conditia naturala ca sistemul din Fig. 7 (obtinut prin atasarea generatorului de traiectorie si a precompensatorului T) sa se comporte ca un model de urmarire cu iesirea intarziata prin (d + 1) pasi :
(64)
Am stabilit deja pentru configuratia in bucla inchisa, ca:
(65)
din conditia de transfer ideal (unitar) de la referinta r la iesirea y, rezulta simplu identitatea intre T si P adica, T(q-1) = P(q-1).
Regulatorul va fi descris atunci prin ecuatia urmatoare:
(66)
Daca tinem cont de forma lui S(q-1):
(67)
deducem ca s0 =b1 si atunci:
(68)
Ecuatia comenzii devine:
Acest tip de comanda se obtine printr-o extindere a metodei precedente. Efectul de ponderare se obtine datorita modificarii polinomului S(q-1) din structura regulatorului RST.
In esenta, aceasta metoda de calcul permite reducerea energiei de comanda prin introducerea unui termen auxiliar, cu posibilitatea de a regla procese cu zerouri instabile.
Configuratia de calcul este la fel cu cea utilizata in metoda anterioara de proiectare pentru urmarire si reglare cu obiective independente, unde polinomul S(q-1) este inlocuit cu S(q-1)+Q(q-1).
Elementul de ponderare a energiei este deci polinomul Q(q-1),definit dupa cum urmeaza:
(69)
unde pondereaza variatiile in amplitudine a comenzii, iar elementul produce o filtrare suplimentara
Introducerea lui Q(q-1) va modifica polii doriti in bucla inchisa specificati prin polinomul P(q-1). Trebuie sa ne asiguram ca, pentru fiecare , sistemul ramane stabil si conserva performantele impuse.
Pentru determinarea parametrilor regulatorului, sunt necesare doua etape. Se calculeaza in primul rand polinoamele R, S, T pentru Q=0 (urmarire si reglare) si se studiaza efectul ponderii cu Q(q-1).
Pentru moment, consideram Q≡ 0. Daca revenim la schema din Figura 6 si daca impunem din nou conditia ca iesirea y(k) sa fie identificata cu traiectoria dorita intarziata cu (d+1) pasi y*(kd-1), atunci metoda precedenta ne furnizeaza polinoamele R, S si T. Reamintim ca T(q-1) = P(q-1) si P verifica ecuatia (61).
In continuare, vom pastra aceste polinoame si vom introduce polinomul de ponderare.
Functia de transfer globala H*RST(q-1) se exprima atunci astfel:
(70)
In consecinta, ecuatia legii de reglare se scrie dupa cum urmeaza:
(71)
adica :
(72)
Putem sa constatam in plus, ca legea de comanda minimalizeaza criteriul patratic urmator:
(73)
construit din termenul dat de patratul erorii de urmarire filtrat de P(q-1) si energia comenzii ponderata de b1Q(q-1). Putem constata usor ca din conditia:
(74)
rezulta exact valoarea optimala u(k), exprimata prin (72) ca mai sus.
Un sistem embedded este un dispozitiv special proiectat pentru indeplinirea uneia sau a mai multor functii dedicate, deseori cu anumite constrangeri pentru procesarea in timp real. De obicei este embedded ca o parte a unui dispozitiv complet incluzand hardware si parti mecanice. In contrast, un computer cu scop general, precum un personal computer, poate indeplini diferite sarcini depinzand de programare. Sistemele embedded controleaza multe din dispozitivele obisnuite utilizate astazi.
Deoarece sistemul embedded este dedicat unor sarcini specifice, inginerii de proiectare il pot optimiza, reducand marimea si costul produsului, sau crescand increderea si performanta. Unele sisteme embedded sunt produse in masa, beneficiind de economiile la scala.
Fizic, sistemele embedded variaza de la dispozitive portabile precum ceasuri digitale si mp4 playere, la instalatii mari fixe precum semafoare, regulatoare industriale sau sisteme care controleaza uzinele pe baza de energie nucleara. Complexitatea variaza de la scazuta cu un singur microcontroller chip, la mare, cu mai multe unitati, periferice si retele montate in interiorul unui sasiu mare sau
In general, sistemele embedded nu sunt un termen definit cu exactitate, de vreme ce multe sisteme au unele elemente de programabilitate. De exemplu, computerele handheld au cateva elemente comune cu sistemele embedded precm sistemele de operare si microprocesoarele care le alimenteaza - dar nu sunt cu adevarat sisteme embedded, pentru ca ele permit incarcarea unor aplicatii diferite sau conectarea unor periferice.
Fig. 9 Motorul PC-ului ALIX.1C Mini-ITX suprafata embedded cu un x86 AMD Geode LX 800 impreuna cu Compact Flash, miniPCI si slot-uri PCI, interfata 22-pin IDE, audio, USB si 256MB RAM
Fig. 10 Un RouterBoard embedded 112 cu U.FL-RSMA pigtail and R52 miniPCI Wi-Fi card larg utilizat de furnizorii de Internet wireless(WISPs) in Cehia.
Sistemele embedded deschid multe aspecte ale vietii moderne si exista multe exemple ale utilizarii lor.
Sistemele de telecomunicatii folosesc numeroase sisteme embedded de la switch-uri de telefonie pentru retea la telefoane mobile la utilizatorul final. Retelele de calculatoare folosesc routere speciale si punti de retea pentru a conduce datele.
Produsele electronice destinate consumatorilor includ PDA-uri, mp3 playere, telefoane mobile, console pentru jocuri video, camere digitale, DVD playere, dispozitive GPS si imprimante.
Multe dintre aparatele utilizate in casa, precum cuptoarele cu microunde, masinile de spalat haine si masinile de spalat vase, include sisteme embedded pentru a oferi flexibilitate, eficienta si caracteristici. Sistemele HVAC avansate utilizeaza termostate in retea pentru un control mai precis si mai eficient al temperaturii care se pot schimba in functie de timpul zilei sau de anotimp. Automatizarile pentru uz casnic folosesc retele cu fir si retele fara fir care pot fi folosite pentru reglarea luminii, climatului, securitatii, supravegherii, audio/visual etc., dintre care toate folosesc dispozitive embedded pentru sensibilizare si control.
Sistemele de transport de la zboruri la automobile folosesc din ce in ce mai mult sisteme embedded. Avioanele noi contin dispozitive avansate precum sisteme de ghidare inertiala si receivere GPS care au de asemenea, cerinte mari de siguranta. Diferitele motoare electrice - motoarele DC, motoarele de inductie si aparatele DC fara motor - utilizeaza regulatori de motor electrici/electronici. Automobilele, vehiculele electrice si vehiculele hibrid folosesc din ce in ce mai mult sistemele embedded pentru a maximaliza eficienta si pentru a reduce poluarea. Alte sisteme automotive de securitate precum sistemul de franare ABS, dereglare a stabilitatii electronice(ESC/ESP), controlul tractiunii(TCS) si sistemul automatic de patru roti motoare.
Echipamentul medical continua sa avanseze cu mai multe sisteme embedded pentru monitorizarea semnelor vitale, stetoscoape electronice pentru amplificarea sunetelor si diferite imagini medicale (PET, SPECT, CT, MRI) pentru investigatiile interne.
In plus, fata de sistemele embedded obisnuite prezentate, bazate pe computere mici, o noua categorie de dispozitive fara fir, numite motes castiga repede popularitate pe masura ce gama retelelor cu senzori fara fir creste. Retelele cu senzori fara fir (WSN) se folosesc de miniaturizarea facuta posibila de proiectarea avansata IC pentru a lega subsistemele complet fara fir de senzori sofisticati, permitand oamenilor si companiilor sa masoare un numar mare de lucruri in lumea fizica si actioneaza pe baza acestor informatii prin intermediul monitorizarii IT si sistemele de reglare.
Aceste particule sunt complet independente, si vor descarca in mod obisnuit o baterie in ani de zile, inainte de a fi nevoie sa fie schimbata sau incarcata.
In perioada timpurie a computerelor in anii 1930-1040, acestea erau uneori destinate unei singure sarcini, dar erau de departe mult prea mari si prea scumpe pentru majoritatea tipurilor de sarcini executate de computerele embedded de astazi. De-a lungul timpului, insa, conceptual de regulatori programabili a evoluat de la forma traditionala electromecanica succesiva, prin intermediul dispozitivelor cu semiconductoare, la utilizarea tehnologiei computerizata.
Unul dintre primele sisteme embedded moderne recunoscute este Apollo Guidance Computer, dezvoltat de Charles Stark Draper la Laboratoarele de Aparatura a MIT. La debutul proiectului, computerul de conducere Apollo era considerat cel mai riscant punct din cadrul proiectului Apollo dupa cum a folosit circuitele monolitice integrate pentru a reduce marimea si greutatea. Un sistem embedded timpuriu produs in masa a fost computerul de bord Autonetics D-17 pentru proiectilul Minuteman , lansat in 1961. A fost construit dintr-un tranzistor logic si avea un hard disk pentru memoria principala. Cand Minuteman II a intrat in productie in 1966, D-17 a fost inlocuit de un computer nou care a reprezentat prima utilizare a circuitelor integrate cu volum ridicat. Acest program a redus preturile pentru poarta nand ICs de la 1000$ bucata la 3$ bucata, permitand utilizarea lor in produsele comerciale.
De vreme ce aceste aplicatii timpurii in anii 1960 , pretul sistemelor embedded a scazut si acest lucru a reprezentat o crestere dramatica in puterea si functionalitatea procesarii. De exemplu, primul microprocessor, Intel 4004, a fost proiectat pentru calculatoare si alte sisteme mici, dar tot cerea multa memorie externa si chip-uri de suport.
In 1978, National Engineering Manufacturers Association a lansat un ,,standard pentru microcontroller-ele programabile, incluzand aproape orice regulator bazat pe computer, precum computerele cu o singura banda, numerice, si regulatoarele event based.
Deoarece costul microprocesoarelor si microcontroller-elor s-a prabusit, a devenit posibila inlocuirea componente analoage knob-based scumpe, precum potentiometrii si condensatori variabili cu taste de sageti (sus/jos) sau noduri read out de un microprocesor chiar in unele produse destinate consumatorilor. Pana la mijlocul anilor 1980, majoritatea componentelor de sistem externe anterioare au fost integrate in acelasi chip cu procesorul si aceasta forma a microcontroller-ului a permis o gama si mai larga de utilizare, care pana la sfarsitul decadei erau mai degraba modelul, decat exceptia pentru majoritatea dispozitivelor electronice.
Integrarea microcontroller-elor a crescut in continuare numarul aplicatiilor pentru care sistemele embedded sunt utilizate in domenii unde, in mod traditional, un computer nu ar fi fost luat in considerare. Un scop general si, comparative, un microcontroller low-cost, ar putea fi deseori programate pentru a indeplini acelasi rol ca un numar mare de componente separate.
Desi, in acest context, un sistem embedded este de obicei mai complex decat o solutie traditionala, o mare pare a complexitatii este cuprinsa in cadrul microcontroller-ului insusi. Foarte putine componente aditionale ar putea fi necesare si o mare parte din efortul de realizare a proiectului priveste software-ul. Natura intangibila a software-ului face mult mai usoara desavarsirea modelului si testarea noilor revizii comparate cu proiectarea si construirea unui nou circuit, fara a utiliza un procesor embedded.
Fig. 11 Soekris net4801, un sistem embedded planificat pentru aplicatiile de retea.
Ø Sistemele embedded sunt mai degraba proiectate sa indeplineasca unele sarcini specifice, decat sa fie un computer universal pentru sarcini multiple. Unele au, de asemenea, o constrangere a performantei in timp real care trebuie indeplinita , din motive de siguranta si utilizabilitate; altele pot avea cerinte scazute de performanta sau deloc, permitand
Ø Sistemele embedded nu sunt intotdeauna dispozitive de sine statatoare. Multe sisteme embedded sunt formate din parti mici, computerizate in cadrul unui dispozitiv mai mare care serveste unui scop mai general. De exemplu, chitara Gibson Robot se caracterizeaza printr-un sistem embedded de acordare a coardelor, dar scopul general Chitarei Robot este, desigur, de a canta. In mod similar, un sistem embedded la un automobile asigura o functie specifica ca un subsistem al masinii insasi.
Ø Instructiunile programului scrise pentru sistemele embedded sunt denumite firmware, si sunt stocate in memoria doar de citire(read-only) sau in chipurile Flash memory. Functioneaza cu resurse limitate ale computerului: memorie putina, tastatura mica sau inexistenta si/sau ecran.
Fig. 12 Interfetele cu utiliztorul in sistemele embedded folosind Micro VGA
Sistemele simple
Dispozitivele simple embedded utilizeaza butoane, led-uri si litere mici sau doar afisaje digitale, deseori cu un meniu simplu al sistemului.
Sistemele mai complexe
Un ecran grafic plin, cu senzori de atingere sau taste la baza ecranului ofera flexibilitate in timp ce minimalizeaza spatiul utilizat: rolul tastelor se poate schimba cu ecranul, si selectia implica comportamentul natural in indicarea a ceea ce se doreste.
Sistemele handheld deseori au un ecran cu un joystick button pentru un dispozitiv de indicare.
Multe sisteme au interfete de sustinere sau de testare care ofera un meniu sau un sistem de comanda prin intermediul interfetei RS-322. Acest lucru evita costul unui afisaj, dar ofera multa reglare. In orice caz, majoritatea consumatorilor nu pot asambla cablurile necesare.
Raspandirea World Wide Web a oferit proiectantilor de sisteme embedded o optiune usor diferita: oferirea unei interfete web asupra unei conexiuni de retea. Acest lucru evita costul unui display sofisticat, insa ofera input complex si capacitati ale display-ului cand sunt necesare, pe alt computer. Acest lucru este de success pentru telecomanda, echipament permanent instalat, precum camerele Pan-Tilt-Zoom si routerele de retea.
Procesoarele embedded pot fi impartite in doua categorii largi: microprocesoare obisnuite (μP) si microcontrollere (μC), care au mult mai multe periferice pe chip, reducand costul si marimea. In contrast cu personal computer-ul si server markets, este utilizat un numar destul de mare de constructii CPU de baza; lungimea cuvintelor variaza de la 4 biti la 64 biti si mai mult (in primul rand in procesoarele DSP) chiar daca cel mai tipic ramane cel de 8/16 biti. Cele mai multe constructii vin intr-un numar mare de variante si forme diferite, dintre care multe sunt de asemenea fabricate de cateva companii diferite.
PC/104 si PC/104+ sunt exemple de suprafete disponibile de computer gata facute destinate pentru sistemele embedded mici, de volum mic si mai puternice. Acestea utilizeaza deseori DOS, Linux, NetBSD, sau un sistem embedded de operare in timp real, precum MicroC/OS-II, QNX sau VxWorks.
In unele aplicatii, unde marimea mica nu este o problema principala, componentele utilizate pot fi compatibile cu acelea utilizate la computerele universale. Suprafete precum sirul VIA EPIA ajuta la umplerea golului fiind compatibil cu PC-ul, dar integrate puternic, fizic mai mici sau au alte atributii care le fac atractive pentru inginerii embedded/ Avantajul acestei cai este ca comoditatea componentelor la pret scazut poate fi utilizata impreuna cu aceleasi instrumente de dezvoltare software utilizate pentru dezvoltarea generala a software-ului. Sistemele construite in acest mod sunt inca private ca fiind embedded pentru ca sunt integrate intr-un dispozitiv mai mare si indeplinesc un singur rol. Exemple de astfel de dispozitive sunt bancomatele si masini de tip arcade, si care contin cod specific aplicatiei.
O configuratie obisnuita pentru sistemele embedded cu volum ridicat este sistemul pe un chip (SoC) care contine un sistem complet alcatuit din mai multe procesoare, multiplicatori, provizii si interfete pe un singur chip. SoC-urile pot fi implementate ca un circuit integrat cu aplicatii specifice (ASIC) sau folosind field-programmable gate array (FPGA)
Sistemele embedded comunica cu lumea exterioara prin intermediul perifericelor, precum:
Ø Interfete de comunicatie seriala (SCI) : RS-322, RS-422, RS-485 etc.
Ø Interfete de comunicatie seriala sincronica: I2C, SPI, SCC si ESSI
Ø Universal Serial Bus(USB)
Ø Retele: Ethernet, Controller Area Network, Lon Works etc.
Ø Regulatori: PLL(s), Capture/Compare si Time Processing Units
Ø IO discret: aka General Purpose Input/Output(GPIO)
Ø Analog cu Digital/Digital cu Analog(ADc/DAC)
Ø Debugging: JTAG, ISP, ICSP, BDM Port
Instrumente
Cat despre alte software-uri, proiectantii de sisteme embedded utilizeaza compilatoare, assemblere si debuggere pentru a dezvolta software-ul sistemelor embedded. Insa, ei utilizeaza mai multe instrumente specifice:
Ø In circuitul debugger-elor sau emulatoarelor;
Ø Utilitati de adaugare a unui checksum sau CRC la un program, astfel incat sistemele embedded pot verifica daca programul este valid;
Ø Pentru sistemele care utilizeaza procesarea semnalului digital, specialistii pot folosi o metoda matematica precum Scilab/Scicos, MATLAB/Simulink, EICASLAB, MathCad sau Mathematica pentru a simulari matematice. Ei pot utiliza de asemenea bilbioteci atat pentru host, cat si pentru target care elimina rutinele de dezvoltare a DSP, ca in DSPnano RTOS si Sistemul de Operare Unison;
Ø Compilatoare personalizate si legaturile pot fi utilizate pentru a imbunatati optimizarea pentru harware-ul respectiv;
Ø Un sistem embedded poate avea limbajul sau special sau instrument de design, sau adaugari la un limbaj existent precum Forth sau Basic;
Ø Alta alternativa este adaugarea unui sistem de operare in timp real sau sistem de operare embedded, care poate avea caracteristici DSP precum DSPnano RTOS.
Instrumentele de software pot proveni din cateva surse:
Ø Companiile de software care se specializeaza pe piata de sisteme embedded;
Ø Preluat din instrumentele de dezvoltare a software-ului GNU;
Uneori, instrumentele de dezvoltare pentru un personal computer pot fi folosite daca procesorul embedded este apropiat de un procesor PC.
Pe masura ce complexitatea sistemelor embedded creste, instrumentele de nivel mai inalt si sistemele de operare migreaza in mecanismul unde isi au locul. De exemplu, telefoanele mobile, asistentii personali digitali si alte consumatoare de computere deseori au nevoie de un software important care este achizitionat sau oferit de o alta persoana decat fabricantul de electronice. In aceste sisteme, un mediu de programare deschis, precum Linux, NetBSD, OSGi sau Java embedded este cerut pentru ca al treilea furnizor sa poata vinde pe o piata mai larga.
Embedded Debugging pot fi executate la nivele diferite, depinzand de facilitatile disponibile. De la cele mai simple la cele mai sophisticate, ele pot fi grupate in mod obisnuit in urmatoarele categorii:
Ø Debugging interactiv resident, folosind o carcasa simpla oferita de sistemul de operare embedded (de exemplu, Forth si Basic);
Ø Debugging extern folosind inregistrarea sau portului de iesire pentru a urmari operatia folosind fie un monitor in flash, fie folosind un debug server precum Remedy Debugger care lucreaza pentru sistemele heterogene multicolore;
Ø Un debugger in circuit (ICD), un dispozitiv hardware care se conecteaza la un procesor printr-o interfata JTAG sau NEXUS. Acest lucru permite ca operatia procesorului sa fie reglata extern, dar este in mod characteristic restrictionata la caracteristicile specifice de debugging in procesor;
Ø Un emulator in circuit inlocuieste microprocesorul cu un echivalent simulate, oferind control complet asupra tuturor aspectelor ale microprocesorului;
Ø Un emulator complet ofera o simulare a tuturor aspectelor hardware-ului, permitand ca toate acestea sa fie controlate sau modificare, si permitand debugging-ul pe un PC normal.
Doar daca nu este restrictionat la debugging extern, programatorul poate sa incarce si sa ruleze un software prin intermediul instrumentelor, sa vada codul ruland in procesor, si sa porneasca sau sa opreasca operatia. Vizualizarea codului poate fi facuta ca un cod de asamblare sau ca un cod sursa.
Pentru ca un sistem embedded este deseori compus dintr-o varietate mare de elemente, strategia de debugging poate varia. Spre exemplu, debugging-ul unui sistem embedded cu un software-(si microprocesor-) centric este diferi de debugging-ul unui sistem embedded unde cea mai mare parte a procesarii este realizata de periferice(DSP, FPGA, co-procesor). Un numar crescator de sisteme embedded, utilizeaza astazi mai mult decat un singur procesor de baza. O problema obisnuita cu dezvoltarea multi-core este sincronizare adecvata a executarii software-ului. Intr-un asemenea caz, proiectare sistemului embedded poate cere verificarea traficului de date in bus-uri intre core-urile procesorului, ceea ce cere un debugging la un nivel scazut, la nivelul semnalului/bus-ului, cu un analizator logic, de exemplu.
Sistemele embedded deseori rezida in dispozitive care se asteapta sa ruleze continuu ani de zile fara erori, si in unele cazuri sa se refaca singure daca se produce vreo eroare.
Prin urmare, software-ul este de obicei dezvoltat si testat cu mai multa atentie decat acelea pentru PC-uri, si partile mecanice deplasabile de neincredere precum disk drive-urile, switch-urile sau tastele sunt evitate.
Problemele specifice de incredere pot include:
O varietate de tehnici sunt utilizate, uneori in combinatie, pentru a reveni din erori - software bugs precum scurgerile de memorie si erorile de soft in hardware:
Ø Watchdog timer care reseteaza calculatorul doar daca software-ul nu instiinteaza periodic watchdogul;
Ø Subsistemele cu spare-uri redundante in care pot fi schimbate;
Ø Software-urile limp modes care ofera functii partiale;
Ø Proiectarea cu o arhitectura Trusted Computing Base (TCB) asigura un mediu cu o siguranta si o incredere ridicate a sistemului;
Ø Hipervisor-ul embedded este capabil sa asigure incapsularea securitatii pentru orice componenta a subsistemului , astfel ca o componenta a software-ului compromise sa nu poata interveni in alte subsisteme, sau in alte privileged-level software-uri pentru sistem. Aceasta incapsulare retine erorile de la propagarea dintr-un sistem intr-altul, imbunatatind increderea. Acest lucru poate permite, de asemenea, unui sistem sa fie inchis in mod automat si restartat la detectarea unei probleme;
Ø IAP (Immunity Aware Progamming)
Pentru sistemele cu volum ridicat precum player-ele portabile de muzica sau telefoanele mobile, minimalizarea costului este de obicei motivul principal al proiectarii. Inginerii, in mod caracteristic, selecteaza hardware-uri care sunt numai bune pentru a implementa functiile necesare.
Pentru sistemele cu volum scazut sau prototipurile sistemelor embedded, computerele universale pot fi adaptate prin limitarea programelor sau prin inlocuirea sistemului de operare cu un sistem de operare in timp real.
Exista cateva tipuri diferite de arhitectura a software-ului in uzul obisnuit.
In aceasta proiectare, software-ul pur si simplu are o bucla. Bucla necesita subroutine, fiecare ocupandu-se de o parte a hardware-ului sau a software-ului.
Unele sisteme embedded sunt predominant reglate in mod intrerupt. Acest lucru inseamna ca sarcinile ca sarcinile indeplinite de sistem sunt oprite prin diferite tipuri de evenimente. O intrerupere poate fi generata de exemplu, de un regulator intr-o frecventa predefinita, sau printr-un controller pentru port serial primind un byte.
Aceste feluri de subsisteme sunt utilizate daca event handlers au nevoie de o potentialitate scazuta si daca sunt scurte si simple.
De obicei, aceste tipuri de sisteme ruleaza o sarcina simpla si intr-o bucla principala, dar aceasta sarcina nu este foarte sensibila la intarzierile neasteptate.
Uneori, intermediarul intrerupt va adauga in continuare sarcini la o coada a structurii. Mai tarziu, dupa ce intreruperea handler-ului s-a incheiat, aceste sarcini sunt executate de o bucla principala. Aceasta metoda aduce sistemul aproape de nucleul multitasking-ului cu procesele distincte.
Un sistem multitasking nepreventiv este foarte similar cu schema buclei de reglare, exceptand ca bulca sa fie ascunsa intr-un API. Programatorul defineste o serie de sarcini, si fiecare sarcina primeste propriul mediu in care sa ,,ruleze. Cand o sarcina este inactiva, este nevoie de o rutina inactiva, de obicei numita ,,pauza, ,,asteptare, ,,renuntare, ,,nop (vine de la ,,nicio operatie) etc.
Avantajele si dezavantajele sunt foarte similare cu bucla de reglare, doar ca adaugarea unui nou software este mai usoara, prin simpla scriere a unei sarcini, sau adaugand-o la queue-interpreter.
In acest tip de sistem o componenta de nivel scazut a codului se schimba intre sarcini sau regulatori de baza (conectati la o intrerupere). Acesta este nivelul la care sistemul este in general considerat a avea kenel de ,,sistem de operare. Depinzand de cata functionalitate este ceruta, introduce mai mult sau mai putin din complexitatea din administrarea multiplelor sarcini ruland in paralel.
Deoarece orice cod poate in mod potential sa afecteze datele unei alte sarcini (exceptie facand sistemele mai mare utilizand un MMU), programele trebuie proiectate si testate cu grija, iar accesul la datele impartasite trebuie reglat de unele strategii de sincronizare, precum cozile de mesaje, semafoarele sau schema de sincronizare care nu blocheaza.
Din cauza acestei complexitati, este un lucru obisnuit pentru organizatii sa cumpere un sistem de operare in timp real, permitand programatorilor de aplicatii sa se concentreze mai mult pe functionalitatea dispozitivului, decat pe functiile sistemului de operare, cel putin pentru sistemele mai mari; sistemele mai mici deseori nu pot accepta suprasarcini asociate cu un sistem generic in timp real, datorita limitarilor in ceea ce priveste marimea memoriei, performanta si/sau durata bateriei.
Un microkernel este un pas logic de la un sistem de operare in timp real. Aranjarea obisnuita este aceea ca kernelul sistemului de operare aloca memorie si schimba CPU in diferite sarcini de executie. Procesele user mode implementeaza majoritatea functiilor precum fisierele de sistem, retea, interfete etc.
In general, microkernelurile reusesc cand schimbarea sarcinilor si circulatia intersarcinilor sunt rapide, si dau gres cand sunt foarte lente.
Exokernelurile comunica eficient prin apelari normale ale subrutinei. Hardware-ul si toate componentele software din sistem sunt disponibile programatorilor si extensibile prin aplicatii.
In acest caz, un kernel relativ larg cu caracteristici sofisticate este adaptat sa se potriveasca unui mediu embedded. Acest lucru ofera programatorilor un mediu similar cu un sistem de operare desktop, precum Linux sau Microsoft Windows, si astfel este foarte productiv pentru dezvoltare, pe de alta parte, cere considerabil mai multe resurse hardware, este deseori mai scump, si din cauza complexitatii acestor kerneluri poate fi mai putin prevazatoare sau de incredere.
Exemplele obisnuite de kerneluri monolitice embedded sunt Embedded Linux si Windows CE.
In ciuda costului crescut in ceea ce priveste hardware-ul, acest tip de sistem embedded este in crestere de popularitate, in special la dispozitivele embedded mai puternice, precum Wireless Routers si Sistemele de Navigatie GPS. Cateva dintre motive sunt:
Ø Porturi pentru chip-urile embedded obisnuite sunt dispobibile;
Ø Ele permit reutilizarea codurilor disponibile public pentru Device Drivers, Web Servers, Firewalls, si alte coduri;
Ø Sistemele de dezvoltare pot incepe cu seturi de caracteristici largi, apoi poate fi configurata distributia pentru a exclude functionalitatile nenecesare, si pentru a economisi din cheltuielile cu memoria care ar consuma-o;
Ø Multi ingineri cred ca rularea unui cod de aplicatii in user mode este mai increzatoare, mai usor de debug si de aceea procesul de dezvoltare este mai usor si codul mai portabil;
Ø Multe sisteme embedded nu indeplinesc conditiile unui sitem de reglare. UN sistem ca Embedded Linux are un raspuns destul de rapid pentru multe aplicatii;
Ø Caracteristici cerand raspunsuri mai rapide decat pot fi garantate pot fi plasate in hardware;
Ø Multe sisteme RTOS au un cost per-unitate. Cand este folosit un produs care este sau va deveni o marfa, acel cost este semnificativ.
O mica parte a sistemelor embedded cere un comportament sigur, oportun, de incredere, de neobtinut cu una din arhitecturile prezentate mai sus. In acest caz, o organizatie construieste un sistem care sa i se potriveasca. In unele cazuri, sistemul poate fi partitionat intr-un ,,controller al mecanismului folosind tehnici speciale, si un ,,controller de afisaj cu un sistem de operare conventional. Un sistem de comunicatie trece datele intre cele doua.
In adaos la core-ul sistemului de operare, multe sisteme embedded au componente software aditionale cu invelis superior Aceste componente sunt alcatuite dintr-o multime de protocoale, precum CAN, TCP/IP, FTP, HTTP si HTTPS si, de asemenea, capacitati de memorizare, precum FAT si memoria Flash a sistemelor de management. Daca dispozitivul embedded are capacitati audio si video, atunci driverele si codecurile potrivite vor fi prezente in sistem. In cazul kernelurilor monolitice, multe dintre aceste facilitati software sunt incluse. In categoria RTOS, disponibilitatea componentelor de software aditionale depinde de oferta comerciala.
Un personal digital assistant (PDA) este un computer handheld, cunoscut si sub numele de computer palmtop. Cele mai noi PDA-uri au si ecrane in culori precum si functii audio, ceea ce le permite sa fie folosite ca si telefoane mobile (smartphones), browsere web sau media player-uri portabile. Multe dintre PDA-uri pot fi folosite pentru acces la internet, intranet sau extranet prin Wi-Fi, Wireless Wide-Area Networks (WWANs). Multe dintre PDA-uri folosesc tehnologia touch screen.
Primul PDA realizat se considera a fi CASIO PF-3000 creat in mai 1983. Compania GO Corp. a fost pionier in domeniu iar termenul a fost prima data utilizat pe 7 ianuarie 1992 de catre CEO-ul Apple Computer, John Sculley la Consumer Electronics Show din Las Vegas, referindu-se la Apple Newton. In 1996, Nokia a introduse primul telefon mobil cu functionalitati PDA complete, 9000 Communicator, care atunci a crescut, devenind cel mai bine vandut PDA din lume care a dat nastere unei categorii de telefoane numite smartphone. Astazi marea majoritate a PDA-urilor sunt smartphone-uri care se vand in 150 milioane de unitati pe an, in timp ce PDA-urile ce nu sunt si telefoane (de sine statatoare) se vand in numai 3 milioane de unitati pe an. RIM Blackberry, Apple iPhone si Nokia N-Series sunt smartphone-uri tipice.
In prezent, un PDA tipic are un touch screen pentru introducerea datelor, slot pentru card de memorie pentru stocare de date si cel putin una din urmatoarele functii pentru conectivitate: IrDA, Bluetooth si/sau Wi-Fi. Totusi, multe PDA-uri (in general cele folosite in primul rand ca telefoane) pot sa nu aiba touch screen, folosesc softkeys, un pad de directie si fie o tastatura numerica sau tastatura thumb pentru introducerea datelor.
Software-ul care se cere a fi un PDA, include in general un calendar pentru programari, un to-do list, agenda de contacte si un anumit tip de program de note. PDA-urile cu acces la internet includ in mod tipic e-mail si suport web.
Multe dintre PDA-urile originale, precum Apple Newton si Palm Pilot, aveau incorporate touch screens pentru interactiune cu utilizatorul, avand numai cateva butoane de obicei rezervate pentru shortcut-uri catre cele mai des utilizate programe. PDA-urile touch scren, ce includ dispozitive Windows Pocket PC, au de obicei un creion (stylus) detasabil care poate fi folosit pe touch screen. Interactiunea este realizata prin atingerea ecranului pentru a activa butoanele sau meniul si tragerea creionului pentru a sublinia de exemplu. Introducerea unui text se face de obicei cu una din urmatoarele metode:
Ø Folosind tastatura virtuala, atunci cand aceasta apare pe touch screen;
Ø Introducerea textului se face prin scrierea literelor pe ecran;
Ø Folosind tastatura externa sau tastatura chorded conectata prin USB, IR sau Bluetooth;
Ø Folosind metoda recunoasterii literei sau a cuvantului, atunci cand acestea sunt scrise pe touch screen si apoi traduse in litere in campul de text activat curent. In ciuda cercetarilor riguroase si a proiectelor de dezvoltare, experienta utilizatorilor finali a amestecat rezultatele cu aceasta metoda de introducere, unii dintre ei considerand-o neclara si usor incomoda, in timp ce altii au fost satiscacuti de calitate. Recunoasterea si calcularea formulelor pentru scrierea de mana verticala sau orizontala, precum 1 + 2 = este de asemenea in stadiu de dezvoltare;
Ø Recunoasterea loviturii (o implementare Palm este denumita Graffiti). In acest sistem, un set de lovituri predefinit reprezinta diversele caractere folosite in introducerea textului. Utilizatorul invata sa deseneze aceste lovituri pe ecran sau intr-o suprafata de introducere de text. Loviturile sunt adesea forme de caractere simplificate pentru a le face mai usor de recunoscut pentru dispozitiv.
PDA-urile pentru utlizare business, incluzand BlackBerry-ul si Treo au tastaturi complete si rotite pentr scroll sau pentru thumb pentru a facilita introducerea datelor si navigarea, in plus fata de sustinerea introducerii de date touch-screen. Acestea sunt de asemenea tastaturi full-size foldable disponibile care sunt conectate direct sau care folosesc tehnologie wireless pentru a interfata cu PDA-ul si care permit tastare normala. BlackBerry are functionalitati aditionale, precum email si aplicatii push-based.
Cele mai noi PDA-uri, precum Apple iPhone si iPod touch includ noi interfete cu utilizatorul folosind alte metode pentru introducerea textului. PDA-urile iPhone si iPod touch folosesc o tehnologie numita Multi-touch.
Desi cele mai vechi PDA-uri nu aveau sloturi pentru carduri de memorie, in prezent trebuie sa aiba fie un slot SD (Secure Digital) si/sau un slot Compact Flash. Desi la origine au fost create pentru memorie, cardurile SDIO si Compact Flash sunt disponibile pentru functionalitati precum Wi-Fi si camere web. Anumite PDA-uri au de asemenea port USB, mai ales pentru USB flash drives. Anumite PDA-uri sunt acum compatibile cu cardurile SD micro, care sunt fizic mult mai mici decat cardurile SD standard.
In timp ce PDA-urile cele mai vechi se conectau prin porturi seriale sau alte formate interne, multe dintre ele se conecteaza astazi prin cablu USB. Acesta a servit in prima instanta pentru a se conecta la computer, si cateva, daca vreun PDA putea sa se conecteze unul la altul folosind cabluri, intrucat USB cere ca o masina sa se comporte ca si gazda functionalitate ce nu a fost planuita adesea. Anumite PDA-uri se puteau conecta la internet, fie cu unul din aceste cabluri, fie folosind un card de extensie cu un port Ethernet/adaptor RJ-45.
Cele mai moderne PDA-uri dispun de conectivitate wireless Bluetooth, un instrument din ce in ce mai popular pentru dispozitive mobile. Poate fi folosit pentru a conecta tastaturi, casti, GPS si multe alte accesorii, precum si pentru a trimite fisiere intre PDA-uri. Multe dintre PDA-urile de nivel mediu si superioare folosesc conexiune Wi-Fi/WLAN/802.11. PDA-urile mai vechi au predominant port IrDA (infrarosu); totusi, cateva dintre modelele curente au aceasta tehnologie intrucat este depasita gradual datorita suportului pentru Bluetooth si Wi-Fi. IrDA permite comunicarea intre doua PDA-uri: un PDA si orice dispozitiv cu port sau adaptor IrDA. Tastaturile pentru PDA universale folosesc tehnologie infrarosu intrucat multe dintre PDA-urile mai vechi o folosesc si tehnologia infrarosu este ieftina si prezinta avantajul ca poate fi utilizata la bordul avioanelor.
O functie importanta a PDA-urilor este sincronizarea datelor cu un PC. Acest lucru permite informatii despre contacte actualizata, stocata pe software precum Microsoft Outlook sau ACT! pentru a actualiza baza de date din PDA. Sincronizarea datelor asigura acuratetea listei de contact, a emailului si a programarilor din PDA, permitand utilizatorilor sa acceseze aceeasi informatie care se afla pe PDA cu cea de pe computerul gazda.
Sincronizarea totodata previne pierderea informatiei stocate pe dispozitiv in cazul in care este pierduta, furata sau distrusa. Un alt avantaj este acela ca introducerea de date se face mai usor pe un PC, de vreme ce introducerea textului printr-un touch screen nu este inca foarte la indemana. Transferul de date pe un PDA printr-un computer se face deci mult mai rapid decat utilizatorul sa fie nevoit sa introduca datele manual pe dispozitivul handheld.
Cele mai multe PDA-uri vin cu abilitatea de a se sincroniza la un PC. Acest lucru este posibil prin software-ul de sincronizare furnizat cu dispozitivul handheld, precum HotSync Manager care vine cu PDA-urile Palm OS, Microsoft ActiveSync pentru Windows XP si sisteme de operare mai vechi sau Windows Mobile Device Center pentru Windows Vista, ambele putandu-se sincroniza cu dispozitivele Windows Mobile sau Pocket PC.
Aceste programe permit PDA-ului sa fie sincronizat cu un Personal information manager. Acesta din urma poate fi un program exterior sau un program intern. De exemplu, PDA-ul BlackBerry este furnizat cu programul Desktop Manager care poate sincroniza atat cu Microsoft Outlook cat si cu ACT!. Alte PDA-uri vin doar cu software-ul lor interior. De exemplu, variante mai vechi ale PDA-urilor Palm OS au venit doar cu Palm Desktop in timp ce variante recente precum Treo 650 are o aptitudine incorporata de a se sincroniza cu Palm Desktop si/sau Microsoft Outlook, in timp ce Microsoft's ActiveSync si Windows Mobile Device Center se sincronizeaza doar cu Microsoft Outlook sau cu un server Microsoft Exchange.
Software-ul de sincronizare tert este de asemenea disponibil pentru multe PDA-uri produse de companii precum Intellisync si CompanionLink. Acest software sincronizeaza dispozitivele handheld cu alti personal information managers care nu sunt acceptati de producatori de PDA-uri precum GoldMine si Lotus Notes.
Microsoft Visual Studio este un Mediu de Dezvoltare software Integrat (Integrated Development Environment IDE) produs de Microsoft. Poate fi folosit pentru a dezvolta aplicatii pentru console si interfete grafice, precum si aplicatii Windows Forms, site-uri web, aplicatii web si servicii web, atat in codul nativ (native code) cat si in codul interpretat (managed code) pentru toate platformele oferite de Microsoft Windows, Windows Mobile, Windows CE, NET Framework, NET Compact Framework si Microsoft Silverlight.
Visual Studio include un editor de cod care sta la baza IntelliSense precum si un refactoring de cod. Debugger-ul integrat functioneaza atat ca un debugger source-level cat si ca un debugger machine-level. Alte instrumente incorporate includ un designer de forme pentru construirea aplicatiilor GUI, designer web, designer de clase si un designer de baze de date. Visual Studio permite adaugarea de plug-ins ce admit functionalitatea la aproape orice nivel inclusiv oferirea de suport pentru sisteme de reglare a sursei (precum Subversion si Visual SourceSafe) precum si adaugarea unor noi unelte precum editori si designeri vizuali pentru limbaje specifice sau unelte pentru alte aspecte ale ciclului de viata a dezvoltarii software (precum clientul Team Foundation Server: Team Explorer).
Visual Studio admite limbaje prin intermediul serviciilor limbaj, care permit ca orice limbaj de programare sa fie recunoscut (pana la nivele variate) de catre editorul de cod si debugger-ul, cu conditia ca un serviciu limbaj-specific sa fi fost scris. Limbajele built-in includ C/C++ (via Visual C++), VB.NET (via Visual Basic .NET), si C# (via Visual C#).
Suportul pentru alte limbaje precum Chrome, F#, Python, si Ruby printre altele, a fost facut disponibil prin intermediul serviciilor de limbaj ce trebuie instalate separat. Sunt de asemenea recunoscute XML/XSLT, HTML/XHTML, JavaScript si CSS. Exista si versiuni de limbaj-specific ale lui Visual Studio care ofera utilizatorului servicii de limbaj mai limitate. Aceste pachete individuale sunt denumite Microsoft Visual Basic, Visual J#, Visual C# si Visual C++.
In prezent, Editiile Profesionale Visual Studio 2008 si 2005, impreuna cu versiuni de limbaj-specific (Visual Basic, C++, C#, J#) ale lui Visual Studio 2005 sunt disponibile gratuit pentru studenti prin descarcarea programului Microsoft's DreamSpark. Visual Studio 2010 este in prezent in curs de dezvoltare.
Visual Studio nu recunoaste intrinsec niciun limbaj de programare, solutie sau instrument. In schimb, permite adaugarea unor functionalitati variate. O functionalitate specifica este codata ca un VSPackage. Atunci cand este instalata, functionalitatea este disponibila ca un serviciu. IDE furnizeaza trei servicii: SVsSolution care ofera abilitatea de a enumera proiecte si solutii; SVsUIShell care ofera functionalitati UI si window (inclusiv taburi, bare de instrumente si instrumente windows) si SVsShell care se ocupa de inregistrarea VSPackages. In plus, IDE este de asemenea responsabil pentru coordonarea si facilitarea comunicarii intre servicii. Editorii, designerii, tipurile de proiecte si alte instrumente sunt implementate ca si VSPackages. Visual Studio foloseste COM pentru a accesa VSPackages. SDK-ul lui Visual Studio include Manage Package Framework (MPF) care este un set de invelisuri instruite in jurul interfetelor COM care permite scrierea Pachetelor in limbaje NET.
Totusi, MFP nu furnizeaza toate functionalitatile prezentate de interfetele Visual Studio COM. Serviciile pot fi folosite pentru crearea altor pachete, ce adauga functionalitati mediului de dezvoltare IDE.
Suportul pentru limbajele de programare este adaugat prin folosirea unui VSPackage specific denumit Serviciu de Limbaj. Un serviciu de limbaj defineste diverse interfete pe care VSPackage le poate implementa pentru a adauga suport pentru diverse functionalitati.
Functionalitatile ce pot fi adaugate astfel includ colorarea sintaxei, completarea declaratiilor, potrivirea legaturilor, informatii despre parametrii, liste de membrii si indicatoare pentru erorile la compilare. Odata interfata implementata, functionalitatea va fi disponibila pentru limbaje. Serviciile de limbaje trebuie sa fie implementate pentru fiecare limbaj in parte. Implementarile pot reutiliza codul de la analizatorul de text sau compilatorul pentru limbaj. Serviciile de limbaj pot fi implementate fie in native code sau in managed code.
Pentru native code, pot fi folosite atat interfetele native COM cat si Babel Framework (parte din SDK-ul Visual Studio). Pentru managed code, MPF include invelisuri pentru scrierea serviciilor de limbaj instruite.
Visual Studio nu include nicun suport de reglare a sursei incorporat, dar defineste MSSCCI (Microsoft Source Code Control Interface) prin implementarea sistemelor de control al sursei ce pot fi integrate cu IDE. MSCCI defineste un set de functii ce sunt folosite pentru a implementa diverse functionalitati pentru reglarea sursei. MSSCCI a fost utilizat prima data pentru a integra Visual SourceSafe cu Visual Studio 6.0, dar mai tarziu a fost deschis via SDK-ul Visual Studio. Visual Studio .NET 2002 a folosit MSSCCI 1.1 si Visual Studio .NET 2003 a folosit MSSCCI 1.2. Atat Visual Studio 2005 cat si 2008 folosesc versiunea 1.3 a MSSCCI, care adauga suport pentru redenumirea si stergerea propagarii, precum si deschidere asincrona.
Visual Studio accepta derularea mai multor instante ale mediului (fiecare cu setul propriu de VSPackages). Instantele folosesc diferite hives de registre pentru a stoca regimul de configuratie si se diferentiaza prin AppId (ID de aplicatie). Instantele sunt lansate printr-un AllId specific .exe care selecteaza AppId, seteaza radacina hive si lanseaza IDE-ul. VSPackages inregistrare pentru un AppId sunt integrate cu alte VSPackages pentru acel AppId. Diversele editii ale lui Visual Studio sunt create folosind diferitele AppId-uri. Produsele editiei Visual Studio Express sunt instalate cu AppId-urile proprii, dar produsele Standard, Professional si Team Suite impart acelasi AppId. In consecinta, editiile Express pot fi instalate impreuna cu alte editii, spre deosebire de celelalte editii care actualizeaza aceeasi instalare.
Biblioteca Microsoft Foundation Class (cunoscuta si sub numele de Microsoft Foundation Classes sau MFC) este o biblioteca care inglobeaza portiuni din Windows API in clasele C++, incluzand functionalitati care permite acestora folosirea unui cadru general implicit de aplicatii. Clasele sunt definite pentru multe dintre obiectele Windows handle-managed precum si pentru ferestre predefinite si controale obisnuite.
Atunci cand MFC a fost introdusa, a furnizat functionalitati pentru gestionarea mesajelor (cu Message Maps), exceptii si identificare de tipul run-time (RTTI) si serializare. Functionalitatile pentru gestionarea mesajelor au fost create cu intentia de a reduce consumul de memorie prin evitarea utilizarii gratuite de tabele virtuale si ofera totodata o structura mai concreta pentru diverse instrumente Visual C++ furnizate pentru a edita si manipula coduri fara a analiza intreg limbajul. Functionalitatile pentru gestionarea mesajelor au inlocuit mecanismul functiei virtuale oferit de C++.
Functionalitatile pentru serializare, exceptii si RTTI au antedatat disponibilitatea acestor caracteristici din C++ cu cativa ani. Versiunile 32-bit ale lui MFC pentru Windows NT 3.1 si mai tarziu pentru sistemele de operare Windows au folosit compilatoare care au implementat caracteristici de limbaj si au actualizat functionalitatile pentru a ingloba caracteristicile de limbaj mai degraba decat sa ofere implementari customizate, realizand o mai buna compatibilitate.
In acest capitol sunt prezentate doua dintre metodele de acordare a regulatoarelor industriale si modul de folosire al lor pe un PDA.
Mai intai va fi prezentat modul de implementare al unui algoritm de acordare de tip PID pe modele reduse prin metoda caracteristicilor de frecventa, apoi calculul parametrilor de acord cu ajutorul unui algoritm PID de tip RST.
Ambele aplicatii realizeaza calculul parametrilor de acord pe baza algoritmilor mai sus mentionati, pornind de la valorile parametrilor procesului industrial.
Pentru a realiza aplicatia dorita, voi folosi mediul de programare embedded Visual C++ , parte componenta a Microsoft Visual Studio 2005.
De asemenea, eVC++ contine si un emulator al sistemului de operare Windows CE 5.0, pe care pot fi testate aplicatiile realizate.
Asadar, consideram urmatoarele functii de transfer (pentru proces si pentru regulator):
cu
Aceasta metoda are la baza teorema lui Bode privind alura caracteristicii amplitudine frecventa a sistemului descris, pentru a asigura o buna comportare a sistemului inchis in regim tranzitoriu. De asemenea, trebuie asigurata o margine de faza impusa (intre 45 si 600).
Programul ofera posibilitatea acordarii atat pentru regulatoarele continue PID, cat si a algoritmilor numerici de tip PID, obtinuti prin discretizarea cu metoda trapezelor (prezentata in capitolul 2).
Pentru acordarea algoritmului discretizat, se va folosi legea de reglare de forma:
Se creeaza un proiect nou in eVC++ de tip Dialog based si apoi se selecteaza si SDK-urile aferente. Se pot adauga SDK-uri, in functie de universalitatea aplicatiei.
In cazul de fata, se va utiliza doar SDK-ul pentru Pocket PC, ce va ajuta la crearea unei aplicatii pentru Windows Mobile 2003.
Proiectul se va numi acordarePID. Visual Studio genereaza automat doua clase:
In continuare, se va edita fereastra principala a aplicatiei in ResourceView.
In aceasta fereastra vom adauga :
15 controale de tip Edit Control;
15 controale de tip Static Text;
2 controale de tip Radio Button;
2 controale de tip Button.
Se incepe prin a redenumi obiectele importante din fereastra. Fiecarui control ii este acordat automat un nume de forma IDC_EDITX, unde X este un numar ce se incrementeaza automat cu fiecare obiect identic adaugat in fereastra.
In locul acestor nume atribuite automat, se pun denumiri sugestive: IDC_Kp, IDC_Reglare1, IDC_Calculeaza, etc.
In acest moment, interfata a fost finalizata.
Pentru a ne usura lucrul cu informatiile introduse in obiectele din DIALOG, vom asigna fiecarui control principal cate o variabila unde vor fi stocate datele.
Pentru controalele ce asteapta introducerea parametrilor de proces vom asigna variabile de control de tip double, denumite astfel: m_Kp, m_a, etc. In cazul variabilei m_Mf, corespunzatoare marginii de faza, punem restrictia sa ia valori intre 45 si 60.
Pentru controalele ce trebuie sa afiseze valorile parametrilor de acord, vom introduce variabile de control de tip CString, denumite astfel: m_strKr, m_strTi, etc.
Variabilele de control sunt din categoria Value.
Acum, se incepe adaugarea codului in spatele controalelor si butoanelor pentru indeplinirea scopului propus.
Click-dreapta pe buton Add event handler alegem BnClicked. Visual Studio se va oferi sa adauge o functie numita OnBnClickedIesire, pe care o editam astfel:
void CacordarePID2Dlg::OnBnClickedButton2()
Vom introduce codul pentru calculul parametrilor de acord.
Se selecteaza modul Class View si apoi click dreapta pe clasa CacordarePIDDlg Add Function.
Vom folosi o functie ce returneaza o valoare de tip double, denumita CalculTi. Aceasta va avea forma:
double CacordarePID2Dlg::CalculTi()
In mod similar, se introduc functiile de calcul pentru toti parametrii de acord, in ambele cazuri, continuu si discret. Ar fi de precizat faptul ca parametrul KR are doua functii de calcul, cate una pentru fiecare mod de reglare. In functie de radio-button-ul selectat, variabila de control m_strKr va primi fie continutul variabilei m_Kr, pentru cazul continuu, fie continutul variabilei m_Kr2, pentru cazul discret.
Se da click-dreapta pe radio-button-ul Reglare continua Add Event Handler se alege BnClicked.
Visual studio va introduce automat functia OnBnClickedReglare1, pe care o editam astfel:
void CacordarePID2Dlg::OnBnClickedReglare1()
In mod similar procedam pentru radio-button-ul Reglare discreta.
Variabila la nivel de clasa m_btnSelectieCurenta are rolul de a stoca controlul selectat(radio-button-ul). Pentru a o adauga, in Class View, click dreapta pe clasa CacordarePIDDlg Add Variable. Tipul variabilei va fi int.
De asemenea, variabila m_btnSelectieCurenta trebuie initializata cu 0. Acest lucru se face in cadrul metodei OnInitDialog a CacordarePIDDlg.
Acum trebuie afisate valorile parametrilor de acord.
Pentru a realiza acest lucru, vom folosi butonul Calculeaza.
Click-dreapta pe buton Add Event Handler BnClicked. Vom edita functia OnBnClickedCalculeaza astfel incat sa preia rezultatele si sa le afiseze in edit-box-rile corespunzatoare.
Pentru aceasta, vom folosi un ponter de tip CEdit, numit calcul. De asemenea, vom adauga cate un event handler de tip OnEnUpdate fiecarui control corespunzator parametrilor de acord.
Exemplu:
CEdit *calcul;
calcul = (CEdit*)GetDlgItem(IDC_Ti);
GotoDlgCtrl(calcul);
m_strTi==CalculTi();
SetDlgItemText(IDC_Ti,m_strTi);
AfxMessageBox(m_strTi);
OnEnUpdateTi();
Functiile de tip OnEnUpdate vor fi editate cu ajutorul clasei template SendMessage.
Tot in cadrul functiei OnBnClickedCalculeaza, vom cere ca, in cazul in care niciunul dintre radio-button-uri nu este selectat, sa se afiseze un mesaj de eroare:
if(m_btnSelectieCurenta == 0)
Iata si cum sunt afisate rezultatele in cele doua cazuri:
Pentru realizarea noii aplicatii, se va proceda asemanator cu cazul din capitolul 3.1.
Se vor calcula parametrii de acord ai unui regulator, prin metoda comenzii PID de tip RST prezentata in capitolele 2.3.3, 2.3.4.
Noul proiect se va numi acordareRSTPID, si va avea urmatoarea interfata:
Asadar, avem 16 controale de tip Edit Control (Edit Box), 1 control de tip Group Box si 2 controale de tip Button.
Group box-ul va contine edit box-urile corespunzatoare parametrilor modelului procesului, astfel incat Visual Studio sa stie ca ele fac parte din acelasi grup.
Se adauga apoi variabilele de control de tip double pentru controalele ce fac parte din grupul Parametri model proces si de tip CString pentru controalele corespunzatoare parametrilor de acord.
De asemenea, se vor adauga la nivel de clasa si variabilele necesare calculelor polinoamelor R, S, T si a parametrilor KR, Ti, Td.
Pentru a lucra cu polinoame si matrici in eVC++, trebuie sa folosim clasa-template CArray.
Pentru a exemplifica modul de utilizare al CArray, vedem functia initializare_A a clasei CacordareRSTPIDDlg:
void CacordareRSTPIDDlg::initializare_A(void)
Polinoamele R, S, T se calculeaza prin metoda alocarii de poli.
Polinoamele R si S se calculeaza cu ajutorul ecuatiei matriciale unde , iar polinomul T se calculeaza prin unde si .
Functia de afisare a rezultatelor este asemanatoare cu cea prezentata in capitolul 3.1.
Atasam controlului de tip button REGLARE o functie de tip event handler numita OnBnClickedReglare1. Aceasta va prelua rezultatele functiilor de calcul a polinoamelor R, S, T si apoi rezultatele functiei calcul_PID care calculeaza valorile parametrilor KR, Ti. Td si cu ajutorul variabilelor de control de tip CString ale controalelor corespunzatoare va afisa rezultatele :
Lucrarea de fata si-a propus sa prezinte doua dintre metodele de acordare a regulatoarelor: un algoritm de acordare PID prin metoda caracteristicilor de frecventa si un algoritm PID de tip RST, implementate pe un dispozitiv PDA.
Obiectivul lucrarii, acela de a oferi o solutie mai simpla de obtinere a parametrilor de acord ai unui regulator industrial a fost realizat.
Aplicatia nu este totusi una ideala, intrucat, atunci cand variabila de control a unui control corespondent unui parametru de acord preia rezultatul calculului face conversia din double in CString si astfel se pot pierde anumite date.
Astfel, aplicatia este mai mult orientativa si poate fi imbunatatita astfel incat sa creasca precizia calculului.
Asadar, lucrarea pune bazele unor noi perspective, pe baza acestor aplicatii putand fi implementate altele care sa aplice alti algoritmi, mai evoluati.
Dispozitivul PDA se poate conecta la placa de achizitie a unui sistem de reglare automata prin intermediul unui port USB, prin Bluetooth, prin Wireless (daca exista un Wireless Access Point) sau prin diverse convertoare de porturi (de pilda un convertor USB/Ethernet).
In continuare, sunt atasate cateva poze care exemplifica reprezentari grafice ale reglarii PID prin metoda caracteristicilor de frecventa, regulatoare PID folosite in industrie si placi de achizitie cu diferite porturi de comunicatie ce pot comunica cu un dispozitiv PDA.
Placa de achizitie cu port USB
Placi de achizitie cu receiver Bluetooth
Placa de achizitie cu placa PCMCIA, poate realiza conexiuni Wi-Fi
// acordarePID2Dlg.h : header file
#pragma once
// CacordarePID2Dlg dialog
class CacordarePID2Dlg : public CDialog
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
// Implementation
protected
HICON m_hIcon;
// Generated message map functions
virtual BOOL OnInitDialog();
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
afx_msg void OnSize(UINT /*nType*/, int /*cx*/, int /*cy*/);
#endif
DECLARE_MESSAGE_MAP()
public
afx_msg void OnBnClickedButton2();
public
double m_Kp;
public
double m_a;
public
double m_b;
public
double m_tau;
public
double m_Mf;
public
double m_t;
public
double m_om;
public
double CalculTi();
public
int m_btnSelectieCurenta;
public
double CalculTd();
public
double CalculTx();
public
double CalculKr();
public
afx_msg void OnBnClickedReglare1();
public
afx_msg void OnBnClickedCalculeaza();
public
afx_msg void OnEnUpdateKr();
public
CString m_strKr;
public
CString m_strTi;
public
CString m_strTd;
public
CString m_strTx;
public
double m_Ti;
public
double m_Td;
public
double m_Tx;
public
double m_Kr;
public
afx_msg void OnEnUpdateTi();
public
afx_msg void OnEnUpdateTd();
public
afx_msg void OnEnUpdateTx();
public
CString m_stra0;
public
CString m_stra1;
public
CString m_stra2;
public
CString m_strb1;
public
CString m_strb2;
public
double m_Kr2;
public
double m_a0;
public
double m_a1;
public
double m_a2;
public
double m_b1;
public
double m_b2;
public
double CalculKr2();
public
double Calcula0();
public
double Calcula1();
public
double Calcula2();
public
double Calculb1();
public
double Calculb2();
public
afx_msg void OnBnClickedReglare2();
public
afx_msg void OnEnUpdatea0();
public
afx_msg void OnEnUpdatea1();
public
afx_msg void OnEnUpdatea2();
public
afx_msg void OnEnUpdateb1();
public
afx_msg void OnEnUpdateb2();
// acordarePID2Dlg.cpp : implementation file
#include 'stdafx.h'
#include 'acordarePID2.h'
#include 'acordarePID2Dlg.h'
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#define PI 3.14
// CacordarePID2Dlg dialog
CacordarePID2Dlg::CacordarePID2Dlg(CWnd* pParent /*=NULL*/)
: CDialog(CacordarePID2Dlg::IDD, pParent)
, m_Kp(0)
, m_a(0)
, m_b(0)
, m_tau(0)
, m_Mf(0)
, m_t(0)
, m_om(0)
, m_btnSelectieCurenta(0)
, m_strKr(_T( ))
, m_strTi(_T( ))
, m_strTd(_T( ))
, m_strTx(_T( ))
, m_Ti(0)
, m_Td(0)
, m_Tx(0)
, m_Kr(0)
, m_stra0(_T( ))
, m_stra1(_T( ))
, m_stra2(_T( ))
, m_strb1(_T( ))
, m_strb2(_T( ))
, m_Kr2(0)
, m_a0(0)
, m_a1(0)
, m_a2(0)
, m_b1(0)
, m_b2(0)
void CacordarePID2Dlg::DoDataExchange(CDataExchange* pDX)
BEGIN_MESSAGE_MAP(CacordarePID2Dlg, CDialog)
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
ON_WM_SIZE()
#endif
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BUTTON2, &CacordarePID2Dlg::OnBnClickedButton2)
ON_BN_CLICKED(IDC_Reglare1, &CacordarePID2Dlg::OnBnClickedReglare1)
ON_BN_CLICKED(IDC_Calculeaza, &CacordarePID2Dlg::OnBnClickedCalculeaza)
ON_EN_UPDATE(IDC_Kr, &CacordarePID2Dlg::OnEnUpdateKr)
ON_EN_UPDATE(IDC_Ti, &CacordarePID2Dlg::OnEnUpdateTi)
ON_EN_UPDATE(IDC_Td, &CacordarePID2Dlg::OnEnUpdateTd)
ON_EN_UPDATE(IDC_Tx, &CacordarePID2Dlg::OnEnUpdateTx)
ON_BN_CLICKED(IDC_Reglare2, &CacordarePID2Dlg::OnBnClickedReglare2)
ON_EN_UPDATE(IDC_a0, &CacordarePID2Dlg::OnEnUpdatea0)
ON_EN_UPDATE(IDC_a1, &CacordarePID2Dlg::OnEnUpdatea1)
ON_EN_UPDATE(IDC_a2, &CacordarePID2Dlg::OnEnUpdatea2)
ON_EN_UPDATE(IDC_b1, &CacordarePID2Dlg::OnEnUpdateb1)
ON_EN_UPDATE(IDC_b2, &CacordarePID2Dlg::OnEnUpdateb2)
END_MESSAGE_MAP()
// CacordarePID2Dlg message handlers
BOOL CacordarePID2Dlg::OnInitDialog()
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
void CacordarePID2Dlg::OnSize(UINT /*nType*/, int /*cx*/, int /*cy*/)
#endif
void CacordarePID2Dlg::OnBnClickedButton2()
double CacordarePID2Dlg::CalculTi()
double CacordarePID2Dlg::CalculTd()
double CacordarePID2Dlg::CalculTx()
double CacordarePID2Dlg::CalculKr()
double CacordarePID2Dlg::CalculKr2()
double CacordarePID2Dlg::Calcula0()
double CacordarePID2Dlg::Calcula1()
double CacordarePID2Dlg::Calcula2()
double CacordarePID2Dlg::Calculb1()
double CacordarePID2Dlg::Calculb2()
void CacordarePID2Dlg::OnBnClickedReglare1()
void CacordarePID2Dlg::OnBnClickedReglare2()
void CacordarePID2Dlg::OnBnClickedCalculeaza()
if(m_btnSelectieCurenta==IDC_Reglare1)
if(m_btnSelectieCurenta==IDC_Reglare2)
void CacordarePID2Dlg::OnEnUpdateTi()
void CacordarePID2Dlg::OnEnUpdateTd()
void CacordarePID2Dlg::OnEnUpdateTx()
void CacordarePID2Dlg::OnEnUpdateKr()
void CacordarePID2Dlg::OnEnUpdatea0()
void CacordarePID2Dlg::OnEnUpdatea1()
void CacordarePID2Dlg::OnEnUpdatea2()
void CacordarePID2Dlg::OnEnUpdateb1()
void CacordarePID2Dlg::OnEnUpdateb2()
// acordareRSTPIDDlg.h : header file
#pragma once
// CacordareRSTPIDDlg dialog
class CacordareRSTPIDDlg : public CDialog
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
// Implementation
protected
HICON m_hIcon;
// Generated message map functions
virtual BOOL OnInitDialog();
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
afx_msg void OnSize(UINT /*nType*/, int /*cx*/, int /*cy*/);
#endif
DECLARE_MESSAGE_MAP()
public
double m_a0;
public
double m_a1;
public
double m_a2;
public
double m_a3;
public
double m_a4;
public
double m_b0;
public
double m_b1;
public
double m_b2;
public
double m_b3;
public
double m_b4;
public
CString m_strKr;
public
CString m_strTi;
public
CString m_strTd;
public
afx_msg void OnBnClickedButton3();
public
CString m_strR;
public
CString m_strS;
public
CString m_strT;
public
int deplasare;
public
int sc;
public
int j;
public
double aux0;
public
double aux1;
public
int ip;
public
double sum;
public
double p0;
public
double p1;
public
double p2;
public
double p3;
public
double p4;
public
void initializare_A(void);
public
void refacere_A(void);
public
void initializare_B(void);
public
void initializare_MAT(void);
public
void initializare_p(void);
public
void sup_tr(void);
public
void calcul_x(void);
public
void refacere_S(void);
public
void initializare_RSTpid(void);
public
void preluare_RS(void);
public
void preluare_T(void);
public
void calcul_PID(void);
public
afx_msg void OnBnClickedReglare1();
// acordareRSTPIDDlg.cpp : implementation file
#include 'stdafx.h'
#include 'acordareRSTPID.h'
#include 'Afxwin.h'
#include 'Afxtempl.h'
#include 'acordareRSTPIDDlg.h'
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#define Te 0.2
#define NRA 3
#define NRB 2
#define NR 5
#define NS 5
#define NT 5
// CacordareRSTPIDDlg dialog
CacordareRSTPIDDlg::CacordareRSTPIDDlg(CWnd* pParent /*=NULL*/)
: CDialog(CacordareRSTPIDDlg::IDD, pParent)
, m_a0(0)
, m_a1(0)
, m_a2(0)
, m_a3(0)
, m_a4(0)
, m_b0(0)
, m_b1(0)
, m_b2(0)
, m_b3(0)
, m_b4(0)
, m_strKr(_T( ))
, m_strTi(_T( ))
, m_strTd(_T( ))
, m_strR(_T( ))
, m_strS(_T( ))
, m_strT(_T( ))
, deplasare(0)
, sc(0)
, j(0)
, aux0(0)
, aux1(0)
, ip(0)
, sum(0)
, p0(0)
, p1(0)
, p2(0)
, p3(0)
, p4(0)
void CacordareRSTPIDDlg::DoDataExchange(CDataExchange* pDX)
BEGIN_MESSAGE_MAP(CacordareRSTPIDDlg, CDialog)
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
ON_WM_SIZE()
#endif
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BUTTON3, &CacordareRSTPIDDlg::OnBnClickedButton3)
ON_BN_CLICKED(IDC_Reglare1, &CacordareRSTPIDDlg::OnBnClickedReglare1)
END_MESSAGE_MAP()
// CacordareRSTPIDDlg message handlers
BOOL CacordareRSTPIDDlg::OnInitDialog()
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
void CacordareRSTPIDDlg::OnSize(UINT /*nType*/, int /*cx*/, int /*cy*/)
#endif
void CacordareRSTPIDDlg::OnBnClickedButton3()
void CacordareRSTPIDDlg::initializare_A(void)
void CacordareRSTPIDDlg::refacere_A(void)
void CacordareRSTPIDDlg::initializare_B(void)
void CacordareRSTPIDDlg::initializare_MAT(void)
deplasare=0;
for(j=NRB;j<NR;j++)
iM_CArray.Add(iMValue);
void CacordareRSTPIDDlg::initializare_p(void)
void CacordareRSTPIDDlg::sup_tr(void)
for(ip=sc+1;ip<NR;ip++)
inpValue[ip]=inpValue[ip]-iMValue[ip][sc]*inpValue[sc];
}
}
iM_CArray.Add(iMValue);
inp_CArray.Add(inpValue);
void CacordareRSTPIDDlg::calcul_x(void)
cx_CArray.Add(cxValue);
void CacordareRSTPIDDlg::refacere_S(void)
void CacordareRSTPIDDlg::initializare_RSTpid(void)
for(ip=0;ip<NRS;ip++)
for(ip=0;ip<NRT;ip++)
void CacordareRSTPIDDlg::preluare_RS(void)
for(ip=NRB;ip<NRA+NRB;ip++)
void CacordareRSTPIDDlg::preluare_T(void)
for(ip=0;ip<NRT;ip++)
pTValue[0]=sum;
pT_CArray.Add(pTValue);
void CacordareRSTPIDDlg::calcul_PID(void)
void CacordareRSTPIDDlg::OnBnClickedReglare1()
Dumitrache I. Ingineria Reglarii Automate, Editura Politehnica press, 2005.
Dumitrache I., Dumitriu S., Mihu I., Munteanu F., Musca Gh., Calcev C. Automatizari electronice, Editura Didactica si Pedagogica, 1993.
Gentil S., Popescu D. - Commande Numerique et Intelligence Artificielle en Automatique, Editura Tehnica, 1998.
Ionescu V., Popeea C. Conducerea structurala a sistemelor liniare, Editura Tehnica, 1986.
Ionescu V., Varga A. Teoria sistemelor, Editura All, 1994.
Petrescu C. Configurarea asistata de calculator a sistemelor numerice de conducere, Teza de doctorat, 2002.
Calin S., Dumitrache I. Reglarea numerica a proceselor tehnologice, Editura Tehnica, 1984.
https://en.wikipedia.or website.
https://www.expertune.com website.
https://www.pidlab.com website.
https://www.ecircuitcenter.com website.
https://collab.cc.gatech.edu website.
https://ieeexplore.ieee.org website.
https://www.nt.ntnu.no website.
https://www.microsoft.com website.
https://www.embedded.com - website.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 6551
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved