Implementarea Si Testarea Unor Sisteme de Reglare pe Diferite Platforme Si In Diferite Medii de Progr

Partea introductivă

1. Obiectul lucrării

În industrie există procese lente cu funcții de transfer care au constante de timp mari care pot să ajungă la zeci de minute sau chiar ore. Industria chimică, metalurgică sau a construcțiilor de mașini sunt un exemplu concludent în acest sens, în unele cazuri nu este neglijabil timpul mort.

Aceste procese au o serie de condiții dificile in ceea ce privește aparatura de reglare

dar in condițiile actuale exista soluții de control numeric care pot să controleze temperaturi, presiuni, debite, nivele, concentrații,PH sau umiditate cu ajutorul unui calculator.

În condițiile actuale în industrie un calculator de proces este mai mult decât necesar face fața atât achiziției de date cât si reglării efective(calcul comandă sau generare de răspuns proporțional cu comanda).

Proiectarea asistată de calculator a fost un domeniu de mare importanță în ultimele două decenii și este de așteptat ca interesul în acestã activitate să crească continuu în anii care urmează. Mediile de proiectare asistate de calculator au furnizat metodologia eficientă pentru conceperea eficientă și cu succes a circuitelor numerice de înaltă performanță și pe scară largă pentru un domeniu larg de aplicații de la prelucrarea informațiilor (calculatoarele electronice), la telecomunicații, controlul producției, transport, etc.

Regulatoarele electronice sunt realizate intr-o diversitate largă de tipuri de constructive și funcționale, ca regulatoare unificate și, mai rar, ca regulatoare specializate.

Construcția regulatoarelor electronice diferă în funcție de utilizarea lor pentru reglarea proceselor rapide sau lent, unde trebuie să asigure constante de timp compatibile cu dinamica procesului. Dacă pentru reglarea proceselor rapide constantele de timp se obțin relative ușor și cu precizie corespunzătoare, pentru procesele lente dificultățile sunt mult mai mari.

Utilizarea circuitelor digitale integrate pe scară medie și pe scară largă a condus la perfecționarea regulatoarelor numerice și la realizarea sistemelor numerice de reglare folosite în cadrul sistemelor ierahizate de automatizare.

În cadrul regulatoarelor electronice realizate cu circuite integrate, care reprezintă concepția actuala de implementare a legilor de reglare, problemele rezistenței la intrare , ale valorii constantelor de timp, ale amplificării reprezintă unele probleme principale ale construcției acestor regulatoare.

Se urmărește realizarea unor sisteme de reglare pe mai multe platforme și in diferite medii de programare care să să verifice timpii în care se realizează o buclă de reglare.

Tot în cadrul acestui proiect, se are în vedere extinderea studiului privind descompunerea automatelor finite și la alte metode de descompunere de tip general. După ce pachetul de programe va fi testat pe o mulțime extinsã de circuite test, se va cãuta verificarea acestuia prin utilizarea lui și pentru realizarea unor proiecte concrete din diverse domenii și care se bazeazã pe utilizarea circuitele secvențiale modelate cu ajutorul automatelor finite. Pentru verificarea metodelor de descompunere propuse se va cãuta aplicarea acestora unor circuite care sã fie apoi implementate fizic cu ajutorul unor sisteme de dezvoltare bazate pe circuite logice programabile de tip CPLD utilizând sistemele de dezvoltare ale firmei XILINX disponibile, respectiv XC2C256. Avantajul acestora este că ele permit implementarea unor proiecte de dimensiuni mici până la foarte mari având posibilitatea de a fi reconfigurate foarte ușor de un număr foarte mare de ori. In aceste fel se reduce timpul și costul implementării unor astfel de circuite secvențiale.

În aceste proiect se urmarește in general timpul în care se efectuează o buclă de reglare in mod deodebit cu ajutorul unui CPLD-complex programmable logic device care este o combinație de circuite programabile ȘI/SAU și un grup de macrocelule.

Se dorește implementarea unui regulator de tip P sau PI care să realizeze reglarea sistemelor cu ajutorul unui CPLD. Aceste tipuri de regulatoare au o relație de calcul care depinde de aproximarea cu care se lucrează (metoda dreptunghiului, metoda trapezului) [1] și, care, deși devine destul de complicată, este calculată suficient de repede. Acesta merge aproape la toate funcțiile de transfer (excepție ar fi un proces care are doar timp mort).

Dat fiind faptul că procesele sunt lente și calculul unei noi valori pentru comandă se realizează suficient de repede, putem spune că un microsistem va putea face față reglării unei anumite variabile de proces.

În cadrul acestui proiect se dorește implementarea unei scheme de reglare în limbajele de programare: LABVIEW și MATLAB precum și cu ajutorul CPLD-ului CoolRunner 2, produs al firmei XILINX în limbajul XILINX ISE 5. Regulatorul automat are rolul de a prelua operațional semnalul de eroare obținut în urma comparației liniar-aditive a mărimii de

intrare r și a mărimii de reacție yr în elementul de comparație și de a elabora la ieșire un semnal de comandă u pentru elementul de execuție.

Se realizează un sistem de reglare in limbajul LABVIEW in care sunt introduși pe rand parametrii de acord ai regulatorului. Se precizeaza ca se implementeaza un regulator PID a caror parametrii pot fi modificați de utilizator. De asemenea se pot poate preciza tipul sistemului pe care dorim sa îl reglăm. Astfel se pot utiliza sisteme de ordin întâi precum și sisteme de ordinul doi. Se pot vizualiza urmatoarele caracteristici: tipul intrării, raspunsul sistemului, precum si o vizualizare a regulatorului PID. Sistemul de reglare se poate structura pe mai multe module prezentate mai detaliat in memoriul justificativ.

De asemenea se prezintă un sistem de reglare realizat în mediul MATLAB în care sunt introduși de asemenea parametrii de acord ai regulatorului. Se prezinta schemele de reglare in Simulink și se simulează răspunsul sistemului cu regulatorul PID .

În mediul XILINX ISE 5 se modelează un regulator P cu ajutorul CPLD-ului CoolRunnner 2. Se realizează o structură de reglare cu ajutorul circuitelor integrate o implementare care reprezintă o concepție actuală în ceea ce privește reglarea sistemelor.

În fiecare mediu prezentat mai sus se determină timpul în care se execută schema de reglare și se realizează o comparație pentru fiecare implementare realizată.

Se poate evidenția că, cu ajutorul unui circuit programabil de tipul XC2C256 CoolRunner 2 timpul de execuție a unei bucle de reglare este mai rapidă decat prin celelalte metode implementare.

Memoriu tehnic

1. Considerații teoretice generale

1.1. Filtrarea numerică a semnalelor

Sistemele de reglare numerică realizează, înainte de reglare, conversia sub formă numerică a semnalelor de la ieșirea traductoarelor și, după calcularea comenzii, generează ieșiri sub fomă analogică.

Prelucrarea primară a datelor se poate face atât prin metode analogice cât și prin metode numerice sau combinat, prin ambele metode. Indiferent de modul de prelucrarea primară a datelor, este necesară alegerea unei perioade de eșantionare și de conversie analognumerică. Pentru un semnal lent variabil în timp, la care conversia analognumerică se face la momente de eșantionare fixate prin program, reconstituirea semnalului prin metode de interpolare poate da rezultate precise pentru precizia aleasă.

Dacă semnalul supus conversiei poate avea variații rapide în timp, atunci eșantionarea la intervale constante de timp (Fig. 1.1.1) nu poate oferi rezultate acceptabile, deoarece se pot pierde informații din evoluția semnalului (Fig. 1.1.2). Pe de altă parte micșorarea perioadei de eșantionare poate duce la creșterea inacceptabilă a volumului de date care trebuie prelucrat. Pentru a se evita acest dezavantaj se poate recurge la prelucrarea primară a semnalelor prin metode analogice.

Dacă semnalul analogic are o variație bruscă în timp și aceasta nu poate fi prinsă prin eșantionarea cu o perioadă constantă, atunci se poate recurge la utilizarea unui circuit electronic care să declanșeze conversia pentru o anumită pantă de variație a semnalului, evitându-se astfel pierderea unei variații importante din semnal.

La sistemele numerice influența zgomotelor este mai periculoasă decât în cazul sistemelor continue de reglare care, pot asigura eliminarea efectelor semnalelor de frecvență ridicată datorită proprietății de filtru trecejos pe care o au. În cazul sistemelor de reglare numerică, măsurarea unei valori alterate sensibil de zgomot în momentul eșantionării, constituie o informație eronată (în absența unor măsuri de filtrare), este considerată valabilă și prelucrată ca atare de regulatorul numeric, rezultând o funcționare incorectă a sistemului.

Conversia analognumerică devine o problemă atunci când semnalul de intrare este supus unor zgomote, și se impune utilizarea unui filtru la intrare. Prin introducerea acestui filrtru se urmărește scăderea în cât mai mare masură a influenței perturbațiilor asupra semnalului convertit. Câteva tipuri de filtre des utilizate sunt: filtrul de tip întârziere de ordinul I, filtrul cu bandă constantă, filtrul cu bandă adaptivă, filtrul cu factor de păstrare variabil sau filtrul cu mediere.

