POLITECHNIKA LUBELSKA w LUBLINIE |
---|
LABORATORIUM METOD NUMERYCZNYCH |
Temat Równania różniczkowe II rzędu- analiza stanów nieustalonych w obwodach elektrycznych. |
Nazwisko i Imię Łupina Marcin Kryszczuk Michał |
Celem ćwiczenia było rozwiązanie układu szeregowego RLC w stanie nieustalonym za pomocą programu SCILAB.
Skrypt SCILABA do zadania nr 1.
clear; // czyszczenie wartości zmiennych i stalych,
clc; // czyszczenie konsoli,
xdel; // zamykanie wszystkich okien wykresu,
function [pochodne]=stanykr(t,x) //funkcje opisujące układy równań różniczkowych
pochodne(1)=(E-R*C*x(1)-x(2))/(L*C);
pochodne(2)=x(3)/C;
pochodne(3)=(E-R*x(3)-x(2))/L;
endfunction
function [pochodne]=stanyaper(t,x)
pochodne(1)=(E-Raper*C*x(1)-x(2))/(L*C);
pochodne(2)=x(3)/C;
pochodne(3)=(E-Raper*x(3)-x(2))/L;
endfunction
function [pochodne]=stanyoscy(t,x)
pochodne(1)=(E-Roscy*C*x(1)-x(2))/(L*C);
pochodne(2)=x(3)/C;
pochodne(3)=(E-Roscy*x(3)-x(2))/L;
endfunction
E=input('Podaj wartosc E ')// definicja parametrów rozwiązywanego obwodu
L=input('Podaj wartosc L ')
C=input('Podaj wartosc C ')
R=2*sqrt(L/C)
Raper=4*R;
Roscy=R/5;
duC0=0; //parametry początkowe zdefiniowanych zmiennych stanu i czasu
uC0=0;
i0=0;
t0=0;
t=0:0.0001:0.08; //definicja wektora czasu
roz=ode([duC0;uC0;i0],t0,t,stanykr); //polecenia rozwiązania układu równań różniczkowych
rozaper=ode([duC0;uC0;i0],t0,t,stanyaper);
rozoscy=ode([duC0;uC0;i0],t0,t,stanyoscy);
i=roz(3,:); //przebiegi pozostałych napięć
uC=roz(2,:);
uR=R*i;
uL=E-uR-uC;
Ez=uC+uR+uL; //sprawdzenie poprawności obliczeń
iaper=rozaper(3,:); //przebiegi pozostałych napięć
uCaper=rozaper(2,:);
uRaper=Raper*iaper;
uLaper=E-uRaper-uCaper;
Ez=uCaper+uRaper+uLaper; //sprawdzenie poprawności obliczeń
ioscy=rozoscy(3,:); //przebiegi pozostałych napięć
uCoscy=rozoscy(2,:);
uRoscy=Roscy*ioscy;
uLoscy=E-uRoscy-uCoscy;
Ez=uCoscy+uRoscy+uLoscy; //sprawdzenie poprawności obliczeń
subplot(231); // rysowanie poszczególnych wykresów
plot2d(t,iaper,2,leg='i(t)',axesflag=5);
subplot(234);
plot2d(t,[uCaper'uRaper'uLaper'Ez'],style=[3,2,4,9],leg='uC(t)@uR(t)@uL(t)@E',axesflag=5);
subplot(232);
plot2d(t,i,2,leg='i(t)',axesflag=5);
subplot(235);
plot2d(t,[uC'uR'uL'Ez'],style=[3,2,4,9],leg='uC(t)@uR(t)@uL(t)@E',axesflag=5);
subplot(233);
plot2d(t,ioscy,2,leg='i(t)',axesflag=5);
subplot(236);
plot2d(t,[uCoscy'uRoscy'uLoscy'Ez'],style=[3,2,4,9],leg='uC(t)@uR(t)@uL(t)@E',axesflag=5);
Console SCILABA dla zadanych wartości:
L=0.1H;
C=0.0001F;
E=20V;
Podaj wartosc E 20
E =
20.
Podaj wartosc L 0.1
L =
0.1
Podaj wartosc C 0.0001
C =
0.0001
ans =
Rkr wynosi:
R =
63.245553
Wykresy do zadania nr.1
Skrypt SCILAB do zadania nr 2.
clear; // czyszczenie wartości zmiennych i stalych,
clc; // czyszczenie konsoli,
xdel; // zamykanie wszystkich okien wykresu,
function [pochodne]=stany0(t,x) //funkcja opisująca układ równań różniczkowych
pochodne(1)=(E*sin(2*%pi*50*t)-R*C*x(1)-x(2))/(L*C);
pochodne(2)=x(3)/C;
pochodne(3)=(E*sin(2*%pi*50*t)-R*x(3)-x(2))/L;
endfunction
function [pochodne]=stany30(t,x) //funkcja opisująca układ równań różniczkowych
pochodne(1)=(E*sin(2*%pi*50*t+%pi/6)-R*C*x(1)-x(2))/(L*C);
pochodne(2)=x(3)/C;
pochodne(3)=(E*sin(2*%pi*50*t+%pi/6)-R*x(3)-x(2))/L;
endfunction
function [pochodne]=stany45(t,x) //funkcja opisująca układ równań różniczkowych
pochodne(1)=(E*sin(2*%pi*50*t+%pi/4)-R*C*x(1)-x(2))/(L*C);
pochodne(2)=x(3)/C;
pochodne(3)=(E*sin(2*%pi*50*t+%pi/4)-R*x(3)-x(2))/L;
endfunction
function [pochodne]=stany60(t,x) //funkcja opisująca układ równań różniczkowych
pochodne(1)=(E*sin(2*%pi*50*t+%pi/3)-R*C*x(1)-x(2))/(L*C);
pochodne(2)=x(3)/C;
pochodne(3)=(E*sin(2*%pi*50*t+%pi/3)-R*x(3)-x(2))/L;
endfunction
function [pochodne]=stany90(t,x) //funkcja opisująca układ równań różniczkowych
pochodne(1)=(E*sin(2*%pi*50*t+%pi/2)-R*C*x(1)-x(2))/(L*C);
pochodne(2)=x(3)/C;
pochodne(3)=(E*sin(2*%pi*50*t+%pi/2)-R*x(3)-x(2))/L;
endfunction
E=input('Podaj wartosc E ') // definicja parametrów rozwiązywanego obwodu
L=input('Podaj wartosc L ')
C=input('Podaj wartosc C ')
R=2*sqrt(L/C)
duC0=0; //parametry początkowe zdefiniowanych zmiennych stanu i czasu
uC0=0;
i0=0;
t0=0;
t=0:0.0001:0.08; //definiujemy wektor czasu
roz=ode([duC0;uC0;i0],t0,t,stany0); //polecenia rozwiązania układu równań różniczkowych
roz30=ode([duC0;uC0;i0],t0,t,stany30);
roz45=ode([duC0;uC0;i0],t0,t,stany45);
roz60=ode([duC0;uC0;i0],t0,t,stany60);
roz90=ode([duC0;uC0;i0],t0,t,stany90);
i=roz(3,:); //wyznaczenie przebiegów pozostałych napięć
uC=roz(2,:);
uR=R*i;
uL=E*sin(2*%pi*50*t)-uR-uC;
Ez=uC+uR+uL; //sprawdzenie poprawności obliczeń
i30=roz30(3,:); //wyznaczenie przebiegów pozostałych napięć
uC30=roz30(2,:);
uR30=R*i30;
uL30=E*sin(2*%pi*50*t+%pi/6)-uR30-uC30;
Ez=uC30+uR30+uL30; //sprawdzenie poprawności obliczeń
i45=roz45(3,:); //wyznaczenie przebiegów pozostałych napięć
uC45=roz45(2,:);
uR45=R*i45;
uL45=E*sin(2*%pi*50*t+%pi/4)-uR45-uC45;
Ez=uC45+uR45+uL45; //sprawdzenie poprawności obliczeń
i60=roz60(3,:); //wyznaczenie przebiegów pozostałych napięć
uC60=roz60(2,:);
uR60=R*i60;
uL60=E*sin(2*%pi*50*t+%pi/3)-uR60-uC60;
Ez=uC60+uR60+uL60; //sprawdzenie poprawności obliczeń
i90=roz90(3,:); //wyznaczenie przebiegów pozostałych napięć
uC90=roz90(2,:);
uR90=R*i90;
uL90=E*sin(2*%pi*50*t+%pi/2)-uR90-uC90;
Ez=uC90+uR90+uL90; //sprawdzenie poprawności obliczeń
subplot(211); // rysowanie poszczególnych wykresów
plot2d(t,i,2,leg='i(t)',axesflag=5);
subplot(212);
plot2d(t,[uC'uR'uL'Ez'],style=[3,2,4,9],leg='uC(t)@uR(t)@uL(t)@E',axesflag=5);
subplot(211);
plot2d(t,i30,2,leg='i(t)',axesflag=5);
subplot(212);
plot2d(t,[uC30'uR30'uL30'Ez'],style=[3,2,4,9],leg='uC(t)@uR(t)@uL(t)@E',axesflag=5);
subplot(211);
plot2d(t,i45,2,leg='i(t)',axesflag=5);
subplot(212);
plot2d(t,[uC45'uR45'uL45'Ez'],style=[3,2,4,9],leg='uC(t)@uR(t)@uL(t)@E',axesflag=5);
subplot(211);
plot2d(t,i60,2,leg='i(t)',axesflag=5);
subplot(212);
plot2d(t,[uC60'uR60'uL60'Ez'],style=[3,2,4,9],leg='uC(t)@uR(t)@uL(t)@E',axesflag=5);
subplot(211);
plot2d(t,i90,2,leg='i(t)',axesflag=5);
subplot(212);
plot2d(t,[uC90'uR90'uL90'Ez'],style=[3,2,4,9],leg='uC(t)@uR(t)@uL(t)@E',axesflag=5);
Console SCILABA dla zadanych wartości:
L=0.1H;
C=0.0001F;
E=20V;
Podaj wartosc E 20
E =
20.
Podaj wartosc L 0.1
L =
0.1
Podaj wartosc C 0.0001
C =
0.0001
R =
63.245553
Wykresy do zadania nr 2.
Wnioski:
Przykładowy skrypt SCILABA zmodyfikowaliśmy tak, aby wyliczał wartości rezystancji krytycznej oraz wykreślał przebiegi chwilowe napięć i prądu dla zadanych przez nas wartości E, L i C. Wykreślone przebiegi zgadzają się z tymi z instrukcji co świadczy o tym ze zadanie zostało wykonane prawidłowo.
Następnie sprawdzaliśmy zależność fazy napięcia zasilającego na proces załączenia badanego obwodu RLC. Wyniki porównania przedstawione są za pomocą wykresów.