Scilab arvutused : elektrotehnika
Scilab on vabavara. Scilab on parem kui kalkulaator.
Scilab sissejuhatavad juhendid on – Primer.pdf , Intro.pdf, jt.
Scilab sisaldab üle 1000 funktsiooni, Manual.pdf on 700 lk, aga kasutaja võib piirduda vaid harjutustest, näidetest, help-ist, manuaalidest, tutoriaalidest, jne võetud skripti lõikude kasutamise-muutmisega.
Allpool on toodud mõned
elektrotehnika ja muud Scilab näited koos näidis-skriptidega. Lisatud on ka
näited polünoomide ja võrrandsüsteemide kohta.
See dokument on HTML-fail ilma freimideta. Selles toodud infot saab kopeerida (Scilab
käsuaknasse, tekstiredaktori Scipad aknasse, või kuhu iganes). Scilab plotte
saab samuti kopeerida.
Selles dokumendis pole arvutuste tulemusi ega põhjalikke selgitusi. Ja mida
tähendab põhjalik? Selgitused jäävad teie enda ja õpetaja-juhendaja hooleks. Minimaalselt
on lisatud ingliskeelsed selgitusi, mis on ühesuguselt mõistetavad nii eesti
kui ka vene keelt valdavale õppijale. Ka muutujate nimede ja indeksite
kirjutamisel on lähtutud inglise keele tavast.
Lihtne resistiivne ahelel. Arvutatakse resistoride voolud.

mode(7)
Vvs = 120; R= [10 25 75 25]; //circuit parameters
Ra = R(3) + R(4), I = [];
I(1) = Vvs / (R(1) + R(2)*Ra/(R(2)+Ra));
Va = Vvs-I(1)*R(1), I(2:4) = Va ./ [R(2) Ra Ra]
// Voimsuste bilanss
Ps=Vvs*I(1), Pr=sum(I.^2 .*R)
Teine resistiivne ahelel
Toiteallika vool Is = 5.0 A, kõikide kaheksa resistori R = 8.0 Ω. Arvutatakse resistoride voolud. Kopeerige skript Scipad aknasse, redigeerige, ja sealt laadige Scilab käsuaknasse – Scipad menüüga Execute / LoadIntoScilab (Ctrl+l – väike L!). Selgitused on jäetud teie enda ja õpetaja-juhendaja hooleks.

mode(1)
R=8; Is=5;
// R5t8 on nelja resistori R5,R6,R7,R8 ekvivalent, jne
R1t3=R/3; R5t8=R*3*R/(4*R); R4t8=R+R5t8;
R1t8=R1t3*R4t8/(R1t3+R4t8);
Vs=Is*R1t8, I1=Vs/R; I4=Is-3*I1; V5=Vs-I4*R, I5=V5/R; I6=V5/(3*R);
Ir=[I1 I1 I1 I4 I5 I6 I6 I6]; //currents in resistors
//Võimsuste bilanss
Ps=Is*Vs, Pr=sum(Ir .* Ir .* R)
mprintf(" I%.0f = %.4f A\n", (1:8)', Ir')
Ahela rööpharude Thevenini ja Nortoni ekvivalendid
// given parallel branches
Vs = [120 100 110 ]
Z = [0+%i*10, 10*%i 10*%i ]
Y = 1 ./Z, Is = Vs .* Y
// Equivalents: [Ve Ze]; [Ie Ye]
Ie = sum(Is), Ye = sum(Y), Ve = Ie/Ye, Ze = 1/Ye
Märkus Thevenini ja Nortoni ekvivalentide kohta. Nõukogude Liidus oli kasutusel ekvivalentse generaatori mõiste. See mõiste oli GOST-ides; gostide mittetäitmine (nesobljudenie) oli karistatav, asutustes jälgis gostide mittetäitmist normkontroll. Muidugi oli ekvivalentse generaatori mõiste juurdunud eesti keelde, ja IEEE oli kuulutatud kodanlikuks natsionalistlikuks organisatsiooniks, jne.
Kahe-sõlme ahel Ülemine sõlm on a ja maa-sõlm on n. Kui mõni allikapinge on negatiivne, siis võite joonise ja skripti ringi teha. Võite muuta voolusuunda nendel vooludel mis tulevad negatiivsed, siis muutub ka skript. Kahe-sõlme meetod on väga oluline arvutusmeetod.