1.1.1. Filtrarea tip întârziere de ordinul I

Este foarte des folosită în cazul sistemelor continue. Filtrul de tip întârziere de ordinul I este de fapt un filtru trecejos și asigură o filtrare de tip exponențial (la un semnal de intrare de tip treaptă răspunsul este o exponențială).[4]

Funcția de transfer a unui asemenea element este:

(1.2.1.1.1)

unde, yfI este semnalul de ieșire din filtru, ufI este semnalul de intrare în filtru, iar TfI este constanta de timp a filtrului (se observă că factorul de amplificare este unitar).

Din relația (1.2.1.1.1) rezultă:

(1.2.1.1.2)

de unde prin trecerea în domeniul timp se obține:

(1.2.1.1.3)

Dacă se acceptă faptul că se poate aproxima derivata cu diferențe finite se poate scrie:

(1.2.1.1.4)

Considerând că t este chiar Te (perioada de eșantionare a sistemului discret) și că :

(1.2.1.1.5)

rezultă:

(1.2.1.1.6)

Se obține astfel o nouă formă pentru funcția de transfer de la care am pornit:

(1.2.1.1.7)

Această din urmă relație (1.2.1.1.7) cuprinde aproximația derivatei, de care am pomenit mai sus și datorită acestui fapt se scapă informație (derivata continuă conține informații asupra tendinței viitoare de evoluție, pe când echivalentul discret înglobează doar informații referitoare la valoarea curentă yk și valoarea anterioară yk – 1).

Din relația (1.2.1.1.7), prin efectuarea unor calcule se obține dependența:

(1.2.1.1.8)

Se observă că, dacă notăm , cu [0, 1] rezultă o relație de forma:

(1.2.1.1.9)

În relația (1.2.1.1.9) acest poate fi privit ca un factor de menținere a valorii vechi. Dacă se făcea o notare inversă, atunci spuneam că este factor de uitare.

Intensitatea filtrării depinde de valoarea aleasă pentru coeficientul . Dacă   1, respectiv T fI >> T e filtrarea este foarte puternică, deoarece valoarea y f, k rămâne apropiată de valoarea anterioară y f, k1, deci influența zgomotelor este redusă; dacă   0, respectiv TfI << T e filtrarea este foarte slabă. Problema care se pune este că în primul caz ( 1), datorită filtrării puternice nu se pot urmării semnale puternic variabile, ci numai lent variabile.

1.1.2. Filtrarea cu bandă constantă

În acest caz se stabilește o limită constantă L pentru diferența dintre valoarea mărimii măsurate u k și valoarea de la tactul anterior a acestei mărimi yk-1.

Considerând că elementul de filtrare de ordinul I are la intrare mărimea măsurată u k și la ieșire mărimea filtrată y k, algoritmul de filtrare cu bandă constantă prevede următoarele condiții:

dacă:

(1.2.1.2.1)

adică, valoarea măsurată nu este afectată de zgomote, filtrarea nu are loc și se alege:

y k = u k (1.2.1.2.2);

dacă:

(1.2.1.2.3)

are loc depășirea benzii stabilite L și se efectuează filtrarea corespunzătoare unui filtrur de menținere a valorii vechi. Dacă se făcea o notare inversă, atunci spuneam că este factor de uitare.

Intensitatea filtrării depinde de valoarea aleasă pentru coeficientul . Dacă   1, respectiv T fI >> T e filtrarea este foarte puternică, deoarece valoarea y f, k rămâne apropiată de valoarea anterioară y f, k1, deci influența zgomotelor este redusă; dacă   0, respectiv TfI << T e filtrarea este foarte slabă. Problema care se pune este că în primul caz ( 1), datorită filtrării puternice nu se pot urmării semnale puternic variabile, ci numai lent variabile.

1.1.2. Filtrarea cu bandă constantă

În acest caz se stabilește o limită constantă L pentru diferența dintre valoarea mărimii măsurate u k și valoarea de la tactul anterior a acestei mărimi yk-1.

Considerând că elementul de filtrare de ordinul I are la intrare mărimea măsurată u k și la ieșire mărimea filtrată y k, algoritmul de filtrare cu bandă constantă prevede următoarele condiții:

dacă:

(1.2.1.2.1)

adică, valoarea măsurată nu este afectată de zgomote, filtrarea nu are loc și se alege:

y k = u k (1.2.1.2.2);

dacă:

(1.2.1.2.3)

are loc depășirea benzii stabilite L și se efectuează filtrarea corespunzătoare unui filtru de tip întârziere de ordinul I.

1.1.3. Filtrarea cu bandă adaptivă

Este indicată în cazul semnalelor cu tendințe de variație abruptă în timp. În locul unei valori constante a benzii (cazul anterior), este folosită o bandă variabilă, conform relației:

(1.2.1.3.1)

unde: L k este valoarea benzii la pasul k;

L este valoarea minimă posibilă a benzii, pentru J k = 0;

J k este o variabilă care ia valori după o anumită lege (expusă în continuare).

În cazul filtrului cu bandă adaptivă intervin doi algoritmi: unul de filtrare și unul de adaptare a benzii. Algoritmul de filtrare prevede următoarele condiții:

dacă:

(1.2.1.3.2)

valoarea măsurată nu este afectată de zgomote, filtrarea nu are loc și se alege:

yk = uk (1.2.1.3.3);

dacă:

(1.2.1.3.4)

se alege:

yk = yk1 ± L k (1.2.1.3.5),

semnul +/ fiind determinat de semnul diferenței yk  y k1.

Algoritmul de adaptare este definit prin următoarele trei ipoteze:

dacă:

(1.2.1.3.6)

atunci banda se contractă și se alege:

Jk = Jk1 – A (1.2.1.3.7);

Constanta A este pozitivă și în practică poate să ia valorile din tabelul 1.2.1.3.1:

dacă:

(1.2.1.3.8)

atunci banda rămâne constantă și se alege:

Jk = Jk1 (1.2.1.3.9);

dacă:

(1.2.1.3.10)

atunci banda se expandează și se alege:

Jk = Jk1 + A (1.2.1.3.11);

Avantajul filtrării cu bandă adaptivă constă în faptul că la o primă măsurare în afara benzii nu are loc filtrarea, considerânduse că măsurarea este afectată de zgomote. Dacă însă persistă o măsurare în afara benzii, atunci se efectuează expandarea, cu scopul ca noua bandă să includă următoarea măsurare ca o valoare validă, corespunzătoare unei tendințe de variație; în mod similar se realizează contractarea benzii.

Filtrarea cu bandă adaptivă introduce astfel o pondere mai mare în considerarea evoluției anterioare, fiind mai puțin sensibilă la zgomote și urmărind în condiții mai bune tendințele de variație ale semnalului de intrare.

1.1.4. Filtrarea prin mediere

Pentru micșorarea influenței zgomotelor se folosește și filtrarea prin medie aritmetică a unui număr de valori măsurate, care poate fi egal cu 2 la o putere întreagă, astfel încât divizarea sumei prin numărul de valori măsurate să poată fi făcută simplu printro deplasare la dreapta pe biți.

Influența zgomotelor este cu atât mai redusă cu cât medierea se extinde pentru un număr mai mare de valori măsurate, crescând insă timpul necesar realizării sumei adică, perioada de eșantionare cu care se poate lucra în sistem.

1.2. Regulatoare numerice

Regulatorul automat are rolul de a prelua operațional semnalul de eroare, obținut în urma comparației liniar-aditive a semnalului de intrare r și a semnalului de reacție y în elementul de comparație și de a elabora la ieșire un semnal de comandă u pentru elementul de execuție. Informațiile curente asupra desfășurării procesului tehnologic se obțin cu ajutorul traductorului de reacție si sunt preluate de regulatorul automat in conformitate cu o anumita lege care defineste algoritmul de reglare automata.

Algoritmii de reglare (legile de reglare) conventionali utilizati frecevnt in reglarea proceselor tehnologice sunt de tip proportional-integral-derivativ.

Implementarea unei anumite legi de reglare sepoate realiza print-o varietate destuld e larga a constructiei regulatorului, ca regulator electronic, pneumatic, hidraulic sau mixt.

Chiar si in cadrul aceleiasi categorii constructive se pot realiza variante diferite, fiecare solutie oferind anumite avantaje din punct de vedere al preciziei de realizare a legii de reglare, apretului , a sigurantei in functionare si a flexibilitatii in exploatare.

Structura unui sistem de reglare numerică (fig. 1.2.2.1) evidențiază faptul că un asemenea sistem este hibrid din punct de vedere al informației pentru că se vehiculează atât informație sub formă analogică cât și sub formă numerică.

Din figura 1.2.1 se remarcă două blocuri: interfața de intrare și interfața de ieșire, elemente despre care vom discuta în continuare.

