„Szabályozástechnika - Soros kompenzátorok tervezése” változatai közötti eltérés

David14 (vitalap | szerkesztései)
 
(9 közbenső módosítás, amit 3 másik szerkesztő végzett, nincs mutatva)
2. sor: 2. sor:


== A szakasz és a tervezési előírások megadása ==
== A szakasz és a tervezési előírások megadása ==
<syntaxhighlight lang="matlab" style="font-size: 150%;">
<syntaxhighlight lang="matlab" style="font-size: 140%;">


%% A szakasz a szokásos:
%% A szakasz a szokásos:
25. sor: 25. sor:


== P szabályzó tervezése ==
== P szabályzó tervezése ==
<syntaxhighlight lang="matlab" style="font-size: 150%;">
<syntaxhighlight lang="matlab" style="font-size: 140%;">


% Kompenzálási stratégia: Ap segítségével beállítjuk a megfelelő fázistartalékot.
% Kompenzálási stratégia: Ap segítségével beállítjuk a megfelelő fázistartalékot.
98. sor: 98. sor:


== PI szabályzó tervezése ==
== PI szabályzó tervezése ==
<syntaxhighlight lang="matlab" style="font-size: 150%;">
<syntaxhighlight lang="matlab" style="font-size: 140%;">


% Kompenzálási stratégia:  
% Kompenzálási stratégia:  
141. sor: 141. sor:


== Közelítő PD szabályzó tervezése ==
== Közelítő PD szabályzó tervezése ==
<syntaxhighlight lang="matlab" style="font-size: 150%;">
<syntaxhighlight lang="matlab" style="font-size: 140%;">
% Nem ideális deriváló, mert azt nem lehet realizálni, beviszünk egy
% Nem ideális deriváló, mert azt nem lehet realizálni, beviszünk egy
% új pólust (-1/Tc), így realizálható lesz.
% új pólust (-1/Tc), így realizálható lesz.
151. sor: 151. sor:
%
%
%                (        s*Td    )        s*(Td+Tc) + 1          s*(N+1)*Tc + 1
%                (        s*Td    )        s*(Td+Tc) + 1          s*(N+1)*Tc + 1
% Wc_pi(s) = Ap * ( 1 + ---------- ) = Ap * --------------- = Ap * ----------------  
% Wc_pd(s) = Ap * ( 1 + ---------- ) = Ap * --------------- = Ap * ----------------  
%                (      s*Tc + 1  )            s*Tc + 1              s*Tc + 1
%                (      s*Tc + 1  )            s*Tc + 1              s*Tc + 1


183. sor: 183. sor:


== Közelítő PID szabályzó tervezése ==
== Közelítő PID szabályzó tervezése ==
<syntaxhighlight lang="matlab" style="font-size: 150%;">
<syntaxhighlight lang="matlab" style="font-size: 140%;">


% Kompenzálási stratégia:
% Kompenzálási stratégia:
194. sor: 194. sor:
% Wc_pid(s) = Ap * ( 1 + ------ + ---------- ) = ---- * --------------------------------
% Wc_pid(s) = Ap * ( 1 + ------ + ---------- ) = ---- * --------------------------------
%                  (      s*Ti    s*Tc + 1  )    Ti            s * (s*Tc + 1)
%                  (      s*Ti    s*Tc + 1  )    Ti            s * (s*Tc + 1)
%
%
%                    Aplant                                  Aplant
% Wp(s) = ---------------------------- =  ----------------------------------------------
%        (1+s*Tau1)(1+s*Tau2)(1+s*T3)    (s^2*Tau1*Tau2 + s*(Tau1+Tau2) + 1) * (s*T3+1)


N=10; % Td/Tc arány meghatározása
N=10; % Td/Tc arány meghatározása
202. sor: 208. sor:
% 1. Tau1+Tau2 = Ti+Tc
% 1. Tau1+Tau2 = Ti+Tc
% 2. Tau1*Tau2 = Ti*(Td+Tc) = Ti*(N+1)*Tc
% 2. Tau1*Tau2 = Ti*(Td+Tc) = Ti*(N+1)*Tc
% Az 1. egyenletből Ti-t kifejezve (Ti=Tau1+Tau2-Tc)
 
% és T2-be helyettesítve
% Az 1. egyenletből Ti-t kifejezve (Ti=Tau1+Tau2-Tc) és T2-be helyettesítve,
% egy másodfokú egyenletet kapunk Tc-re, aminek megoldása:
% aztán egy kicsit rendezgetve egy másodfokú egyenletet kapunk Tc-re, aminek megoldása:


Tcs=roots([N+1  -(N+1)*(Tau1+Tau2)    Tau1*Tau2])  
Tcs=roots([N+1  -(N+1)*(Tau1+Tau2)    Tau1*Tau2])  


% Tc mindenképpen pozitív és valós, ha mindkét gyök az lenne, akkor a
% Tc mindenképpen pozitív és valós kell hogy legyen! Ha mindkét gyökre teljesül ez a
% kisebbet választjuk
% feltétel, akkor a kisebbiket választjuk mindig.


Tc=Tcs(2) % Itt a gyökök közül mindkettő valós és pozitív, a 2. a kisebb
Tc=Tcs(2) % Itt a gyökök közül mindkettő valós és pozitív, a 2. a kisebb
% Automatizált megoldás - vájtfülű érdeklődőknek, nem része az anyagnak!
% Automatizált megoldás - vájtfülű érdeklődőknek, nem része az anyagnak!
% A find függvény segítségével megkeressük Tcs nulla
% A find függvény segítségével megkeressük Tcs nulla képzetes részű (imag(Tcs)=0)
% képzetes részű (imag(Tcs)=0) és (&) pozitív valós részű (Tcs>0) elemeit.
% és (&) pozitív valós részű (Tcs>0) elemeit. A find függvény a feltételnek eleget
% A find függvény a feltételnek eleget tevő elemek indexével tér vissza,
% tevő elemek indexével tér vissza, így az értékek maguk a Tcs(find(...)) módon kaphatók meg.
% így az értékek maguk a Tcs(find(...)) módon kaphatók meg. Ezek közül
% Ezek közül pedig a minimálisat választjuk:
% pedig a minimálisat választjuk.
Tc=min(Tcs(find(imag(Tcs)==0 & Tcs>0)))
Tc=min(Tcs(find(imag(Tcs)==0 & Tcs>0)))


224. sor: 229. sor:


wc_pid=tf(1,1)+tf(1,[Ti 0])+tf([Td 0],[Tc 1]) % A szabályozó Ap=1 mellett
wc_pid=tf(1,1)+tf(1,[Ti 0])+tf([Td 0],[Tc 1]) % A szabályozó Ap=1 mellett
w0=minreal(wc_pid*wp) % A felnyitott kör átviteli függvénye
w0=minreal(wc_pid*wp) % A felnyitott kör átviteli függvénye p-z kiejtéssel
figure(1);
figure(1);
pzmap(wp,'b',wc_pid,'r'); % A pólus-zérus kiejtés szemléltetése
pzmap(wp,'b',wc_pid,'r'); % A pólus-zérus kiejtés szemléltetése
232. sor: 237. sor:
% Leolvasva (természetesen a táblázatos módszer is használható):
% Leolvasva (természetesen a táblázatos módszer is használható):
Ap=10^(2.16/20)
Ap=10^(2.16/20)
wc_pid=Ap*wc_pid % A szabályzó átviteli függvénye a megfelelő Ap mellett
wc_pid=Ap*wc_pid % A szabályzó átviteli függvénye a megfelelő Ap mellett
w0=minreal(wc_pid*wp) % A felnyitott kör
w0=minreal(wc_pid*wp) % A felnyitott kör
246. sor: 252. sor:
figure(5);
figure(5);
step(wur_pid); % Az r->u átviteli függvény ugrásválasza
step(wur_pid); % Az r->u átviteli függvény ugrásválasza
pause; % Várakozás gombnyomásra
pause; % Várakozás gombnyomásra
close all; % Az összes nyitva lévő grafikus ablak bezárása
close all; % Az összes nyitva lévő grafikus ablak bezárása
253. sor: 260. sor:


== A soros kompenzátorok összehasonlítása ==
== A soros kompenzátorok összehasonlítása ==
<syntaxhighlight lang="matlab" style="font-size: 150%;">
<syntaxhighlight lang="matlab" style="font-size: 140%;">


figure(1);
figure(1);
259. sor: 266. sor:
step(wcl_p,wcl_pi,wcl_pd,wcl_pid);  
step(wcl_p,wcl_pi,wcl_pd,wcl_pid);  
legend('P','PI','PD','PID'); % Jelmagyarázat hozzáadása
legend('P','PI','PD','PID'); % Jelmagyarázat hozzáadása
% A P szabályzó relatív gyors, de nagy a túllövése és nagy a maradó hiba.
% A PI szabályzó lassabb, de kicsi a túllövése és zérus a maradó hiba.
% A közelítő PD nagyon gyors, de relatív nagy a túllövése és a maradó hibája.
% A közelítő PID miden egyesíti az előzőek jó tulajdonságait: Gyors, kis túllövés és zérus maradó hiba.
pause; % Várakozás gombnyomásra
pause; % Várakozás gombnyomásra
close all; % Az összes nyitva lévő grafikus ablak bezárása
close all; % Az összes nyitva lévő grafikus ablak bezárása
264. sor: 277. sor:


</syntaxhighlight>
</syntaxhighlight>
== PID szabályzó tervezése maximális beavatkozó jelre ==
 
<syntaxhighlight lang="matlab" style="font-size: 150%;">
== Közelítő PID szabályzó tervezése maximális beavatkozó jelre ==
<syntaxhighlight lang="matlab" style="font-size: 140%;">


umax=10; % Beavatkozó jel maximális értek (t=0-ban lép fel)
umax=10; % Beavatkozó jel maximális értek (t=0-ban lép fel)
318. sor: 332. sor:
figure(3);
figure(3);
step(wur_pidu)
step(wur_pidu)
pause; % Várakozás gombnyomásra
close all; % Az összes nyitva lévő grafikus ablak bezárása


323. sor: 340. sor:


== A megírandó myPID függvény az fsolve-hoz==
== A megírandó myPID függvény az fsolve-hoz==
<syntaxhighlight lang="matlab" style="font-size: 150%;">
<syntaxhighlight lang="matlab" style="font-size: 140%;">


% FIGYELEM: Ezt egy külön myPID.m fájlba kell megírni!
% FIGYELEM: Ezt egy külön myPID.m fájlba kell megírni!
% Ez NEM egy általános célú függvény lesz, mivel a T1, T2, Phit és umax  
% Ez NEM egy általános célú függvény lesz, mivel a T1, T2, Phit és umax változókat nem
% változókat nem paraméterként kapja meg, hanem az egyszerűség kedvéért
% paraméterként kapja meg, hanem az egyszerűség kedvéért fixen beleírtam a kódba!!!
% fixen beleírtam a kódba!!!


% I. egyenlet kifejtése (pólus zérus kiejtést kapásból elvégezve):
% I. egyenlet kifejtése (pólus zérus kiejtést kapásból elvégezve):
383. sor: 399. sor:
</syntaxhighlight>
</syntaxhighlight>


[[Category:Villanyalap]]
[[Kategória:Villamosmérnök]]