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äide­test, 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