Interfața de intrare care, are rolul de a discretiza informația din proces prin operații de eșantionare și cuantizare. Acest bloc cuprinde un element de eșantionare și un element de cuantizare (convertor numericanalogic) așa cum se vede în figura 1.2.2.

Figura 1.2.3 prezintă etapele prin care trece un semnal de intrare continuu pentru a se transforma într-un semnal numeric astfel:

graficul a) prezintă semnalul (informația) continuu;

graficul b) prezintă semnalul rezultat în urma eșantionării;

graficul c) prezintă semnalul numeric rezultat.

Ieșirea y p(t) din circuitul de eșantionare este reprezentată sub forma unei succesiuni de impulsuri modulate în amplitudine, de perioadă T. Durata impulsurilor este constantă și egală cu p (lățimea suprafeței hașurate), fiind determinată de performanțele elementului de eșantionare (de ex. viteză de comutație). Cuantizarea informației, rezultată în urma unei trunchieri sau rotunjiri, se realizează cu ajutorul convertorului analognumeric.

Interfața de ieșire este realizată cu un extrapolator. Elementul de reținere (extrapolatorul) are rolul de a reface semnalul continuu, având în vedere că elementul de execuție (cuprins în proces) este un element cu funcționare continuă. Cel mai simplu tip de extrapolator este elementul de eșantionare reținere de ordinul zero(ER0), a cărui structură este prezentată în figura 1.2.4.

Figura 1.2.5 pune în evidență semnalul numeric (valori numerice) și semnalul analogic obținut prin extrapolare. Trecerea de la un tip de semnal la altul se realizează cu un extrapolator de ordinul zero care, menține constantă valoarea funcției la ieșire, pe parcursul unei perioade de eșantionare. Dacă se consideră aplicat la intrare un impuls unitar, răspunsul acestui element de extrapolare se poate calcula ca diferența a două trepte unitare, iar funcția de transfer asociată acestuia este în relația (1.2.2.1):

(1.2.1)

Se observă că în figura 1.2.2.4 se folosește o perioadă de eșantionare la ieșire (T+T0). Diferența dintre perioada de eșantionare la ieșire și perioada de eșantionare a informației de intrare este determinată de necesitatea prelucrării informației pe cale numerică. În cazul prelucrării numerice a informației cu viteze ridicate se poate admite că cele două circuite de eșantionare sunt sincrone.

1.2.1. Metode de discretizare

Pentru a caracteriza funcționarea sistemelor cu eșantionare se consideră modelul unui circuit de eșantionare ideal (p ‹‹ T):

k = 0, 1, 2, … (1.2.1.1)

Din definiție, relația (1.2.2.1.1), se observă că circuitul de eșantionare ideal furnizează la ieșire o succesiune de impulsuri modulate în amplitudine, echidistante.

Introducând notația z = e sT, se poate defini transformata Z a unei funcții discrete sub forma dată de relația (1.2.2.1.2):

(1.2.1.2)

O posibilitate de a obține modelul discret al unei funcții continue constă în a discretiza funcția continuă printro procedură de discretizare cum ar fi: metoda dreptunghiului, metoda trapezelor, metoda RungeKutta, proceduri care permit aproximarea integralei funcției respective prin intermediul unor relații de calcul de tipul sumei sau diferenței.

1.2.1.1. Discretizarea prin metoda dreptunghiului

Această metodă permite obținerea echivalentului discret al unei funcții continue pornind de la relația de aproximare a integralei prin relația (1.2.2.1.1.1):

(1.2.1.1.1)

sau:

(1.2.1.1.2)

unde u(k) reprezintă funcția de intrare, iar y(k) funcția de la ieșirea unui integrator cu ecuația matematică de forma descrisă de relația (1.2.1.1.3):

(1.2.1.1.3)

O structură a unui astfel de integrator poate fi cea din figura 1.2.1.1.1

Folosind această metodă de discretizare se pot obține modele matematice sub forma ecuațiilor cu diferențe.

1.2.1.2. Discretizarea prin metoda trapezelor

Prin intermediul acestei metode se aproximează integrala unei funcții prin relația (1.2.1.2.1):

(1.2.1.2.1)

sau:

(1.2.1.2.2)

Desigur, în acest caz aproximarea este mult mai bună, dar problema care apare este creșterea volumului calculelor.

1.2.2. Regulatorul P

Este cel mai simplu tip de regulator. Funcția de transfer este dată de relația (1.2.2.1):

(1.2.2.1)

unde c(t) este comanda, e(t) este eroarea, iar K este valoarea coeficientului proporțional.

Din formula (1.2.2.1) se poate scrie (1.2.2.2):

(1.2.2.2)

care trecută în domeniul discret este (1.2.2.3):

(1.2.2.3)

Această ultimă formulă (1.2.2.3) poate fi interpretată astfel: valoarea curentă a comenzii este valoarea curentă a erorii înmulțită cu constanta de proporționalitate a regulatorului. Relația este de fapt ecuația care descrie funcționarea regulatorului P numeric.

1.2.3. Regulatorul PI

Acesta este cel mai utlizat tip de regulator deoarece nu cere o putere de calcul prea mare și asigură o eroare staționară la poziție nulă. Ecuația de funcționare în domeniul timp poate fi scrisă sub forma (1.2.3.1):

(1.2.3.1)

Această ecuație trecută în domeniul discret arată (1.2.3.2):

(1.2.3.2)

Pasul următor spre obținerea unei relații care poate fi calculată numeric este aproximarea integralei cu una din cele două metode prezentate în Capitolul 1.2.2.1. Vom folosi aproximarea prin metoda trapezului pentru că oferă un rezultat mai apropiat de cel real, chiar dacă va necesita un timp de calcul mai mare. Formula pe care o vom folosi este (1.2.3.3):

(1.2.3.3)

Prin înlocuirea în relațiea de definiție a integralelor cu aproximarea se obține relația (1.2.3.4):

(1.2.3.4)

care mai poate fi scrisă sub forma (1.2.3.5):

(1.2.3.5)

unde, prin ck s-a notat c(kT), iar prin ck-1 s-a notat c[(k-1)T].

Se obține astfel o relație de calcul a valorii curente a comenzii funcție de valoarea anterioară a comenzii și de valoarea curentă respectiv anterioară a erorii (1.2.3.6):

(1.2.3.6)

Această din urmă relație definește funcționarea regulatorului PI numeric.

1.2.4. Regulatorul PID

Relația care reprezintă regulatorul PID ideal este prezentată în continuare (1.2.4.1):

(1.2.4.1)

Pentru a trece în domeniul discret este necesară introducerea aproximării folosite pentru efectul derivativ. Admitem că se poate scrie derivata sub forma diferenței finite. Astfel vom avea relația (1.2.4.2):

(1.2.4.2)

Ultima parte a relației (1.2.4.2) nu se folosește pentru că nu are sens tehnic, neavând posibilitatea să aflăm valori viitoare ale erorii.

Relația pentru regulatorul PID poate fi scrisă ca în (1.2.4.3):

(1.2.4.3)

Aplicând acum formula de la metoda trapezului va rezulta (1.2.4.4):

(1.2.4.4)

și

(1.2.4.5)

unde,

(1.2.4.6)

Din cele două relații ale ck și ck-1 prin scădere se obține (1.2.4.7):

(1.2.4.7)

Din această ultimă relație (1.2.4.7) se poate obține o relație a valorii comenzii în funcție de valoarea anterioară a comenzii și de valori ale erorii (curentă și anterioare) (1.2.4.8):

(1.2.4.8)

Relația (1.2.4.8) descrie funcționarea regulatorului PID ideal numeric.

1.2.5. Regulatorul PD

În lucrarea de față s-a implementat regulatorul PD ideal, pentru că este realizabil doar pe cale numerică. Relația matematică folosită la descrierea funcționării acestui tip de regulator este (1.2.5.1):

(1.2.5.1)

Această relație (1.2.5.1) poate fi rescrisă, ținând cont de aproximarea derivatei cu diferențe finite, astfel (1.2.5.2):

(1.2.5.2)

Prin înlocuirea kT = k și (k – 1)T = k – 1 se va obține o relație asemănătoare relațiilor de la celelalte regulatoare (1.2.5.3):

(1.2.5.3)

Această ultimă relație (1.2.5.3) prezintă legătura dintre valoarea actuală a comenzii și valoarea curentă respectiv precedentă a ieșirii, fiind, deci, relația care definește funcționarea regulatorului PD numeric.

1.3. Circuite logice

Circuitele logice combinaționale, CLC, sunt un caz particular al sistemelor secvențiale finite sau al automatelor finite, numite automate de grad 0.

Circuitele logice combinaționale se caracterizează prin faptul că variabilele de ieșire sunt independente de timp și de starea internă, fiind determinate numai de variabilele de intrare (starea variabilelor de intrare la momentul considerat).

Legătura dintre starea ieșirii și starea intrării unui CLC este realizată de funcția de transfer.

Figura 1.3.1 Structura unui circuit combinațional

