„SzabtechLabZH” változatai közötti eltérés

A VIK Wikiből
Ugrás a navigációhoz Ugrás a kereséshez
(pre tag, br tagek eltávolítása (felesleges), Wiki-formázásos aposztróf a kommentből kivéve, helyettesítve megfelelő mennyiségű szóközzel, így a kommentár nem lesz dőlt, de összességében a kód olvashatóbb)
(feladatsor feltöltése (köszi, Papp Krisztián, hogy elküldted), belinkelése)
 
(36 közbenső módosítás ugyanattól a szerkesztőtől nincs mutatva)
1. sor: 1. sor:
 
{{GlobalTemplate|Infoalap|SzabtechLabZH}}
 
{{GlobalTemplate|Infoalap|SzabtechLabZH}}
  
==Gyakorló feladatok a labor zárthelyihez==
+
{{Vissza|Szabályozástechnika_(info)}}
  
<s>[http://www.aut.bme.hu/Portal/Default/DocDownload.aspx?DocId=844bd985-e822-4587-8100-f9c6d6d0179d&CultureId=16df90ec-fcf2-466d-8f3e-8c4057561621 Gyakorló feladatok a labor ZH-hoz (pdf)]</s>
+
== Gyakorló feladatok a laborZH-hoz, 2007. ősz ==
[http://info.sch.bme.hu/document.php?cmd=download_proc&tmp_page=&doc_id=20491Szerintem Itt még elérhető]
+
 
 +
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====
+
===1. feladat===
===== Tervezze meg a C(s) soros szabályozót úgy, hogy a fázistartalék 60° legyen! =====
+
==== 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)
  
<pre>
+
  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)
 
</pre>
 
  
'''Magyarázat [http://info.site.hu/document.php?cmd=download_proc&tmp_page=&doc_id=8387 ez] /7. fejezet alapján:''' <br />
+
http://i.imgur.com/ciWCWbW.png
 +
http://i.imgur.com/KAdgP0h.png
  
<pre>
+
==== a/ Adja meg a megtervezett PI szabályzó átviteli függvényét: ====
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)
 
</pre>
 
  
'''a/ Adja meg a megtervezett PI szabályzó átviteli függvényét:'''
+
'''Matlab:'''
  
'''Matlab:'''
+
  C
 +
(vagyis beírod a fentiek után, hogy "C", és pont azt írja ki)
  
<code>C</code> ''(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'''
+
==== b/ Adja meg a zárt rendszer átviteli függvényének domináns póluspárját ====
  
 
'''Matlab:'''
 
'''Matlab:'''
  
<pre>
+
  T=feedback(L,1)  %a zárt rendszer átviteli függvénye
T=feedback(L,1)  %a zárt rendszer átviteli függvénye <br />
+
  pole(T)          %dom. pp.= az imag. tengelyhez legközelebb eső komplex konjugált póluspár, a parancs egyértelműen kiadja
pole(T)          %dom. pp.= az imag. tengelyhez legközelebb eső komplex konjugált póluspár, a parancs egyértelműen kiadja
+
 
</pre>
+
  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'''
+
==== c/ Adja meg a zárt rendszer átmeneti függvényének százalékos túllendülését ====
  
 
'''Matlab:'''
 
'''Matlab:'''
  
<pre>
+
  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)  %átmeneti függvény kiszámítása  
+
  ys=dcgain(T)  %állandósult érték kiszámítása  
ys=dcgain(T)  %állandósult érték kiszámítása  
+
  ym=max(y)    %maximális érték  
ym=max(y)    %maximális érték  
+
  yt=((ym-ys)/ys)*100    %túllendülés százalékban  
yt=((ym-ys)/ys)*100    %túllendülés százalékban  
 
