Politechnika Lubelska

w Lublinie

Laboratorium Metod Numerycznych

Ćwiczenie nr 8

Imię i Nazwisko:

Wielgórski Mariusz

Widz Marcin

Semestr: III

Grupa: 3.5

Rok akademicki:

2012/2013

Temat:

Scilab - równania różniczkowe I rzędu (RL i RC)

Data wyk.:

12.12.2012r.

Ocena:

Cel ćwiczenia:

Celem ćwiczenia jest zapoznanie się z metodami obliczania stanów nieustalonych w obwodach RC i RL.

Schemat:

0x01 graphic

0x01 graphic

Skrypt SciLab:

clear;

xdel;

clc;

E=20;

C=0.001;

R=4;

L=0.02;

wybgen=input("wybierz generator..

1 - prądu stałego 2 - sinusoidalnego 3 - prostokątnego 4 - piłokształtnego")

select wybgen

case 1 then

function pochodna1=stany(t,x)

pochodna1=(E-R*x)/(L)

endfunction

ul0=0;

t0=0;

t=[0:0.0001:0.04];

roz=ode(ul0,t0,t,stany);

ur=R*roz;

ul=E-ur;

subplot(212)

plot2d(t,[ul'ur'roz'],style=[2,5,4],leg="ul(t)@ur(t)@i(t)",axesflag=5)

case 2 then

function pochodna01=stany0(t,x)

pochodna01=(E*sin(2*%pi*f*t)-x)/(R*C)

endfunction

function pochodna11=stany1(t,x)

pochodna11=(E*sin(2*%pi*f*t+%pi/6)-x)/(R*C)

endfunction

function pochodna21=stany2(t,x)

pochodna21=(E*sin(2*%pi*f*t+%pi/4)-x)/(R*C)

endfunction

function pochodna31=stany3(t,x)

pochodna31=(E*sin(2*%pi*f*t+%pi/3)-x)/(R*C)

endfunction

function pochodna41=stany4(t,x)

pochodna41=(E*sin(2*%pi*f*t+%pi/2)-x)/(R*C)

endfunction

function pochodna02=stany01(t,x)

pochodna02=(E*sin(2*%pi*f*t)-R*x)/(L)

endfunction

function pochodna12=stany11(t,x)

pochodna12=(E*sin(2*%pi*f*t+%pi/6)-R*x)/(L)

endfunction

function pochodna22=stany21(t,x)

pochodna22=(E*sin(2*%pi*f*t+%pi/4)-R*x)/(L)

endfunction

function pochodna32=stany31(t,x)

pochodna32=(E*sin(2*%pi*f*t+%pi/3)-R*x)/(L)

endfunction

function pochodna42=stany41(t,x)

pochodna42=(E*sin(2*%pi*f*t+%pi/2)-R*x)/(L)

endfunction

f=50;

t=[0:0.0001:0.02];

e0= E*sin(2*%pi*f*t);

e1= E*sin(2*%pi*f*t+%pi/6);

e2= E*sin(2*%pi*f*t+%pi/4);

e3= E*sin(2*%pi*f*t+%pi/3);

e4= E*sin(2*%pi*f*t+%pi/2);

uc0=0;

ul0=0;

t0=0;

roz0=ode(uc0,t0,t,stany0);

ur0=e0-roz0;

i0=ur0/R;

roz1=ode(uc0,t0,t,stany1);

ur1=e1-roz1;

i1=ur1/R;

roz2=ode(uc0,t0,t,stany2);

ur2=e2-roz2;

i2=ur2/R;

roz3=ode(uc0,t0,t,stany3);

ur3=e3-roz3;

i3=ur3/R;

roz4=ode(uc0,t0,t,stany4);

ur4=e4-roz4;

i4=ur4/R;

roz01=ode(ul0,t0,t,stany01);

ur01=R*roz01;

ul01=e0-ur01;

roz11=ode(ul0,t0,t,stany11);

ur11=R*roz11;

ul11=e0-ur11;

roz21=ode(ul0,t0,t,stany21);

ur21=R*roz21;

ul21=e0-ur21;

roz31=ode(ul0,t0,t,stany31);

ur31=R*roz31;

ul31=e0-ur31;

roz41=ode(ul0,t0,t,stany41);

ur41=R*roz41;

ul41=e0-ur41;

xset("window",1)

subplot(211)

plot2d(t,[ur0'roz0'i0'e0'],style=[4,6,7,9],leg="ur(t)@uc(t)@i(t)@e(t)",axesflag=5)

xtitle('Faza Napięcia 0 dla RC')

xset("window",2)

subplot(211)

plot2d(t,[ul01'ur01'roz01'e0'],style=[6,5,4,7],leg="ul(t)@ur(t)@i(t)@e(t)",axesflag=5)

xtitle('Faza Napięcia 0 dla RL')

xset("window",3)

subplot(211)

plot2d(t,[ur1'roz1'i1'e1'],style=[4,6,7,9],leg="ur(t)@uc(t)@i(t)@e(t)",axesflag=5)

xtitle('Faza Napięcia 30 dla RC')

xset("window",4)

subplot(211)

plot2d(t,[ul11'ur11'roz11'e1'],style=[6,5,4,7],leg="ul(t)@ur(t)@i(t)@e(t)",axesflag=5)

xtitle('Faza Napięcia 30 dla RL')

xset("window",5)

subplot(211)

plot2d(t,[ur2'roz2'i2'e2'],style=[4,6,7,9],leg="ur(t)@uc(t)@i(t)@e(t)",axesflag=5)

xtitle('Faza Napięcia 45 dla RC')

xset("window",6)

subplot(211)

plot2d(t,[ul01'ur21'roz21'e2'],style=[6,5,4,7],leg="ul(t)@ur(t)@i(t)@e(t)",axesflag=5)

xtitle('Faza Napięcia 45 dla RL')

xset("window",7)

subplot(211)

plot2d(t,[ur3'roz3'i3'e3'],style=[4,6,7,9],leg="ur(t)@uc(t)@i(t)@e(t)",axesflag=5)

xtitle('Faza Napięcia 60 dla RC')

xset("window",8)

subplot(211)

plot2d(t,[ul31'ur31'roz31'e3'],style=[6,5,4,7],leg="ul(t)@ur(t)@i(t)@e(t)",axesflag=5)

xtitle('Faza Napięcia 60 dla RL')

xset("window",9)

subplot(211)

plot2d(t,[ur4'roz4'i4'e4'],style=[4,6,7,9],leg="ur(t)@uc(t)@i(t)@e(t)",axesflag=5)

xtitle('Faza Napięcia 90 dla RC')

xset("window",10)

subplot(211)

plot2d(t,[ul41'ur41'roz41'e4'],style=[6,5,4,7],leg="ul(t)@ur(t)@i(t)@e(t)",axesflag=5)

xtitle('Faza Napięcia 90 dla RL')

case 3 then

function pochodna=stany(t,x)

pochodna=(E*squarewave(2*%pi*f*t+k)-x)/(R*C)

endfunction

function pochodna2=stany1(t,x)

pochodna2=(E*squarewave(2*%pi*f*t+k)-R*x)/(L)

endfunction

f=50;

k=0;

ul0=0;

uc0=0;

t0=0;

t=[0:0.0001:0.04];

e= E*squarewave(2*%pi*f*t+k);

roz=ode(uc0,t0,t,stany);

ur=e-roz;

i=ur/R;

roz2=ode(ul0,t0,t,stany1);

ur2=R*roz2;

ul2=e-ur2;

xset("window",1)

plot2d(t,[ur'roz'i'e'],style=[4,6,7,9],leg="ur(t)@uc(t)@i(t)@e(t)",axesflag=5)

xtitle('Faza Napięcia dla RC')

xset("window",2)

plot2d(t,[ul2'ur2'roz2'e'],style=[2,5,4,6],leg="ul(t)@ur(t)@i(t)@e(t)",axesflag=5)

xtitle('Faza Napięcia dla RL')

case 4 then

function pochodna=stany(t,x)

pochodna=(E*2*%pi*f*t-R*x)/L;

endfunction

i0=0;

t0=0;

t=[0:0.0001:0.1];

f=50;

b=t;

e=E*2*%pi*f*t;

for i=2:11 do

t(i,:)=t((i-1),:)+0.1;

end

roz(1,:)=ode(i0,t0,(t(1,:)),stany);

ur(1,:)=R*roz(1,:);

ul(1,:) =e(1,:)- R*roz(1,:);

plot2d(t(1,:),[roz(1,:)' ul(1,:)' ur(1,:)'],style=[3,5,6],leg="i(t)@ul(t)@ur(t)",axesflag=5);

for j=2:11 do

roz(j,:)=ode(roz(j-1,$),t0,(t(1,:)),stany);

ur(j,:)=R*roz(j,:);

ul(j,:)=e(1,:)-R*roz(j,:);

plot2d(t(j,:),[roz(j,:)' ul(j,:)' ur(j,:)'],style=[3,5,6],leg="i(t)@ul(t)@ur(t)",axesflag=5);

end

Wyniki:

Dla prądu stałego

0x01 graphic

Dla prądu przemiennego

RC:

0x01 graphic

0x01 graphic
0x01 graphic
0x01 graphic
0x01 graphic

RL:

0x01 graphic
0x01 graphic
0x01 graphic
0x01 graphic
0x01 graphic

Wnioski:

Dzięki SCILAB można symulować stany nieustalone i pracę układów elektrycznych z elementami RL i RC. Stworzenie przez nas skrypty umożliwiają takie operacje. Po ułożeniu odpowiedniego skryptu wykreśla również przebiegi napięci i prądu w funkcji czasu.