proiect ia

23
UNIVERSITATEA VALAHIA TARGOVISTE FACULTATEA DE INGINERIE ELECTRICA SPECIALIZAREA AUTOMATICA SI INFORMATICA APLICATA PROIECT DISCIPLINA: INTELIGENTA ARTIFICIALA STUDENT : BOCAN EUGEN VIOREL ANUL IV

Upload: mocanu-doru

Post on 07-Jul-2016

14 views

Category:

Documents


1 download

DESCRIPTION

proiect inteligenta artificiala

TRANSCRIPT

UNIVERSITATEA VALAHIA TARGOVISTEFACULTATEA DE INGINERIE ELECTRICA

SPECIALIZAREA AUTOMATICA SI INFORMATICA APLICATA

PROIECT

DISCIPLINA:INTELIGENTA ARTIFICIALA

STUDENT : BOCAN EUGEN VIOREL ANUL IV

TARGOVISTE 2016

REGLAREA VITEZEI MOTORULUI DE CURENT CONTINUU

1.SETARILE FIZICE ALE ECUATIEI SISTEMULUI

Un element de actionare comun in sistemele de control este motorul de curent continuu. Furnizeaza direct miscarea rotativa si cuplat cu roti ,tamburi sau cabluri poate furniza miscare tranzitiva. Circuitul electric al armaturii si diagram corpului rotoric sunt afisate in figura urmatoare:

Pentru exemplul de fata se vor atribui urmatoarele valori pentru parametric fizici: Momentul de inertie al rotorului (J) =0.01kgm^2/s^2 Raportul de amortizare al sistemului mechanic (b)=0.1 Nms Constanta fortei electromotoare(K=Ke=Kt)=0.01 Nm/Amp Rezistenta electrica (R)=1ohm Inductanta electrica (L)=0.5H Alimentarea(V): tensiunea sursei Iesirea (theta) :pozitia arborelui Rotorul si arboreal se presupune a fi fixe. Cuplul motorului T,se afla in relatie cu curentul din armatura,I,prin intermediul unui

factor constant Kt.Tensiunea electromotoare ,e, se afla in legatura cu viteza de rotatie ptin intermediul ecuatiilor:

In unitatile sistemului international,armature Kt (constanta armaturii) este egala cu Ke (constanta motorului).Avand in vedere schema alectrica de mai sus se pot scrie urmatoarele ecuatii bazate pe legea lui Newton combinata cu legea lui Kirchhof.

2.FUNCTIA DE TRANSFER Utilizand transformatele Laplace ecuatiile de modelare de mai sus pot fi exprimate in functie de s:

Eliminand I(s) putem obtine functia de transfer in bucla inchisa ,unde viteza de rotatie este iesirea si tensiunea este intrarea.

3.CERINTE DE PROIECTARE Pentru inceput ,motorul se poate roti doar cu 0.1 rad/sec cu o tensiune de intrare de 1 Volt. Intrucat noi dorim ca motorul sa se roteasca la viteza dorita trebuie sa respectam o cerinta de baza este ca eroarea stationara in starea de echilibru a motorului sa fie mai mica de 1%.Cealalta performanta ceruta este aceea ca mororul sa accelereze pana la o viteza stationara in cel mai scurt timp dup ace este pornit.In acest caz,se doreste un timp de stabilizare de 2 secunde .Deoarece o viteza mai mare ca referinta poate avaria echipamentul, se doreste o supracrestere mai mica de 5%. Daca se presupune ca referinta este o intrare de tip treapta atunci iesirea ,adica viteza de rotatie trebuie sa aiba :Timpul de stabilizare mai mic de 2 secundeSupreacresterea mai mica de 5%Eroarea stationara mai mica de 1%

4.REPREZENTAREA IN MATLAB A FUNCTIEI DW TRANSFER IN BUCLA DESCHISAPutem 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% Momentul de inertie al rotoruluib=0.1;%amortizarea frecarii a motoruluiK=0.01;%Coeficientul de cuplare electromagneticaR=1;%rezistenta electricaL=0.5;%Inductanta electricanum=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 grafic 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.