</pre>
 
  
'''d/ Egység-sebességugrás alapjel esetén adja meg a zárt rendszer állandósult állapotbeli hibáját'''
+
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-'''sebességugrás''' alapjel esetén mivel ebben egy integrátor van, a zárt rendszer állandósult állapotbeli hibája 1/K lesz.
+
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 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.
 
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'''
+
==== 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->o)  s*T(s)/s^2
+
y(t->inf) = lim(s->0)  s*T(s)/s^2
  
====2. feladat====
+
===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.'''
+
==== 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 &#8722;180°.
 
Strukturálisan stabilis. K bármely értékére stabilis, mivel a fázistolás mindig kisebb mint &#8722;180°.
  
'''b/'''
+
==== 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:'''
  
<pre>
+
  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); %60 fokos fázistartalék
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);
 
</pre>
 
  
'''c/'''
+
Eredmény:
  
<pre>
+
  Zero/pole/gain:
[gt,pm,wg,wc] = margin(L);  
+
  379.5687 (s+0.5)
pm %fázistartalék  
+
  ----------------
t1=(3/wc) %a beállási (szabályozási) idő e két érték között lesz  
+
      (s+1.5)
t2=(10/wc)
+
 
T=L/(1+L);  
+
http://i.imgur.com/yUl1CLv.png
figure(2),step(T),grid
+
 
y=step(T); %kimeneti jel  
+
==== c/ ====
ymax = max(y) %kimeneti jel maximuma  
+
 
ys=dcgain(T) %kimeneti jel állandósult értéke  
+
  [gt,pm,wg,wc] = margin(L);  
yt=(ymax-ys)/ys*100 %túllendülés százalékban  
+
  pm %fázistartalék  
es=1-ys %egytől való eltérés  
+
  t1=(3/wc) %a beállási (szabályozási) idő e két érték között lesz  
U=C/(1+L);
+
  t2=(10/wc)
U=minreal(U);
+
  T=L/(1+L);  
figure(3),step(U),grid
+
  figure(2),step(T),grid
u=step(U);
+
  y=step(T); %kimeneti jel  
umax = max(u) %vezérlő jel maximuma  
+
  ymax = max(y) %kimeneti jel maximuma  
</pre>
+
  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
  
 
----
 
----
151. 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====
+
===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.'''
+
==== 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 &#8722;180°.
 
Strukturálisan stabilis. K bármely értékére stabilis, mivel a fázistolás mindig kisebb mint &#8722;180°.
  
'''b/'''
+
==== b/ ====
  
 
'''Matlab:'''
 
'''Matlab:'''
  
<pre>
+
  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);    %60 fokos fázistartalék  
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            %fázistartalék értéke  
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  
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
 