// 2-Node Circuit, 4 Branches
mode(3)
Vs = [120, 80, 90, 0]; Rbr = [4 6 8 10];
// Voltage of Node a
Van = sum(Vs ./ Rbr) / sum(1 ./Rbr)
I = (Vs - Van) ./ Rbr; I(4) = -I(4)
//Võimsuste bilanss
Ps = sum(Vs.*I), Pr=sum(I.^2 .*Rbr)
Kolmefaasilise ahela näide Kolmefaasiline ahel on kahe-sõlme ahel. Siin saate ka pingete ja voolude faasordiagrammid, faasorite värvid on punane-roheline-sinine (red-green-blue).
Komplekstasandi reaaltelg on suunaga paremale ja imaginaartelg on suunaga üles – nagu matemaatikas.
Faasor on saksa keeles Zeiger ja vektor on saksa keeles Vektor. Inglise ja vene keeles on kasutatud vektori mõistet mõlemas tähenduses, kuid seoses induktsioonmootorite vektorjuhtimise tulekuga eristatakse neid mõisteid.
Ahela skeem on üldiselt sama mis
resistiivse ahela korral. Päevikufaili tegemiseks on kasutatud kausta
C:\temp-sci mis tuleb eelnevalt
ise teha (selles kaustas võib hoida kõiki oma SCI faile). Scilab sisaldab
selleks unix-käsku.
Kui kõrvaldate kommentaari sümbolid, siis kirjutatakse päevikufail. Selles failis kasutatakse unix-reavahetuse sümbolit, mida ei arvesta Windowsi Notepad. Kui teil on Windows ja ei näe päevikufaili reavahetusi, siis avage päevikufail Scipad abil ja salvestage fail, siis on OK.
// 2-Node 3-Phase Circuit and Voltage Diagram
// diary("c:\temp-sci\2Node.sce")
ieee(2), clear, mode(1)
//INPUT: Branch Impedances and Source Voltages
V=100; Vph = V .* [1, exp(%i*4*%pi/3), exp(%i*2*%pi/3)];
Zn = 100; Yn = 1/Zn; // Zn=0.001; Zn=%inf; or any Value
Zph = [15-%i*5, 15-%i*5, 5];
Yph = 1 ./ Zph;
Y_sum = sum(Yph); //Sum of Phase Admittances
if Yn ~= %inf then Y_sum = Y_sum + Yn; end
VY_sum = sum(Vph .* Yph);
Van = VY_sum / Y_sum //Voltage for Node a
Iph = Yph .* (Vph - Van); In = Van * Yn;
Iph = [Iph In]; // with Current in Neutral Conductor
Iph_magn = abs(Iph);
Iph_angle=atan(imag(Iph),real(Iph))*180/%pi;
disp(" Branch Current Magnitude PhaseAngle");
disp( [ Iph' Iph_magn' Iph_angle' ] );
S_vs = [Vph 0] .* conj(Iph);
S_z = [Zph Zn] .* Iph .* conj(Iph);
// Sn = Zn * In * conj(In);
//Power supplied by Voltage Sources
S_vs_sum = sum(S_vs);
//Power consumed by Impedances
S_z_sum = sum(S_z);
xx = real(Vph); yy = imag(Vph); zz= zeros(1,3);
xn = real(Van); yn = imag(Van); oo = ones(1,3);
xbasc; xset("thickness",2);
plot2d([[zz 0]; [xx xn]], [[zz 0]; [yy yn]],..
[5 3 2 1], frameflag=4);
plot2d(2*V+[[zz 0]; 10*real(Iph)],..
[[zz 0]; 10*imag(Iph)], [5 3 2 1]);
plot2d( [xx; xx([2 3 1])], [yy; yy([2 3 1])], [6 6 6] );
plot2d( [xx; xn*oo], [yy; yn*oo], [5 3 2] );
// xgrid(5)
// diary(0) // Close the Diary File
Kolme-sõlme ahel Sõlmed on a, b ja n, sõlm n on maandatud, pinged määratakse maa suhtes.

// Three Node Circuit
mode(1)
V1 = 10; R=[2,6,1.5,2]'; I4 = 2;
// Thevenin Equivalents [Iea Ga] [Vea Ra]
Iea = V1/R(1), Ga = 1/R(1)+1/R(2), Ra = 1/Ga, Vea = Iea * Ra
// [Ieb Gb] [Veb Rb]
Ieb = I4; Rb = R(4); Gb = 1/R(4); Veb = Ieb*Rb
I=[];
I(3) = (Vea-Veb)/(Ra + R(3) + Rb);
// node voltages
Van = (Iea-I(3))*Ra, Vbn = (I(3)+Ieb)*Rb
// branch currents
I(4)=Vbn/R(4); I(2)=Van/R(2); I(1)=(V1-Van)/R(1)
//Power Balance
Ps=V1*I(1)+Vbn*I4, Pr=sum(I .* I .* R)
Kui see (peast lahendamise) meetod on liiga keeruline, siis palun kasutage teisi meetodeid. Koostage näiteks võrrandsüsteem.
Täht-kolmnurk teisendus
// Star to Delta : Resistive Elements
//Star [Rs1 Rs2 Rs3]; Delta [Rd(1)=Rd12,Rd23,Rd31]
Rs=[10 20 40], Gs= 1 ./ Rs
Rd = sum(Gs) ./ ( Gs .* Gs([2 3 1]) )
Kolmnurk–täht teisendus
// Delta to Star : Resistive Elements
// Delta [Rd(1)=Rd12,Rd23,Rd31]; Star [Rs1 Rs2 Rs3]
Rd=[35 140 70]
Rs = Rd .* Rd([3 1 2]) ./ sum(Rd)
Täht–kolmnurk teisendus – komplekselementid
// Star to Delta : Complex Elements
// Star [Zs1 Zs2 Zs3]; Delta [Zd12 Zd23 Zd31]
Zs=[8+%i*6 16+%i*12 32+%i*24 ]
Ys= 1 ./ Zs
Zd = sum(Ys) ./ ( Ys .* Ys([2 3 1]) )
Kolmnurk–täht teisendus – komplekselementid
// Delta to Star : Complex Elements
// Delta [Zd12 Zd23 Zd31]; Star [Zs1 Zs2 Zs3]
Zd=[28+%i*21 112+%i*84 56+%i*42 ]
Zs = Zd .* Zd([3 1 2]) ./ sum(Zd)
3-faasiline pinge
// 3-Phase Voltage
V=100; Vph = V .* [1, exp(%i*%pi*4/3), exp(%i*%pi*2/3)]
Vphph = Vph - Vph([2 3 1]); clean(Vphph)
// Vphp = [ Vph(1)-Vph(2); Vph(2)-Vph(3); Vph(3)-Vph(1) ]
// clean(Vphp)
xbasc()
xset("thickness",2);
xx = real(Vph); yy = imag(Vph); zz=zeros(1,3);
plot2d([zz; xx], [zz; yy], [5 3 2], frameflag=4);
plot2d( [xx; xx([2 3 1])], [yy; yy([2 3 1])], [6 6 6] );
xgrid(2)
Silindri pinna minimeerimine (katse-ja-eksituse meetod)
// Minimize Cilinder Surface Area
V = 800; //Volume; enter your value
D = (8:0.5:13)'; //edit the values of diameter D
H = V*4/%pi ./ (D .* D); //Height
// A = %pi*D*H + 2*%pi*D^2/4
A = 0.04 * %pi*D .*(H + D/2); //0.04 is multiplier
xbasc()
plot2d(D, [A A], style=[2 -5], frameflag=6)
xtitle('Surface area A versus diameter D', 'D', 'A')
xgrid(3)
Elektrimõõtmiste aruanne ja graafikud (AC näide)
// Report for AC Measurements
P1 = [50 100 150 200]'; P2 = [20 30 40 50]';
Vf = [40 50 60 70]'; If = [.95 1.5 2. 2.35]';
Pf = (P1+P2)/3; Zf = Vf ./ If;
Rf = Pf ./ (If^2); Xf = sqrt(Zf^2 - Rf^2);
[ P1 P2 Vf If Pf Zf Rf Xf ]
xbasc();
plot2d(If, [Zf Xf Zf Xf], style=[2 5 -4 -5], frameflag=6)
legends(['Zf';'Xf'], [2;5], opt='ur')
xtitle('Zf and Xf versus If', 'If', 'Zf Xf')
xgrid(4)
Polünoomi juurte, tuletise, jne leidmine
// Polynomial pp=10+7*p+1*p^2
cc = [10 7 1]; pp = poly(cc, 'p', 'coeff')
// pp = poly([10 7 1], 'p', 'coeff')
rr = roots(pp) // Roots of Polynomial
val=2; cc = horner(pp, val) // polynomial/rational evaluation
pd = derivat (pp) // polynomial or rational matrix derivative
s=poly(0,'s');
sys=(s+1)/(s^3-5*s+4)
rep=freq(sys("num"),sys("den"),[0,0.9,1.1,2,3,10,20])
[horner(sys,0),horner(sys,20)]
//
Sys=tf2ss(sys);
[A,B,C,D]=abcd(Sys);
freq(A,B,C,[0,0.9,1.1,2,3,10,20])
//
A=[0,1;0,0];B=[1;1];C=[1,1];
S1=syslin('c',A,B,C) //Linear system definition
Võrrandsüsteemi lahendamine
A=[1 2 4; 4 5 3; 7 8 4] //martix has 3 rows and 3 columns
// x=[15;25;45], b=a*x
b=[245; 320; 485]
// solutions to A*x+b=0
x1 = linsolve(A, b)
// solutions to A*x=b
x2 = linsolve(A, -b), x3 = A\b, x4 = inv(A)*b
Lineaarse süsteemi simulatsioon
// csim - simulation (time response) of linear system
s=poly(0,'s'); w = 1/(1+0.1*s+0.2*s**2);
t=(0:0.1:10);
//impulse(w) = step (s * w)
xbasc(0);xset("window",0);xselect();
sys = syslin('c',w); y=csim('step', t, sys);
plot2d(t',[y',0*t'+1])
plot2d(t',[(csim('step',t,sys))',0*t'+1])
xbasc(1); xset("window",1); xselect();
plot2d([t',t'],[(csim('impulse',t,w))',0*t'])
xstring(2,1.65,[" STEP RESPONSE"; "w(s) = 1/(1+0.1*s+0.2*s**2)"])
//step(w) = impulse (s^-1 * w)
xbasc(3);xset("window",3);xselect();
plot2d([t',t'],[(csim('step',t,w))',0*t'])
xbasc(4);xset("window",4);xselect();
plot2d([t',t'],[(csim('impulse',t,tf2ss(1/s)*w))',0*t'])
//input defined by a time function
deff('u=input(t)','u=abs(sin(t))')
xbasc();plot2d([t',t'],[(csim(input,t,w))',0*t'])
Midagi ei ole garanteeritud. Vabalt kasutatav nii-nagu-on.
6 mai 2005 Eino Sepping sepping@cc.ttu.ee