5.PROIECTAREA UNUI REGULATOR PID

Schema bloc a sistemului va arata astfel:

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);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')

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.

6.CREAREA INTERFETEI GRAFICE PENTRU REGLAREA TURATIEI MOTORULUI DE CC

Pasul 1. Descchidem interfata GUIDE si adaugam butoanele si graficele necesare pentru realizarea temei propuse

Pasul 2. In spatele fiecarui buton adaugam codul necesar si functiile aratate mai sus.

% --- Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global num H;global den;J=0.01% Momentul de inertie al rotoruluib=0.1;%amortizarea frecarii a motoruluiK=0.01;%Coeficientul de cuplare electromagneticaR=1;%rezistenta electricaL=0.5;%Inductanta electricanum=K;%den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)]; H = tf(num,den);I = evalc('H');set(handles.text1,'String',I);

function pushbutton2_Callback(hObject, eventdata, handles)% hObject handle to pushbutton2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global num den numac denac J;Kp=100;numa=Kp*num;dena=den;[numac,denac]=cloop(numa,dena);J = tf(numac,denac);O = evalc('J');set(handles.text1,'String',O);

function pushbutton3_Callback(hObject, eventdata, handles)% hObject handle to pushbutton3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global num den numac denac;Kp = str2num(get(handles.edit1,'String'));Ki = str2num(get(handles.edit2,'String'));Kd = str2num(get(handles.edit3,'String'));numc=[Kd, Kp, Ki];denc=[1 0];numa=conv(num,numc);dena=conv(den,denc);[numac,denac]=cloop(numa,dena);

function pushbutton5_Callback(hObject, eventdata, handles)% hObject handle to pushbutton5 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global num1 den1;J=0.01% Momentul de inertie al rotoruluib=0.1;%amortizarea frecarii a motoruluiK=0.01;%Coeficientul de cuplare electromagneticaR=1;%rezistenta electricaL=0.5;%Inductanta electricanum1=K;%den1=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)]; axes(handles.axes1);step(num1,den1,0:0.1:3)title('Raspunsul la semnal treapta al sistemului deschis')

function pushbutton6_Callback(hObject, eventdata, handles)% hObject handle to pushbutton6 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global num1 den1;Kp=100;numa=Kp*num1;dena=den1;[numac,denac]=cloop(numa,dena);t=0;0.01;5;axes(handles.axes1);step(numac,denac);title('Raspunsul sistemului cu control proportional')

function pushbutton7_Callback(hObject, eventdata, handles)% hObject handle to pushbutton7 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global num den numac denac;axes(handles.axes1);step(numac,denac)title('Control PID cu Ki si Kd '

REGLAREA TURATIEI MOTORULUI DE CURENT CONTINUU CU AJUTORUL CONTROLERULUI FUZZY

Pentru inceput am tasat in linia de comanda a Matlab-ului comanda fuzzy. Ulterior se va deschide o fereastra numita FIS Editor.

Adaugam din meniul EDIT doua variabile de intrare si una de iesire pe care le-am denumit Eroare , Schimbare si Control.

Pentru fiecare dintre functiile de intrare am setat parametrii in intervalaul [-1 1] iar pentru functiile de iesire in intervalaul [ -30 30]. Fiecare variabile de intrare si de iesire au urmatoarele functii de apatrenenta :-Eroare : turatie foarte mica,turatie mica, turatie constanta , turatie mare si turatie foarte mare-Alegem 2 functii tramf si 3 triunghiulare

- Schimabare : eroare mare negativa si eroare mare pozitiva-Alegem 2 functii triunghiulare

+- Control : Scadere mare, scadere mica ,constanta ,crestere mica si crestere mare mare-Alegem 5 functii triunghiulare

Urmatorul pas este definirea regulilor. Am definit urmatoarele reguli:

Pentru a vizualiaza graficul click im meniul View -> Surface

Pentru a putea fi folosit in simulink trebuie exportat in workspace

Pentru a vedea daca functioneaza introducem acesta metoda intr-un colntroler fuzzy cu ajutorul simulink.

Si rezultatul este :