</pre>
 
  
'''c/'''
+
 
 +
  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:'''
  
<pre>
+
  y=step(T);            %kimeneti jel     
y=step(T);            %kimeneti jel     
+
  ymax = max(y)        %kimeneti jel maximuma     
ymax = max(y)        %kimeneti jel maximuma     
+
  ys=dcgain(T)          %kimeneti jel állandósult értéke     
ys=dcgain(T)          %kimeneti jel állandósult értéke     
+
  yt=(ymax-ys)/ys*100  %túllendülés százalékban     
yt=(ymax-ys)/ys*100  %túllendülés százalékban     
+
  es=1-ys              %egytől való eltérés     
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)        %vezérlő jel maximuma     
umax = max(u)        %vezérlő jel maximuma     
+
 
</pre>
+
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====
+
===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.'''
+
==== 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:'''
  
<pre>
+
  s = zpk('s');
s = zpk('s);  
+
  P = 2 / ( (1+s)*(1+4*s)*(1+8*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
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.
sysd = c2d(P, Ts, 'zoh');  %ez alakítja át diszkrétre. A 'zoh' adja meg, hogy zérusrendű a tartószerv.
 
</pre>
 
  
 
-- [[NovakAron]] - 2007.11.21.
 
-- [[NovakAron]] - 2007.11.21.
  
'''b/'''
+
==== b/ ====
  
 
'''Matlab:'''
 
'''Matlab:'''
  
<pre>
+
  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))  % átviteli függvény  
P=2/((1+s)*(1+4*s)*(1+8*s))  % átviteli függvény  
+
  ts=0.5;                      % mintaveteli ido  
ts=0.5;                      % mintaveteli ido  
+
  Pz=c2d(P,ts);                % diszkrét átviteli függvény  
Pz=c2d(P,ts);                % diszkrét átviteli függvény  
+
  Pz                          % zérus-pólus alak  
Pz                          % zérus-pólus alak  
+
  kc=1;                        %egység körerősítés először  
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  
[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.  
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);        %saját logaritmikus skála beállítása  
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  
[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  
[kc,pm,wg,wc]=margin(mag,phase-60,w);    %60 fokos fázistöbblet  
+
  Cz=Cz*kc;
Cz=Cz*kc;
+
  Lz=Cz*Pz;                    %a nyitott kör diszkrét átv. fv.  
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);              %diszkrét zárt rendszer átv. fv.  
Tz= Lz/(1+Lz);              %diszkrét zárt rendszer átv. fv.  
+
  Ts=d2c(Tz,'tustin')          %folytonos zárt rendszer átv. fv.  
Ts=d2c(Tz,'tustin')          %folytonos zárt rendszer átv. fv.  
+
  figure(2),step(Ts),grid      %zart rendszer kimeneti jele  
figure(2),step(Ts),grid      %zart rendszer kimeneti jele  
+
 
</pre>
+
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
  
'''c/'''
 
  
<pre>
+
http://i.imgur.com/2BIAmlr.png
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
 
</pre>
 
  
====5. feladat====
+
===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/ ====
 
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/'''
+
==== b/ c/ ====
  
 
'''Matlab:'''
 
'''Matlab:'''
  