Oricare funcție de ieșire y (y1, y2,…, ym) este funcție de toate variabilele de intrare (x1, x2,…, xn). Un CLC se poate descrie astfel:

y1 = f1(x1, x2,…, xn)

y2 = f2(x1, x2,…, xn)

ym = fm(x1, x2,…, xn)

Funcțiile se vor exprima în forma canonică disjunctivă FCD sau în forma canonică conjunctivă FCC.

Independența față de timp presupune că o dată cu modificarea variabilelor de intrare se modifică simultan și variabilele de ieșire. Din punct de vedere practic, datorită întârzierilor produse de circuitele logice și de conexiuni, modificarea simultană nu este posibilă. Ca urmare, pe durata procesului tranzitoriu de stabilire a variabilelor de ieșire, vectorul ieșirilor poate lua valori intermediare diferite de valoarea finală, ceea ce conduce la fenomenul de hazard combinațional, de care trebuie să se țină cont la proiectarea unui sistem numeric.

În general, la circuitele logice combinaționale, vom face abstracție de proprietățile fizice ale porților logice, de faptul că un impuls teoretic diferă de unul real. Vom analiza aceste fenomene doar în cazul hazardului combinațional.

1.3.1.Analiza circuitelor logice combinaționale

În cadrul analizei CLC se pleacă de la cunoașterea schemei logice a circuitului și se urmărește stabilirea funcționării acestuia. Stabilirea expresiei variabilei de ieșire se face de la intrare la ieșire, urmărind transformările variabilelor de intrare.

Definim ca număr de nivele al unui CLC numărul maxim de porți dintre intrări și ieșiri. Numerotarea nivelelor se face de la ieșire înspre intrare.

x5

x1

x2

y1

x3

x4 y2

x6 x7

4 3 2 1

Figura 1.3.1.1 Structura unui circuit combinațional cu 4 intrări și 2 ieșiri

Circuitul logic combinațional din exemplu are 4 nivele.

Există și următoarea situație de legături între porți:

x1 y

x2

x3

Figura 1.3.1.1 Structura unui circuit combinațional cu 3 intrări și 1 ieșire

Acest circuit are și legături inverse. Ultimele porți nu pot fi numerotate, deci circuitul nu este un CLC.

În CLC sunt admise legăturile inverse (ieșirea unei porți dintr-un nivel inferior să fie dusă la intrarea unei porți dintr-un nivel superior) cu condiția ca definiția CLC să fie respectată.

1.3.2. Algoritm de determinare a legăturilor inverse în CLC

a. Se numerotează toate porțile logice care au ca intrări un subset din mulțimea variabilelor de intrare ale circuitului logic (de la 1 la k);

b. Se numerotează de la k+1 porțile care au ca intrări fie intrări ale circuitului, fie ieșiri ale porților numerotate la punctul a. Dacă am reușit să numerotăm toate porțile circuitului logic, acesta este fără legături inverse și este circuit combinațional. Dacă nu am reușit numerotarea tuturor porților logice, circuitul este de tip secvențial.

1.3.3.Circuite combinaționale uzuale (specializate)

Multiplexoare

Multiplexoarele sunt CLC care permit trecerea datelor de pe una din intrări la o ieșire unică. Selecția intrării se face printr-un cuvânt de cod de selecție numit și adresă.

Figura 1.3.3.1 Structura unui multiplexor cu n intrări și m selecții

Cu m linii de selecție se pot selecta 2m intrări. Funcția realizată de ieșire este:

y = Ik ,

unde k este numărul de combinații

k = sm-1 2m-1 + … + s0 20

Aplicațiile cele mai importante ale MUX sunt la selecția secvențială a datelor, conversia paralel-serie a datelor, sisteme de transmisie a datelor pe un singur canal, implementarea circuitelor logice combinaționale cu o singură ieșire.

In cintinuare sunt prezentate exemple de multiplexoare cu diferite semnale de intare:

Figura 1.3.3.2 Structura unui multiplexor cu 2 intrări și 1 selecție

Multiplexorul de tip 2:1 are 2 semnale de intrare, I0 și I1, un semnal de selecție s și o ieșire y. În funcție de semnalul de selecție avem pentru ieșire: y = I0 s + I1 s.

s = 0 y = I0

s = 1 y = I1

Deci multiplexorul lasă să treacă spre ieșire semnalul de pe acea linie de intrare

corespunzatoare ale lui s.

Figura 1.3.3.3 Structura unui multiplexor cu 4 intrări și 2 selecții

Multiplexorul de tip 4:1 are 4 semnale de intrare, 2 semnale de selecție și un semnal de ieșire. Ieșirea va fi:

y = I0 s0 s1 + I1 s0 s1 + I2 s0 s1 + I3 s0 s1

Există multiplexoare de tip 8 : 1, 16: 1, 32 : 1. Multiplexoarele integrate au disponibile atât ieșirea adevărată cât și cea negată. Ele au și o intrare de “Enable” pentru validare, care permite o funcție SI suplimentară.

Demultiplexoare

Demultiplexoarele sunt CLC care permit transmiterea datelor de pe o intrare de date comună pe una din ieșirile selectate. Selectarea ieșirii se face cu ajutorul unui cuvânt de cod de selecție numit și adresă.

Figura 1.3.3.4. Structura unui demultiplexor cu n ieșiri și m selecții

Cu m linii de selecție se pot selecta 2m ieșiri. Funcțiile de ieșire sunt:

y0 = sm-1 … s0 I

y1 = sm-1 … s0 I

y2m = sm-1 … s0 I

Comparatoare numerice

Comparatoarele numerice sunt CLC care permit determinarea valorii relative a două numere binare. Comparatoarele pot fi de 1 bit sau de mai mulți biți.

Exemplu: Comparator pe 1 bit

Figura 1.3.3.5 Structura unui comparator numeric

Funcțiile de ieșire sunt:

y1 = Ai Bi pentru Ai < Bi,

y2 = Ai + Bi pentru Ai = Bi

y3 = Ai Bi pentru Ai > Bi

Acest circuit constituie celula de bază pentru compararea numerelor cu mai mulți biți

Hazardul combinațional

Datorită întârzierilor produse de circuitele logice și de firele de legătură ale unui CLC se poate ca starea ieșirii circuitului în momentul modificării stării variabilelor să nu coincidă cu valoarea funcției corespunzătoare valorii intrărilor în momentul considerat. Pentru timp scurt circuitul are o comportare greșită, numită hazard.

Exemplu

f(x1,x2,x3) = x1 x3 + x2 x3

x1 1 f’

x3 g 3

f

x2 2

x3 h

În practică întârzierile 1, 2, 3 ale porților SI-NU nu sunt egale, de aceea poate să apară hazardul combinațional și când se pune condiția ca doar o singură variabilă de intrare să se modifice la un moment dat.

Hazardul apare atunci când starea intrărilor x1x2x3 se modifică de la 010 la 011 sau invers.

x1

x2

x3

1

g

2

h

f’

f

3

tr

2 > 1 deși starea ar trebui să fie nemodificată.

După timpul de reacție tr = 1 + 2 va apare la ieșire un impuls negativ de durată t = 2 – 1 și în această durată ieșirea ia o valoare incorectă.

Eliminarea hazardului static se poate face în cazul în care se impune ca la un moment dat să se modifice starea unei singure variabile de intrare. Pentru realizarea funcției se consideră și unii termeni redundanți din diagrama Karnaugh, astfel încât oricare doi de 1 aflați în căsuțe adiacente în diagramă să fie incluși cel puțin într-un contur luat în considerare la sinteza schemei.

Pentru exemplul dat se va introduce în expresia funcției termenul x1x2.

f = x2 x1 + x3 x1 + x3 x2

x1 g 1

x3

f’

x2 h 2 3 f

x3

x1 i t

x2

x1

x2

x3

1

g

2

h

i

f’

f

Observații

Hazardul static poate să apară și când 1 > 2, la schimbarea 011 în 000.

Proiectarea unui CLC când se schimbă mai mult decât o singură variabilă de intrare la un moment dat, fără să apară hazard, este mai dificilă sau chiar imposibil de realizat (hazard de funcție).

Eliminarea sigură a hazardului se poate face luând în considerare ieșirea circuitului după un interval de timp mai mare decât întârzierea maximă din circuit.

1.3.4. Sinteza CLC cu PLA

PLA (Programmable Logic Array) este un CLC cu două nivele de logică programabilă, o matrice de porți SI și o matrice de porți SAU. PLA este de fapt o structură universală, extinsă, de implementare cu 2 nivele de porți logice. Ambele matrici sunt programabile, în procesul de fabricație sau de către utilizator, conform aplicației concrete. PLA este o structură mobilă și se utilizează eficient pentru sisteme cu mai mult de 8 variabile de intrare.

Deoarece la PLA sunt programabile ambele nivele, implementarea se face pornind de la termenii elementari ai funcției, obținuți prin minimizarea ei.

Reprezentarea schematică a PLA cu n intrări, m ieșiri și p termeni elementari realizabili este:

x1 conexiune programabilă

x2

xn

Matrice

SI

1 p

