-
Notifications
You must be signed in to change notification settings - Fork 0
/
ThreePhaseInverter.asy
100 lines (74 loc) · 2.43 KB
/
ThreePhaseInverter.asy
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
settings.outformat="pdf";
settings.render = 16;
settings.prc = false;
size(16cm);
import obj;
import components;
import connector;
string[] phaseName = {"A", "B", "C"};
Obj[] drawLeg(pair origin, int phase) {
string HS = (string)((phase * 2) + 1);
string LS = (string)((phase * 2) + 2);
Igbt Q1 = Igbt(origin, "$Q_" + HS + "$");
Q1.draw();
Igbt Q2 = Igbt(origin + (0,-1.4), "$Q_" + LS + "$");
Q2.draw();
Node g1 = Node(GetAnchorPos(Q1,0), "$g_{Q" + HS + "}$", align = W);
g1.draw(smallDot);
Node g2 = Node(GetAnchorPos(Q2,0), "$g_{Q" + LS + "}$", align = W);
g2.draw(smallDot);
Diode D1 = Diode(GetAnchorPos(Q1,2) + (0.3,0), 90, "$D_" + HS + "$");
D1.draw();
Diode D2 = Diode(GetAnchorPos(Q2,2) + (0.3,0), 90, "$D_" + LS + "$");
D2.draw();
ConnectParallel(Q1,2,1,D1,0,1,DE);
ConnectParallel(Q2,2,1,D2,0,1,DE);
Node out = Node(GetAnchorPos(Q1,2) - (0,.2));
out.draw();
drawAnchorConnector(Q1, 2, out, DN-1);
drawAnchorConnector(Q2, 1, out, DS-1);
Inductor L1 = Inductor(GetAnchorPos(out,0) + (.6,-.1), -90,"$Ph_{" + phaseName[phase] + "}$");
L1.draw();
drawAnchorConnector(out, DE-1, L1, 0);
Obj[] retVal;
retVal[0] = Node(GetAnchorPos(Q1, 1),"");
retVal[1] = Node(GetAnchorPos(Q2, 2),"");
retVal[2] = out;
return retVal;
}
Obj[] refObj = drawLeg((0,0),0);
Obj N1 = refObj[0];
Obj N2 = refObj[1];
Obj out = refObj[2];
Node N1a = Node(N1.pos + (0,0.2));
N1a.draw();
Node N2a = Node(N2.pos + (0,-0.2));
N2a.draw();
Node vbus = Node(N1.pos + (0,.4),"$V_{bus}$", align = NE);
vbus.draw();
GndPower gndP = GndPower(N2.pos - (0,.5), 0, "");
gndP.draw();
drawAnchorConnector(N2,1,gndP,0);
Obj[] refObj1 = drawLeg((2,0),1);
Obj N3 = refObj1[0];
Obj N4 = refObj1[1];
Node N3a = Node(N3.pos + (0,0.2));
N3a.draw();
Node N4a = Node(N4.pos + (0,-0.2));
N4a.draw();
drawAnchorConnector(N1,0,N3,0, r1 = 0.2);
drawAnchorConnector(N2,1,N4,1, r1 = 0.2);
Obj[] refObj2 = drawLeg((4,0),2);
Obj N5 = refObj2[0];
Obj N6 = refObj2[1];
Node N5a = Node(N5.pos + (0,0.2));
N5a.draw();
Node N6a = Node(N6.pos + (0,-0.2));
N6a.draw();
drawAnchorConnector(N3,0,N5,0, r1 = 0.2);
drawAnchorConnector(N4,1,N6,1, r1 = 0.2);
Capacitor cap = Capacitor(GetAnchorPos(out,0) + (5.5,0.5), -90, "$C_{BUS}$" );
cap.draw();
drawAnchorConnector(N5, 0, cap, 0, r1 = 0.2);
drawAnchorConnector(N6, 1, cap, 1, r1 = 0.2);
drawAnchorConnector(vbus, 1, N1, 0);