s=tf(&#8217;s&#8217;)<br />
+
  s=tf('s')
P=1/((1+2*s)*(1+s)*(1+6*s))<br />
+
  P=1/((1+2*s)*(1+s)*(1+6*s))
P=zpk(P)<br />
+
  P=zpk(P)
C=(1+6*s)/s<br />
+
  C=(1+6*s)/s
L=C*P<br />
+
  L=C*P
L=minreal(L)<br />
+
  L=minreal(L)
[mag,phase,w]=bode(L);<br />
+
  [mag,phase,w]=bode(L);
k=margin(mag,phase-60,w)<br />
+
  k=margin(mag,phase-60,w)
C=k*C<br />
+
  C=k*C
margin(C*P)<br />
+
  margin(C*P)
T=C*P/(1+C*P), T=minreal(T)<br />
+
  T=C*P/(1+C*P), T=minreal(T)
t=0:0.05:40;<br />
+
  t=0:0.05:40;
y=step(T,t);<br />
+
  y=step(T,t);
plot(t,y),grid<br />
+
  plot(t,y),grid
ym=max(y)<br />
+
  ym=max(y)
  
====6. feladat====
+
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:'''
+
==== a/ Határozza meg a folyamat állapotmátrixait diagonális alakban: ====
  
 
'''Matlab:'''
 
'''Matlab:'''
 
   
 
   
num=1;<br />
+
  num=1;
den=[5 6 1]<br />
+
  den=[5 6 1]
[a,b,c,d]=tf2ss(num,den);<br />
+
  [a,b,c,d]=tf2ss(num,den);
[a,b,c,d]=canon(a,b,c,d,'modal')<br />
+
  [a,b,c,d]=canon(a,b,c,d,'modal')
  
'''c/Rajzolja fel a rendszer kimenetének változását és az állapottrajektóriáját nulla bemenet és'''
+
Eredmény:
*x0=[-1, 2 ] kezdeti feltétel esetén. (állapotrajektória: a x2 állapotváltozó az x1*
+
 
'''függvényében)'''
+
  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]<br />
+
  x0=[-1,2]
[y,x,t]=initial(a,b,c,d,x0); <br />
+
  [y,x,t]=initial(a,b,c,d,x0);  
x1=x(:,1);<br />
+
  x1=x(:,1);
x2=x(:,2);<br />
+
  x2=x(:,2);
figure(1);plot(t,y,'k');grid<br />
+
  figure(1);plot(t,y,'k');grid
figure(2);plot(x1,x2,'k');grid<br />
+
  figure(2);plot(x1,x2,'k');grid
  
====7. feladat====
+
http://i.imgur.com/qC1JBEm.png
 +
http://i.imgur.com/wV8PxLC.png
  
'''a/'''
+
===7. feladat===
 +
 
 +
==== a/ ====
  
 
'''Matlab:'''
 
'''Matlab:'''
  
num_=5;<br />
+
  num_=5;
den_=poly([-10, -0.25]);<br />
+
  den_=poly([-10, -0.25]);
[A,b,c,d]=tf2ss(num_,den_)<br />
+
  [A,b,c,d]=tf2ss(num_,den_)
  
'''b/'''
+
  A =
 +
    -10.2500  -2.5000
 +
      1.0000        0
 +
 
 +
  b =
 +
      1
 +
      0
 +
 
 +
  c =
 +
      0    5
 +
 
 +
  d =
 +
      0
 +
 
 +
==== b/ ====
  
 
'''Matlab:'''
 
'''Matlab:'''
  
num=1<br />
+
  num=1
den=[0.64 1.12 1]<br />
+
  den=[0.64 1.12 1]
pk=roots(den)<br />
+
  pk=roots(den)
numk=1;<br />
+
  numk=1;
denk=poly(pk);<br />
+
  denk=poly(pk);
H=tf(numk,denk)<br />
+
  H=tf(numk,denk)
H=zpk(H)<br />
+
  H=zpk(H)
g0=dcgain(H)<br />
+
  g0=dcgain(H)
''%Egysegnyi erositest akarunk, ezert normaljuk'' <br />
 
Hn=H/g0 <br />
 
k=acker(A,b,pk) <br />
 
Tk=ss(A-b*k,b,c,d) <br />
 
Tk=zpk(Tk) <br />
 
  
====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!*
+
''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 matlab nekem sehogy sem engedi hogy z^-0.3 al beszorozzam,  
+
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.
  
354. 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/'''
+
==== a/ ====
  
 
'''Matlab:'''
 
'''Matlab:'''
  
s=zpk('s');<br />
+
  s=zpk('s');
Ts=0.1; <br />
+
  Ts=0.1;  
Thd=1; ''%holtidő'' <br />
+
  Thd=1;           %holtidő  
z=zpk('z',Ts);<br />
+
  z=zpk('z',Ts);
P=0.5*(s+5)/((s+0.1)*(s*s+1.2*s+1));<br />
+
  P=0.5*(s+5)/((s+0.1)*(s*s+1.2*s+1));
  
Gz=c2d(P,Ts,'zoh')<br />
+
  Gz=c2d(P,Ts,'zoh')
  
Gz = Gz*z^-Thd; ''%a holtidő miatt'' <br />
+
  Gz = Gz*z^-Thd;   %a holtidő miatt  
  
[zd,pd,kd]=zpkdata(Gz,'v')<br />
+
  [zd,pd,kd]=zpkdata(Gz,'v')
  
kc=1<br />
+
  kc=1
Cz=kc*((z-exp(-Ts/10))*(z-exp(-Ts/1)))/((z-1)*z)<br />
+
  Cz=kc*((z-exp(-Ts/10))*(z-exp(-Ts/1)))/((z-1)*z)
Lz=Cz*Gz<br />
+
  Lz=Cz*Gz
[mag,phase,w]=bode(Lz);<br />
+
  [mag,phase,w]=bode(Lz);
kc=margin(mag,phase-60,w)<br />
+
  kc=margin(mag,phase-60,w)
  
Cz=kc*Cz<br />
+
  Cz=kc*Cz
Lz=Cz*Gz;<br />
+
  Lz=Cz*Gz;
  