1 f1

conexiune Matrice

programabilă SAU

fm

m

conexiune programabilă

CS

Figura 1.3.4.1 Structura PLA schematic

Avantajele implementării cu PLA față de implementarea cu ROM se referă la posibilitatea programării matricei SI și a complementării variabilelor de ieșire (variabilele de ieșire pot fi programate individual ca active pe 0 sau pe 1).

Aplicații ale PLA sunt la:

– microprogramare;

– conversii de cod;

– generare de caractere;

– realizare de tabele de funcții;

– implementarea automatelor secvențiale.

Observație. Există circuite integrate cu grad și mai mare de integrare (VLSI) utilizate în implementare. Amintim dintre acestea FPGA (Field Programmable Gate Array).

1.3.5.Circuite logice secvențiale

Circuitele logice secvențiale, CLS, sunt automate de ordinul 1. Se obțin din automatele de ordinul 0 (CLC) prin introducerea unor reacții (legături inverse). Sunt alcătuite din circuite logice combinaționale și elemente de memorare binară.

Semnalele de ieșire ale CLS depind atât de combinația semnalelor aplicate pe intrări cât și de starea circuitului. Un CLS este caracterizat printr-o secvență a semnalelor de ieșire și o secvență a stărilor elementelor de memorie, pentru fiecare secvență a semnalelor aplicate pe intrările circuitului.

După modul de funcționare (modul de transmitere a semnalelor) există 2 categorii principale de CLS:

asincrone – comportarea este determinată de aplicarea pe intrări a semnalelor în momente oarecare; starea circuitului depinde de ordinea în care se schimbă semnalele;

sincrone – comportarea este determinată de aplicarea pe intrări a semnalelor în momente discrete, bine determinate în timp; sincronizarea se realizează cu ajutorul unor impulsuri date de un generator de tact (ceas).

Exemple de CLS: bistabili, numărătoare, registre, memorii RAM.

Circuite basculante bistabile

Definiție. Circuitele basculante bistabile (CBB sau bistabili) sunt circuite logice secvențiale care au două stări stabile distincte. Trecerea dintr-o stare în alta se face la aplicarea unei comenzi din exterior.

Caracteristica principală a CBB este că sunt sisteme cu memorie (elemente de memorie binară). Un bistabil poate păstra un timp nedefinit informația binară și în același timp starea sa poate fi citită în orice moment. Se asociază uneia dintre cele 2 stări ale bistabilului funcția de memorare a cifrei binare 1 și celei de a doua stări funcția de memorare a cifrei binare 0. Bistabilul are 2 ieșiri, una care pune în evidență cifra binară memorată, numită ieșire adevărată și a doua, care pune în evidență valoarea negată a cifrei binare memorate, denumită ieșire negată.

1.4. CPLD-uri( complex programmable gate device)

1.4.1. Introducere in CPLD-uri( complex programmable gate device)

Utilizarea pe scară largă a calculatoarelor a dus la necesitatea studierii lor globale, ca dispozitive de prelucrare a informației reprezentată simbolic, în scopul descoperirii de noi resurse de dezvoltare sau a limitării acestor mașini.

Studiul, pentru a fi general, trebuie să plece de la caracteristici comune – teoria automatelor realizează acest studiu al posibilităților și limitărilor dispozitivelor de prelucrare a informației, folosind un model abstract al tuturor dispozitivelor, model care imită activitatea și aspectul funcțional al acestora. Acest model abstract de numește automat.

Primele circuite logice programabile au fost produse de corporația Advanced Micro Devices (AMD). Circuitele logice programabile cunoscute și sub forma acronimului PLD(Programmable Logic Device), sunt circuite integrate care conțin un număr mare de poți sau celule a caror interconexiune poate fi configurată sau programată pentru a implementa orice funcție combinațională sau secvențiala dorită. Pentru programarea circuiteleor PLD se utilizează doua tehnici: programarea prin măști , care se efectuează în timpul procesului de fabricație și programarea de către utilizator pentru care se utilizează echipamente de programare cu costuri reduse. Multe circuite PLD pot fi reprogramate de utilizator de multe ori, motiv pentru care sunt avantajoase pentru realizarea prototipurilor unui nou produs.

Coneziunile programabile intre elemntele logice ale unui PLD contin comutatoare realizate de obicei cu tranzistoare sau antifuzibile(uneori fuzibile). Portile logice programabile ale unui circuit PLD pot fi reprezentate in mod simplificat.

O retea logica programabila PLA(Programmable Logic Array)este similara ca si concept cu o memorie ROM cu exceptia faptului ca nu realizeaza decodificarea concreta a varibilelor si nu genereaza toti mintermii. Decodificatorul este inlocuit cu o retea de porti logice SI care poate fi programată pentru a genera termenii produs ai variabilelor de intrare. Termenii produs sunt apoi conectati in mod selectiv cu porti SAU pentru a genera suma termenilor produs pentru functiile booleene necesare. Un circuit PLA poate implementa in mod direct un set de functii logice exprimate printr-un tabel de adevar. Fiecare intrare pentru care valoarea functiei este adevarata necesita un termen produs sia cestuia ii corespunde o linie de porti SI din primul etaj al circuitului PLA. Un circuit PLA are doua caracteristici care determina o implementare eficienta a unui set de functii logice Prima este ca singurele intrari din tabelul de adevar care necesita porti logice sunt cele carora le corespunde o valoare adevarata pentru cel putin o iesire. A doua este ca un termen produs va avea o singura intrare in circuitul PLA chiar daca temenul produs este utilizat in mai multe iesiri.

Circuitele CPLD sunt o modalitate de extindere a circuitelor PLD. In figura de mai jos este prezentata schema unui astfel de circuit CPLD traditional:

Figura 1.4.1.1- Schema unui CPLD

1.4.2.CoolRunner 2

In continuare se prezinta circuitele din seria COOLRUNNER . Din aceasta serie fac parte doua circuite: COOLRUUNER XPLA3(3,3V) si COOLRUUNER II(1,8V).

Circuitul COOLRUNNER II este un circuit din familia CPLD-urilor care are urmatoarele avantaje: putere mica, costuri mici, performanta ridicata si design flexibil.

Se poate evidentia mai multe aspecte ale acestui dispozitiv : COOLRUNNER II in cele ce urmeaza.

Arhitectura unui COOLRUNNER II

Arhitectura unui COOLRUNNER II este asemanatoare cu a unui CPLD clasic, combină macrocelulele in funcțiile bloc interconecate cu AIM(advanced interconecting matrix). Blocurile de functie folosesc o configurație PLA (retea logică programabilă). Blocul funcție se atașează pinilor si se interconecteaza unele cu altele prin intermediul matricii interne de interconectare. Fiecare bloc de functie contine 16 celule cu 40 de intrări pentru semnale. Toate blocurile de funcții care apartin acestui sistem sunt identice .

Rezultatul acestei arhitecturi este un model care are o sincronizare variabilă. Software-ul utilizat incearca sa utilizeze cat mai multe functii in blocul de funcție functiile nu necesita folosirea unui ceas comun , a unui set/reset si de asemenea nu necesită o ieșire comună. In figura de mai jos este prezentata arhitectura unui COOL RUNNER II:

Figura 1.4.2.1.1 Arhitectura unui COOLRUNNER II

In figura de mai jos este prezentata arhitectura unui bloc de functii:

Figura 1.4.2.1.2 Arhitectura unui bloc de functii

Macrocelula unui CoolRunner II este extrem de eficienta si profilata pe creatia logica. Functiile uilizate sunt combinationale sau registrii. Schema unei astfle de macrocelule este prezentată in figura de mai jos:

Figura 1.4.2.1.3 Arhitectura unei macrocelule

Blocurile I/O (blocurile de intrare/iesire) :fiecare intrare sau iesire poate functiona automat pt voltajul necesar sau poate fi programata sa functioneze pe acel domeniu.in figura 1.3.3.5 este prezentata arhitectura blocului de intrare/ iesire.

Clock division a fost introdus in arhitectura CoolRunner II CPLD pentru a divide un ceas global extern. Dividerile care sunt posibile sunt cu 2,4,6,8,10,12,14 si 16. aceasta posibilitate de dividere se poate implementa cu ajutorul unui pin:GCK2. in figura 1.3.3.4 este prezentata stuctura unui astfel de ceas.

Figura 1.4.2.1.4 Structura Clock Division

Figura 1.4.2.1.5 Arhitectura blocului de Intrare/Iesire

In figura de mai jos este prezentata structura unui XC2C256-TQ144 CoolRunner 2 acest circuit are urmatoarele caracteristici: dimensiunea este de 20mm x 20mm, distanta intre pini este de 0.5 mm iar numarul de intrari/iesiri este 118.

Figura 1.4.2.1.6 Structura unui XC2C256 –TQ144 CoolRunner 2

Memoriu justificativ

1. Reguli de modelare in VHDL a sistemelor digitale

