Elektrisk systembeskrivelse av kontaktledningsanlegg versjon 1: Vedlegg script i Scilab
Publisert: 21. juli 2017
Oppdatert: 2. april 2025
1 Generelt
I dette vedlegget presenteres funksjoner srevet i Scilab som gjør de beregningene som er beskrevet i Elektrisk systembeskrivelse av kontaktledningsanlegg versjon 1. Koden er testet med Scilab 6.0.0.
2 Lineær modell
Script er ikke utarbeidet.
3 Transmisjonslinje
3.1 Enkel linjesløyfe
Teoretisk beskrivelse: Linjesløyfe
Funksjon: admLoop
Beskrivelse: Beregner admittansmatrisa for ei linjesløyfe
Syntaks: Y = admLoop(r,x,g,b,l)
Alternativ syntaks: Y = admLoop(r,x,g,b,l,INDR,INDS)
Alternativ syntaks: [Y,INDR,INDS] = admLoop(r,x,g,b,l)
Alternativ syntaks: [Y,INDR,INDS] = admLoop(r,x,g,b,l,INDR,INDS)
function [Y,INDR,INDS] = admLoop(r,x,g,b,l,INDR,INDS)
if (~and(exists(INDR,INDS,1))) then
INDR = 1
INDS = 2
end
z = r + %i * x
y = g + %i * b
Z0 = sqrt(z/y)
gam = sqrt(z*y)
const = (Z0*sinh(gam*l))^(-1)
Y = zeros(2,2)
Y(INDR,INDR) = const*cosh(gam*l)
Y(INDR,INDS) = -const
Y(INDS,INDR) = -const
Y(INDS,INDS) = const*sinh(gam*l)
endfunction
| Variabel | Type | Enhet | Type | Beskrivelse |
|---|---|---|---|---|
| Y | (2x2) kompleks matrise | S | Resultat | Admittansmatrise for linjesløyfe |
| INDR | heltall skalar | – | Input eller resultat |
Indeks for node R i admittansmatrisa. Må være 1 eller 2 og ulik INDS |
| INDS | heltall skalar | – | Input eller resultat |
Indeks for node S i admittansmatrisa. Må være 1 eller 2 og ulik INDR |
| r | reell skalar | Ω/km | Input | Spesifikk serieresistans |
| x | reell skalar | Ω/km | Input | Spesifikk seriereaktans |
| g | reell skalar | S/km | Input | Spesifikk parallell konduktans |
| b | reell skalar | S/km | Input | Spesifikk parallell susceptans |
| l | reell skalar | km | Input | Linjesløyfas lengde |
3.2 Transmisjonslinje med flere parallelle ledere
Teoretisk beskrivelse: Transmisjonslinje
Funksjon: admLine
Beskrivelse: Beregner admittansmatrisa for en transmisjonslinje med n parallelle ledere
Syntaks: Y = admLine(r,x,g,b,l)
Alternativ syntaks: Y = admLine(r,x,g,b,l,INDR,INDS)
Alternativ syntaks: [Y,INDR,INDS] = admLine(r,x,g,b,l)
Alternativ syntaks: [Y,INDR,INDS] = admLine(r,x,g,b,l,INDR,INDS)
function [Y,INDR,INDS]=admLine(r,x,g,b,l,INDR,INDS)
n = size(r,1)
if (~and([size(r),size(x),size(g),size(b)]==n)) then
// Wrong dimensions of input variables
Y = 0
return
end
if (~and(exists(INDR,INDS,1))) then
INDR = [1:n]
INDS = [n+1:2*n]
elseif (and([size(INDR),size(INDS)] == 1) then
tmp = (n*(INDR-1))
INDR = (tmp+1:tmp+n)
tmp = (n*(INDS-1))
INDS = (tmp+1:tmp+n)
end
nul = zeros(n,n)
z = r + %i*x
y = g + %i*b
A = [nul , -z ; -y , nul]
[M,fi] = spec(A) // Finds eigenvector matrix (M) and eigenvalue matrix (fi)
for i=1:2*n
fi(i,i) = exp(fi(i,i)*l)
end
fi = M*fi*inv(M)
fi11 = fi(INDR,INDR)
fi12 = fi(INDR,INDS)
fi21 = fi(INDS,INDR)
fi22 = fi(INDS,INDS)
fi12inv = inv(fi12)
Y = zeros(2*n,2*n)
Y(INDR,INDR) = -fi12inv*fi11
Y(INDR,INDS) = fi12inv
Y(INDS,INDR) = fi22*fi12inv*fi11-fi21
Y(INDS,INDS) = -fi22*fi12inv
endfunction
| Variabel | Type | Enhet | Type | Beskrivelse |
|---|---|---|---|---|
| Y | (2nx2n) kompleks matrise | S | Resultat | Admittansmatrise for flerlederlinje |
| INDR | (n) heltall vektor | – | Input eller resultat |
Indekser for node R i admittansmatrisa. Alle elementer i INDR og INDS må være unike og i intervallet (1:2n). Ved input kan INDR og INDS alternativt settes til 1 eller 2 (skalare verdier). |
| INDS | (n) heltall vektor | – | Input eller resultat |
Indekser for node S i admittansmatrisa. Alle elementer i INDR og INDS må være unike og i intervallet (1:2n). Ved input kan INDR og INDS alternativt settes til 1 eller 2 (skalare verdier). |
| r | (nxn) reell matrise | Ω/km | Input | Spesifikk serieresistans |
| x | (nxn) reell matrise | Ω/km | Input | Spesifikk seriereaktans |
| g | (nxn) reell matrise | S/km | Input | Spesifikk parallell konduktans |
| b | (nxn) reell matrise | S/km | Input | Spesifikk parallell susceptans |
| l | reell skalar | km | Input | Linjas lengde |
4 Sugetransformator
Teoretisk beskrivelse: Sugetransformator
Funksjon: admBoosterTransformer
Beskrivelse: Beregner admittansmatrisa for en sugetransformator
Syntaks: Y = admBoosterTransformer(rk,xk,gm,bm)
Alternativ syntaks: Y = admBoosterTransformer(rk,xk,gm,bm,INDR,INDS)
Alternativ syntaks: [Y,INDR,INDS] = admBoosterTransformer(rk,xk,gm,bm)
Alternativ syntaks: [Y,INDR,INDS] = admBoosterTransformer(rk,xk,gm,bm,INDR,INDS)
function [Y,INDR,INDS] = admBoosterTransformer(rk,xk,gm,bm,INDR,INDS)
if (~and(exists(INDR,INDS,1))) then
INDR = [1:2]
INDS = [3:4]
elseif (and([size(INDR),size(INDS)] == 1) then
tmp = (2*(INDR-1))
INDR = (tmp+1:tmp+2)
tmp = (2*(INDS-1))
INDS = (tmp+1:tmp+2)
end
yk = (rk + %i * xk)^(-1)
ym = gm + %i * bm
ytmp = [yk+ym,-yk;-yk,yk]
Y(INDR,INDR) = ytmp
Y(INDR,INDS) = -ytmp
Y(INDS,INDR) = -ytmp
Y(INDS,INDS) = ytmp
endfunction
| Variabel | Type | Enhet | Type | Beskrivelse |
|---|---|---|---|---|
| Y | (4x4) kompleks matrise | S | Resultat | Admittansmatrise for sugetransformator |
| INDR | (1x2) heltall vektor | – | Input eller resultat |
Indekser for node R i admittansmatrisa. Alle elementer i INDR og INDS må være unike og i intervallet (1:4). Ved input kan INDR og INDS alternativt settes til 1 eller 2 (skalare verdier). |
| INDS | (1x2) heltall vektor | – | Input eller resultat |
Indekser for node S i admittansmatrisa. Alle elementer i INDR og INDS må være unike og i intervallet (1:4). Ved input kan INDR og INDS alternativt settes til 1 eller 2 (skalare verdier). |
| rk | reell skalar | Ω | Input | Kortslutningsresistans |
| xk | reell skalar | Ω | Input | Kortslutningsreaktans |
| gm | reell skalar | S | Input | Magnetiseringskonduktans |
| bm | reell skalar | S | Input | Magnetiseringssusceptans |
5 Seksjonering
Teoretisk beskrivelse: Seksjonering
Funksjon: admSeriesImpedance
Beskrivelse: Beregner admittansmatrisa for en serieimpedans eller en seksjonering
Syntaks: Y = admSeriesImpedance(g,b)
Alternativ syntaks: Y = admSeriesImpedance(g,b,INDR,INDS)
Alternativ syntaks: [Y,INDR,INDS] = admSeriesImpedance(g,b)
Alternativ syntaks: [Y,INDR,INDS] = admSeriesImpedance(g,b,INDR,INDS)
function [Y,INDR,INDS] = admSeriesImpedance(g,b,INDR,INDS)
if (~and(exists(INDR,INDS,1))) then
INDR = 1
INDS = 2
end
ytmp = g + %i*b
Y = zeros(2,2)
Y(INDR,INDR) = ytmp
Y(INDR,INDS) = -ytmp
Y(INDS,INDR) = -ytmp
Y(INDS,INDS) = ytmp
endfunction
| Variabel | Type | Enhet | Type | Beskrivelse |
|---|---|---|---|---|
| Y | (2x2) kompleks matrise | S | Resultat | Admittansmatrise for serieimpedans eller seksjonering |
| INDR | heltall skalar | – | Input eller resultat |
Indeks for node R i admittansmatrisa. Må være 1 eller 2 og ulik INDS |
| INDS | heltall skalar | – | Input eller resultat |
Indeks for node S i admittansmatrisa. Må være 1 eller 2 og ulik INDR |
| g | reell skalar | S | Input | Konduktans |
| b | reell skalar | S | Input | Susceptans |
Kommentar: For en ren seksjonering er g og b lik 0 S, og resultatet blir en nullmatrise.
6 Autotransformator
Teoretisk beskrivelse: Autotransformator
Funksjon: admAutoTransformer
Beskrivelse: Beregner admittansmatrisa for en autotransformator
Syntaks: Y = admAutoTransformer(rk,xk,gm,bm)
Alternativ syntaks: Y = admAutoTransformer(rk,xk,gm,bm,INDN,INDP,INDR)
Alternativ syntaks: [Y,INDN,INDP,INDR] = admAutoTransformer(rk,xk,gm,bm)
Alternativ syntaks: [Y,INDN,INDP,INDR] = admAutoTransformer(rk,xk,gm,bm,INDN,INDP,INDR)
function [Y,INDN,INDP,INDR]=admAutoTransformer(rk,xk,gm,bm,INDN,INDP,INDR)
if (~and(exists(INDN,INDP,INDR,1))) then
INDN = 1
INDP = 2
INDR = 3
end
zk = rk + %i * xk
yk = zk^(-1)
ym = gm + %i * bm
Y = zeros(3,3)
Y(INDN,INDN) = yk+ym
Y(INDP,INDP) = yk+ym
Y(INDN,INDP) = yk-ym
Y(INDP,INDN) = yk-ym
Y(INDR,[INDN,INDP]) = -2.0*yk
Y([INDN,INDP],INDR) = -2.0*yk
Y(INDR,INDR) = 4.0*yk
endfunction
| Variabel | Type | Enhet | Type | Beskrivelse |
|---|---|---|---|---|
| Y | (3x3) kompleks matrise | S | Resultat | Admittansmatrise for autotransformator |
| INDN | heltall skalar | – | Input og resultat |
Indeks for negativleder (NL) i admittansmatrisa. INDN, INDP og INDR må være unike og i intervallet (1:3). |
| INDP | heltall skalar | – | Input og resultat |
Indeks for positivleder (PL) i admittansmatrisa. INDN, INDP og INDR må være unike og i intervallet (1:3). |
| INDR | heltall skalar | – | Input og resultat |
Indeks for returkrets (RR) i admittansmatrisa. INDN, INDP og INDR må være unike og i intervallet (1:3). |
| rk | reell skalar | Ω | Input | Kortslutningsresistans – referansespenning 30 kV |
| xk | reell skalar | Ω | Input | Kortslutningsreaktans – referansespenning 30 kV |
| gm | reell skalar | S | Input | Magnetiseringskonduktans – referansespenning 30 kV |
| bm | reell skalar | S | Input | Magnetiseringssusceptans – referansespenning 30 kV |
7 Jordforbindelse
Teoretisk beskrivelse: Jordforbindelse
Script er ikke utarbeidet.
8 Kilde og belastning
8.1 Kilde
Teoretisk beskrivelse: Kilde
Funksjon: nortonSource
Beskrivelse: Beregner nortonekvivalenten (admittansmatrise og nortonstrøm) for en kilde
Syntaks: [Y,i] = nortonSource(r,x,u0)
Alternativ syntaks: [Y,i] = nortonSource(r,x,u0,INDC,INDR)
Alternativ syntaks: [Y,i,INDC,INDR] = nortonSource(r,x,u0)
Alternativ syntaks: [Y,i,INDC,INDR] = nortonSource(r,x,u0,INDC,INDR)
function [Y,i,INDC,INDR] = nortonSource(r,x,u0,INDC,INDR)
if (~and(exists(INDC,INDR,1))) then
INDC = 1
INDR = 2
end
y = (r + %i * x)^(-1)
Y = zeros(2,2)
Y(INDC,INDC) = y
Y(INDC,INDR) = -y
Y(INDR,INDC) = -y
Y(INDR,INDR) = y
iN = u0*y
i = zeros(2,1)
i(INDC)=iN
i(INDR)=-iN
endfunction
| Variabel | Type | Enhet | Type | Beskrivelse |
|---|---|---|---|---|
| Y | (2x2) kompleks matrise | S | Resultat | Admittansmatrise for nortonkilde |
| i | (1x2) kompleks vektor | A | Resultat | Strømvektor for nortonkilde |
| INDC | heltall skalar | – | Input og resultat |
Indeks for kontaktledning (kl). INDC og INDR må være ulike og 1 eller 2. |
| INDR | heltall skalar | – | Input og resultat |
Indeks for returkrets (RR). INDC og INDR må være ulike og 1 eller 2. |
| r | reell skalar | Ω | Input | Kilderesistans (nortonekvivalent) |
| x | reell skalar | Ω | Input | Kildereaktans (nortonekvivalent) |
| u0 | reell skalar | V | Input | Tomgangsspenning ved kilden |
8.2 Belastning
Teoretisk beskrivelse: Belastning
Funksjon: currentLoad
Beskrivelse: Beregner spenning og strøm ved en strømbelastning
Syntaks: [uL,iL] = currentLoad(iLoad,fiLoad,uB,Z,INDC,INDR)
function [uB,iB] = currentLoad(iLoad,fiLoad,u0,Z,INDC,INDR)
ul0 = u0(INDC)-u0(INDR)
zg = Z(INDC,INDC)+Z(INDR,INDR)-Z(INDC,INDR)-Z(INDR,INDC)
delta = atan(imag(ul0),real(ul0))
gam = (delta-fiLoad)
theta = atan(imag(zg),real(zg))
zg=abs(zg)
func = abs(ul0)*(sin(delta-gam)-cos(delta-gam)*tan(fiLoad)) + iLoad*zg*(cos(theta)*tan(fiLoad)-sin(theta))
while (abs(func)>10D-9)
dfdg = abs(ul0)*(cos(delta-gam)+sin(delta-gam)*tan(fiLoad))
gam = gam + func/dfdg
func = abs(ul0)*(sin(delta-gam)-cos(delta-gam)*tan(fiLoad)) + iLoad*zg*(cos(theta)*tan(fiLoad)-sin(theta))
end
iLoad = iLoad*exp(gam*%i)
iB = [-iLoad;iLoad]
uB = u0 + Z*iB
endfunction
| Variabel | Type | Enhet | Type | Beskrivelse |
|---|---|---|---|---|
| uL | (2x1) kompleks vektor | V | Resultat | Vektor med spenning ved belastningen |
| iL | (2x1) kompleks vektor | A | Resultat | Vektor med strøm ved belastningen |
| iLoad | rell skalar | A | Input | Belastningsstrøm |
| fiLoad | reell skalar | radianer | Fasevinkel ved belastningen | |
| u0 | (2x1) kompleks vektor | V | Tomgangsspenning ved belastningen før belastningen er innkoplet | |
| Z | (2x2) kompleks matrise | Ω | Impedansmatrise for belastningen | |
| INDC | heltall skalar | – | Input |
Indeks for kontaktledning (kl). INDC og INDR må være ulike og 1 eller 2. |
| INDR | heltall skalar | – | Input |
Indeks for returkrets (RR). INDC og INDR må være ulike og 1 eller 2. |