„Szabályozástechnika - Diszkrétidejű állapotteres szabályozók tervezése” változatai közötti eltérés

David14 (vitalap | szerkesztései)
David14 (vitalap | szerkesztései)
165. sor: 165. sor:


<syntaxhighlight lang="matlab" style="font-size: 140%;">
<syntaxhighlight lang="matlab" style="font-size: 140%;">
% Az állapot-visszacsatolásnál minden egyes időpillanatban szükségünk van az állapotok aktuális értékeire.
% Ez a gyakorlatban mérésekkel lenne megvalósítható, ám ez nem mindig lehetséges, vagy ha lehetséges,
% akkor csak nagyon drágán. Éppen ezért használunk állapotmegfigyelőt, ami képes minden időpillanatban
% nagyon jó közelítéssel előállítani az állapotok aktuális értékeit, a szakasz kimenetének (y) és
% bemenetének (u) ismeretében.
% A megfigyelő maga is egy lineáris diszkrét idejű rendszer, melynek differenciaegyenlete:
% xhat[k] = F * xhat[k-1] + G * y[k] + H *u[k-1]
% Ahol xhat a becsült állapotok OSZLOP-vektora, valamint dim{xhat}=dim{x}=n.
% Továbbá éljünk az F = Phi-G*C*Phi és H = Gamma-G*C*Gamma választással.
% A becslés hibájára (xtilde = xhat - x) így az alábbi differenciaegyenlet adódik: xtilde[k+1] = F * xtilde[k]
% Látható, hogy az F mátrix sajátértékei fogják meghatározni, hogy milyen gyorsan csengjenek le a megfigyelés
% tranziensei, azaz hogy milyen pontos legyen a megfigyelésünk. Így szeretnénk ha az F mátrix sajátértékei az
% általunk előírt gyorsaságú (a domináns póluspárnál ~5ször gyorsabb) zoinf pólusok lennének.
% phio(z) = det (zI - F) = det (zI-(Phi-G*C*Phi)) = det (zI-(Phi'-Phi'*C'*G')
% A fenti egyenlőség azért igaz, mivel egy rendszer és annak duálisának azonos a karakterisztikus polinomja.
% Így visszavezettük a feladatot egy fiktív rendszerhez történő állapot-visszacsatolás (K2=G') megtervezésére,
% mely fiktív rendszer rendszermátrixa Phi' (Phi transzponált), bemeneti erősítésvektora pedig
% Phi'*C' (Phi transzponált * C transzponált).
% Ezek ismeretében az állapotmegfigyelő G vektora (vagyis annak transzponáltja) már számítható az
% Ackermann képlettel.
%
% Az állapotmegfigyelőt is tartalmazó állapot-visszacsatolásos szabályzó hatásvázlata:
% Az állapotmegfigyelőt is tartalmazó állapot-visszacsatolásos szabályzó hatásvázlata:
</syntaxhighlight>
</syntaxhighlight>
178. sor: 200. sor:
zoinf=exp(soinf*Ts);
zoinf=exp(soinf*Ts);


% A megfigyelő karakterisztikus gyökei: soinf megfelelő multiplicitással (n)
% A megfigyelő karakterisztikus polinomjának gyökei - zoinf megfelelő multiplicitással (n)
phio=[zoinf zoinf]
phio=[zoinf zoinf]
% A megfigyelő karakterisztikus polinomja
polyphio=poly(phio)


% A megfigyelhetőség ellenőrzése
% A megfigyelhetőség ellenőrzése
Mo=obsv(Phi,C); % A megfigyelhetőségi mátrix...
Mo=obsv(Phi,C); % A megfigyelhetőségi mátrix...
rank(Mo)     % ... és rangja
rank(Mo)       % ... és rangja
% Ha rank(Mo)=n, akkor a rendszer megfigyelhető
% Ha rank(Mo)=n, akkor a rendszer megfigyelhető!


% Megfigyelő tervezése - VIGYÁZAT: Itt a paraméterezés nem analóg a folytonos esettel!
% Megfigyelő tervezése - VIGYÁZAT: Itt a paraméterezés nem analóg a folytonos esettel!
G=acker(Phi',Phi'*C',phio)'
G=acker(Phi',Phi'*C',phio)'
F=Phi-G*C*Phi
F=Phi-G*C*Phi
H=Gamma-G*C*Gamma;
H=Gamma-G*C*Gamma


% A megfelelő Simulink-modell megnyitása
% A megfelelő Simulink-modell megnyitása
198. sor: 222. sor:
% ^          ^
% ^          ^
% x[k] = F * x[k-1] + G * y[k] + H * u[k-1]
% x[k] = F * x[k-1] + G * y[k] + H * u[k-1]
 
%
% FIGYELEM: Mivel aktuális megfigyelőt terveztünk, így az y[k] nincs késleltetve!
% FIGYELEM: Mivel aktuális megfigyelőt terveztünk, így az y[k] nincs késleltetve!