Scopul final al modelarii unui sistem digital intr-un limbaj de descriere hardware nu este simularea acestuia. Simularea este doar o etapa intermediara care confera proiectantului garantia ca sistemul modelat este conform specificatiilor comportamentale cerute. Un model VHDL comportamental trebuie sa fie convertit la o structura hardware. Aceasta conversie este facuta automat de programe de sinteza hardware. Regulile prezentate in acest capitol descriu modul in care trebuie folosite constructiile VHDL pentru a fi convertite in structuri hardware de catre produsele software de sintetiza si optimizare.

Sintetizatorul VHDL asociaza codului VHDL o structura hardware formata din componente dintr-o biblioteca specificata (tehnologie).

Optimizatorul preia structura sintetizata si genereaza descrierea unui circuit optimizat pe baza criteriilor de suprafata si layout.

Circuitele logice sunt circuite de comutatie statica si sunt realizate cu dispozitive electronice care pot prezenta 2 stari: inchis si deschis, corespunzatoare celor doua valori 0 si 1 ale variabilelor binare.

Se pot deosebi doua clase mari de circuite logice si anume :

Circuite logice combinationale (CLC)

Circuite logice secventiale (CLS)

Structura obtinuta dupa sinteza automata este determinata direct de catre modul in care au fost utilizate constructiile VHDL in codul sursa. Scopul acestui capitol este de a prezenta modul in care trebuie descris comportamentul unui sistem digital pentru ca dupa sinteza sa se obtina rezultatele asteptate.

Circuitele logice combinationale sunt acele circuite la care variabila sau multimea varibilelor de iesire depinde doar de combinatiile de valori ale variabilelor de intrare.

Conform acestei definitii, un circuit logic combinational reprezinta un ansamblu (sistem) de functii logice elementare caracterizate de tripletul: F=(X,Y,f) unde X este multimea variabilelor de intrare si Y e multimea varibilelor de iesire din sistem .

Circuitele logice secventiale sunt acele circuite la care variabila sau variabilele de iesire la un anumit tact de functionare adica la un moment dat t depend atat de combinatiile de valori ale variabilelor de intrare, la acelasi moment t, cat si de starile elementelor interne, de memorie, ale circuitului.

1.1. Modelarea circuitelor logice combinationale

Un circuit digital este considerat combinational (CLC) daca, la orice moment, valoarea logica a iesirilor este determinata direct numai de valorile logice ale intrarilor. Sintetizatorul VHDL trateaza sistemele logice ale caror iesiri sunt modificate in momentele determinate de un front sau un palier al unui semnal ca fiind sisteme secventiale.

Recomandari generale

Modelul unui CLC se poate realiza cu urmatoarele constructii VHDL:

Atribuiri concurente de semnal, inclusiv atribuiri conditionale si prin selectie;

Structuri cu instantieri de componente de tip CLC;

Procese fara comutari determinate de fronturi de semnal;

Proceduri fara comutari determinate de fronturi de semnal;

Functii.

Sintetizatorul ignora intarzierile precizate in specificatiile de atribuiri de semnale (clauze 'after') sau in specificatii 'wait for'.

Procesele care modeleaza circuite combinationale au urmatoarele particularitati:

Daca procesele au lista de senzitivitati, atunci aceasta lista contine toate semnalele de intrare (care apar in dreapta simbolului de atribuire de semnal). Daca procesele nu au lista de senzitivitati, atunci trebuie sa aiba o singura clauza 'wait on'in care sa se specifice toate semnalele de intrare.

Toate semnalele din dreapta simbolurilor de atribuiri de semnale trebuie sa apara in lista de senzitivitati a procesului sau in specificatia 'wait on'.

Semnalelor din partea stanga a simbolurilor de atribuiri de semnale trebuie sa li se atribuire valori pentru toate conditiile.

Semnalele din lista de senzitivitati sau din specificatia 'wait on'nu pot apare in partea stanga a simbolurilor de atribuiri de semnale.

Procesele contin oricate atribuiri de semnale care descriu operatiile realizate de circuit la aparitia unei tranzactii asociate oricarei intrari.

Sunt permise urmatoarele constructii:

Atribuiri de semnale

Atribuiri de variabile

Specificatii conditionale ('if') sau de selectie ('case')

Proceduri fara control temporal

1.1.1.Modelarea portilor logice

Sintetizatorul genereaza ecuatiile logice Booleene pentru portiunile de cod VHDL in care apar instantieri de porti logice sau operatori logici. Optimizatorul minimizeaza functiile logice si asociaza ecuatiilor rezultate porti din biblioteca tehnologiei.

Daca modelul VHDL este identic cu modelul unei componente aflate in biblioteca, atunci se va asocia acea componenta. De exemplu, codul care urmeaza este sintetizat sub forma unui multiplexor aflat in biblioteca de tehnologie:

process (a, b, sel)

begin

if (sel = '0') then

cout <= a ;

elsif (sel = '1') then

cout <= b ;

else

cout <= 'X' ;

end if ;

end process ;

In general, sintetizatorul nu poate asocia unei portiuni de cod VHDL o componenta de nivel inalt din biblioteca. Astfel, pentru codul care urmeaza se va asocia o structura de porti logice, desi codul descrie un semisumator de un bit aflat in biblioteca. Fortarea sintezei cu componente de nivel mai inalt se poate face prin optiuni de sinteza (impunerea unor componente preferentiale pentru sinteza).

Cout <= a xor b xor cin ;

S <= (a and b) or (a and cin) or (b and cin) ;

1.1.2.Modelarea multiplexoarelor cu specificatii 'case' sau 'if'

Procesele care contin specificatii 'case' sau 'if' sunt sintetizate sub forma unor multiplexoare cu conditia ca respectivele specificatii sa fie complete, adica:

sa atribuie valori tuturor iesirilor, in toate conditiile;

process (a, b, sel)

begin

if (sel = '0') then

cout <= a ;

elsif (sel = '1') then

cout <= b ;

end if ; – EROARE !!

end process ;

sa nu contina atribuiri de semnale care au in partea dreapta semnale ale caror valori provin de la:

activare anterioara a procesului (sint si iesiri):

process (a, b, sel)

begin

if (sel = '0') then

cout <= cout ; – EROARE !!

elsif (sel = '1') then

cout <= b ;

end if ;

end process ;

– semnale din afara procesului dar care nu apar in lista de senzitivitati:

process (a, sel)

begin

if (sel = '0') then

cout <= a ;

elsif (sel = '1') then

cout <= b ; – EROARE !!

end if ;

end process ;

in cazul folosirii tipurilor de date std_logic se recomanda asigurarea completitudinii specificatiilor 'case' si 'if' prin folosirea clauzei 'others'.

process (sel, in1, in2, in3, in4)

begin

case sel is

when "00" =>

cout <= in1 ;

when "01" =>

cout <= in2 ;

when "10" =>

cout <= in3 ;

when others =>

cout <= in4 ;

end case ;

end process ;

in cazul in care specificatia 'case' nu precizeaza valoarea iesirii pentru toate cazurile, se considera ca iesirea nu se modifica si, in consecinta, va aparea pe iesire un nedorit latch. Codul care urmeaza va produce prin sinteza un latch pe iesirea cout datorita faptului ca semnalul sel de tip std_logic poate lua si alte valori nu numai cele precizate ca si conditii ("XX", "HL", …).

process (sel, in1, in2, in3, in4)

begin

case sel is

when "00" =>

cout <= in1 ;

when "01" =>

cout <= in2 ;

when "10" =>

cout <= in3 ;

when "11" =>

cout <= in4 ;

end case ;

end process ;

1.1.3.Modelarea circuitelor aritmetice

Operatorii aritmetici (suma, diferenta, comparare) sunt asociati prin sinteza cu celule complexe existente in biblioteca de tehnologie. De exemplu, pentru codul care urmeaza sintetizatorul va genera un sumator de 6 biti implementat cu doua sumatoare de cite 4 biti. Daca in tehnologia selectata nu exista celule sumatoare, sintetizatorul va genera ecuatiile booleene iar optimizatorul va genera structura de porti asociata.

library IEEE;

use IEEE.std_logic_1164.all;

use IEEE.std_logic_arith.all;

entity sixbitadder is

port (a, b: in std_logic_vector(5 downto 0);

outp: out std_logic_vector(5 downto 0));

end sixbitadder ;

architecture arch_sixbitadder of sixbitadder is

begin

outp <= a + b ;

end arch_sixbitadder ;

O anumita resursa poate fi folosita in comun daca operatorul implementat nu se executa in aceleasi conditii. De exemplu, codul care urmeaza se poate sintetiza in doua moduri:

architecture arch of ent is

begin

outp <= a + b when sel = '0' else

a + c ;

end arch ;

O varianta, prezentata in figura 1, consta din folosirea a doua sumatoare, cite unul pentru fiecare aparitie a operatorului '+'. Iesirile sumatoarelor intra intr-un multiplexor selectat cu semnalul sel.

A doua varianta, prezentata in figura 2, se bazeaza pe observatia ca cele doua sumatoare nu sunt folosite in acelasi timp. Se poate concepe o structura cu un singur sumator. O intrare este semnalul a iar celalata provine din multiplexarea semnalelor b si c cu semnalul de selectie sel.

