„Szabályozástechnika - Diszkrétidejű állapotteres szabályozók tervezése” változatai közötti eltérés
| 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 | % 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) | 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! | ||