FACULTATEA DE AUTOMATICA SI CALCULATOARE
Raspunsul sistemului in bucla deschisa
Introducere
Pendulul invers este o problema clasica de control. Procesul este neliniar si instabil, cu un singur semnal de intrare si mai multe semnale de iesire. Scopul este de a balansa pendulul vertical pe un carucior cu motor.
Figura alaturata reprezinta un pendul invers. Scopul: miscarea caruciorului pe axa x pana la o pozitie dorita fara ca pendulul sa cada. Pozitia caruciorului, x, si unghiul pendulului cu verticala, , sunt masurate si furnizate unui sistem de control. Forta disturbatoare F poate fi aplicata caruciorului.
Preliminarii
<TBODY>M |
Masa caruciorului |
0.5 kg |
m |
Masa pendulului |
0.5 kg |
b |
Frecarea caruciorului |
0.1 N/m/sec |
l |
Lungimea pana la centrul de greutate al pendulului |
0.3 m |
I |
Inertia pendulului |
0.006 kg*m^2 |
F |
Forta aplicata caruciorului |
|
x |
Coordinata pozitiei caruciorului |
|
theta () |
Unghiul facut de pendul cu verticala |
|
Folosind reglarea cu PID, alocarea de poli sau raspunsul in frecventa se poate controla numai pozitia pendulului. (sistem siso). Se presupune ca sistemul porneste in stare de echilibru, primeste un impuls de 1 N. Pendulul ar trebui sa se revina la pozita verticala in maxim 5 secunde si sa nu oscileze fata de verticala cu mai mult de 0,005 radiani.
Criteriile de performanta ale sistemului:
Revenire in pozitia verticala in mai putin de 5 secunde.
Unghiul pendulului cu verticala sa nu fie mai mare de 0.05 radiani.
Reprezentarea sistemului in timp continuu este recomandata acestei probleme (sistem cu mai multe iesiri). La aplicarea unui semnal treapta caruciorul ar trebui sa ajunga in pozitia dorita in mai putin de 5 secunde, sa aiba un timp de crestere mai mic de 0,5 secunde si pendululsa aiba o limita de oscilare de 20o (0,35 radiani) si sa se stabilizeze tot sub 5 secunde.
Criteriile de performanta ale sistemului folosind metoda variabilelor de stare:
Timpul de stabilizare pentru x si mai mic de 5 secunde.
Timpul de crestere pentru x mai mic de 0.5 secunde.
Oscilarea maxima a pendului mai mica de 20o (0,35 radiani).
Ecuatiile sistemului
Insumand fortele ce actioneaza asupra caruciorului se obtine ecuatia de miscare:
Insumand fortele ce actioneaza asupra pendulului se poate obtine o ecuatie pentru N:
Prin inlocuirea acestei ecuatii in prima se obtine prima ecuatie de miscare a sistemului:
(1)
A doua ecuatie de miscare a sistemului se obtine insumand fortele perpendiculare pe pendul:
Rezulta:
A doua ecuatie de miscare a sistemului:
(2)
Aceste ecuatii trebuie liniarizate cu . Presupunand ca (unde reprezinta un unghi mic fata de verticala), se obtine cos() = -1, sin() = - si . Dupa liniarizare, cele doua ecuatii de miscare devin:
(unde u reprezinta comanda)
Functia de transfer
Obtinerea pe cale analitica a functiei de transfer corespunzatoare ecuatiilor sistemului liniarizate ale sistemului se face aplicand transformata Laplace ecuatiilor:
Conditiile initiale se presupune ca sunt egale cu 0.
Se rezolva ecuatia in X(s),
se inlocuieste in a doua ecuatie:
Rezulta:
unde,
Functia de transfer are si pol si zero in origine.Functia de transfer poate deveni:
Spatiul starilor
Ecuatiile sistemului liniarizat pot fi reprezentate in spatiul starilor sub urmatoarea forma:
Matricea C este 2 pe 4 deoarece si pozitia caruciorului si pozitia pendulului fac parte din iesirea sistemului. Prima linie corespunde pozitiei caruciorului, iar cea de-a doua pozitiei pendulului.
Raspunsul sistemului in bucla deschisa
Functia de transfer a sistemului in bucla deschisa este obtinuta in Matlab:
M = .5; m = 0.2; b = 0.1; i = 0.006; g = 9.8; l = 0.3; q = (M+m)*(i+m*l^2)-(m*l)^2; num = [m*l/q 0] den = [1 b*(i+m*l^2)/q -(M+m)*m*g*l/q -b*m*g*l/q] t=0:0.01:5; impulse(num,den,t)
:
num =
4.5455 0
den =
1.0000 0.1818 -31.1818 -4.4545
Dupa cum se vede si in figura alaturata, sistemul nu este stabil in bucla deschisa.
In Matlab se obtin matricile A, B, C, si D si raspunsul sistemului la aplicarea unui semnal treapta de 0.2 m caruciorului.
Matricile arata astfel:
A =
0 1.0000 0 0
0 -0.1818 2.6727 0
0 0 0 1.0000
0 -0.4545 31.1818 0
B = 0
1.8182
0
4.5455
C = 1 0 0 0
0 0 1 0
D = 0
0
Linia albastra (a doua) reprezinta pozitia caruciorului, iar cea verde (prima) reprezinta unghiul pendulului.
Construirea controller-ului
Ecuatiile sistemului:
Sistemul se poate schita ca mai jos:
R - referinta
y - raspunsul sistemului (contine si pozitia caruciorului si unghiul pendulului)
K - controller-ul
Polii in bucla deschisa
Se doreste construirea unui controller astfel incat la aplicarea unui semnal treapta sistemului, pendulul sa ramana in pozitia verticala, iar caruciorul sa se mute la noua pozitie comandata.
Primul pas in construirea unui astfel de controller este determinarea polilor in bucla deschisa ai sistemului.
adaugat la programul Matlab din Functia de transfer calculeaza polii sistemului in bucla deschisa:
p =
0
-0.1428
5.5651
-5.6041
Se observa ca exista un pol in semiplanul pozitiv. Deci sistemul este instabil in bucla deschisa.
Urmatorul pas este presupunerea ca se pot masura toate cele 4 stari si gasirea vectorului K ce determina legea de control. Folosirea "lqr" permite controlul ambelor iesiri. Cel mai simplu caz este cel in care R = 1 si Q = C ' * C.
Introdus in linia de comanda in Matlab calculeaza matricea Q:
ans =
1 0 0 0
0 0 0 0
0 0 1 0
0 0 0 0
Elementul din pozitia (1,1) este folosit pentru masurarea pozitiei caruciorului, iar elementul (3,3) pentru masurarea unghiului pendulului.
Se obtin vectorul K si raspunsul sistemului la treapta cu controller LQR:
K =
-1.0000 -1.6567 18.6854 3.4594
Curba verde (cea de sus) reprezinta unghiul pendulului (in radiani), iar cea albastra reprezinta pozitia caruciorului (in metri). Raspunsul nu este satisfacator. Timpul de stabilizare al caruciorului si al pendulului trebuie micsorat. Timpul de crestere al caruciorului trebuie sa scada.
Schimband valorile x si y din matricea Q se pot aduce imbunatatiri. Cresterea lui x scade timpii de stabilizare si de crestere si micsoreaza unghiul sub care se misca pendulul.
Se obtin:
K =
-70.7107 -37.8345 105.5298 20.9238
Raspunsul sistemului are un timp de stabilizare sub 2 secunde.
Trebuie gasit un factor de amplificare care elimina eroarea steady-state la o referinta treapta
Nbar poate fi calculat folosind o functia:
Se inlocuieste linia :
cu cea din stanga. Matricea C devine Cn, deoarece functia rscale nu functioneaza pentru iesiri multiple. Cu toate acestea, valoarea Nbar cautata este corecta.
Nbar =
-70.7107
Construirea observatorului
Este nevoie de un estimator pentru acele stari care nu pot fi masurate.
Polii controller-ului:
p =
-8.4910 + 7.9283i
-8.4910 - 7.9283i
-4.7592 + 0.8309i
-4.7592 - 0.8309i
Se doreste construirea unui estimator ai carui poli sa fie de 4-10 ori mai rapizi decat cel mai lent pol, fie el -40.
P = [-40 -41 -42 -43]; L = place(A',C',P)'
Se inlocuieste linia "lsim" cu
L =
1.0e+03 *
0.0826 -0.0010
1.6992 -0.0402
-0.0014 0.0832
-0.0762 1.7604
Compensatorul este obtinut din combinatia legii de comanda cu estimatorul:
Raspunsul sistemului cu estimator de stare: