„SzabtechLabZH” változatai közötti eltérés
pre tag, br tagek eltávolítása, felesleges |
feladatsor feltöltése (köszi, Papp Krisztián, hogy elküldted), belinkelése |
||
(42 közbenső módosítás ugyanattól a felhasználótól nincs mutatva) | |||
1. sor: | 1. sor: | ||
{{GlobalTemplate|Infoalap|SzabtechLabZH}} | {{GlobalTemplate|Infoalap|SzabtechLabZH}} | ||
{{Vissza|Szabályozástechnika_(info)}} | |||
== Gyakorló feladatok a laborZH-hoz, 2007. ősz == | |||
[ | |||
EREDETI FELADATSOR: [[Média:Szabtech_LaborZH_2007_osz_gyakorlo_feladatok_zh3.pdf|LaborZH 2007. ősz, gyakorló feladatok]] (Megoldása: [[Média:Szabtech_LaborZH_2007_osz_gyakorlo_feladatok_zh3_megoldasok.doc|LaborZH 2007. ősz, gyakorló feladatok - MEGOLDÁS]]) | |||
Itt van pár feladat, amihez tök jó volna ha összehoznánk a megoldásokat, mert pl. az 1. zh-hoz kiadott pdf-ből is válogattak a zh-ba, lehet hogy itt is van erre esély, másrészt meg gyakorolni mindenképp jó. Köszi :) | Itt van pár feladat, amihez tök jó volna ha összehoznánk a megoldásokat, mert pl. az 1. zh-hoz kiadott pdf-ből is válogattak a zh-ba, lehet hogy itt is van erre esély, másrészt meg gyakorolni mindenképp jó. Köszi :) | ||
12. sor: | 13. sor: | ||
Felelősséget nem vállalok semmiért, nem értek hozzá, lehet hogy komplett hülyeség, aki nagyon vágja, az lecserélheti akár a komplett kódot is.... | Felelősséget nem vállalok semmiért, nem értek hozzá, lehet hogy komplett hülyeség, aki nagyon vágja, az lecserélheti akár a komplett kódot is.... | ||
===1. feladat=== | |||
==== Tervezze meg a C(s) soros szabályozót úgy, hogy a fázistartalék 60° legyen! ==== | |||
'''Matlab:''' (copy-paste Matlabba) | '''Matlab:''' (copy-paste Matlabba, magyarázat [http://info.site.hu/document.php?cmd=download_proc&tmp_page=&doc_id=8387 ez] /7. fejezet alapján) | ||
s=zpk('s'); %szokásos | |||
s=zpk('s'); | P=1/((10+s)*(5+s)*(2+s)); %átviteli függvény megadása | ||
P=1/((10+s)*(5+s)*(2+s)); | kc=1; %kezdeti érték | ||
kc=1; | C=kc*(1+0.5*s)/s; %PI szabályzó átviteli függvénye alapján, nézz utána | ||
C=kc*(1+0.5*s)/s; | L=C*P; | ||
L=C*P; | margin(L) %felnyitott kör Bode-diagrammja, fázis- és erősítési tartalék, látszik, hogy van még neki:) | ||
margin(L) | figure(2) | ||
figure(2) | [mag, phase, w]=bode(L); | ||
[mag, phase, w]=bode(L); | gm=margin(mag,phase-60,w);%őő izé, doksi:) | ||
gm=margin(mag,phase-60,w); | kc=gm; | ||
kc=gm; | C=kc*(1+0.5*s)/s; %behelyettesítjük a megkapott erősítési tényezőt | ||
C=kc*(1+0.5*s)/s; | L=kc*L; | ||
L=kc*L; | margin(L) %láss csodát, fázistartalék=60.1° | ||
margin(L) | [gm,pm,wg,wc]=margin(L); | ||
[gm,pm,wg,wc]=margin(L); | margin(L) | ||
margin(L) | |||
http://i.imgur.com/ciWCWbW.png | |||
http://i.imgur.com/KAdgP0h.png | |||
==== a/ Adja meg a megtervezett PI szabályzó átviteli függvényét: ==== | |||
''' | '''Matlab:''' | ||
C | |||
(vagyis beírod a fentiek után, hogy "C", és pont azt írja ki) | |||
Zero/pole/gain: | |||
96.9722 (s+2) | |||
------------- | |||
s | |||
==== b/ Adja meg a zárt rendszer átviteli függvényének domináns póluspárját ==== | |||
'''Matlab:''' | '''Matlab:''' | ||
T=feedback(L,1) %a zárt rendszer átviteli függvénye | |||
T=feedback(L,1) | pole(T) %dom. pp.= az imag. tengelyhez legközelebb eső komplex konjugált póluspár, a parancs egyértelműen kiadja | ||
pole(T) | |||
Zero/pole/gain: | |||
96.9722 (s+2) | |||
-------------------------------------- | |||
(s+11.35) (s+2) (s^2 + 3.653s + 8.546) | |||
ans = | |||
-11.3466 | |||
-1.8267 + 2.2824i | |||
-1.8267 - 2.2824i | |||
-2.0000 | |||
==== c/ Adja meg a zárt rendszer átmeneti függvényének százalékos túllendülését ==== | |||
'''Matlab:''' | '''Matlab:''' | ||
t=0:0.05:10; | |||
t=0:0.05:10; | y=step(T,t) %átmeneti függvény kiszámítása | ||
y=step(T,t) | ys=dcgain(T) %állandósult érték kiszámítása | ||
ys=dcgain(T) | ym=max(y) %maximális érték | ||
ym=max(y) | yt=((ym-ys)/ys)*100 %túllendülés százalékban | ||
yt=((ym-ys)/ys)*100 | |||
Eredmény: | |||
yt = | |||
7.7553 | |||
==== d/ Egység-sebességugrás alapjel esetén adja meg a zárt rendszer állandósult állapotbeli hibáját ==== | |||
'''Matlab:''' | '''Matlab:''' | ||
Egység- | Egység-'''sebességugrás''' alapjel esetén mivel ebben egy integrátor van, a zárt rendszer állandósult állapotbeli hibája <sup>1</sup>/<sub>K</sub> lesz. | ||
Tankönyv 140. old. | Tankönyv 140. old. | ||
Az | Az egységugrás-jelet valóban 0 statikus hibával követi, és az meghatározható az <code>es=1-ys</code> matlab kóddal, de nem az volt a feladat. | ||
==== e/ Egység-sebességugrás alapjelet feltételezve írja fel a zárt rendszer kimenőjelének analitikus kifejezését állandósult állapotban ==== | |||
hint: | hint: | ||
99. sor: | 102. sor: | ||
tehát konkrét adatokkal: | tehát konkrét adatokkal: | ||
y(t->inf) = lim(s-> | y(t->inf) = lim(s->0) s*T(s)/s^2 | ||
===2. feladat=== | |||
==== a/ P szabályozás alkalmazása esetén ( C ( s) = K ) határozza meg K azon értékeit, melyekre a zárt kör stabilis. ==== | |||
Strukturálisan stabilis. K bármely értékére stabilis, mivel a fázistolás mindig kisebb mint −180°. | Strukturálisan stabilis. K bármely értékére stabilis, mivel a fázistolás mindig kisebb mint −180°. | ||
==== b/ ==== | |||
Integrátor már van a rendszerben, de a gyorsasági feltételt ki kell elégíteni, ezért PD szabályozót kell tervezni. | Integrátor már van a rendszerben, de a gyorsasági feltételt ki kell elégíteni, ezért PD szabályozót kell tervezni. | ||
113. sor: | 116. sor: | ||
'''Matlab:''' | '''Matlab:''' | ||
kc=1; | kc=1; | ||
C=kc*((1+2*s)/(1+(2/3)*s)); | C=kc*((1+2*s)/(1+(2/3)*s)); | ||
L=C*P; | L=C*P; | ||
w=logspace(-1,1,500); | w=logspace(-1,1,500); | ||
[mag,phase]=bode(L,w); | [mag,phase]=bode(L,w); | ||
kc=margin(mag,phase-60,w); | kc=margin(mag,phase-60,w); %60 fokos fázistartalék | ||
C=C*kc | C=C*kc | ||
L=C*P; | L=C*P; | ||
L=minreal(L); | L=minreal(L); | ||
figure(1),margin(L); | |||
Eredmény: | |||
Zero/pole/gain: | |||
379.5687 (s+0.5) | |||
---------------- | |||
(s+1.5) | |||
http://i.imgur.com/yUl1CLv.png | |||
==== c/ ==== | |||
[gt,pm,wg,wc] = margin(L); | |||
pm %fázistartalék | |||
t1=(3/wc) %a beállási (szabályozási) idő e két érték között lesz | |||
t2=(10/wc) | |||
T=L/(1+L); | |||
figure(2),step(T),grid | |||
y=step(T); %kimeneti jel | |||
ymax = max(y) %kimeneti jel maximuma | |||
ys=dcgain(T) %kimeneti jel állandósult értéke | |||
yt=(ymax-ys)/ys*100 %túllendülés százalékban | |||
es=1-ys %egytől való eltérés | |||
U=C/(1+L); | |||
U=minreal(U); | |||
figure(3),step(U),grid | |||
u=step(U); | |||
umax = max(u) %vezérlő jel maximuma | |||
Eredmény: | |||
http://i.imgur.com/cPppq7h.png | |||
http://i.imgur.com/jVCaHqe.png | |||
---- | ---- | ||
147. sor: | 164. sor: | ||
'''Matlab: [http://info.site.hu/document.php?cmd=download_proc&tmp_page=&doc_id=17375 ez a doksi] 49. oldal 1. példa 1:1-ben ugyanez''' | '''Matlab: [http://info.site.hu/document.php?cmd=download_proc&tmp_page=&doc_id=17375 ez a doksi] 49. oldal 1. példa 1:1-ben ugyanez''' | ||
===3. feladat=== | |||
==== a/ P szabályozás alkalmazása esetén ( C ( s) = K ) határozza meg K azon értékeit, melyekre a zárt kör stabilis. ==== | |||
Strukturálisan stabilis. K bármely értékére stabilis, mivel a fázistolás mindig kisebb mint −180°. | Strukturálisan stabilis. K bármely értékére stabilis, mivel a fázistolás mindig kisebb mint −180°. | ||
==== b/ ==== | |||
'''Matlab:''' | '''Matlab:''' | ||
kc=1; | kc=1; | ||
C=kc*((1+4*s)/(1+(4/3)*s)); | C=kc*((1+4*s)/(1+(4/3)*s)); | ||
L=C*P; | L=C*P; | ||
w=logspace(-1,1,500); | w=logspace(-1,1,500); | ||
[mag,phase]=bode(L,w); | [mag,phase]=bode(L,w); | ||
kc=margin(mag,phase-60,w); | kc=margin(mag,phase-60,w); %60 fokos fázistartalék | ||
C=C*kc | C=C*kc | ||
L=C*P; | L=C*P; | ||
L=minreal(L); | L=minreal(L); | ||
figure(1),margin(L); | figure(1),margin(L); | ||
[gt,pm,wg,wc] = margin(L); | [gt,pm,wg,wc] = margin(L); | ||
pm | pm %fázistartalék értéke | ||
t1=(3/wc) | t1=(3/wc) %beállási (szabályozási) idő e két érték között lesz | ||
t2=(10/wc) | t2=(10/wc) | ||
T=L/(1+L); | T=L/(1+L); | ||
figure(2),step(T),grid | figure(2),step(T),grid | ||
Zero/pole/gain: | |||
330.4437 (s+0.25) | |||
----------------- | |||
(s+0.75) | |||
pm = | |||
60.0003 | |||
t1 = | |||
0.7201 | |||
t2 = | |||
2.4004 | |||
http://i.imgur.com/nXeo67u.png | |||
http://i.imgur.com/x42BKRE.png | |||
==== c/ ==== | |||
'''Matlab:''' | '''Matlab:''' | ||
y=step(T); | y=step(T); %kimeneti jel | ||
ymax = max(y) | ymax = max(y) %kimeneti jel maximuma | ||
ys=dcgain(T) | ys=dcgain(T) %kimeneti jel állandósult értéke | ||
yt=(ymax-ys)/ys*100 | yt=(ymax-ys)/ys*100 %túllendülés százalékban | ||
es=1-ys | es=1-ys %egytől való eltérés | ||
U=C/(1+L); | U=C/(1+L); | ||
U=minreal(U); | U=minreal(U); | ||
figure(3),step(U),grid | figure(3),step(U),grid | ||
u=step(U); | u=step(U); | ||
umax = max(u) | umax = max(u) %vezérlő jel maximuma | ||
Eredménye: | |||
====4. feladat==== | ymax = | ||
0.9034 | |||
ys = | |||
0.5241 | |||
yt = | |||
72.3478 | |||
es = | |||
0.4759 | |||
umax = | |||
330.4437 | |||
http://i.imgur.com/3TBrSUl.png | |||
===4. feladat=== | |||
==== a/ Zérusrendű tartószerv esetén adja meg a folyamat G(z) impulzusátviteli függvényét zérus-pólus alakban. ==== | |||
Az impulzusátviteli függvény más néven: Diszkrét átviteli függvény. | Az impulzusátviteli függvény más néven: Diszkrét átviteli függvény. | ||
'''Matlab:''' | '''Matlab:''' | ||
s = zpk('s); | |||
P = 2 / ( (1+s)*(1+4*s)*(1+8*s) ); | s = zpk('s'); | ||
Ts = 0.5; | P = 2 / ( (1+s)*(1+4*s)*(1+8*s) ); | ||
sysd = c2d(P, Ts, 'zoh'); | Ts = 0.5; %ez a mintavételezési idő, adott a feladat szövegében | ||
sysd = c2d(P, Ts, 'zoh'); %ez alakítja át diszkrétre. A 'zoh' adja meg, hogy zérusrendű a tartószerv. | |||
-- [[NovakAron]] - 2007.11.21. | -- [[NovakAron]] - 2007.11.21. | ||
==== b/ ==== | |||
'''Matlab:''' | '''Matlab:''' | ||
s=zpk('s'); | s=zpk('s'); | ||
z=zpk('z',0.5); | z=zpk('z',0.5); | ||
P=2/((1+s)*(1+4*s)*(1+8*s)) | P=2/((1+s)*(1+4*s)*(1+8*s)) % átviteli függvény | ||
ts=0.5; | ts=0.5; % mintaveteli ido | ||
Pz=c2d(P,ts); | Pz=c2d(P,ts); % diszkrét átviteli függvény | ||
Pz | Pz % zérus-pólus alak | ||
kc=1; | kc=1; %egység körerősítés először | ||
[zd,pd,kd] = zpkdata(Pz,'v'); | [zd,pd,kd] = zpkdata(Pz,'v');%diszkrét folyamat zérusai pólusai | ||
Cz=kc*(((z-pd(1))*(z-pd(2)))/((z-1)*z)); | Cz=kc*(((z-pd(1))*(z-pd(2)))/((z-1)*z)); %diszkrét szab. átv. fv. | ||
Lz = Cz*Pz | Lz = Cz*Pz | ||
Lz=minreal(Lz,0.001); | Lz=minreal(Lz,0.001); | ||
w=logspace(-1,1,500); | w=logspace(-1,1,500); %saját logaritmikus skála beállítása | ||
[mag,phase]=bode(Lz,w); | [mag,phase]=bode(Lz,w); %diszkrétből számolt bode diagram | ||
[kc,pm,wg,wc]=margin(mag,phase-60,w); | [kc,pm,wg,wc]=margin(mag,phase-60,w); %60 fokos fázistöbblet | ||
Cz=Cz*kc; | Cz=Cz*kc; | ||
Lz=Cz*Pz; | Lz=Cz*Pz; %a nyitott kör diszkrét átv. fv. | ||
Lz=minreal(Lz,0.001); | Lz=minreal(Lz,0.001); | ||
Tz= Lz/(1+Lz); | Tz= Lz/(1+Lz); %diszkrét zárt rendszer átv. fv. | ||
Ts=d2c(Tz,'tustin') | Ts=d2c(Tz,'tustin') %folytonos zárt rendszer átv. fv. | ||
figure(2),step(Ts),grid | figure(2),step(Ts),grid %zart rendszer kimeneti jele | ||
Eredmény: | |||
Zero/pole/gain: | |||
0.0625 | |||
------------------------ | |||
(s+1) (s+0.25) (s+0.125) | |||
Zero/pole/gain: | |||
0.0011005 (z+3.157) (z+0.2247) | |||
-------------------------------- | |||
(z-0.9394) (z-0.8825) (z-0.6065) | |||
Sampling time (seconds): 0.5 | |||
Zero/pole/gain: | |||
0.0011005 (z-0.9394) (z-0.8825) (z+3.157) (z+0.2247) | |||
---------------------------------------------------- | |||
z (z-1) (z-0.9394) (z-0.8825) (z-0.6065) | |||
Sampling time (seconds): 0.5 | |||
Zero/pole/gain: | |||
0.0076717 s (s-7.709) (s-4) (s+4) (s+6.318) (s+0.9797) | |||
------------------------------------------------------ | |||
s (s+4) (s+4.126) (s+0.9797) (s^2 + 0.7745s + 0.3623) | |||
====5. feladat | http://i.imgur.com/tq7wtWn.png | ||
==== c/ ==== | |||
y=step(Ts); | |||
ymax = max(y) %a kimenet maximális értéke | |||
ys=dcgain(Ts) %állandósult érték | |||
yt=(ymax-ys)/ys*100 %túllövés értéke százalékban | |||
es=1-ys %az előírt 1-tól való eltérés | |||
Uz=Cz/(1+Lz); %zárt rendszer beavatkozó jele | |||
Uz=minreal(Uz,0.001); %egyszerűsítések elvégzése | |||
figure(3),step(Uz),grid %beavatkozó jel kirajzolása | |||
u=step(Uz); | |||
umax = max(u) %maximális érték kiírása | |||
Eredmény: | |||
ymax = | |||
1.0000 | |||
ys = | |||
1 | |||
yt = | |||
1.6233e-004 | |||
es = | |||
0 | |||
umax = | |||
13.4985 | |||
http://i.imgur.com/2BIAmlr.png | |||
===5. feladat=== | |||
'''[http://info.site.hu/document.php?cmd=download_proc&tmp_page=&doc_id=17375 ez a doksi] 43. oldal 2. példa majdnem 1:1-ben ugyanez''' | '''[http://info.site.hu/document.php?cmd=download_proc&tmp_page=&doc_id=17375 ez a doksi] 43. oldal 2. példa majdnem 1:1-ben ugyanez''' | ||
==== a/ ==== | |||
A zavarkompenzáló tagon áthaladó jelnek ki kell ejtenie a zavarás hatását. | A zavarkompenzáló tagon áthaladó jelnek ki kell ejtenie a zavarás hatását. | ||
Fs = -2*((1+2*s)/(1+10*s)) | Fs = -2*((1+2*s)/(1+10*s)) | ||
==== b/ c/ ==== | |||
'''Matlab:''' | '''Matlab:''' | ||
s=tf( | s=tf('s') | ||
P=1/((1+2*s)*(1+s)*(1+6*s)) | P=1/((1+2*s)*(1+s)*(1+6*s)) | ||
P=zpk(P) | P=zpk(P) | ||
C=(1+6*s)/s | C=(1+6*s)/s | ||
L=C*P | L=C*P | ||
L=minreal(L) | L=minreal(L) | ||
[mag,phase,w]=bode(L); | [mag,phase,w]=bode(L); | ||
k=margin(mag,phase-60,w) | k=margin(mag,phase-60,w) | ||
C=k*C | C=k*C | ||
margin(C*P) | margin(C*P) | ||
T=C*P/(1+C*P), T=minreal(T) | T=C*P/(1+C*P), T=minreal(T) | ||
t=0:0.05:40; | t=0:0.05:40; | ||
y=step(T,t); | y=step(T,t); | ||
plot(t,y),grid | plot(t,y),grid | ||
ym=max(y) | ym=max(y) | ||
http://i.imgur.com/P0MFbu8.png | |||
===6. feladat=== | |||
'''[http://info.site.hu/document.php?cmd=download_proc&tmp_page=&doc_id=17375 ez a doksi] 43. oldal 1. példa majdnem 1:1-ben ugyanez''' | '''[http://info.site.hu/document.php?cmd=download_proc&tmp_page=&doc_id=17375 ez a doksi] 43. oldal 1. példa majdnem 1:1-ben ugyanez''' | ||
==== a/ Határozza meg a folyamat állapotmátrixait diagonális alakban: ==== | |||
'''Matlab:''' | '''Matlab:''' | ||
num=1; | num=1; | ||
den=[5 6 1] | den=[5 6 1] | ||
[a,b,c,d]=tf2ss(num,den); | [a,b,c,d]=tf2ss(num,den); | ||
[a,b,c,d]=canon(a,b,c,d,'modal') | [a,b,c,d]=canon(a,b,c,d,'modal') | ||
Eredmény: | |||
den = | |||
5 6 1 | |||
a = | |||
-1.0000 0 | |||
0 -0.2000 | |||
b = | |||
-0.6988 | |||
-0.3366 | |||
c = | |||
0.3578 -0.7428 | |||
d = | |||
0 | |||
==== b/ ? ==== | |||
==== c/ Rajzolja fel a rendszer kimenetének változását és az állapottrajektóriáját nulla bemenet és x0=[-1, 2 ] kezdeti feltétel esetén. (állapotrajektória: a x2 állapotváltozó az x1 függvényében) ==== | |||
'''Matlab:''' | '''Matlab:''' | ||
x0=[-1,2] | x0=[-1,2] | ||
[y,x,t]=initial(a,b,c,d,x0); | [y,x,t]=initial(a,b,c,d,x0); | ||
x1=x(:,1); | x1=x(:,1); | ||
x2=x(:,2); | x2=x(:,2); | ||
figure(1);plot(t,y,'k');grid | figure(1);plot(t,y,'k');grid | ||
figure(2);plot(x1,x2,'k');grid | figure(2);plot(x1,x2,'k');grid | ||
http://i.imgur.com/qC1JBEm.png | |||
http://i.imgur.com/wV8PxLC.png | |||
===7. feladat=== | |||
==== a/ ==== | |||
'''Matlab:''' | '''Matlab:''' | ||
num_=5; | num_=5; | ||
den_=poly([-10, -0.25]); | den_=poly([-10, -0.25]); | ||
[A,b,c,d]=tf2ss(num_,den_) | [A,b,c,d]=tf2ss(num_,den_) | ||
A = | |||
-10.2500 -2.5000 | |||
1.0000 0 | |||
b = | |||
1 | |||
0 | |||
c = | |||
0 5 | |||
d = | |||
0 | |||
==== b/ ==== | |||
'''Matlab:''' | '''Matlab:''' | ||
num=1 | num=1 | ||
den=[0.64 1.12 1] | den=[0.64 1.12 1] | ||
pk=roots(den) | pk=roots(den) | ||
numk=1; | numk=1; | ||
denk=poly(pk); | denk=poly(pk); | ||
H=tf(numk,denk) | H=tf(numk,denk) | ||
H=zpk(H) | H=zpk(H) | ||
g0=dcgain(H) | g0=dcgain(H) | ||
====8. feladat | %Egysegnyi erositest akarunk, ezert normaljuk | ||
Hn=H/g0 | |||
k=acker(A,b,pk) | |||
Tk=ss(A-b*k,b,c,d) | |||
Tk=zpk(Tk) | |||
Javítandó, hiba: | |||
Error using acker (line 38) | |||
Vector P must have SIZE(A) elements | |||
===8. feladat=== | |||
'''Ez a megoldás nem jó. Csak egy kósza próbálkozás volt.:)''' | '''Ez a megoldás nem jó. Csak egy kósza próbálkozás volt.:)''' | ||
''Aki tudja a jó megoldást, légyszi javítsa ki!'' | |||
'''-- [[HorvathGeza]] - 2007.11.25.''' | '''-- [[HorvathGeza]] - 2007.11.25.''' | ||
Ki kell szedni az eredeti átviteli függvényből az időállandókat, | Ki kell szedni az eredeti átviteli függvényből az időállandókat, <br /> | ||
és a gyakorlat könyvben található képlet alapján akkor ki lehet | és a gyakorlat könyvben található képlet alapján akkor ki lehet <br /> | ||
számolni a megfelelő értékeket. | számolni a megfelelő értékeket. <br /> | ||
e^(-Ts/Ti) | e^(-Ts/Ti) <br /> | ||
és | és <br /> | ||
e^(-Ts/Td) | e^(-Ts/Td) <br /> | ||
A kéttárolós tag időállandója 1, az egytárolósé pedig 10. | A kéttárolós tag időállandója 1, az egytárolósé pedig 10. | ||
De a | De a Matlab nekem sehogy sem engedi hogy z^-0.3 al beszorozzam, <br /> | ||
pedig így kéne beleszámolni a késleltetést, érdekes módon | pedig így kéne beleszámolni a késleltetést, érdekes módon <br /> | ||
z^-1 el engedi. | z^-1 el engedi. | ||
339. sor: | 510. sor: | ||
Tehát jelen esetben 0.3/0.1=3 => z^-3 | Tehát jelen esetben 0.3/0.1=3 => z^-3 | ||
==== a/ ==== | |||
'''Matlab:''' | '''Matlab:''' | ||
s=zpk('s'); | s=zpk('s'); | ||
Ts=0.1; | Ts=0.1; | ||
Thd=1; | Thd=1; %holtidő | ||
z=zpk('z',Ts); | z=zpk('z',Ts); | ||
P=0.5*(s+5)/((s+0.1)*(s*s+1.2*s+1)); | P=0.5*(s+5)/((s+0.1)*(s*s+1.2*s+1)); | ||
Gz=c2d(P,Ts,'zoh') | Gz=c2d(P,Ts,'zoh') | ||
Gz = Gz*z^-Thd; | Gz = Gz*z^-Thd; %a holtidő miatt | ||
[zd,pd,kd]=zpkdata(Gz,'v') | [zd,pd,kd]=zpkdata(Gz,'v') | ||
kc=1 | kc=1 | ||
Cz=kc*((z-exp(-Ts/10))*(z-exp(-Ts/1)))/((z-1)*z) | Cz=kc*((z-exp(-Ts/10))*(z-exp(-Ts/1)))/((z-1)*z) | ||
Lz=Cz*Gz | Lz=Cz*Gz | ||
[mag,phase,w]=bode(Lz); | [mag,phase,w]=bode(Lz); | ||
kc=margin(mag,phase-60,w) | kc=margin(mag,phase-60,w) | ||
Cz=kc*Cz | Cz=kc*Cz | ||
Lz=Cz*Gz; | Lz=Cz*Gz; | ||
Yz=feedback(Lz,1); | Yz=feedback(Lz,1); | ||
Uz=feedback(Cz,Gz); | Uz=feedback(Cz,Gz); | ||
==== b/ ==== | |||
'''Matlab:''' | '''Matlab:''' | ||
t=0:0.1:0.4; | t=0:0.1:0.4; | ||
figure(1),step(Yz,t) | figure(1),step(Yz,t) | ||
figure(2),step(Uz,t) | figure(2),step(Uz,t) | ||
==== c/ ==== | |||
'''Matlab:''' | '''Matlab:''' | ||
y_all=dcgain(Yz) | y_all=dcgain(Yz) | ||
u_all=dcgain(Uz) | u_all=dcgain(Uz) | ||
===9. feladat=== | |||
Adja meg a W1(s) átviteli függvénnyel megadott szakasz átmeneti | Adja meg a W1(s) átviteli függvénnyel megadott szakasz átmeneti | ||
függvényének maximális értékét és beállási idejét. | függvényének maximális értékét és beállási idejét. | ||
Maximális érték meghatározása: | Maximális érték meghatározása: | ||
[gm,pm,wg,wc]=margin(W) | '''Matlab:''' | ||
W = 2 / ( 1 + 0.4*s + s^2 ); | |||
y = step(W); | |||
max(y) | |||
[gm,pm,wg,wc]=margin(W) | |||
beallasi_ido_max=10/wc | |||
beallasi_ido_min=3/wc | |||
Eredmény: | |||
beallasi_ido_max= | beallasi_ido_max = | ||
beallasi_ido_min= | 5.8898 | ||
beallasi_ido_min = | |||
1.7669 | |||
===10. feladat=== | |||
'''Matlab:''' | '''Matlab:''' | ||
s=zpk('s'); | s=zpk('s'); | ||
W=1/(s*(s+3)*(s+6)); | W=1/(s*(s+3)*(s+6)); | ||
%Nincs labilis polus, mehet az egysz. Nyquist | |||
%A Nyquist diagram a valós tengelyt -0.00617-nél | |||
%metszi, ezt ~162-vel kell szorozni, hogy -1 legyen | |||
figure(1), nyquist(W) | figure(1), nyquist(W) | ||
K=162; | K=162; | ||
W=K*W; | W=K*W; | ||
figure(2), nyquist(W) | |||
http://i.imgur.com/2Auo86Q.png | |||
http://i.imgur.com/GJeBHh6.png | |||
===14. feladat (biztos elírták a pdfben, de ez jön:)=== | |||
'''Matlab:''' | '''Matlab:''' | ||
A=[-17 -80 -100; 1 0 0; 0 1 0] | A=[-17 -80 -100; 1 0 0; 0 1 0] | ||
b=[1;0;0] | b=[1;0;0] | ||
c=[0,0,1] | c=[0,0,1] | ||
d=0 | d=0 | ||
a_zart=s^3+60*s^2+1200*s+8000 | a_zart=s^3+60*s^2+1200*s+8000 | ||
%polusok: -20, -20, -20 | %polusok: -20, -20, -20 | ||
k=acker(A,b,[-20 -20 -20]) | k=acker(A,b,[-20 -20 -20]) | ||
Eredmény: | |||
A = | |||
-17 -80 -100 | |||
1 0 0 | |||
0 1 0 | |||
b = | |||
1 | |||
0 | |||
0 | |||
c = | |||
0 0 1 | |||
d = | |||
0 | |||
Zero/pole/gain: | |||
(s+20)^3 | |||
k = | |||
43 1120 7900 | |||
=== 11. feladat === | |||
'''Matlab:''' | |||
kc=1 | z=tf('z') | ||
Cz=kc | Gz=(0.0091*z+0.0082)/(z*z-1.7236*z+0.7408) | ||
Lz=Cz*Gz | |||
[zd,pd,kd]=zpkdata(Gz,'v') | |||
kc=1 | |||
Cz=kc | |||
Lz=Cz*Gz | |||
[mag,phase,w]=bode(Lz); | |||
kc=margin(mag,phase-60,w) | |||
Cz=kc*Cz | |||
Lz=Cz*Gz | |||
Lz=minreal(Lz) | |||
[gm,pm,wg,wc]=margin(Lz) | |||
margin(Lz) | |||
Eredmény: | |||
gm = | |||
8.7017 | |||
pm = | |||
59.9160 | |||
wg = | |||
0.7699 | |||
wc = | |||
0.2219 | |||
-- [[EszenyiViktor|Dög]] - 2007.11.14. | |||
http://i.imgur.com/bILXvPs.png | |||
[[Category:Infoalap]] | [[Category:Infoalap]] |
A lap jelenlegi, 2013. május 22., 02:24-kori változata
Ez az oldal a korábbi SCH wikiről lett áthozva.
Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor, kérlek, javíts rajta egy rövid szerkesztéssel!
Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót.
Gyakorló feladatok a laborZH-hoz, 2007. ősz
EREDETI FELADATSOR: LaborZH 2007. ősz, gyakorló feladatok (Megoldása: LaborZH 2007. ősz, gyakorló feladatok - MEGOLDÁS)
Itt van pár feladat, amihez tök jó volna ha összehoznánk a megoldásokat, mert pl. az 1. zh-hoz kiadott pdf-ből is válogattak a zh-ba, lehet hogy itt is van erre esély, másrészt meg gyakorolni mindenképp jó. Köszi :)
Remélem senkinek nem lesznek aggályai ezek csak gyakorlópéldák :P :)
Felelősséget nem vállalok semmiért, nem értek hozzá, lehet hogy komplett hülyeség, aki nagyon vágja, az lecserélheti akár a komplett kódot is....
1. feladat
Tervezze meg a C(s) soros szabályozót úgy, hogy a fázistartalék 60° legyen!
Matlab: (copy-paste Matlabba, magyarázat ez /7. fejezet alapján)
s=zpk('s'); %szokásos P=1/((10+s)*(5+s)*(2+s)); %átviteli függvény megadása kc=1; %kezdeti érték C=kc*(1+0.5*s)/s; %PI szabályzó átviteli függvénye alapján, nézz utána L=C*P; margin(L) %felnyitott kör Bode-diagrammja, fázis- és erősítési tartalék, látszik, hogy van még neki:) figure(2) [mag, phase, w]=bode(L); gm=margin(mag,phase-60,w);%őő izé, doksi:) kc=gm; C=kc*(1+0.5*s)/s; %behelyettesítjük a megkapott erősítési tényezőt L=kc*L; margin(L) %láss csodát, fázistartalék=60.1° [gm,pm,wg,wc]=margin(L); margin(L)
http://i.imgur.com/ciWCWbW.png http://i.imgur.com/KAdgP0h.png
a/ Adja meg a megtervezett PI szabályzó átviteli függvényét:
Matlab:
C
(vagyis beírod a fentiek után, hogy "C", és pont azt írja ki)
Zero/pole/gain: 96.9722 (s+2) ------------- s
b/ Adja meg a zárt rendszer átviteli függvényének domináns póluspárját
Matlab:
T=feedback(L,1) %a zárt rendszer átviteli függvénye pole(T) %dom. pp.= az imag. tengelyhez legközelebb eső komplex konjugált póluspár, a parancs egyértelműen kiadja
Zero/pole/gain: 96.9722 (s+2) -------------------------------------- (s+11.35) (s+2) (s^2 + 3.653s + 8.546) ans = -11.3466 -1.8267 + 2.2824i -1.8267 - 2.2824i -2.0000
c/ Adja meg a zárt rendszer átmeneti függvényének százalékos túllendülését
Matlab:
t=0:0.05:10; y=step(T,t) %átmeneti függvény kiszámítása ys=dcgain(T) %állandósult érték kiszámítása ym=max(y) %maximális érték yt=((ym-ys)/ys)*100 %túllendülés százalékban
Eredmény:
yt = 7.7553
d/ Egység-sebességugrás alapjel esetén adja meg a zárt rendszer állandósult állapotbeli hibáját
Matlab:
Egység-sebességugrás alapjel esetén mivel ebben egy integrátor van, a zárt rendszer állandósult állapotbeli hibája 1/K lesz. Tankönyv 140. old.
Az egységugrás-jelet valóban 0 statikus hibával követi, és az meghatározható az es=1-ys
matlab kóddal, de nem az volt a feladat.
e/ Egység-sebességugrás alapjelet feltételezve írja fel a zárt rendszer kimenőjelének analitikus kifejezését állandósult állapotban
hint: y(t)=t → Y(s)=1/s^2
végérték-tételből: y(t->inf)=lim(s->o) s*X(s) (ahol X(s) a jel, aminek meg akarod határozni a végértékét)
tehát konkrét adatokkal: y(t->inf) = lim(s->0) s*T(s)/s^2
2. feladat
a/ P szabályozás alkalmazása esetén ( C ( s) = K ) határozza meg K azon értékeit, melyekre a zárt kör stabilis.
Strukturálisan stabilis. K bármely értékére stabilis, mivel a fázistolás mindig kisebb mint −180°.
b/
Integrátor már van a rendszerben, de a gyorsasági feltételt ki kell elégíteni, ezért PD szabályozót kell tervezni. A pólusáthelyezési arány például 3, így T = Td/3 = 2/3.
Matlab:
kc=1; C=kc*((1+2*s)/(1+(2/3)*s)); L=C*P; w=logspace(-1,1,500); [mag,phase]=bode(L,w); kc=margin(mag,phase-60,w); %60 fokos fázistartalék C=C*kc L=C*P; L=minreal(L); figure(1),margin(L);
Eredmény:
Zero/pole/gain: 379.5687 (s+0.5) ---------------- (s+1.5)
http://i.imgur.com/yUl1CLv.png
c/
[gt,pm,wg,wc] = margin(L); pm %fázistartalék t1=(3/wc) %a beállási (szabályozási) idő e két érték között lesz t2=(10/wc) T=L/(1+L); figure(2),step(T),grid y=step(T); %kimeneti jel ymax = max(y) %kimeneti jel maximuma ys=dcgain(T) %kimeneti jel állandósult értéke yt=(ymax-ys)/ys*100 %túllendülés százalékban es=1-ys %egytől való eltérés U=C/(1+L); U=minreal(U); figure(3),step(U),grid u=step(U); umax = max(u) %vezérlő jel maximuma
Eredmény:
http://i.imgur.com/cPppq7h.png http://i.imgur.com/jVCaHqe.png
Matlab: ez a doksi 49. oldal 1. példa 1:1-ben ugyanez
3. feladat
a/ P szabályozás alkalmazása esetén ( C ( s) = K ) határozza meg K azon értékeit, melyekre a zárt kör stabilis.
Strukturálisan stabilis. K bármely értékére stabilis, mivel a fázistolás mindig kisebb mint −180°.
b/
Matlab:
kc=1; C=kc*((1+4*s)/(1+(4/3)*s)); L=C*P; w=logspace(-1,1,500); [mag,phase]=bode(L,w); kc=margin(mag,phase-60,w); %60 fokos fázistartalék C=C*kc L=C*P; L=minreal(L); figure(1),margin(L); [gt,pm,wg,wc] = margin(L); pm %fázistartalék értéke t1=(3/wc) %beállási (szabályozási) idő e két érték között lesz t2=(10/wc) T=L/(1+L); figure(2),step(T),grid
Zero/pole/gain: 330.4437 (s+0.25) ----------------- (s+0.75) pm = 60.0003 t1 = 0.7201 t2 = 2.4004
http://i.imgur.com/nXeo67u.png http://i.imgur.com/x42BKRE.png
c/
Matlab:
y=step(T); %kimeneti jel ymax = max(y) %kimeneti jel maximuma ys=dcgain(T) %kimeneti jel állandósult értéke yt=(ymax-ys)/ys*100 %túllendülés százalékban es=1-ys %egytől való eltérés U=C/(1+L); U=minreal(U); figure(3),step(U),grid u=step(U); umax = max(u) %vezérlő jel maximuma
Eredménye:
ymax = 0.9034 ys = 0.5241 yt = 72.3478 es = 0.4759 umax = 330.4437
http://i.imgur.com/3TBrSUl.png
4. feladat
a/ Zérusrendű tartószerv esetén adja meg a folyamat G(z) impulzusátviteli függvényét zérus-pólus alakban.
Az impulzusátviteli függvény más néven: Diszkrét átviteli függvény.
Matlab:
s = zpk('s'); P = 2 / ( (1+s)*(1+4*s)*(1+8*s) ); Ts = 0.5; %ez a mintavételezési idő, adott a feladat szövegében sysd = c2d(P, Ts, 'zoh'); %ez alakítja át diszkrétre. A 'zoh' adja meg, hogy zérusrendű a tartószerv.
-- NovakAron - 2007.11.21.
b/
Matlab:
s=zpk('s'); z=zpk('z',0.5); P=2/((1+s)*(1+4*s)*(1+8*s)) % átviteli függvény ts=0.5; % mintaveteli ido Pz=c2d(P,ts); % diszkrét átviteli függvény Pz % zérus-pólus alak kc=1; %egység körerősítés először [zd,pd,kd] = zpkdata(Pz,'v');%diszkrét folyamat zérusai pólusai Cz=kc*(((z-pd(1))*(z-pd(2)))/((z-1)*z)); %diszkrét szab. átv. fv. Lz = Cz*Pz Lz=minreal(Lz,0.001); w=logspace(-1,1,500); %saját logaritmikus skála beállítása [mag,phase]=bode(Lz,w); %diszkrétből számolt bode diagram [kc,pm,wg,wc]=margin(mag,phase-60,w); %60 fokos fázistöbblet Cz=Cz*kc; Lz=Cz*Pz; %a nyitott kör diszkrét átv. fv. Lz=minreal(Lz,0.001); Tz= Lz/(1+Lz); %diszkrét zárt rendszer átv. fv. Ts=d2c(Tz,'tustin') %folytonos zárt rendszer átv. fv. figure(2),step(Ts),grid %zart rendszer kimeneti jele
Eredmény:
Zero/pole/gain: 0.0625 ------------------------ (s+1) (s+0.25) (s+0.125) Zero/pole/gain: 0.0011005 (z+3.157) (z+0.2247) -------------------------------- (z-0.9394) (z-0.8825) (z-0.6065) Sampling time (seconds): 0.5 Zero/pole/gain: 0.0011005 (z-0.9394) (z-0.8825) (z+3.157) (z+0.2247) ---------------------------------------------------- z (z-1) (z-0.9394) (z-0.8825) (z-0.6065) Sampling time (seconds): 0.5 Zero/pole/gain: 0.0076717 s (s-7.709) (s-4) (s+4) (s+6.318) (s+0.9797) ------------------------------------------------------ s (s+4) (s+4.126) (s+0.9797) (s^2 + 0.7745s + 0.3623)
http://i.imgur.com/tq7wtWn.png
c/
y=step(Ts); ymax = max(y) %a kimenet maximális értéke ys=dcgain(Ts) %állandósult érték yt=(ymax-ys)/ys*100 %túllövés értéke százalékban es=1-ys %az előírt 1-tól való eltérés Uz=Cz/(1+Lz); %zárt rendszer beavatkozó jele Uz=minreal(Uz,0.001); %egyszerűsítések elvégzése figure(3),step(Uz),grid %beavatkozó jel kirajzolása u=step(Uz); umax = max(u) %maximális érték kiírása
Eredmény:
ymax = 1.0000 ys = 1 yt = 1.6233e-004 es = 0 umax = 13.4985
http://i.imgur.com/2BIAmlr.png
5. feladat
ez a doksi 43. oldal 2. példa majdnem 1:1-ben ugyanez
a/
A zavarkompenzáló tagon áthaladó jelnek ki kell ejtenie a zavarás hatását.
Fs = -2*((1+2*s)/(1+10*s))
b/ c/
Matlab:
s=tf('s') P=1/((1+2*s)*(1+s)*(1+6*s)) P=zpk(P) C=(1+6*s)/s L=C*P L=minreal(L) [mag,phase,w]=bode(L); k=margin(mag,phase-60,w) C=k*C margin(C*P) T=C*P/(1+C*P), T=minreal(T) t=0:0.05:40; y=step(T,t); plot(t,y),grid ym=max(y)
http://i.imgur.com/P0MFbu8.png
6. feladat
ez a doksi 43. oldal 1. példa majdnem 1:1-ben ugyanez
a/ Határozza meg a folyamat állapotmátrixait diagonális alakban:
Matlab:
num=1; den=[5 6 1] [a,b,c,d]=tf2ss(num,den); [a,b,c,d]=canon(a,b,c,d,'modal')
Eredmény:
den = 5 6 1 a = -1.0000 0 0 -0.2000 b = -0.6988 -0.3366 c = 0.3578 -0.7428 d = 0
b/ ?
c/ Rajzolja fel a rendszer kimenetének változását és az állapottrajektóriáját nulla bemenet és x0=[-1, 2 ] kezdeti feltétel esetén. (állapotrajektória: a x2 állapotváltozó az x1 függvényében)
Matlab:
x0=[-1,2] [y,x,t]=initial(a,b,c,d,x0); x1=x(:,1); x2=x(:,2); figure(1);plot(t,y,'k');grid figure(2);plot(x1,x2,'k');grid
http://i.imgur.com/qC1JBEm.png http://i.imgur.com/wV8PxLC.png
7. feladat
a/
Matlab:
num_=5; den_=poly([-10, -0.25]); [A,b,c,d]=tf2ss(num_,den_)
A = -10.2500 -2.5000 1.0000 0 b = 1 0 c = 0 5 d = 0
b/
Matlab:
num=1 den=[0.64 1.12 1] pk=roots(den) numk=1; denk=poly(pk); H=tf(numk,denk) H=zpk(H) g0=dcgain(H)
%Egysegnyi erositest akarunk, ezert normaljuk Hn=H/g0 k=acker(A,b,pk) Tk=ss(A-b*k,b,c,d) Tk=zpk(Tk)
Javítandó, hiba:
Error using acker (line 38) Vector P must have SIZE(A) elements
8. feladat
Ez a megoldás nem jó. Csak egy kósza próbálkozás volt.:) Aki tudja a jó megoldást, légyszi javítsa ki! -- HorvathGeza - 2007.11.25.
Ki kell szedni az eredeti átviteli függvényből az időállandókat,
és a gyakorlat könyvben található képlet alapján akkor ki lehet
számolni a megfelelő értékeket.
e^(-Ts/Ti)
és
e^(-Ts/Td)
A kéttárolós tag időállandója 1, az egytárolósé pedig 10.
De a Matlab nekem sehogy sem engedi hogy z^-0.3 al beszorozzam,
pedig így kéne beleszámolni a késleltetést, érdekes módon
z^-1 el engedi.
Nem -0.3 és nem is -1 a hatványkitevő, hanem z^-d, ahol d=egészrész[Td/Ts], Tehát jelen esetben 0.3/0.1=3 => z^-3
a/
Matlab:
s=zpk('s'); Ts=0.1; Thd=1; %holtidő z=zpk('z',Ts); P=0.5*(s+5)/((s+0.1)*(s*s+1.2*s+1));
Gz=c2d(P,Ts,'zoh')
Gz = Gz*z^-Thd; %a holtidő miatt
[zd,pd,kd]=zpkdata(Gz,'v')
kc=1 Cz=kc*((z-exp(-Ts/10))*(z-exp(-Ts/1)))/((z-1)*z) Lz=Cz*Gz [mag,phase,w]=bode(Lz); kc=margin(mag,phase-60,w)
Cz=kc*Cz Lz=Cz*Gz;
Yz=feedback(Lz,1); Uz=feedback(Cz,Gz);
b/
Matlab:
t=0:0.1:0.4;
figure(1),step(Yz,t) figure(2),step(Uz,t)
c/
Matlab:
y_all=dcgain(Yz) u_all=dcgain(Uz)
9. feladat
Adja meg a W1(s) átviteli függvénnyel megadott szakasz átmeneti függvényének maximális értékét és beállási idejét.
Maximális érték meghatározása:
Matlab:
W = 2 / ( 1 + 0.4*s + s^2 ); y = step(W); max(y)
[gm,pm,wg,wc]=margin(W)
beallasi_ido_max=10/wc beallasi_ido_min=3/wc
Eredmény:
beallasi_ido_max = 5.8898 beallasi_ido_min = 1.7669
10. feladat
Matlab:
s=zpk('s'); W=1/(s*(s+3)*(s+6)); %Nincs labilis polus, mehet az egysz. Nyquist %A Nyquist diagram a valós tengelyt -0.00617-nél %metszi, ezt ~162-vel kell szorozni, hogy -1 legyen figure(1), nyquist(W) K=162; W=K*W; figure(2), nyquist(W)
http://i.imgur.com/2Auo86Q.png http://i.imgur.com/GJeBHh6.png
14. feladat (biztos elírták a pdfben, de ez jön:)
Matlab:
A=[-17 -80 -100; 1 0 0; 0 1 0] b=[1;0;0] c=[0,0,1] d=0
a_zart=s^3+60*s^2+1200*s+8000 %polusok: -20, -20, -20
k=acker(A,b,[-20 -20 -20])
Eredmény:
A = -17 -80 -100 1 0 0 0 1 0 b = 1 0 0 c = 0 0 1 d = 0 Zero/pole/gain: (s+20)^3 k = 43 1120 7900
11. feladat
Matlab:
z=tf('z') Gz=(0.0091*z+0.0082)/(z*z-1.7236*z+0.7408) [zd,pd,kd]=zpkdata(Gz,'v') kc=1 Cz=kc Lz=Cz*Gz [mag,phase,w]=bode(Lz); kc=margin(mag,phase-60,w) Cz=kc*Cz Lz=Cz*Gz Lz=minreal(Lz) [gm,pm,wg,wc]=margin(Lz) margin(Lz)
Eredmény:
gm = 8.7017 pm = 59.9160 wg = 0.7699 wc = 0.2219
-- Dög - 2007.11.14.