2007. 01. 25.

A VIK Wikiből
A lap korábbi változatát látod, amilyen (vitalap) 2012. október 21., 20:12-kor történt szerkesztése után volt. (Új oldal, tartalma: „{{GlobalTemplate|Infoalap|SzabTechVizsga20070125}} ==1. Feladat== Egy folyamat átviteli függvénye: <math>$P = \frac{0.5}{(1 + s)(1+5s)^2}$</math> # Tervezzen so…”)
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)
Ugrás a navigációhoz Ugrás a kereséshez

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


1. Feladat

Egy folyamat átviteli függvénye:

[math]$P = \frac{0.5}{(1 + s)(1+5s)^2}$[/math]

  1. Tervezzen soros PID szabályzót úgy, hogy a zárt rendszer viselkedése tegyen eleget a következő feltételeknek.
    • Egységugrás bemeneti jelet stacionárius állapotban hiba nélkül kövesse. Határozza meg a szabályzó átviteli függvényét és annak paramétereit.
    • A szabályzó póluseltolási aránya legyen pk = 4.
    • A fázistöbblet legyen 60°
  1. Adja meg a rendszer fázistöbbletét, kimeneti túllövését, és a vágási körfekvenciát. Egységugrás alapjel esetén ábrázolja a kimenőjel viselkedését és adja meg beavatkozójel maximumát és végértékét.

Megoldás

A C(s) szabályzó függvény: [math]$C = \frac{(1+T_I s)(1 + T_D s)}{T_I s(1+\frac{T_D}{p_k} s)}$[/math]

MATLAB kód a megoldáshoz:

clear;
s = zpk('s');

P = (0.5 / ((1+s)*(1+5*s)*(1+5*s)));
C = ((1+5*s)*(1+5*s))/(5*s*(1+5/4*s));
L = minreal(P * C);

[mag, phase, w] = bode(C * P);

%kc erositesi tenyo kiszamitasa a 60 fokos fazistobblethez
kc = margin(mag, phase - 60 , w); % korerosites meghatarozasa a stabilitashoz
disp('A korerosites erteke: ');
disp(kc);
C = kc * C;
T = feedback(C * P, 1);			% eredo atviteli fuggveny
U = feedback(C, P);				 % u beavatkozo jel

figure(1),step(T,'b'); % kimenojel az egysegugrasra
figure(2),step(U,'b'); % beavatkozojel az egysegugrasra
figure(3),margin(C*P); % szabalyoztt rendszer Bode diagramja

y	 = step(T);
ys	= dcgain(T); %
es	= 1-ys; % egysegugrasra adott statikus hiba
yt	= (max(y)-ys)/ys; % szazalekos tullendules
disp('A tullendules szazalekban: ');
disp(100*yt);
u	 = step(U);
umax = max(u); %u beavatkozo jel maximalis erteke;
disp('Az u jel maximalis erteke:');
disp(umax);

[gm,pm, wg, wc] = margin(C*P);
disp('A vagasi korfrekvencia: ');
disp(wc);
disp('A fazistobblet: ');
disp(pm);

2. Feladat

Egy folyamat átviteli függvénye:

[math]$P(s) = \frac{5}{(1 + s)(1+4s)}$[/math]

Tervezzen soros mintavételes szabályzót a végesbeállás módszerével a mintavételi pontok közötti lengés elkerülésével. A mintavételezési idő Ts = 1. A beavatkozójel maximuma legyen kisebb mint 2.

  1. Zérusrendű tartószerv esetén adja meg a folyamat G(z) impulzusátviteli függvényét zérus-pólus alakban.
  2. Adja meg G(z) ill. P(s) pólusait és zérusait.
  3. Adja meg a szabályzó impulzusátviteli függvényét zérus-pólus alakban.
  4. Vázolja fel a szabályzott rendszer kimenőjelének és beavatkozójelének viselkedését egységugrás alapjelre.

Megoldás

Az impulzusátviteli függvény: [math]$ G(z) = \frac{0.42113 (z+0.6601)}{(z-0.7788) (z-0.3679)}$[/math]

A G(z) pólusai:

  • p1: 0.7788
  • p2: 0.3679

A P(s) pólusai:

  • p1: -1
  • p2: -0.25

A C(z) szabályzó: [math]$ C(z) = \frac{1.4304 (z-0.7788) (z-0.3679)}{(z+0.3976) (z-1)}$[/math]


