Вы находитесь на странице: 1из 5

buck-cmc.

wxm

1 / 5

Buck Converter

state 1, 0 < t < d Ts

(%i1) A1: matrix([0, -1/L], [1/C, 0]);


0 -

(%o1)

1
C

1
L

(%i2) B1: matrix([1/L, 0], [0, -1/C]);


1

(%o2)

0 -

1
C

state 2, d Ts < t < Ts

(%i3) A2: matrix([0, -1/L], [1/C, 0]);


0 -

(%o3)

1
C

1
L

(%i4) B2: matrix([0, 0], [0, -1/C]);


0

(%o4)

0 -

1
C

DC operating point values

(%i5) X0: matrix([Il], [Vc]);


(%o5)

Il
Vc

buck-cmc.wxm

2 / 5

(%i6) U0: matrix([Vin], [Iout]);


(%o6)

Vin
Iout

A, B, and E

(%i7) A: ratsimp(A2 + (A1 - A2) * D0, D0);


0 -

(%o7)

1
L

(%i8) B: ratsimp(B2 + (B1 - B2) * D0, D0);


D0

(%o8)

L
0

1
C

(%i9) E: (A1 - A2) . X0 + (B1 - B2) . U0;


Vin

(%o9)

L
0

DC solution

(%i10)

sdc: A . X0 + B . U0;
Vin D0

(%o10)

L
Il
C

(%i11)
(%o11)

(%i12)
(%o12)

Vc
L

Iout
C

sdc[1, 1];
Vin D0
L

Vc
L

solve(sdc[1, 1], Vc);


[ Vc = Vin D0 ]

buck-cmc.wxm
(%i13)
(%o13)

(%i14)
(%o14)

3 / 5

sdc[2, 1];
Il
C

Iout
C

solve(sdc[2, 1], Il);


[ Il = Iout ]

system poles

(%i15)

S: s * ident(2) - A;
1

s
(%o15)

(%i16)
(%o16)

L
s

DENOM: determinant(S);
1
C L

+ s2

(%i17)

poles: solve(DENOM, s);

(%o17)

[ s = -p

%i

%i

C L

,s=p

C L

input to state transfer functions

(%i18)

Si: invert(S);
s
1
CL

(%o18)
C

(%i19)

+s

CL

CL

+s

1
CL

1
+s

s
+s

H0: ratsimp(Si . B, s);


s C D0

(%o19)

C L +1
D0

C L +1

1
s

C L +1
s L

C L +1

buck-cmc.wxm
(%i20)

4 / 5

Hvv: H0[2, 1];


D0

(%o20)

C L +1

(%i21)

Hvi: H0[2, 2];

(%o21)

s L
s

(%i22)

s C D0
s

C L +1

Hii: H0[1, 2];


1

(%o23)

s
(%i24)

C L +1

Hiv: H0[1, 1];

(%o22)

(%i23)

C L +1

H1: ratsimp(Si . E, s);


s Vin C

(%o24)

C L +1

Vin
s

(%o26)

Hvd: H1[2, 1];

(%o25)

(%i26)

C L +1
Vin

(%i25)

C L +1

Hid: H1[1, 1];


s Vin C
s

C L +1

current mode control transfer functions

(%i27)
(%o27)

(%i28)
(%o28)

Gvc: ratsimp(Hvd/Hid, s);


1
s C

Gvv: ratsimp(Hvv - Gvc * Hiv, s);


0

buck-cmc.wxm

5 / 5

(%i29)

Gvi: ratsimp(Hvi - Gvc * Hii, s);

(%o29)

1
s C

Вам также может понравиться