Yz=feedback(Lz,1);<br />
+
  Yz=feedback(Lz,1);
Uz=feedback(Cz,Gz);<br />
+
  Uz=feedback(Cz,Gz);
  
'''b/'''
+
==== b/ ====
  
 
'''Matlab:'''
 
'''Matlab:'''
  
t=0:0.1:0.4;<br />
+
  t=0:0.1:0.4;
  
figure(1),step(Yz,t) <br />
+
  figure(1),step(Yz,t)  
figure(2),step(Uz,t) <br />
+
  figure(2),step(Uz,t)  
  
'''c/'''
+
==== c/ ====
  
 
'''Matlab:'''
 
'''Matlab:'''
  
y_all=dcgain(Yz)<br />
+
  y_all=dcgain(Yz)
u_all=dcgain(Uz)<br />
+
  u_all=dcgain(Uz)
  
====9. feladat====
+
===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:<br />
+
Maximális érték meghatározása:
'''Matlab:''' <br />
 
W = 2 / ( 1 + 0.4*s + s^2 );<br />
 
y = step(W);<br />
 
max(y)<br />
 
  
[gm,pm,wg,wc]=margin(W)<br />
+
'''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=10/wc<br />
+
  beallasi_ido_max =
beallasi_ido_min=3/wc<br />
+
      5.8898
 +
 
 +
  beallasi_ido_min =
 +
      1.7669
  
====10. feladat====
+
===10. feladat===
  
 
'''Matlab:'''
 
'''Matlab:'''
  
<pre>
+
  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  
%Nincs labilis polus, mehet az egysz. Nyquist  
+
  %A Nyquist diagram a valós tengelyt -0.00617-nél  
%A Nyquist diagram a valós tengelyt -0.00617-nél  
+
  %metszi, ezt ~162-vel kell szorozni, hogy -1 legyen  
%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)
  
figure(2), nyquist(W)
+
http://i.imgur.com/2Auo86Q.png
</pre>
+
http://i.imgur.com/GJeBHh6.png
  
====14. feladat (biztos elírták a pdfben, de ez jön:)====
+
===14. feladat (biztos elírták a pdfben, de ez jön:)===
  
 
'''Matlab:'''
 
'''Matlab:'''
  
<pre>
+
  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])
</pre>
 
  
====11. feladat====
+
Eredmény:
  
'''Matlab:'''
+
  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
  
<pre>
+
=== 11. feladat ===
z=tf('z')
 
Gz=(0.0091*z+0.0082)/(z*z-1.7236*z+0.7408)
 
  
[zd,pd,kd]=zpkdata(Gz,'v')
+
'''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:
  
[mag,phase,w]=bode(Lz);
+
  gm =
kc=margin(mag,phase-60,w)
+
      8.7017
 +
 
 +
  pm =
 +
    59.9160
 +
 
 +
  wg =
 +
      0.7699
 +
 
 +
  wc =
 +
      0.2219
  
Cz=kc*Cz
+
-- [[EszenyiViktor|Dög]] - 2007.11.14.
Lz=Cz*Gz
 
Lz=minreal(Lz)
 
  
[gm,pm,wg,wc]=margin(Lz)
 
margin(Lz)
 
</pre>
 
-- [[EszenyiViktor|Dög]] - 2007.11.14.
 
  
 +
http://i.imgur.com/bILXvPs.png
  
 
[[Category:Infoalap]]
 
[[Category:Infoalap]]

A lap jelenlegi, 2013. május 22., 01:24-kori változata

Ez az oldal a korábbi SCH wiki-ről lett áthozva. Az eredeti változata itt érhető el.

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


← Vissza az előző oldalra – Szabályozástechnika_(info)

Tartalomjegyzék

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)

ciWCWbW.png 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)

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:

cPppq7h.png 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

nXeo67u.png 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

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)

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


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)

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

qC1JBEm.png 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)

2Auo86Q.png 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.


bILXvPs.png