Aeronautica | Comunicatii | Constructii | Electronica | Navigatie | Pompieri | |
Tehnica mecanica |
APLICATIA PRACTICA - REGLAREA POZITIEI MOTORULUI DE CURENT CONTINUU FARA PERII FOLOSIND O PLACA DE DEZVOLTARE CU DSP
Introducere
Acest capitol prezinta principalele aspecte a unei apicatii dezvoltata pe cotroller-ul DSP TMS320F2812. Este vorba de structua de control a motorului de curent continuu trifazat fara perii.
Aceasta aplicatie implementeaza controlul digital al pozitiei motorului in timp real. In cadrul acestei aplicatii s-a utilizat informatia furnizata de senzorii Hall inclusi in pachetul motorului, pentru comutarea fazelor invertorului.
Aplicatia poate fi utilizata la doua nivele, in functie de experienta utilizatorului:
Incepator: aplicatia poate fi utilizata pentru a avea prinul contact cu o aplicatie de control digital. Utilizatorul poate evalua efectul modificarii parametrilor (coeficientii de control, perioada de esantionare), cat si cel al modificarii referintei de pozitie.
Avansat: se pot adauga sau inlocui anumite functii de blocuri cum ar fi controlerele si/sau generatorl de referinta. Astfel, porind de la aceasta aplicatie se pot gasi algoritmi de control noi.
Curentii din motor sunt masurati prin intermediul tensiunii de pe sunturile plasate pe laturile invertorului. Sincronizate cu semnalele generatorului PWM, aceste tensiuni masurate dau valoarea masurata a curentilor pe faze ai motorului, si pot fi utilizate pentru inchiderea buclei de curent.
Informatia encoderului este utilizata pentru reglarea pozitiei in bucla lenta a sistemului de control al motorului.
Pentru reglarea pozitiei motorului sunt utilizate doua bucle de relare: o bucla rapida (la o rata de sampling ), si o bucla lenta de control al pozitiei (la o rata de sampling de ). Se presupune ca dupa 10 bucle rapide curentul este stabilizat si se poate efectua o bucla de reglare de pozitie.
Toate calculele matematice sunt realizate in formatul IQ. Exista de asemenea o serie de functii din libraria IQMath utilizate pentru realizarea unor operatii matematice intre astfel de numere.
Ambele bucle de reglare utilizeaza controlere discrete. Proportional-Integrator(PI) pentru curent si Proportional-Integrator-Derivativ(PID) pentru pozitie. Aceste controlere utilizeaza coeficienti de control scalati pentru a putea acoperi o gama larga de valori ale parametrilor de control.
Aplicatia DSP/BIOS este bazata pe structura software prezentata in figura 1. Aceasta structura reprezinta structura sofware modulara a aplicatiilor de control.
In varful structurii bloc de functionare, modulul de comunicatie va transmite catre sistemul de miscare comenzile generate pe un alt computer (PC sau, in plicatiile industriale, un alt modul de control, conectat prin intermediul unei magistrale la DSP). Acest bloc pate fi reprezentat in cadrul aplicatiei de interpretorul de comanda integrat al placii DSP.
Un interpretor al comenzii de miscare, adaptat la diferitele comenzi necesare unui control industrial, va interpreta comenzile de miscare in cazul general. Pe baza comezilor de miscare, interpretorul comenzilor de miscare va genera comenzile prin intermediul blocului de generare a referintei. La nivelul aplicatiei acest bloc nu este implementat.
Figura 1 Structura software modulara a aplicatilor de control al miscarii.
Blocul Generator de referinta va impune motorului valoarea de referinta - semnalul de referinta de pozitie.
Referinta motorului reprezinta intrarea blocului de control al motorului. Acesta contine controlerul de pozitie. Blocul va genera referinta curentului in quadratura (), care furnizeaza cuplul motorului.
Blocul de control al curentului/campului implementeaza controlul curentului. Iesirle acestui bloc de control sunt semnalele de referinta ale PWM-ului.
In final, semnalele PWM sunt utiizate, in blocul generator PWM, pentru a comanda invertorul de putere. Este utilizata o tehnica simetrica de generare a PWM-ului.
Din punctul de vedere al structurii programului, aplicatia este configurata dupa reprezentarea din figura 2.
Dupa cum se poate observa, in aceasta configuratie se pot sublinia mai multe nivele logice, care reprezinta mai mult sau mai putin configuratia de baza a unui kernel.
In cadrul nivelului interfetei I/O aplicatia utilizeaza urmatoarele resurse ale chipului TMS 320F2812:
interfata SCI pentru comunicatia seriala,
interfata ADC (Analogic to Digital Conversion - Conversia Analogica Digitala) pentrul masurarea curentilor pe fazele motorului,
blocul de generare PWM pentru comanda invertorului (utilizand timerul 1 al chipului DSP-ului)
Timerul 1 cu scop general pentrul generarea perioadelor de esantionare pentru controlul pozitiei si al curentului ( si )
interfata encoderului QEP in cuadratura pentru masurarea pozitiei de la encoder (utilizand Timerul 2 al chipului DSP)
trei biti de intrare de la interfata GPIO (General Purpose Input/Output) pentru citirea sezorilor Hall.
Fig. 2 Structura de baza a kernelului de miscare in timp real.
Asa cum se poate observa in figura 2 blocul de generare PWM va porni conversia analogica/digitala bazata pe schema de masurare a curentului care a fost implementata.
In cadrul stratului ISR sunt implementate mai multe functii de intrerupere in timp-real:
ISR trs: modului de comunicatie seriala. Activat de intreruperea TxINT,
ISR rec: modului de receptie in comunicarea seriala. Activat de intreruperea RxINT,
ADC ISR: modulul de masurare a conversiei ANALOGIC/DIGITAL. Activat de sfarsitul conversiei realizata de modului de conversie ANALOGIC/DIGITAL,
ISR kernel: rutina de intrerupere a kernelului de control al miscarii. Activat de deficitul de intrerupere al Timerului 2. Face apel la rutinele de curent si pozitie.
Stratul de schimb al datelor I/O necesita o serie de variabile de baza:
Buff trs: bufferul de transmisie pentru transmiterea datelor pe canalul de comunicatie,
Buff rec: bufferul de receptie pentru datele receptionate de pe canalul de comunicatie,
: curentii masurati ai motorului
: curentii de referinta ai motorului
: pozitia masurata a motorului
: pozitia de referinta a motorului.
Figura 2 indica conecsiunile logice de baza intre componentele diferite ale straturilor in cadrul acestui kernel de control al miscarii.
Structura aplcatiei
Aplicatia consta in regalrea pozitiei unui motor de curent continuu fara perii care opereaza cu unda trapezoidala.
Schema de control este prezentata in figura 3. Dupa cum se observa, schema se bazeaza pe masurarea curentilor pe doua faze si a pozitiei motorului. Curentii de faza masurati, si , sunt utilizati la calcularea curentului echivalent in motor, bazata pe informatiile de pozitie furnizate de senzorii Hall. Este de retinut faptul ca senzorii Hall furnizeaza o informatie de pozitii pe electrice. Controlerele de pozitie si de curent sunt discrete. In acest caz este necesar numai un controller de curent. Blocul de comutare a tensiunii implementeaza (software) calculul tensiunilor de referinta pe fiecare faza, , si , aplicate invertorului.
Fig. 3 Schema de control a plicatiei.
Aceasta schema va comuta pe o configuratie specifica de comanda, pentru fiecare sector de pozitie de , in functie de informatia citita de la senzorii Hall.
Pe baza acestei aplicatii, se pot construi alte aplicatii mai complexe. Codul este dezvoltat numai in limbajul C.
Resursele DSP-ului folosite de aplicatie
Aceasta aplicatie utilizeaza diferite resurse ale controlerului DSP specifice controlului motorului:
Masurarea pozitiei: utilizeaza intrarile QEP1 si QEP2 ale DSP-ului pentru conectarea semnalelor in cuadratura ale encoderului A si B.
Masurarea curentului: utilizeaza intrarile analog-to-digital ADCIN6 si ADCIN5 pentru masurarea curentului motorului pe fazele A si B.
Comanda de invertor: utilizeaza iesirile PWM1 si PWM6 pentru comandarea a sase tranzistoare ale invertorului trifazat.
Informatia de la senzorii Hall: senzorii Hall ai motorului trebuie conectati la iesirile IOPB7, IOPB11 si IOPB12 ale DSP-ului TMS320F2812
Schema de masurare a curentului
Schema de masurare a curentului implementata pe MCK2812 si PM50 este bazata pe sunturile montate pe fiecare ramura joasa a invertorului. Tensiunea disipata pe sunt este amplificata si trimisa catre canalele ANALOGIC/DIGITAL ale TMS320F2812. Figura 4 prezinta principiul de masurare.
De asemenea se ia in considerare faptul ca citirea valorii de 12biti in TMS320F2812 se realizeaza cu o shiftare de 4biti la stanga, de exemplu 12biti ai valori masurate sunt stocati in 12 cei mai semnificativi biti ai unei valori de 16biti.
Pentru aceasta schema de reglare a curentului, conversia ANALOGIC/DIGITAL trebuie sa fie sincronizata cu comanda PWM a tranzistoarelor invertorului, pentru o masrare corecta a curentului pe fiecare faza a motorului.
Fig. 4 Schema de masurare a curentului.
Conectarea senzorilor Hall
Aceasta aplicatie utilizeaza informatia senzorilor Hall. Acest lucru presupune conectarea celor trei senzori Hall ai motorului la trei biti de intrare ai DSP-ului. Pe baza informatiilor furnizate de aceste trei semnale, schema de comutare va funiza corespunzator fazele motorului.
Aceasta aplicatie utilizeaza senzori Hall care furnizeaza o informatie de comutare de 60s, 6 tranzistoare pentru o perioada electrica a motorului. De asemenea, comutatia este decisa de patternul de informatii Hall. Sunt disponibile pana la 12 combinatii posibile, deci este necesara o detectie a combinatiei specifice motorului.
Descrierea algoritmul, care poate fi utilizat pentru deducerea distributiei senzorilor Hall specifica motorului utilzat de aplicatie este urmatoarea:
Pasul 1. Se alimenteaza fazele motorului cu trei tensiuni: , si , unde U este o tensiune continua, si se citesc semnalele de la iesirea senzorilor Hall (). In acest pas rotorul motorului este pozitionat in fata fazei A.
Pasul 2. Se alimenteaza fazele motorului cu trei tensiuni: si si se citesc semnalele de la iesirea senzorilor Hall (). In acest pas rotorul motorului este pozitionat in fata fazei B.
Pasul 3. Se utilizeaza tabelul de mai jos pentru determinarea cazului distributiei senzorilor Hall, pe baza semnalelor citite la pasii 1 si 2.
Tabelul 1 Tabelul semnalelor Hall.
Caz crt. |
P1() |
P2() |
Caz 1 | ||
Caz 2 | ||
Caz 3 | ||
Caz 4 | ||
Caz 5 | ||
Caz 6 | ||
Caz 7 | ||
Caz 8 | ||
Caz 9 | ||
Caz 10 | ||
Caz 11 | ||
Caz 12 |
Motorul utilizat in aceasta aplicatie se incadreaza in cazul 1.
Secventa de conexiune a fazelor motorului
Este necesara o conectare corecta a fazelor motorului tinandu-se cont de semnalele A si B ale encoderului. Pentru o conectare corecta este necesara citirea fisei tehnice a motorului.
Aspecte ale implementarii software
Utilizarea timerelor si aspecte legate de intreruperi
Aceasta aplicatie utilizeaza un mediu specific de timp real, structurat pe trei nivele (Figura 2):
O functie de intrerupere cu prioritate mare, in principal pentru controlul curentului.
O functie de intrerupere de prioritate mica, pentru referinta pozitiei si pentru controlul pozitiei.
O functie fara intrerupere, care contine initializari de aplicatii si o bucla infinita de asteptare.
Aplicatia pentru controlerul DSP TMS320F2818 uilizeaza doua timere ale DSP-ului.
TIMER 1 (GPT1) este utilizat pentru generarea PWM. Timerul opereaza in modul continuu sus-jos, genereaza semnale PWM simetrice.
TIMER 2 (GPT2) este utilizat pentru stocarea pozitiei encoderului (GPT2 este utilizat in modul QEP).
Figura 5 Generarea intreruperilor in timp real pentru aplicatiile pentru TMS320F2812.
Timerul 1 este programat, implicit, sa genereze un PWM de 20kHz. Acelasi timer este utilizat si pentru generarea intreruperilor in timp real, pentru a activa intreruperile rapide si cele lente (pentru implementarea buclelor de curent si a celei de pozitie). Pentru o frecventa a PWM-ului de 20-kHz, acesta cere o intrerupere la 50. Utilizand un numarator software, rutina de control a curentului este executata la fiecare doua perioade PWM (la fiecare 100 Un alt numarator software este utilizat la executarea rutinei de control al pozitiei la fiecare 10 perioade (la fiecare ).
Este de retinut faptul ca intreruperea lenta poate fi intrerupta de intreruperea rapida, deoarece controlul curentului are o prioritate mai mare decat cel al pozitiei.
Executia rutinei de intrerupere a curentului dureaza aproximativ intre 50 si 60ms. Acest lucru implica faptul ca nu sunt recomandate perioade de esantionare mai mici de 100 pentru rata de esantionare a curentului si de asemenea trebuie testate cu atentie.
Timerului 2 numara pulsurile encoderului. Codul utilizeaza aceasta informatie, corelata cu numarul de pulsuri de la encoder per pereche de poli ai motorului, pentru calculul unghiului electric.
Conversia ANALOGIC/DIGITAL este pornita automat de timerul PWM. Rezultatele conversiei sunt citite si stocate in doua variabile globale. Numai curentii motorului sunt masurati ca marimi analogice, in consecinta aceleasi canale sunt mereu utilizate.
Generarea iesirilor PWM
Iesirile PWM-ului sunt generate pe baza valorilor de referinta ale tensiunii, calculate la iesirea rutinei de control al curentului. Referintele tensiunii, reprezentate in format IQ, sunt utilizate pentru a calcula valorile registrilor de comparare corespunzatori celor trei faze ale motorului.
Urmatoarea figura ilustreaza modul in care valorile de comparare stocare in registrii de comparare sunt calculate pornind de la valoarea de referinta a tensiunii.
Fig. 6 Calculul valorilor de comparare pentru generarea PWM-ului, pornind de la tensiunile de referinta.
In cadrul acestei aplicatii este utilizata o schema speciala de comutatie pentru generarea comenzilor PWM pentru fazele motorului. Pe baza imformatiilor de la senzori Hall, numai doua dintre fazele motorului sunt furnizate, in timp ce a treia nu este alimentata, pentru fiecare combinatie a semnalelor Hall. Dupa fiecare schimbare de 60s electrice ale pozitiei motorului, o noua combinatie a fazelor motorului este furnizata (Figura 7).
Fig. 7 Genararea PWM.
Masurarea curentului
Tensiunile aplicate pe fazele motorului sunt impulsuri dreptughiulare, care genereaza o ondulare a curentilor pe faza ai motorului. Prin inchiderea buclei de curent si impunerea unui curent continuu in motor controllerul de curent va reusi sa impuna un curent care urmareste forma referintei. Nu in ultimul rand, va exista o ondulare a curentilor motorului. (Figura 8) Valoarea acestuia este in conformitate cu parametrii motorului (constanta electrica de timp), cu frecventa PWM-ului, si cu latimea benzii controllerului de curent.
Avand in vedere aceasta ondulare mostenita a curentului, pentru a obtine cea mai apropiata valoare masurata a curentului pentru implementarea buclei de regrare in curent, cel mai bun moment de masurare este la mijlocul pulsului PWM (Figura 8).
Figura 9 prezinta metoda de masurare a curentlui utilzata in cazul MCK2812. Un sunt pe fiecare latura joasa a PWM-ului permite masurarea curentului pe fiecare faza a motorului, de la caderea de tensiune pe sunt. Pentru o masurare corecta, indiferent de semnul curentului, aceasta trebuie efectuata in momentul in care tranzistorul de pe latura joasa este ON. In concluzie, coreland aceasta restrictie cu cea de mai sus (masurarea la mijlocul pulsului PWM-ului), se poate spune ca masurarea curentului trebuie realizata la mijlocl perioadei PWM (in cazul unui PWM simetric). Aceasta masurare este prezentata in figura 10.
Fig. 8 Ondularea curentului datorita tensiuni PWM aplicata motorului.
Fig. 9 Masurarea curentului pe latura joasa a PWM-ului.
Iesirile PWM-ului trebuie sa ramana stabile pe durata conversiei ANALOGIC/DIGITAL. Acest lucru va impune o valoare maxima a valorii tensiunii de referinta, pentru a evita comutatia pulsului PWM pe durata esantionarii curentului.
Figura 10 indica toate aceste aspecte. Pentru ca masurarea sa se realizeze corect trebuie respectati urmatorii pasi:
pornirea ADC-ului se face la ,
se masoara
Metoda de masurare utilizata de aceasta aplicatie are urmatoarele caracteristici:
Furnizeaza o masurare corecta indiferent de semnul curentului.
Funizeaza o valoare pentru
curent apropiata de curentul mediu (in relatie cu
Zona de limitare de siguranta pentru S&H impune o limitare pe tensiunea maxima care poate fi plicata pe motor.
Fig. 10 Masurarea curentului la mijlocul perioadei PWM.
De retinut este faptul ca pe controllerul DSP TMS320F2812 este posibila o pornire automata a conversiei ANALOGIC/DIGITAL de la generatorul PWM, in centrul perioadei PWM, fara a fi necesara o interventie sotfware. In consecinta numai la finalul conversiei, in timpul rutinei de intrerupere activata in acel moment, programul va citi direct valorile convertite ale curentului.
Calculul unghiului electric
Pozitia masurata de la encoder este utilizata la calculul unghilui electric al motorului. Acest unghi se calculeaza prin impartirea unghiului de pozitie la numarul de perechi de poli ai motorului. Informatia unghiului electric va fi utilizazta pentru calculul sinusului si cosinusului necesare pentru implementarea transformarilor de coordoate.
In acest sens, informatia de pozitie a motorului trebuie sa fie transformata urmand mai multi pasi succesivi (Figura 11):
citirea informatiei interfetie QEP stocata in registrul numarator asociat timerului,
calculul modulo din informatie (), unde este numarul linilor encoderului; aceasta este informatia de pozitie mecanica redusa in interiorul unui tur al motorului,
calculul unghilui de pozitie electrica, prin impartirea acestui numar la numarul de perechi de poli ai motorului; valoarea maxima a unghiului electric este ,
rescalarea acestui numar ca o valoare Q16, prin inmultirea cu
Fig. 11 Calculul unghiului electric din informatia encoderului.
Controlul curentului
Aplicatia utilizeaza pentru implementarea reglarii curentului motorului un contrler PI. Este folosita o forma discreta a controlerului. Principiile de baza ale implementarii controlerului PI sunt prezentate mai jos.
Controler PI
Implementare
; Sat()
; Sat()
Parametrii controlerului sunt valori in virgula mobila. Aceste valori sunt reprezentate in formatul IQ.
Implementarea schemei in Matlab Simulink
Acest subcapitol prezinta implemantarea schemei de control al pozitiei pentru un motor de curent cotinuu fara perii. Controlul pozitiei se realizeaza cu un controller PID. Acesta are la iesire un semnal de refeinta a curentului pentru controllerul PI de curent. Parametrul de intrare al controllerului PID este dat de blocul " Speed Reference".
Fig. 12 Implematarea schemei de reglare a pozitiei in Matlab Simulink.
Regulatoare numerice - Notiuni introductive
Aceasta aplicatie utilizeaza o structura de control in cascada cu o bucla rapida interioara pentru controul curentului si o bucla exterioara de reglare a pozitiei. Pentru a respinge perturbatiile externe sunt utilizate regulatoare PI standard. Functia de transfer utilizata pentru regulatoarele digitale este urmatoarea:
(1)
unde este factor de amplificare proportional si este factorul de amplificare integrativ.
Schema de reglare a fost realizata pornind de la urmatoarele presupuneri:
Largimea de banda operationala a controllerului este mult mai mica decat frecventa de esantionare.
Fiecare bucla de control opereaza cvasi-independent; pasul buclei externe este mult mai mic decat ce al buclei interne si reglarea curentului este mult mai rapida decat obtinerea referintei de pozitie.
Se considera pulsatia naturala de oscilatie a sistemului de control, si factorul de amortizare. Factorul de amortizare poate fi ales dupa mai multe criterii:
3% supraregraj la intrare treapta unitara.
- largimea de banda maxima pentru functia de transfer, 16% supraregrajul la intrarea treapta unitara.
- raspuns neperiodic, cel mai rapid raspuns fara suprereglaj.
La alegerea pulsatiei naturale urmatorii factori ar trebui luati in considerare:
Dinamica dorita
Dinamica proprie a sistemului
Rezerva de tensiune
Acuratetea de esantionare.
In practica, pulsatia naturala este invers proportionala cu raspunsul in timp al sistemului. Pulsatia naturala pentru bucla de reglare a curentului poate fi evaluata cu urmatoarea relatie:
(2)
De asemenea ar trebui ales un timp de esantionare adecvat pentru bucla de curent. Considerad perioada de esantionare , pulsatia limita pentru un proces digital este:
(3)
Aceasta limita teoretica este indeplinita in practica prin alegerea unei pulsatii de oscilatie cu un ordin mai mica decat amplitdinea.
Pentru simplificarea comutatiei am ales:
(4)
Este evident faptul ca dinamica dorita si perioada de esantionare sunt conditionate mutual. Pentru sistemul electric banda de pas este limitata de asemenea si de rezerva de tensiune. Tensiune mai mare implica raspuns mai rapid si banda de pas mai larga.
In consecinta, banda de pas care poate fi atinsa este:
(5)
Construirea unui controller digital se face in urmatorii pasi:
Se considera o schema de control echivalenta in analogica.
Se aleg performantele dorite si perioada de esantionare potrivita.
Se calculeaza parametrii de acord in functie de indicii de calitate impusi pentru un controller analogic.
Se discretizeaza controllerul.
Se calculeza parametrii noului controller tinand seama de relatiile dintre acestea si cei ai controlerului analogic si de asmenea de tipul de procesare numerica a DSP-ului (in virgula fixa in cazul de fata).
Evaluarea performantelor obtinute.
Controlul curentului si implementarea controllerului
Controlul curentului
Circuitul RL
Se considera un circuit RL alimentat cu o sursa de tensine variabila definit de ecuatia:
(6)
Daca tensiunea elecromotoare este considerata a fi perturbatie, curentul printr-un asemenea circuit poate contine un controller PI ca in schema urmatoare:
Fig. 13 Schema cu controller PI.
Daca circuitul electric are constanata de timp urmatoarele relatii pot fi utilizate pentru controlul curentului:
(7)
Aceste reltii aloca polii sistemului in bucla inchisa in functie de indicatorii de calitate impusi () . In plus, pentru a obtine un sistem in bucla inchisa stabil, este important ca:
Circuitul rezistiv
Daca
(8)
Circuitul rapid RL
In cazul in care
(9)
Controlul pozitiei PID
Controllerul de pozitie este utilizat in schema cu feedback in care pozitia mecanica a sistemului trebuie sa se identifice cu referinta. Urmatoarea relatie decrie sistemul mecanic:
(10)
sau:
(11)
Unde este factorul de acceleratie, definit cantitav de:
(12)
Acest sistem este definit de urmatoarea functie de transfer:
(13)
Regulatorul PID:
(14)
Utilizand un controller PID functia de transfer devine:
(15)
Expresiile pentru , si sunt identificate asociind polii functiei de transfer cu cei ai sistrmului de ordinul 3:
(16)
Vor rezulta:
(17)
Regulatorul disctret va avea relatia:
(18)
In calculul parametrilor controllerului trebuie luati in cosiderare factorii de scalare ai curentului si pozitiei. Controllerul digital de potizie este identificat folosind relatiile care iau in considerare in scalarea coeficientilor si parametrii senzorilor:
(19)
Librariile folosite in constructia schemei
Libraria Motor
Din aceasta librarie am utilizat blocul DC Motor. Modelul dinamic al acestuia este caracterizat de urmatoarele ecuatii:
(20)
Parametrii in Matlab ai acestui bloc sunt:
Fig. 14 Paramerii Matlab pentru motorul DC.
Masurarea curentului
Simularea masurarii curentului este realizaa prin multiplicarea valorii masurate pe bratul morotului cu un factor de scalare.
Fig. 15 Blocul de simulare a masurarii curentlui.
Modulul de putere
Acest bloc simuleaza modelul simplificat al convertorului de putere utilizat pentru alimentarea morotului. Este considerata o sursa ideala: tensiunea primita de la iesirea blocului de transformare de coordonate TDQ2ABC fiind amplificata in concordanta cu trecerea de la reprezentarea digitala la valorile reale aplicate pe fazele motorului. Parametrul acestui bloc trebuie sa fie facorul de scalare a tensiunii s_u_crt [V/bit
Factorul de scalare se inmulteste cu fiecare semnal de tensiune de la blocul de transformare de coordonate. Rezultatele sunt tensiunile de control pentru motor (figura 16).
Fig. 16 Blocul de putere.
Scalarea factorilor utilizati
La utilizarea DMCode-MS(BL) MATLAB Library, valorile tuturor variabilelor trimise sau primite sunt binare.
Conversia unei variabile din unitati de masura in valoribinare si vice versa trebuie realizata utilizand factorii de scalare corespunzatori fiecarei variabile. Acesti factori depind de hardwareul actionarii, cat si de parametrii specifici senzorilor, si trebuie calculati pentru fiecare configuratie utilizata.
Factorii de scalare a pozitiei
Variabila de pozitie de la structura de date ENCODER furnizeaza pozitia motorului. Daca este utilizat featback-ul de la un encoder in quadratura, Pozitia este masurata in unitati de encoder (1 unitate de encoder = 1 bit).
Factorul de scalare este:
(21)
unde:
N este numarul de linii ale encoderului pe o rotatie.
este rata de multiplicare a rezolutiei pozitiei realizata de interfata encoderului.
Factorii de scalare a curentului / cuplului
Curentii pe faza sunt masurati pe sunturile laturilor inferioare ale PWM-ului. Curentii sunt masurati prin intermediul intrarilor A/D cu un factor de aplificare a curentului specific reglarii. Daca nu se specifica altceva, variabila furnizeaza compnenta curentului motorului care produce cuplul. Variabila indica componenta de flux. , si indica curentii pe fazele morului.
Factorul de scalare al curentului este:
(22)
unde:
este intervalul de tensiune de intrare a canalului [A/D] senzor de curent.
este factorul de amplificare al canalului de masurare a curentului.
32760 factolul de scalare la IQMath.
Nota Conversia A/D rezultata are o rezolutie de 12 biti si este utilizata dupa ce in prealabil a fost aplicata operatia de shiftare la stanga cu Cuplul motorului poate fi calculat utilizand constanta de cuplu a motorului care, inmultita cu valoarea curentului, va furniza valoarea cuplului motorului.
Descrierea software-ului aplicatiei
Proiectele non DSP/BIOS
Aplicatiile non DSP/BIOS sunt structurate ca proiecte DMCD-Pro, care contin toate codurile necesare implementarii plicatiei de control al miscarii pe un modul DSP TMS320F2812 ca MCK2812 de la Technosoft.
Primele doua pagini ale memoriei flash a DSP-ului contin programul de monitorizare a comunicatiei, MON2812. Avand in vedere faptul ca toti vectorii de intrerupere sunt de asemenea pozitionati in partea initiala a memoriei flash, orice intrerupere petrecuta in DSP va implica executia inceputului rutinei ISR asociate din monitor. In monentul detectarii intreruperii, monitorul va trece controlul rutinei ISR asociata userului. De asemenea specifica acestui proces este si partea de iesire din ISR, in care programul utilizatorului trebuie sa refaca contextul procesorului, sa il aduca in starea salvata de programul moitor la intrarea in intrerupere.
Datorita performantelor sporite ale DSP-ului implementarea aplicatiilor poate fi realizata utilizand numai limbajul de programare C.
Codul C contine toate rutinele de initializare, cat si kernelul principal al aplicatiei. Acest fapt ofera fiabilitate maxima a structurii software-ului. Utilzatorlui ii va fi usor sa inteleaga functionarea programului, cat si sa modifice, sa inlature sau sa adauge functii noi in aceasta configuratie cu scopul adaptarii aplicatiei la cazuri specifice. Codul C contine si toate functiile apelate in rutinele de intreruperi in timp real.
Proicte DSP/BIOS
DSP/BIOS este un kernel in timp real dezvoltat de Texas Imstruments care furizeaza un multi-threading, programare si sincronizare, si unelte de analiza in timp-real. DSP/BIOS-ul inglobeaza un set de module care pot fi incluse in aplicatia userului. Kernelul de control al miscarii este intergat in structura DSP/BIOS-ului.
Aplicatia construita cu DSP/BIOS este independenta de monitorul MON2812 pastrat in memoria flash a DSP-ului, fiind creata sa functioneze din memoria externa a placii MSK2812. In consecinta inainte de rularea aplicatiilor, utilizatorul trebuie sa configureze DSP-ul sa booteze din memoria externa in loc de memoria flash.
Diferentele dintre aplicatiile DSP/BIOS si cele non DSP/BIOS sunt:
DSP-ul trebuie sa boot-eze din memoria externa si nu din memoria flash,
principalele functii sunt utilizate numai pentru initializare, iar la sfarsitul acesteia programul intra in bucla IDL,
rutinele de servire a intreruperilor sunt asociate vectorului PIE, utilizand DSP/BIOS-ul,
intreruperile sunt activate de DSP/BIOS in consecinta achizitia intrarilor analogice este realizata dupa executia functiei main utilizand un task al DSP/BIOS,
comunicatia seriala nu este implementata.
Proiectul
Vesiunea non DSP/BIOS a plicatiei are structura de baza descrisa in figura 17.
Fig. 17 Functia main a plicatiei non DSP/BIOS pentru TMS320F2812.
Aplicatia construita utilizand DSP/BIOS-ul prezentat in figura 18. Programul incepe cu initializarea DSP/BIOS, continuand cu executia functiei main. La sfarsitul functiei main, DSP/BIOS porneste, activand intreruperile, si incepe executia task-urilor IDL. In bucla IDS task-ul GetADOffset_Tsk, executat odata, apeleaza rutina pentru detectia offset-ului intrarilor analogice. La finalul rutinei buclele de control in timp real sunt activate.
Fig. 18 Structura aplicatiei construita cu DSP/BIOS.
Structura inreruperilor pentru ambele versiuni de proiecte este aceeasi, aceasta putand fi observata in figura 19. Este de remarcat faptul ca aceasta configuratie utilizeaza numai o intrerupere de la timerul GPT1, generata la mijlocul formei de unda a PWM-ului. Utilizand numaratoare software, aceasta rutina de intrerupere executa rutinele de control al curentului sau al pozitiei atunci cand counterele devin 0.
Fig. 19 Functiile de intrerupere pentru aplicatia implementata pe TMS320F2812.
Utilizarea aplicatiei in mediul DMCD-Pro
Pentru a putea rula si urmari rezultatele aplicatiei aceasta trebuie rulata in mediul DMCD-Pro. Pentru aceasta aplicatia contine un fisier proiect (*.prf) care trebuie incarcat in acest mediu. Acest lucru se realizeaza urmarind urmatorii pasi:
Realizarea practica a aplicatiei
Realizarea schemei in Matlab
Dupa cum am aratat in subcapitolul 5 se construieste schema de reglare in cascada si se calculeaza parametrii de acord pentru cele doua regulatoare de control al curentului si pozitiei PI si respectiv PID. Schema de reglare va fi:
Fig. 20 Schema de reglare in Matlab Simulink.
.e realizeaza simularea utilizand butonul Run Simulation din meniul Simulation. In urma acesteia se va obtine:
Fig. 21 Rezultatul simularii ( referinta; pozitia).
Generarea codului pentru controllere
Pentru a putea implementa proiectul pentru platforma DMC Developer-PRO este necesara generarea codului pentru fiecare controller in parte. Codurile pentru blocurile de transformare de coordoate si cel pentru PWM sunt cele implicite, incluse in platforma DMC Developer-PRO.
Generarea codului se face cu click dreapta pe bloc si Real-Time Workshop/Build Subsystem (figura 22).
Fig. 22 Generarea codului pentru controllere.
Integrarea codului in proiectul DMC Developer-PRO si complilarea proiectului
In acest moment se poate deschide mediul DMCD-PRO. Cu comanda "Project | Open" se va incarca proiectul specific aplicatiei.(Figura 23)
Figura 23 Incarcarea proiectului.
Dupa alegerea din fereastra de browse a proiectului corespunzator aplicatiei workspace-ul va arata ca in figura 2
Figura 24 Proiectul incarcat in mediul DMCD-Pro.
Odata ce proiectul a fost incarcat, pe baza acestuia se poate construi aplicatia pentru a putea fi incarcata in DSP cu comanda: "Project | Build" sau Shift + F8.
Figura 26 Construirea aplicatiei pentru DSP.
Download-area programului si achizitia datelor
Pentru a putea achizitiona date de la motor trebuie mai intai realizata conexiunea motorului cu placa de dezvoltare MSK2812 cu procesorul TMS320F2812, dupa care trebuie realizata conexiunea cu PC, si in final trebuie alimentate motorul si placa.
Conexuinea intre placa si PC se realizeaza prin cablu si porturi seriale. Conexiunea intre motor si placa a fost detaliata in capitolul 3. Alimentarea placii se realizeaza la 19V (tensiune continua).
Urmeaza descarcarea programului in memoria externa (figura 27) a DSP-ului, care se realizeaza cu comanda "Project | Download Program" sau Ctrl+D, si executarea programului (figura 28), care se realizeaza cu comanda "Project | Execute" sau Ctrl + F5.
Fig. 27 Descarcarea programului in memoria extena a DSP-ului.
Fig. 28 Executarea programului.
In acest moment se poate incepe achizitia datelor in timp real. Aceasta se face utilizand comanda "Upload Trace" din meniul de click dreapta pe fereastra Trace. Avem posibilitatea achizitiei atat a pozitiei de referinta si a celei reglate, cat si a curentului (referinta + reglat) si a .
Figura 29 ilustreaza o asemenea achizitie de date in timp real.
Figura 29 Achizitia datelor in timp real.
8.5 Compararea rezultatelor
Comparand rezultatele obtinute in urma simularii cu cele obtnute in urma executiei programului pe DSP si achizitiei datelor se poate observa faptul ca reglarea a fost implementata cu succes.
|
|
Fig. 30 Rezultatul simularii. |
Fig. 31 Datele obtinute in urma achizitiei. |
CONCLUZII
Utilizarea placii MSK2812 cu procesorul digital de semnal TMS320F2812 in comanda digitala si reglarea motoarelor electrice s-a dovedit foarte eficienta, reducand munca necesara reglarii clasice.
Lucrul cu aceasta nu este foarte complicat deoarece uneltele si platformele de lucru cu care este dotata placa MSK2812 minimizeaza lucrul inginerului proiectant al sistemul de reglare, permitandu-i atat verificarea teoretica, off-line a implemantarii, cat si verificarea in timp real. De asemenea este la indemana imbunatatirea sistemului de control.
Un alt avantaj il constituie faptul ca programul scris in cod C, specific aplicatiei contine toate rutinele de initializare, cat si kernelul principal al aplicatiei. Acest fapt ofera fiabilitate maxima a structurii software-ului. Utilzatorlui ii va fi usor sa inteleaga functionarea programului, cat si sa modifice, sa inlature functii sau sa adauge functii noi in aceasta configuratie cu scopul adaptarii aplicatiei la cazuri specifice.
Principalul dezavantaj al utilizarii placii MSK2812 cu procesorul TSM320F2812 este compiatorul. Acesta trebuie achizitionat direct de la Texas Instruments la un pret destul de ridicat.
In concluzie, exista nenumarate solutii de comanda a motoarelor pentru sistemele utilizate in acest moment. Sistemele simple sau complexe tind sa foloseasca microcontrolerele, iar sistemele cu un grad sporit de complexitate utilizeaza arhitectura DSP-urilor. Recent, disponibilitatea arhitecturilor hibride ce includ caracteristicile microcontrolerelor si DSP-urilor a oferit proiectantilor de sisteme noi optiuni. In general, arhitectura hibrida reprezinta o buna solutie atat timp cat sunt utilizate doar cateva componente (acesta este un factor de crestere a fiabilitatii deoarece mai putine componente inseamna o sursa mai mica de posibile defecte), proiectarea software se realizeaza simplu si rapid, iar costul intregului sistem se micsoreaza.
Astazi, cel mai rapid procesor DSP este cel produs de Texas Instruments, TMS 320C6201, care ruleaza la 200 MHz. Evident, nu este cel mai rapid in comparatie cu un microprocesor obisnuit. Totusi, de ce procesoarele DSP prezinta inca un atat de mare interes? Motivatia este dubla: in primul rand DSP poate efectua mai multe operatii in paralel si, mai ales, poate lucra cu semnale externe mult mai bine decat cel mai performant Pentium.
Procesoarele digitale de semnal pot fi intalnite in aparatele de monitorizare medicale, in aparatele auditive, supercalculatoare sau modemuri. Sunt folosite in detectoare radar, in televizoare digitale sau combine audio, instalatii de amplificare si laser pentru spectacole. DSP-urile sunt, de fapt, o parte componenta a existentei noastre moderne, translatand semnalele in inteligenta si permitandu-ne sa luam decizii mai precise, intr-un timp mult mai scurt.
BIBLIOGRAFIE
Prof. Dr. Ing. Vasile Comnac Universitatea "Transilvania"
DMCode-MS(BL) MATLAB Library - User Manual, Technosoft 2004
MSK2812&MCK2812 - User Manual, Technosoft 2007
Prof. Ddr. Iing.Vasile Lazarescu Curs Sisteme Electronice Programabile, Universitatea Politehnica din Bucuresti, Catedra Electronica.
Copyright © 2024 - Toate drepturile rezervate