Figura 1.1.3.1 Arhitectura sintetizata cu doua sumatoare.

Aceasta varianta poate fi descrisa intr-un proces astfel:

process (sel, a, b, c)

variable in_add : std_logic_vector(5 downto 0);

begin

if sel = '0' then

in_add <= b ;

else

in_add <= c ;

end if ;

outp <= a + in_add ;

end process ;

Figura 1.1.3.2. Arhitectura sintetizata cu un sumator.

1.2.Modelarea circuitelor logice secventiale

Un circuit digital este considerat secvential (CLS) daca valoarea logica a iesirilor este determinata atit de valorile logice ale intrarilor cit si de starea in care se afla circuitul.

Starea circuitului este determinata de valorile memorate in registre. Sintetizatorul VHDL recunoaste doua tipuri de descrieri secventiale: explicite si implicite.

Automatele descrise implicit nu contin declaratia explicita a unui registru de stare ci conditiile in care se trece dintr-o stare in alta.

Automatele descrise explicit utilizeaza un registru de stare pentru memorarea starii prezente. Secventa de control a automatului presupune atribuiri explicite de valori pentru acest registru.

Recomandari generale

Modelul unui CLS se poate realiza cu urmatoarele constructii VHDL:

Procese cu specificatii 'wait'.

Instantieri de componente asociate blocurilor constitutive (CLC si registre).

1.2.1.Modelarea sistemelor sincrone

Sistemele secventiale se recomanda a fi proiectate ca sisteme sincrone.

Sintetizarea sistemelor sincrone presupune ca toate operatiile logice sunt determinate de aparitia unui front activ al unui semnal de ceas. Codul urmator prezinta modul in care un proces asincron poate fi convertit la un proces sincron.

– process asincron

process (enable, d)

begin

if enable = '1' then

q <= d ;

end if ;

end process ;

– process sincron

process

begin

wait until clock'event and clock = '1' ;

if enable = '1' then

q <= d ;

end if ;

end process ;

Lista de senzitivitati a fost inlocuita cu o specificatie 'wait' care modeleaza aparitia unui front de ceas.

1. 2.2.Modelarea semnalului de ceas

Pentru a modela un semnal de ceas sintetizabil trebuie urmate citeva recomandari:

Semnalul de ceas se poate desemna prin optiunile de sinteza dar este recomandabil sa se specifice prin comportamentul semnalului.

Se va utiliza un singur semnal de ceas, cu un singur front activ, pentru tot sistemul digital.

Toate specificatiile trebuie sa se execute intru-o singura perioada de ceas.

Buclele care au un numar de iteratii dependent de date trebuie sa fie sincronizate cu semnalul de ceas (o iteratie pe perioada).

Specificatiile prin care sintetizatorul deduce semnalul de ceas sunt prezentate in tabelul 3:

Tabelul 1.2.2.1 Specificatii VHDL pentru modelarea semnalului de ceas al sistemelor secventiale sincrone.

Modelarea implicita a automatelor

Modelul implicit al automatelor descrie numai actiuniile care au loc in cadrul unui ciclu de tact. Nu exista o declaratie explicita a unui registru de stare. Sintetizatorul implementeaza registrul de stare pornind de la descrierea secventiala a starilor.

Procesul care descrie un automat in mod implicit trebuie sa satisfaca urmatoarele constringeri:

Procesul contine mai mult de o specificatie 'wait' asociata unui semnal de ceas.

in momentul sintezei nu se specifica o variabila a procesului ca fiind registru de stare.

Modelarea explicita a automatelor

Modelul explicit al automatelor specifica un registru de stare caruia ii atribuie explicit valori.

Procesul care descrie un automat in mod explicit trebuie sa satisfaca urmatoarele constringeri:

Procesul contine numai o singura specificatie 'wait until'.

O variabila a procesului este identificata ca fiind registrul de stare. Uzual, variabila se declara de tip enumeratie.

Figura 4 Schema bloc a unui automat modelat explicit.

Modelarea explicita a unui automat se bazeaza pe reprezentarea clasica prezentata in figura 4.

2. Modelarea concreta a circuitului CPLD

Lucrarea de față își propune realizarea unui sistem capabil să regleze aceste procese complexe, procese care necesită achiziția datelor din mai multe puncte și reglare în mai multe puncte. Pentru aceasta se presupune că în fiecare punct de reglare se află un microsistem de achiziție și reglare. Controlul acestor sisteme de achiziție și reglare este asigurat de un calculator central.

Pe lângă partea hard formată din cele expuse mai sus, acest CoolRunner2 dispune de un soft menit să utilizeze hard-ul conform unei scheme logice. Pentru a ne construi o imagine a sistemului pe care dorim să-l realizăm vom folosi schema din figura 1.5.1. Schema cuprinde următoarele blocuri explicate după cum urmează(de la stânga la dreapta):

Blocul intrărilor, “CI” are elementele notate cu CIn , n cuprins între 0 și 1, elementele reprezentând cele 2 canale de intrare analogice din care, cu ajutorul convertorului A/D se vor obține valori numerice pe care le vom folosi în următoarele blocuri. Valoarea citită de pe unul din canale poate fi transmisă conform indicației săgeților, între acest bloc și blocul “R” existând un bloc de filtrare și normalizare a mărimii citite de la intrare. Așadar, valoarea transmisă mai departe este cuprinsă în gama 0 – 1.

Blocul “RI”, cu rolul de a memora valorile referințelor și intrărilor pentru regulatoare. Acest bloc are de asemenea 8 elemente, reprezentarea lui fiind un vector, valorile din acest vector fiind normalizate. Legăturile dintre “RI” și blocurile de calcul de tip “REGULATOR” sunt nemodificabile, fiecare bloc de calcul citind valorile necesare direct din blocul “RI”.

Blocul “REGULATOR” este un bloc de calcul cu valoare de regulator de tip P, PI, PD sau PID. “R” este intrarea de referință a regulatorului, “C” este ieșirea de comandă, comandă care poate fi transmisă spre blocurile următoare sau spre blocul “RI”.

Blocul “DO” (Digital Output) este simbolizarea iesirii.

2.1 Schema de principiu

Sistemul il implementam cu un convertor analog digital cu o rezoluție de 4 biți.

Schema de principiu a convertorului A/D evidențiază atât direcția fluxului de date cu magistrala, cât și blocul convertor + blocul multiplexor.

Este foarte important de menționat faptul că, de valoarea referinței analogice a convertorului depinde valoarea maximă a tensiunii de intrare ce poate fi convertită, între cele două existând o relație de egalitate. În același timp, cu cât valoarea referinței de tensiune este mai mare scade rezoluția convertorului, pentru că, indiferent de valoarea referinței, conversia se face pe 4 biți.

Functionarea convertorului este relativ simplă, pentru controlul conversiei existând un registru rezultatul conversiei fiind returnat in registru.

Exista de asemenea un couter pe 4 biticare este folosit pentru temporizarea unui proces.

Secventa de pseudo-cod care descrie functionalitatea unui multiplexor este prezentata mai jos:

process (Sel, In0, In1)

begin

case Sel is

when "0" => Out_mux <= In0;

when "1" => Out_mux <= In1;

when others => NULL;

end case;

end process;

unde In0 si In1 sunt intrarile multiplexorului Out_mux etse iesirea multiplexorului iar Sel este selectia multiplexorului.

In continuare este prezentata simularea acestui multiplexor cu ajutorul programului si se descrie astefel functionalitatea acestui multiplexor cu 2 intrari analogice , 1 iesire si 1 selectie.

Figura 2.2 Model de simulare a multiplexorului 2:1

Cele doua intrari ale multiplexorului sunt cele 2 intrari analogice CI0 si CI1 prezentate in blocul din figura 1.5.1. in urma rularii programului se creaza circuitul multiplexor schema acestuia fiind prezentata in figura 1.5.3.

Figura 2.3 Schema multiplexorului

Iesirea multiplexorului este legata la convertorul analog/digital pe 4 biti.

Counterul are rolul de a temporiza bucla de reglare. Scopul acestui circuit este de a verifica in cat timp se executa bucla de reglare. Counterul are un semnal de ceas un semnal de restet si un count.

Secventa de pseudo-cod care descrie functionalitatea acestui counter este prezentata in cele ce urmeaza:

process (clock, reset)

begin

if reset='1' then

counter <= "0000";

elsif clock='1' and clock'event then

counter <= counter + 1;

end if;

end process;

se initializeaza counterul cu valoarea "0000" .in figura de mai jos este prezentata simularea acestui counter cu ajutorul VHDL test bench in figura 1.5.4

Figura 2.4 Model de simulare a counterului pe 4 biti

In continuare se genereaza schema RLC scheme si se prezinta in figura 1.5.5 counterul pe 4 biti. Este de precizat ca acest counter realizeaza temporizarea unei bucle de reglare si determina timpul necesar excutarii unei bucle de reglare. Valoarea acestui counter este un numar pe 4 biti .

Figura 2.5 Schema unui counter pe 4 biti

Schema counterului extinsa este prezentata mai jos in figura 1.5.7:

Figura 2.7 Schema extinsa a unui counter pe 4 biti

Sistemul cu microcontroler a fost construit cu scopul de a regla diferite procese. Reglarea se face, desigur, numeric, intrarea în regulator (sistem) fiind eșantionată și discretizată. Ieșirea din regulator este analogică, fiind un semnal PWM integrat, rezultând în loc de impulsuri cu lățime variabilă, nivele de tensiune.

Pentru a ușura procesul de reglare s-a implementat funcția regulator care, in funcție de parametrii diferiți de zero P, calculează valoarea comenzii în funcție de o referintă și o intrare.

În cazul concret al aplicației funcția citește o referință în funcție de un număr care reprezintă indicele buclei pentru care se face reglarea, referință pe care o obține din vector Funcția mai citește parametrii aferenți buclei de reglare și calculează o valoare a comenzii.

Modelarea concreta a unui sistem de reglare in LabView

LabView este un produs al firmei National Instruments USA și este diferit de celelalte

programe prin următorul aspect esențial: în timp ce toate celelalte medii de programare

folosesc limbaje bazate pe text pentru a crea linii de cod, LabView folosește un limbaj de

programare grafic pentru a realiza o diagramă bloc, executabilă ulterior.

Programele din LabView sunt instrumente virtuale notate VI (Virtual Instruments). Un

VI constă dintr-un panou frontal și o diagramă bloc. Panoul frontal (cu butoane, indicatoare,

reprezentări grafice și alte obiecte) specifică intrările și ieșirile și creează partea operațiilor

interactive

În spatele panoului frontal este diagrama bloc cu programul executabil. Componentele

diagramei bloc reprezintă subnivelul instrumentelor și structura de control a programului. Se atașează conexiunile între obiecte pentru a se pune în evidență cauzalitatea sistemului reprezentat și a permite compilatorului să ia cunoștință de interconectarea sistemului.

Acest mediu este de asemenea dotat cu peste o sută de instrumente și drivere necesare pentru simplificarea controlului aplicațiilor. Pentru realizarea aplicațiilor care folosesc concepte din analiza matematică se poate folosi biblioteca de analiză . Această biblioteca conține funcții pentru generare de semnale, prelucrare de semnale, filtre, statistici, algebră liniară și tabele aritmetice.

Deoarece LabView este conceput ca mediu grafic este foarte convenabilă prezentarea

datelor sub formă de diagrame, grafice și grafice predefinite.

În forma actuală de achiziție, analiză și prezentare a aparatelor, LabView este complet

funcțional, astfel că orice aplicație realizată într-un limbaj de programare convențional este

posibil de a fi realizată folosind acest mediu de instrumentație virtuală .

Panoul frontal și diagrama bloc constau dintr-o colecție de obiecte grafice fiecare

reprezentând elemente de programare în LabView. Panoul frontal conține diferite tipuri de

instrumente de control și indicare. Diagrama bloc conține terminalele corespunzătoare

instrumentelor de control și indicare de pe panoul frontal, precum și constante, funcții,

structuri și legăturile de la un obiect la altul.

Se implementeaza cu ajutorul acestui limbaj un sitem de reglare. In figura 1.6.1 este reprezentat panoul frontal :

Figura 1.6.1 Panoul frontal al programului

In figura 1.6.2 este prezentata diagrama bloc a acestui program:

Figura 1.6.2 Diagrama bloc a programului

Cu ajutorul acestui mediu se implementeaza un algoritm de reglare complex care determina raspunsul sitemului in functie de tipul semnalului de intrare si in functie de tipul sistemului. Astfel se inplementeaza un algoritm de reglare pentru mai multe tipuri de semnale de intrare cum ar fi: semnalul de tip treapta, semnale de tip sinusoidal, semnal aleator,semnal de tip dinti de fierastrau, sau semnale triunghiulare.

De asemenea se poate preciza ac bucla de reglare se realizeaza pentru mai mult tipuri de sisteme Cuma r fi sisteme de ordin1 si sisteme de ordinul 2.

Parametrii de acord se introduc de la tastatura. Astfel se pot adauga valori pentru parametrii P, I si D.

In figura 1.6.3 este prezentata structura ierarhizata a acestui program .

Figura 1.6.3. Structura ierarhizata a programului

Programul are noua module fiecare modul avand o semnificatie importanta.

In modulul Pid este prezentat panoul frontal in care se pot face modificari la tipul semnalului, la tipul sistemului, precum si la parametrii de acord.

In al doilea modul de ierearhizare este prezentat Pid control care realizeaza controlul sitemului in functie de parametrii de acord pe care ii setez.

In cel de-al treilea modul de iererhizare sunt prezentate tipurile de semnale pe care le putem folosi. In figura 1.6.4 este prezentat un panou frontal al tipului de semnale

Figura 1.6.4 Implementarea panoului frontal al tipului de semnale

In cel de-al patrulea modul sunt prezentate iesirile normalizate ale regulatorului PID aici se introduc limita superioara (upper limit) precum si limita inferioara (lower limit). Aceste valori se introduc de la tastatura in timpul rularii programului.

In figura 1.6.5 este prezentata o diagrama bloc a acestui modul in care se introduc limitele normalizate ale regulatorului PID.

Figura 1.6.5 Diagrama bloc a limitelor

In cel de-al cincilea modul este prezentat un regulator pid cu parametrii care trebuie acordati:P,I si D.

In cel de-al saselea modul este prezentata descrierea panoului frontal pentru tipurile de sisteme pe care dorim sa le implementam in schema de reglare.

In figura 1.6.6 este prezentat diagrama unui sistem de ordin intai.

Figura 1.6.6 Diagrama reglarii unui sistem de ordin intai

Din acest modul se pot alege ce tipuri de sisteme dorim sa implementam astfel modulul 7 este modului in care este implementata o structura cu un sistem de ordin intai.

In modulul cu numarul 8 este prezentata structura unui sistem de ordin doi.

In urma rezultatelor experimentale se pot de termina timpii in care se executa o bucla de reglare ceea ce ne intereseaza precum si evolutia sistemelor sau a regulatorului.

4. Modelarea concreta a unui sistem de reglare in Matlab

MATLAB – The Language of Technical Computing este un produs al firmei The MathWork care ofera un mediu de lucru dedicat tehnicilor de control pentru sistemele automate.

Utilizand mediul MATLAB/SIMULINK se pot determina raspunsurile sistemului la semnal de tip tren de impulsuri.

Se determină in urma simulării modelului variația unei scheme de reglare cu diferite tipuri de regulatoare. Se determină variația schemei de reglare prin implementarea unui regulator proportional, aunui regulator proportional-integrativ si de asemenea a aunui regulator proportional-integrativ-derivativ. De asemenea în urma rulări programului se determină timpul in care se executa o bucla de reglare.

Regulatorul este construit cu ajutorul blocurilor din Simulink si mai précis cu ajutorul unei constante a unui element integrator si a unui element derivative.

In figura urmatoare este prezentata diagrama bloc pentru regulatorul PI:

In urma rularii programului se determina timpul in care se executa o bucla de reglare.

Caiet de sarcini

1.Parametrii tehnici

Aplicația a fost dezvoltată pe un calculator cu caracteristicile:

INTEL PENTIUM III 350 MHz;

256MB RAM;

Ge Force II 32 MB;

Windows XP.

Resursele disponibile pentru abordarea acestui proiect sunt prezentate in cele ce urmeaza:

Mediile de dezvoltare ale aplicatiei sunt:

MATLAB

LABVIEW

XILINX

2. Performante

In urma implementarii s-au putut determina timpul in care se executa o schema de reglare. In continuare se urmareste raspunsul sistemelor pentru anumite tipuri de regulator precum si metoda comparaativa intre rezultatele obtinute in MATLAB si cele obtinute in LABVIEW.

In tabelul 2.1 sunt prezentate valorile obtinute prin intermediul mediului LABVIEWsi Matlab

Tabelul 2.1 Timpii obtinuri in urma efectuari unei bucle de reglare

In urma simularii in Matlab s-au obtinut urmatorile valori pentru toate cele 3 tipuri de regulatoare.Astfel ca timpul de reglare este:0.99sec pentru fiecare regulator.

Bibliografie

I. Nascu, S.Folea- Echipamente electrice si electronice de automatizare

Editura Printek, Cluj – Napoca, 1999

S. Călin – Reglarea numerică a proceselor tehnologice,

Editura Tehnică, București, 1984

Cl. Feștilă -Regulatoare automate, vol. 1,

Proiectarea regulatoarelor continue,

Atelierul de multiplicare IPCN, 1990

Z.F.Baruch -Arhitectura Calculatoarelor

Editura Todesco, Cluj-Napoca,2000

Xcell,Xilinx.Inc

K.Parnell,N.Mehta-Programmable Logic Design Qiuck Start Hand Book

Similar Posts