MATLAB kód a feladat megoldásához:

clear;
Ts = 1;
s = zpk('s');
z = zpk('z', Ts);

Ps = 5 / ((1+s)*(1+4*s))

Gz = c2d(Ps, Ts)

[zp, pp, kp] = zpkdata(Ps, 'v') % zerus, polus
[zg, pg, kg] = zpkdata(Gz, 'v') % zerus, polus

Bm = (z-Gz.z{1})
Bmn = Bm/dcgain(Bm)
Tz = Bmn/(z^2)
Cz = Tz / (Gz*(1-Tz))
Cz = minreal(Cz) % a szabalyzo fuggveny

U = feedback(Cz, Gz)
u	 = step(U);
umax = max(u); %u beavatkozo jel maximalis erteke;
disp('Az u jel maximalis erteke:');
disp(umax);

T = feedback(Cz * Gz, 1);			% eredo atviteli fuggveny


figure(1),step(T,'b'); % kimenojel az egysegugrasra
figure(2),step(U,'b'); % beavatkozojel az egysegugrasra

3. Feladat

Egy folytonos rendszer állapotmodelljének paraméterei a következők:

[math]$ A = \left[\begin{array}{cccc} -17 & -92 & -160 & 0 \\ 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \end{array}\right]\quad b = \left[\begin{array}{c} 1 \\ 0 \\ 0 \\ 0 \\ \end{array}\right] \quad c^T = \left[\begin{array}{cccc} 0 & 1 & 12 & 32 \end{array}\right] \quad d~=~0 $[/math]

  1. Irányítható-e és megfigyelhető-e a rendszer?
  2. Írja fel a rendszer kanonikus (diagonális) reprezentációját!
  3. Határozza meg a rendszer átviteli függvényét!
  4. Határozza meg a rendszer és az átviteli függvény pólusait!
  5. Határozza meg az állapotvisszacsatolási erősítést (k vektort), amely mellett az állapotvisszacsatolt rendszer átviteli függvénye,

[math]$T(s) = \frac{1}{(s + 10)^2(s^2 + 1.4s + 1)}$[/math]


Megoldás

A rendszer irányítható, de nem megfigyelhető.

A rendszer kanonikus alakja: [math]$ A = \left[\begin{array}{cccc} 0 & 0 & 0 & 0 \\ 0 & -8 & 0 & 0 \\ 0 & 0 & -5 & 0 \\ 0 & 0 & 0 & -4 \end{array}\right]\quad b = \left[\begin{array}{c} 0.8 \\ -6.6667 \\ 19.538 \\ 14 \\ \end{array}\right] \quad c^T = \left[\begin{array}{cccc} 0.25 & 0 & -0.0102 & 0 \end{array}\right] \quad d~=~0 $[/math]

Az átviteli függvény: [math]$H = \frac{1}{s (s+5)}$[/math]

A rendszer pólusai:

  • p1: 0
  • p2: -8
  • p3: -4
  • p4: -5

Az átviteli függvény pólusai:

  • p1: 0
  • p4: -5

A k visszacsatolási vektor: [math] k = [\begin{array}{cccc}0 & 0.33 & 1.5355 & -1.6714\end{array}] [/math]

MATLAB parancsok a megoldáshoz:

clear;
s = zpk('s');

a = [-17 -92 -160 0; 1 0 0 0; 0 1 0 0; 0 0 1 0]
b = [1; 0; 0; 0]
c = [0 1 12 32]
d = 0


%kanonikus alak
[ap, bp, cp, dp] = canon(a,b,c,d, 'modal')

% ha kisebb mint ami maximalisan lehetne, akkor nem teljesul
rank(ctrb(ap,bp)) % iranyithatosag
rank(obsv(ap,cp)) % megfigyelhetoseg

%atviteli fuggveny
H  = ss(a,b,c,d);
Hs = zpk(H) % atviteli fuggveny
[zr, pr, kr] = zpkdata(Hs, 'v') % a rendszer polusai
[zh, ph, kh] = zpkdata(minreal(Hs), 'v') % az atviteli fv polusai

T = 1/((s+10)*(s+10)*(s*s+1.4*+s)) % allapotvisszacsatolt atviteli fv
[zt, pt, kt] = zpkdata(T, 'v'); % polusai amibe eltolunk
k = acker(a, b, pt) % keresett k vektor