CATEGORII DOCUMENTE |
Aeronautica | Comunicatii | Electronica electricitate | Merceologie | Tehnica mecanica |
Anexe
Reglarea turatiei unui m.c.c. folosind mediul de programare LabVIEW
I. Obiectivele lucrarii
Proiectarea unui algoritm PID folosind MatLab
Realizarea montajului pe placa de incercari ELVIS care sa cuprinda motorul de curent continuu si tahometrul
Crearea unui instrument virtual pentru achizitionarea datelor referitoare la turatia motorului, de la placa de incercari, elaborarea unei comenzi pe baza algoritmului de reglare si transmiterea comenzii la placa de incercari
II. Modelarea si simularea procesului. Proiectarea regulatorului
Vom considera urmatorile valori pentru parametrii fizici ai motorului:
momentul de inertie al rotorului (J) = 0.01 kg.m2/s2
rata de atenuare a sistemului mecanic (b) = 0.1 Nms
constanta fortei electromotoare (K=Ke=Kt) = 0.01 Nm/Amp
rezistenta electrica (R) = 1 ohm
inductanta electrica (L) = 0.5 H
intrarea - input (V): tensiunea de la sursa
iesirea - output (theta): pozitia axului
Cuplul motorului, T, este direct proportional cu curentul prin armatura, i, prin factorul constant Kt. Forta electromagnetica indusa, e, este functie de viteza de rotatie conform ecuatiilor:
In
unitati ale SI, Kt
(constanta armaturii) este egala cu Ke (constanta motorului).
Putem scrie urmatoarele ecuatii bazate pe legea lui Newton si legea lui Kirchoff:
Functia de transfer
Folosind transformata Laplace, ecuatiile de mai sus pot fi exprimate in operational:
Prin eliminarea lui I(s) putem obtine urmatoarea functie de transfer in bucla deschisa, unde viteza de rotatie este iesirea si tensiunea este intrarea.
Spatiul starilor
In forma spatiului starilor, ecuatiile de mai sus pot fi exprimate prin alegerea vitezei rotationale si a curentului electric ca variabile de stare si a tensiunii ca intrare. Iesirea o vom alege sa fie viteza rotationala.
Cerinte de proiectare
In primul rand, motorul necompensat se poate roti doar cu 0.1 rad/sec la o intrare de 1 Volt. Intrucat una din cerintele cele mai de baza ale motorului este ca el sa se roteasca la viteza dorita, eroarea in starea de echilibru a vitezei motorului trebuie sa fie mai mica de 1%. Cealalta masura de performanta ceruta este ca motorul sa accelereze catre starea de echilibru imediat ce a fost pus in functiune. In acest caz, vom avea nevoie de un timp de reglare de 2 secunde. Deoarece o viteza mai mare decat referinta ar putea cauza defectiuni echipamentului, vom impune un suprareglaj mai mic de 5%.
Asadar, vom simula intrarea de referinta (r ) drept un semnal treapta-unitate, iar viteza motorului va avea :
Timp de raspuns mai mic de 2 secunde
Suprareglaj mai mic de 5%
Eroarea de reglare mai mica de 1%
Reprezentarea in Matlab si raspunsul sistemului in bucla deschisa:
A. Functia de transfer
Putem sa reprezentam in Matlab functia de transfer de mai sus definind matricile numarator si numitor astfel:
Se va crea un nou fisier .m in care se vor introduce liniile:
J=0.01;
b=0.1;
K=0.01;
R=1;
L=0.5;
num=K;
den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)];
Acum sa vedem cum se comport sistemul original in bucla deschisa. Vom adauga urmatoarele linii la sfarsitul fisierului editat si in vom rula in fereastra de comenzi a Matlab-ului:
step(num,den,0:0.1:3)
title('Raspunsul la semnal treapta al sistemului deschis)
Vom obtine urmatorul grafic:
Din acest graphic vom vedea ca 1 Volt aplicat sistemului va conduce la o viteza maxima de 0.1 rad/sec, de 10 ori mai mica decat viteza dorita de noi. De asemenea, timpul de raspuns este de 3 secunde.
B. Spatiul starilor
Putem reprezenta sistemul folosind ecuatiile in spatiul starilor. Fisierul .m va contine:
J=0.01;
b=0.1;
K=0.01;
R=1;
L=0.5;
A=[-b/J K/J; -K/L -R/L];
B=[0 ; 1/L];
C=[1 0];
D=0;
step(A, B, C, D)
Prin rularea acestui fisier vom obtine un grafic
asemanator cu cel de mai sus.
Proiectarea unui regulator PID
Sa revenim la ecuatiile de miscare si la functia de transfer in circuit deschis a motorul de curent continuu :
Schema sistemului de reglare arata ca in figura:
Pentru proiectarea regulatorului PID si introducerea lui in sistem vom folosi fisierele .m create la partea de modelare.
Functia de transfer a unui regulator PID este:
Vom incepe prin a incerca un regulator proportional cu un coeficient de 100. Se va adauga codul urmator la sfarsitul fisierului .m :
Kp=100;
numa=Kp*num; dena=den;
Pentru a determina functia de transfer in circuit inchis, vom utiliza comanda cloop:
[numac,denac]=cloop(numa,dena);
Aceasta va returna in numac si denac numaratorul si numitorul functiei sistemului in circuit inchis. Pentru a vedea cum arata raspunsul la un impuls de tip treapta-unitate vom adauga urmatoarele linii la sfarsitul fisierului si-l vom rula in fereastra de comanda:
t=0:0.01:5;
step(numac,denac,t)
title('Raspunsul sistemului cu Control Proportional')
Vom obtine urmatorul grafic:
Din graficul de mai sus observam ca atat eroarea de reglare cat si suprareglajul sunt prea mari. Este nevoie de un termen integral pentru a avea eroare de reglare nula si de termen derivativ pentru a reduce suprareglajul. Vom incepe proiectarea prin a atribui valori mici pentru Ki si Kd, schimband in fisierul .m urmatoarele linii:
J=0.01;b=0.1;
K=0.01;R=1;
L=0.5;
num=K;
den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)];
Kp=100;Ki=1;Kd=1;
numc=[Kd, Kp, Ki];
denc=[1 0];
numa=conv(num,numc);
dena=conv(den,denc);
[numac,denac]=cloop(numa,dena);
step(numac,denac)
title('Control PID cu Ki si Kd mici')
Acordarea parametrilor
Acum timpul de stabilizare este prea lung, ceea ce impune cresterea valorii lui Ki (vom pune valoarea 200 in fisierul .m). Noul grafic va arata astfel:
Desi timpul de raspuns este mai rapid decat in cazul precedent, cresterea valorii Ki a dus catre un suprareglaj mai mare, care poate fi compensat printr-o crestere a valorii Kd (vom pune valoarea 10 in fisierul .m)
Asadar, un controler PID cu
Kp=100,
Ki=200,
Kd=10,
va satisface cerintele de proiectare impuse.
B. Proiectarea regulatoruluiprin metoda raspunsului in frecventa
Ideea care sta in spatele acestei metode este de a folosi caracteristicile Bode ale functiei in sistem deschis pentru a estima raspunsul in circuit inchis. Introducerea unui regulator in sistem schimba caracteristicile Bode in circuit deschis, deci va schimba si raspunsul in circuit inchis. Prin urmatoarea comanda Matlab, adaugata la sfarsitul fisierului care modeleaza sistemul nostru, se realizeaza trasarea acestor curbe :
Din graficul obtinut se observa ca rezerva de faza poate fi mai mare de 60 grade daca w este mai mic de 10 rad/sec. Sa adaugam amplificare sistemului astfel incat frecventa de banda este de 10 rad/sec, ceea ce ne va da o rezerva de faza de 60 de grade. Pentru a gasi acea amplificare, trebuie sa citim de pe grafic (pare sa fie putin mai mult de -40 dB, sau 0.01 in magnitudine). Pentru a afla valorile exacte, vom folosi forma comenzii bode care sa ne ofere in variabile Matlab aceste valori:
[mag,phase,w] = bode(num,den,10)Pentru amplificarea de 1 la 10 rad/sec, multiplicam numaratorul cu 1/.0139 sau aprox. 72.
si lansam din nou fisierul .m. Acesta va conduce la urmatorul grafic:
Din graficul de mai sus observam ca, de aceasta data, rezerva de faza este putin cam mare. Inlocuim comanda "bode" din program cu urmatorul cod:
Graficul obtinut va fi:
Timpul de stabilizare este destul de rapid, dar suprareglajul si statismul sunt inca destul de mari. In aceste cazuri este nevoie de un compensator al intarzierii (lag controller).
Un compensator al intarzierii in raspuns frecvential are forma:
Acesta are rolul de a adauga amplificare la frecvente reduse, avand ca efect scaderea statismului sistemului in circuit inchis cu un factor a. Pentru ca amplificarea acestuia este egala cu unitatea, la frecvente medii si inalte, raspunsul tranzitoriu si stabilitatea sistemului nu au de suferit.
Efectul secundar al compensatorului de intarziere este faza negativa introdusa in sistem in frecventele de frangere. Depinzand de valoarea lui a, pana la -90 de grade faza pot fi adaugate, astfel incat este nevoie de o proiectare atenta pentru a obtine rezultate satisfacatoare.
Vom introduce un astfel de controler pentru a reduce statismul si, in acelasi timp, trebuie sa incercam sa reducem suprareglajul prin scaderea amplificarii (se va incepe cu valoarea 50, pentru inceput); forma acestuia va fi:
care ar trebui sa reduca statismul. Se va modifica in fisierul .m astfel incat sa arate astfel:
num=K;In urma rularii acestui fisier vom obtine graficele:
Se ajunge, in sfarsit, la o rezerva de faza acceptabila, iar statismul este aproximat la 1/40db (1%), precum se doreste. Urmeaza sa realizam inchiderea buclei, prin adaugarea urmatoarelor linii la fisierul .m :
[numc,denc]=cloop(numb, denb, -1);
Rezultatul obtinut satisface cerintele de proiectare. Statismul este mai mic de 1%, suprareglajul de 5% si timpul de stabilizare este de aproximativ 2 secunde.
C. Proiectarea regulatorului folosind criteriul modului varianta Kessler
Proiectarea bazata pe criteriul modulului este o metoda generala de proiectare a sistemelor de reglare automata cu regulatoare liniare tipizate care presupune:
o comportare cat mai rapida in raport cu referinta w(t)
o sensibilitate cat mai redusa in raport cu perturbatiile, altfel spus SRA sa asigure eliminarea cat mai rapida a efectelor acestora.
Se porneste de la functia de transfer a procesului condus (m.c.c.) si se incearca aducerea ei la o forma de genul :
Vom considera un regulator de tip PI (deci cu componenta derivativa 0), care are functia de transfer urmatoare :
Cei doi parametri ai regulatorului ii vom determina pe baza urmatoarelor relatii :
Folosind mediul MatLab, vom realiza un program care va calcula cei doi parametri folosind functia de transfer a procesului condus si va realiza simularea comportarii sistemului de reglare in bucla inchisa. Pentru a determina cele doua constante de timp ale procesului condus, T1>T, vom utiliza o functie de calcul a radacinilor numitorului functiei de transfer a procesului. Vom construi apoi expresia regulatorului si vom simula raspunsul sistemului la semnal treapta. Utilizarea acestui criteriu asigura performante bune ale reglarii:
%, tr= 8,4T
Programul in MatLab este:
J=0.01; b=0.1;
K=0.01;
R=1;
L=0.5;
num=K;
den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)];
t=roots(den);
Tr=t(1);
kr=1/(2*K*t(2));
numc=[kr kr*Tr]
denc=[1 0];
numa=conv(num, numc);
dena=conv(den, denc);
[numac, denac]=cloop(numa,dena);
step(numac, denac)
title('Regulator obtinut cu ajutorul criteriului Kessler');
Ruland acest program vom obtine in vectorii numc/denc expresia functiei de transfer,
cat si graficul urmator, care reprezinta raspunsul sistemului la semnal treapta.
III. Realizarea circuitului electronic pe placa de incercari
Circuitul electronic se va realiza pe placa de incercari NI ELVIS. Aceasta este realizata ca o matrice de conectori sub forma de orificii, existand contact intre linii, dar nu si intre coloane. Astfel, pentru a realiza un circuit, trebuie sa fixam in conectori elementele de circuit, neexistand o cerinta anume a topologiei circuitului, urmand a conecta prin fire conductoare nodurile de circuit
Puterea unei sursei de tensiune variabile din NI ELVIS este folosita la rularea si controlul unui motor in curent continuu de putere mica. Folosind o legatura modificata a spatiului liber IR, un tahometru este construit ca sa masoare viteza motorului. Cuplarea motorului si a tahometrului impreuna cu un program LabVIEW conduce la automatizarea computerizata a sistemului.
In figura A.1. este prezentata schema de ansamblu a celor doua module, tahometru si un motor de curent continuu, cu ajutorul lor vom masura viteza de rotatie a motorului.
Figura A.1. Schema bloc a sistemului
Motorul de curent continuu are fixat pe axa centrala un disc de 3 cm diametru, acest disc are o fanta la extremitate, tahometrul este construit din doua subansambluri principale: emitatorul si receptorul. Discul motorului va avea o miscare circulara intre emitator si receptor, iar fanta din disc va conduce la o cadere de tensiune pe rezistenta de pe receptor, cu ajutorul acesteia vom calcula viteza de rotatie a motorului.
Folosind un led pe infrarosu si un fototranzistor putem construi un simplu senzor de miscare, numit si tahometru. Pe placa de proba construim cu ajutorul componentelor electrice circuitul din figura A.2. In cazul modulului led fototranzistor, ledul intern este folosit ca o sursa optica si este alimentat la o sursa de tensiune de +5 V. De remarcat este rezistenta de 1 kΩ folosita in serie cu ledul emitator pentru a limita curentul prin circuit. O rezistenta de 10 kΩ este conectata intre pinul emitorul al fototranzistorului si masa circuitului(tensiune 0 V), iar pinul colector al receptorului este conectat la aceeasi sursa de tensiune. Caderea de tensiune de pe rezistenta de 10 kΩ este semnalul electric al fototranzistorului sau al tahometrului.
Figura A.2. Circuitul senzorului de miscare
Un disc de diametru de 3 cm trebuie sa fie fixat pe axa centrala a motorului de curent continuu. Apoi vom taia din extremitatea discului 5 mm2 si vom face o mica gaura in mijlocul acestui disc. Motorul impreuna cu discul construit reprezinta al doilea subansamblu realizat. Pentru calculul vitezei de rotatie a motorului se va programa cu ajutorul programului LabVIEW un instrument virtual descris in capitolul 5. Se va folosi sursa de tensiune variabila de +12 V si sursa de tensiune fixa de +5 V a aparatului NI ELVIS. Exista posibilitatea de a conecta tahometrul la oricare alta dintre intrarile analogice de tip ACH, la fel cum exista posibilitatea de a conduce motorul printr-una dintre iesirile analogice, dar s-a rezumat la solutia cea mai simpla si mai directa. Circuitul electric din figura A.1. este construit pe placa de proba a aparatului NI ELVIS, care este legata la statia de lucru printr-un conector PCI. Dispozitivul NI ELVIS este legat printr-un cablu de 68 de pini de tip E la o placa de achizitii NI PCI-6052E care este instalata pe un port PCI al unui calculator prin intermediul driverelor. De aici inainte totul depinde de instrumentul virtual construit in LabView pentru achizitionarea si prelucrarea datelor primite.
IV. Realizarea aplicatiei software in LabVIEW
In mediul LabVIEW, un instrument virtual este format din 2 parti : panoul de comanda si diagrama bloc, care sunt strans legate intre ele, formand un tot unitar. Panoul de comanda reprezinta, practic, interfata cu utilizatorul, continand indicatoare grafice sau numerice pe care se pot reprezenta marimile de interes (acestea pot fi considerate IESHIRI) si controale sub forma de butoane, robinete si comutatoare prin care utilizatorul transmite comenzi programului, care isi schimba parametrii de functionare in raport cu aceste semnale primite de la controale (acestea pot fi considerate INTRARI). Diagrama bloc reprezinta codul-sursa propriu-zis, prin care implementam algoritmul propus utilizand functiile si procedurile LabVIEW, realizand conexiuni intre blocurile ce le reprezinta. Sunt disponibile aproape toate elementele de programare structurata, dar modul de abordare este diferit fata de limbajele de nivel inalt. Conceptul de "dataflow" pe baza caruia se programeaza in LabVIEW presupune realizarea unei retele orientata de noduri continand functiile dorite a fi executate, conectate topologic prin fire ce pot semnaliza cai de transmisie a variabilelor. Elementele de pe panoul de comanda se regasesc si pe diagrama bloc, unde se realizeaza conexiunile intre ele, adaugand si functiile specifice cu care vrem sa lucram, functii care nu sunt, insa, reprezentate pe panoul de comanda, unde apar strict obiectele pe care noi le dorim. Asadar, se poate considera ca programarea in LabVIEW presupune atat o proiectare a unui cod-sursa, realizat in cadrul diagramei bloc, cat si selectarea acelor marimi de intrare si iesire care ne intereseaza, ce pot fi aranjate ergonomic si estetic pe panoul de comanda, aceasta operatiune putand fi si ea considerata o stiinta, fiind vorba de realizarea unor produse care nu vor fi utilizate doar de specialisti, ci si de persoane mai putin pregatite.
In continuare vom prezenta, separat, panoul de comanda si diagrama bloc a instrumentului virtual folosit, rezumandu-ne pentru inceput la un sistem care realizeaza doar reglarea (fara estimare). Se va remarca greutatea de citire a codului sursa in cazul diagramei bloc de fata, depanarea fiind greu de facut pe instrumente virtuale fara ajutorul unor unelte potrivite. De aceea, se recomanda ca diagramele bloc sa fie realizate cat mai "lizibil", cu etichete pe elementele folosite si pe conexiunile intre ele, eventual incluzandu-se informatii suplimentare in cadrul campului "Documentation" al acestora, pentru a putea veni in ajutorul utilizatorilor care vor sa le depaneze sau modifice.
Panoul de comanda
In figura urmatoare este reprezentat panoul de comanda. Se observa asemanarea simbolurilor reprezentate pentru diferitele marimi de intrare sau de iesire cu afisajele echipamentelor din industrie (exista robinete, campuri numerice, turometre, afisaje digitale, butoane, grafice). Imaginea este extrasa din contextul aplicatiilor Windows, care prevad ferestrele specifice cu meniuri de sistem, bara de aplicatie si palete cu unelte.
In coltul din stanga sus se gaseste un robinet, sau maner rotund, cu denumirea "Prescriere" (scris cu font rosu). Acesta are si un controler numeric sub el, care este corelat cu valoarea aleasa din maner. Prin intermediul oricaruia din aceste doua elemente de control se poate seta valoarea prescrisa a turatiei la care se doreste sa functioneze motorul. Exista si o scara gradata pana la 10000, considerandu-se ca aceasta valoare maxima este suficienta pentru plaja de valori disponibila pentru motor.
Sub acestea se gasesc 3 controale numerice cu titlul "Coeficientii PID". Aici se pot introduce, manual, valorile de acordare ale parametrilor controlerului PID. Aceste campuri nu sunt necesare, in mod normal, deoarece acordarea se poate face din diagrama bloc, cu valori hardcodate, dar adaugandu-le aici creste gradul de portabilitate a aplicatiei, deoarece in cazul in care introducem in montaj, in locul motorului nostru, un alt motor cu parametri diferiti, utilizatorul poate reface calculele de acordare pentru noul motor si poate introduce parametrii regulatorului in aceste campuri. Valorile pot fi scrise atat precis, cat si utilizand sagetile de scroll.
In dreapta acestor elemente se gaseste un grafic de reprezentare a evolutiei sistemului. Asa cum reiese si din legenda, pe grafic vor aparea trasate doua curbe, una de culoare galbena care descrie valoarea prescrisa (se actualizeaza in timp real) si una de culoare rosie, care descrie valoarea instantanee a turatiei motorului. Acest grafic este foarte util pentru observarea performantelor regulatorului, in principal pentru analizarea modului in care valoarea instantanee evolueaza catre valoarea prescrisa (suprareglaj, timp de reglare, eroare de reglare).
Urmeaza, in partea mediana a panoului de control, o serie de afisaje : un afisaj numeric pentru valoarea instantanee a turatiei, asa cum este ea masurata de instrumentul virtual, un turometru pe care este reprezentata aceeasi valoare, un afisaj numeric pe care se reprezinta valoarea comenzii calculata de regulator (a tensiunii de alimentare ce trebuie aplicata motorului de curent continuu de sursa de tensiune variabila) si un buton "STOP" utilizat in cazul in care vrem sa oprim executia instrumentului virtual.
Ultimul element prezent pe grafic reda masuratorile efectuate prin tahometru, mai precis impulsurile generate de acesta drept caderi de tensiune pe rezistenta conectata la colectorul sistemului IR. Acest grafic este orientativ, fiind relevant doar in cazurile de extreme, cand impulsurile apar fie la frecvente reduse, fie la frecvente inalte.
Panoul de comanda contine si diverse elemente decorative, tocmai pentru a realiza o interfata mai placuta decat in cazul unui panou de comanda haotic si notat lapidar.
Diagrama bloc
Vom prezenta acum diagrama bloc a instrumentului virtual, pentru a intelege mecanismele care stau in spatele actiunilor acestuia. Se vor descrie blocurile componente ale acestuia, marimile de lucru si logica de conectare a acestora pentru a reda functionalitatea dorita.
Se pot deosebi 3 parti componente ale diagramei bloc: in partea stanga a dreptunghiului se regaseste o parte pe care o vom denumi "Partea de initializare", in centrul imaginii se gaseste dreptunghiul pe care il vom denumi "Partea de executie", iar in dreapta acestuia se gaseste o parte pe care o vom denumi "Partea de finalizare". Fiecare are un rol bine definit, executia curgand din partea stanga catre partea dreapta, desi acest lucru este mai degraba un standard acceptat de programatori decat o cerinta a mediului de programare (acest lucru poate fi modificat prin schimbarea orientarii blocurilor). O analogie cu codul-sursa scris in limbaje de programare poate fi facuta considerand "Partea de initializare" ca fiind acea parte a programului care se ocupa cu declararea/initializarea variabilelor si cu instantierea obiectelor ce vor fi folosite, "Partea de executie" cu instructiunile, operatiile, functiile si procedurile care realizeaza efectiv algoritmul ce se doreste a fi implementat, iar "Partea de finalizare" cu acea parte a programului care se ocupa cu eliberarea resurselor si a memoriei si gestioneaza eventualele coduri de eroare provenite de la subprogramele apelate.
a) Partea de initializare
In cazul de fata, are rolul de a initializa resursele de care avem nevoie pentru citirea informatiei oferita de tahometru (turatia instantanee) cat si sursa de putere variabila pe care o comandam pentru a alimenta motorul.
Din nou distingem 2 parti : in partea de sus sunt prezente blocurile care se ocupa cu crearea unui suport virtual pentru citirea informatiilor de la intrarea analogica la care este conectat tahometrul (ACH4+/-), iar in partea de jos sunt prezente blocurile care se ocupa cu initializarea unei modalitati de comandare a sursei de tensiune variabila.
Pentru prima parte, se porneste de la un bloc selector al dispozitivului folosit, care prin optiunea "Dev1/ai4" specifica faptul ca vom folosi primul dispozitiv conectat la placa de achizitii si mai precis al 4-lea canal analogic de intrare al acestuia. Acest bloc este conectat la blocul "DAQmx Create Virtual Channel" care are rolul de a crea un canal virtual (sau mai multe) de comunicatie cu placa de achizitii de date si creaza un task, care poate fi de citire tensiune, citire curent, citire temperatura, citire rezistenta, etc. In cazul in care se omite specificarea unui task la acest bloc, exista posibilitatea de a-l preciza ulterior, acest lucru sporind functionalitatea canalului creat, pe care pot fi, astfel, citite diferite informatii, in functie de dorinta programatorului. Din acest bloc avem ca iesire un fir care transporta denumirea task-ului si un fir (de culoare roz, standard pentru LabVIEW) pe care sunt propagate mesajele de eroare intre blocuri. Toate blocurile dintr-un parcurs de executie din instrumentul virtual este recomandat sa fie conectate intre ele prin mesajele de eroare, pentru depanare si testarea regimurilor de operare. Prin "parcurs de executie" intelegem acele blocuri conectate intre ele care formeaza, impreuna, un colectiv care realizeaza o sarcina bine-determinata. Urmatorul bloc este "DAQmx Timing" care primeste la intrare denumirea taskului creat si parametrii doriti pentru tipul de achizitie a esantioanelor, rata de achizitie si numarul de esantioane ce se doreste a fi achizitionate pe acest canal. La iesire obtinem datele actualizate corespunzator ale taskului cu care operam, informatii care vor avea rol de intrare pentru blocul urmator, "DAQmx Start Task", care se ocupa cu transmiterea comenzilor necesare dispozitivului pentru a intra in functiune pentru taskul specificat. Din acest moment, se poate considera ca s-a creat canalul virtual in coordonatele dorite, iar programatorul poate sa-l foloseasca pentru a citi date.
Partea de initializare a sursei de putere variabila este construita asemanator cu cea precedenta. Exista un bloc selector care specifica drept dispozitiv de lucru Dev1 unui bloc de initializare a functiilor placii ELVIS, bloc care este apoi conectat la functia "VPS - Initialize", careia ii specificam si polaritatea voltajului pe care vrem sa-l genereze (in cazul de fata, pozitiv). SHi acest parcurs de executie are blocurile conectate prin intrarile si iesirile de eroare respective, asa cum s-a specificat mai sus ca este recomandat.
Dupa executia acestor doua parti, executie care se intampla simultan, avem de-a face cu doua cai de comunicatie disponibile : una pe care putem achizitiona date de la intrarea analogica (de la tahometru - elementul de masura) si una pe care putem transmite comenzi sursei de putere variabila in legatura cu tensiunea ce trebuie furnizata motorului (sursa de putere variabila - elementul de executie). Aceste operatiuni se executa exact o data si o singura data pe parcursul rularii instrumentului virtual, la inceputul acesteia.
b)Partea de executie
Partea de executie propriu-zisa se gaseste in centrul diagramei de bloc, incadrata de un dreptunghi gri. Acesta este, de fapt, simbolul grafic utilizat in LabVIEW pentru buclele de executie, cea de fata fiind o bucla de tip "While" a carei executie se va repeta atata timp cat o conditie stabilita de utilizator este adevarata (sau falsa, pentru o varianta a acestei bucle).
In cadrul acestei bucle de executie vom realiza operatiunile pe care dorim sa le implementam : pe de o parte, citirea informatiei furnizate de tahometru si calcularea turatiei instantanee, pe de alta parte, utilizarea acestei informatii de catre regulator pentru a genera comanda si transmiterea acestei comenzi la elementul de executie, adica sursa de putere variabila, pentru a controla comportarea motorului.
Citirea esantioanelor achizitionate de la tahometru se realizeaza in partea superioara a schemei, in continuarea parcursului de executie corespunzator achizitionarii de date pe canalul analogic ACH4. Astfel, se utilizeaza firul care poarta informatiile despre task ca intrare intr-un bloc "DAQmx Read", care are rolul de a incepe efectiv citirea datelor, numarul acestor date citite intr-o executie a buclei fiind specificat tot ca intrare (prin conectarea corespunzatoare a constantei "Esantioane/canal"), urmand a genera la iesire un vector uni-dimensional cuprinzand datele achizitionate. Acest vector va constitui marimea de intrare pentru blocul "Pulse Measurements" care se ocupa cu masurarea perioadei unei curbe continue, curba continua reprezentata de valorile din vectorul uni-dimensional generat de blocul de citire, la iesire obtinandu-se perioada reprezentata printr-o valoare numerica.
Frecventa o calculam prin inversarea perioadei care apoi este inmultita cu 60 pentru ca viteza sa o raportam la rotatii pe minut. De aici rezultatul este memorat intr-un registru de deplasare cu 5 elemente pe de-o parte, iar pe de alta parte este impartit la 1000 (pentru a afisa rezultatul in rotatii pe minut x 1000) si afisat pe panoul de control prin intermediul indicatorului numeric RPM x 1000.
Figura 5.3. Masurarea perioadei impulsului.
Asa cum s-a specificat mai sus, valoarea turatiei va fi conectata la un registru al buclei de executie, cu scopul de a o folosi in calculele algoritmului de reglare. Registrii buclelor de executie reprezinta un mod de a propaga informatii numerice intre doua executii succesive ale buclei. Prin crearea unui registru, pe conturul buclei de executie apar perechi de conectori reprezentati prin sageti orientate in sus, in partea dreapta a buclei situandu-se registrii de intrare, in care conectam informatia ce dorim sa o folosim ulterior, iar in partea stanga registrii de iesire, care furnizeaza informatiile din executiile anterioare. Conectand la registrul de intrare valoarea turatiei, vom putea sa folosim, in fiecare executie ulterioara, valoarea turatiei obtinuta cu un pas inainte. Insa, vom multiplica registrii de iesire asociati acestui registru de intrare la un numar de cinci (ales pentru suficienta), astfel incat sa putem propaga valoarea turatiei cu cinci pasi de executie in avans, urmand a calcula o medie a acestor cinci valori precedente pentru turatia instantanee. Aceasta este o masura de siguranta care elimina propagarea unor erori cauzate de o citire defectuoasa de la elementul de masura. Este viabila deoarece avem de-a face cu un sistem cauzal caracterizat de inertie, putand a se considera ca turatia nu poate sa varieze discontinuu intre doua intervale de timp foarte apropiate. Trecand aceste cinci valori printr-un sumator si realizand media aritmetica, vom obtine o valoare aproximativa a turatiei instantanee, pe care o vom reprezenta pe un indicator numeric (cel descris la panoul de control).
Aceasta valoare a turatiei, impreuna cu valoarea prescrisa a turatiei, asa cum a fost setata de utilizator, vor reprezenta doua dintre marimile de intrare ale blocului "PID Regulator" care realizeaza operatiunea de calcul a valorii comenzii. Celelalte marimi de intrare ale acestuia vor fi doua constante reprezentand valorile minime si maxime ale domeniului de valori permis pentru comanda generata si coeficientii PID care determina functia, coeficienti PID calculati conform algoritmului de proiectare. Comanda generata de regulator va fi transmisa blocului "NI ELVIS VPS - Update", care are rolul de a transmite sursei de putere variabila initializata (si care ii este conectata drept marime de intrare) valoarea voltajului pe care trebuie sa o aplice motorului de curent de continuu.
Doua alte indicatoare de pe panoul de comanda sunt prezente in aceasta sectiune, mai precis indicatorul numeric "Alimentare" care afiseaza valoarea comenzii, in volti si graficul pe care reprezentam simultan valorile prescrise si instantanee ale turatiei, combinand aceste marimi printr-un cluster care concateneaza informatiile despre acestea.
O parte extrem de importanta a buclei de executie o reprezinta stabilirea conditiei de terminare a acesteia. In cazul de fata, este vorba de o bucla care isi continua executia pana in momentul in care o conditie, specificata de utilizator, este indeplinita. Vom conecta la acest bloc decizional un operator logic "SAU" care va primi la intrare mesajele de eroare ale partii de achizitie de date, mesajele de eroare ale partii de reglare si comanda si butonul "STOP". Astfel, executia buclei si, implicit, a programului, va lua sfarsit fie in momentul in care utilizatorul apasa butonul "STOP" de pe panoul de comanda, fie in cazul in care apare o eroare pe unul dintre parcursuri.
Bucla de executie contine si o variabila "i" care specifica numarul iteratiei. Desi in cazul nostru nu a fost necesara, poate fi utila in cazul in care se doreste afisarea in timp real a numarului de ordine a executiei buclei sau pentru a se stabili la a cata executie de bucla s-au petrecut anumite evenimente, cum ar fi aparitia erorilor.
Conceptul de
bucla de executie este cel mai des intalnit in cadrul achizitiilor
de date, deoarece se urmareste achizitia continua si
repetata a cat mai multe esantioane, pentru precizie si relevanta.
In acelasi timp, algoritmii de reglare sunt proiectati, principial,
in bucla inchisa, care poate fi comparata cu buclele de executie
din programarea structurata. Sinergia dintre aceste doua operatiuni
a recomandat utilizarea acestui tip de rationament.
c) Partea de finalizare
Dupa iesirea din bucla de executie printr-una dintre metodele specificate mai sus, este necesar sa inchidem canalele de comunicatie, datorita sistemului hardware bazat pe ocupare de resurse, astfel incat sa deblocam accesul la acestea si sa permitem altor instrumente virtuale sa le utilizeze in sesiunea curenta. Pe parcursul de executie destinat citirii de la intrarea analogica, vom conecta, in continuare, un bloc denumit "DAQmx Stop Task", care transmite placii de achizitie de date comenzile referitoare la eliberarea resurselor alocate si de sistare a transmiterii de semnale pe acest canal si executia este incheiata prin conectarea, dupa acest bloc, a blocului "DAQmx Clear Task" care realizeaza stergerea taskului din spatiul de lucru, dupa acest bloc putand a se discuta despre eliminarea si a resurselor software folosite.
Inchiderea comunicarii cu sursa de putere variabila se realizeaza prin conectarea blocurilor "VPS - Close", care suspenda comunicarea cu sursa de putere variabila si "NI ELVIS Close" care este folosit pentru a transmite comenzile de incheiere a comunicatiei cu intregul ansamblu ELVIS.
Firele care transmit mesajele de eroare sunt, apoi, concatenate prin functia "Merge Errors" care va furniza un conglomerat al mesajelor de eroare intalnite pe parcursul executiei la doua blocuri: "DAQmx Reset Device" care readuce dispozitivul DAQ utilizat in stadiul initial, in cazul in care nu s-au inregistrat probleme pe parcursul executiei si "Simple Error Handler" care afiseaza mesajele de eroare aparute.
V. Intrebari si exercitii
Care au fost algoritmii de acordare cu care s-a realizat proiectarea regulatorului in MatLab? Descrieti, pe scurt, fiecare algoritm in parte.
Cum se realizeaza circuitele electronice pe placa de incercari ELVIS?
Care este topologia unui ansamblu format din PC si placa de incercari ELVIS? Cum se realizeaza comunicarea intre acestea si cum pot fi datele prelucrate?
Ce functie indeplineste tahometrul? Care este principiul de functionare al acestuia?
Care este diferenta intre panoul de comanda si diagrama de bloc al unui instrument virtual?
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 3306
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved