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

Harapeti (vitalap | szerkesztései)
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
Harapeti (vitalap | szerkesztései)
feladatsor feltöltése (köszi, Papp Krisztián, hogy elküldted), belinkelése
 
(37 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}}


==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>
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


'''c/'''
Eredmény:


<pre>
http://i.imgur.com/cPppq7h.png
[gt,pm,wg,wc] = margin(L);
http://i.imgur.com/jVCaHqe.png
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
</pre>


----
----
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>
 
  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/'''
==== 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:


====4. feladat====
  ymax =
'''a/  Zérusrendű tartószerv esetén adja meg a folyamat G(z) impulzusátviteli függvényét zérus-pólus alakban.'''
 
      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); <br />
 
P = 2 / ( (1+s)*(1+4*s)*(1+8*s)  ); <br />
  s = zpk('s');
Ts = 0.5; ''%ez a mintavételezési idő, adott a feladat szövegében''  <br />
  P = 2 / ( (1+s)*(1+4*s)*(1+8*s)  );
sysd = c2d(P, Ts, 'zoh'); ''%ez alakítja át diszkrétre. A 'zoh' adja meg, hogy zérusrendű a tartószerv.''  <br />
  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/'''
==== b/ ====


'''Matlab:'''
'''Matlab:'''


s=zpk('s');<br />
  s=zpk('s');
z=zpk('z',0.5);<br />
  z=zpk('z',0.5);
P=2/((1+s)*(1+4*s)*(1+8*s)) ''% átviteli függvény'' <br />
  P=2/((1+s)*(1+4*s)*(1+8*s)) % átviteli függvény  
ts=0.5; ''% mintaveteli ido'' <br />
  ts=0.5;                     % mintaveteli ido  
Pz=c2d(P,ts); ''% diszkrét átviteli függvény'' <br />
  Pz=c2d(P,ts);               % diszkrét átviteli függvény  
Pz ''% zérus-pólus alak'' <br />
  Pz                           % zérus-pólus alak  
kc=1; ''%egység körerősítés először'' <br />
  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'' <br />
  [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.'' <br />
  Cz=kc*(((z-pd(1))*(z-pd(2)))/((z-1)*z));   %diszkrét szab. átv. fv.  
Lz = Cz*Pz<br />
  Lz = Cz*Pz
Lz=minreal(Lz,0.001);<br />
  Lz=minreal(Lz,0.001);
w=logspace(-1,1,500); ''%saját logaritmikus skála beállítása'' <br />
  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'' <br />
  [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'' <br />
  [kc,pm,wg,wc]=margin(mag,phase-60,w);     %60 fokos fázistöbblet  
Cz=Cz*kc;<br />
  Cz=Cz*kc;
Lz=Cz*Pz; ''%a nyitott kör diszkrét átv. fv.'' <br />
  Lz=Cz*Pz;                   %a nyitott kör diszkrét átv. fv.  
Lz=minreal(Lz,0.001);<br />
  Lz=minreal(Lz,0.001);
Tz= Lz/(1+Lz); ''%diszkrét zárt rendszer átv. fv.'' <br />
  Tz= Lz/(1+Lz);               %diszkrét zárt rendszer átv. fv.  
Ts=d2c(Tz,'tustin') ''%folytonos zárt rendszer átv. fv.'' <br />
  Ts=d2c(Tz,'tustin')         %folytonos zárt rendszer átv. fv.  
figure(2),step(Ts),grid ''%zart rendszer kimeneti jele'' <br />
  figure(2),step(Ts),grid     %zart rendszer kimeneti jele  


'''c/'''
Eredmény:


y=step(Ts);<br />
  Zero/pole/gain:
ymax = max(y) ''%a kimenet maximális értéke'' <br />
          0.0625
ys=dcgain(Ts) ''%állandósult érték'' <br />
  ------------------------
yt=(ymax-ys)/ys*100 ''%túllövés értéke százalékban'' <br />
  (s+1) (s+0.25) (s+0.125)
es=1-ys ''%az előírt 1-tól való eltérés'' <br />
 
Uz=Cz/(1+Lz); ''%zárt rendszer beavatkozó jele'' <br />
 
Uz=minreal(Uz,0.001); ''%egyszerűsítések elvégzése'' <br />
  Zero/pole/gain:
figure(3),step(Uz),grid ''%beavatkozó jel kirajzolása'' <br />
  0.0011005 (z+3.157) (z+0.2247)
u=step(Uz);<br />
  --------------------------------
umax = max(u) ''%maximális érték kiírása'' <br />
  (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/ ====
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.


347. 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 eredeti címe: „https://vik.wiki/SzabtechLabZH