-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcontext.sce
72 lines (72 loc) · 1.53 KB
/
context.sce
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// Current-Mode Control of a Distributed Buck Converter with a Lossy Transmission Line
// Klaus Röbenack and Daniel Gerbet, 2024
//
// parameters and constants for the buck converter
//
// general parameters
E = 12; // 12 V supply coltage
R = 10; // 10 Ω load resistance
Cext = 1E-6; // 1 µF
// primary line constants
Lp = 241E-9; // 241 nF/m
Cp = 100E-12; // 100 pF/m
RLp = 40E-3; // 40 mΩ/m
GCp = 0.2E-12; // 0.2 pS/m
// parameters of the whole transmission line
l=6; // 6 m length of transmission line
Lbar = l*Lp;
Cbar = l*Cp;
RLbar = l*RLp;
GCbar = l*GCp;
// parameters of the standard buck converter
L = Lbar;
C = Cbar+Cext;
RL = RLbar;
GC = GCbar;
// PWM setup for control
wpwm=5E7;
fpwm=wpwm/(2*%pi);
Tpwm=1/fpwm;
// matrices of the conventional converter
AF=[-RL/L -1/L;1/C -(1+R*GC)/(R*C)];
BF=[E/L, 0]';
CF=eye(2,2);
DF=zeros(2,1);
// discretization of the distributed converter
N = 25;
dL = Lbar/N;
dC = Cbar/N;
dRL = RLbar/N;
dGC = GCbar/N;
AL=zeros(2*N,2*N);
BL=zeros(2*N,1);
CL=zeros(2,2*N);
DL=zeros(2,1);
x0l=zeros(2*N,1);
for i=1:N,
AL(i,i)=-dRL/dL;
AL(i,i+N)=-1/dL;
end;
for i=2:N,
AL(i,i+N-1)=1/dL;
end;
for i=1:N-1,
AL(i+N,i)=1/dC;
AL(i+N,i+N)=-dGC/dC;
end;
for i=2:N,
AL(i+N-1,i)=-1/dC;
end;
AL(2*N,N)=1/(dC+Cext);
AL(2*N,2*N)=-(dGC+(1/R))/(dC+Cext);
BL(1,1)=E/dL;
CL(1,1)=1; // i_1 = i(0,t)
CL(2,2*N)=1; // u_N = u(l,t)
// prefilter
Vui=((GC*R+1)*((GC*R+1)*RL+R))/(R*(GC*R*RL+RL+R));
Vud=((GC*R+1)*RL+R)/(E*R);
// PI controller
Ti=1E-5;
k=1;
kp=k;
ki=k/Ti;