1 | within ;
|
---|
2 | model IMC_YD "Induction machine with squirrel cage starting Y-D"
|
---|
3 | import Modelica.Constants.pi;
|
---|
4 | extends Modelica.Icons.Example;
|
---|
5 | constant Integer m=3 "Number of phases";
|
---|
6 | parameter Modelica.SIunits.Voltage VNominal=100
|
---|
7 | "Nominal RMS voltage per phase";
|
---|
8 | parameter Modelica.SIunits.Frequency fNominal=50 "Nominal frequency";
|
---|
9 | parameter Modelica.SIunits.Time tStart1=0.1 "Start time";
|
---|
10 | parameter Modelica.SIunits.Time tStart2=2.0 "Start time from Y to D";
|
---|
11 | parameter Modelica.SIunits.Torque TLoad=161.4 "Nominal load torque";
|
---|
12 | parameter Modelica.SIunits.AngularVelocity wLoad(displayUnit="rev/min")=
|
---|
13 | 1440.45*2*Modelica.Constants.pi/60 "Nominal load speed";
|
---|
14 | parameter Modelica.SIunits.Inertia JLoad=0.29
|
---|
15 | "Load's moment of inertia";
|
---|
16 | Modelica.Magnetic.QuasiStatic.FundamentalWave.BasicMachines.InductionMachines.IM_SquirrelCage imcQS(
|
---|
17 | p=imcData.p,
|
---|
18 | fsNominal=imcData.fsNominal,
|
---|
19 | TsRef=imcData.TsRef,
|
---|
20 | alpha20s(displayUnit="1/K") = imcData.alpha20s,
|
---|
21 | Jr=imcData.Jr,
|
---|
22 | Js=imcData.Js,
|
---|
23 | frictionParameters=imcData.frictionParameters,
|
---|
24 | wMechanical(fixed=true,displayUnit="rpm"),
|
---|
25 | gammar(fixed=true, start=pi/2),
|
---|
26 | gamma(fixed=true, start=-pi/2),
|
---|
27 | statorCoreParameters=imcData.statorCoreParameters,
|
---|
28 | strayLoadParameters=imcData.strayLoadParameters,
|
---|
29 | Lrsigma=imcData.Lrsigma,
|
---|
30 | TrRef=imcData.TrRef,
|
---|
31 | Rs=imcData.Rs*m/3,
|
---|
32 | Lssigma=imcData.Lssigma*m/3,
|
---|
33 | Lm=imcData.Lm*m/3,
|
---|
34 | Rr=imcData.Rr*m/3,
|
---|
35 | m=m,
|
---|
36 | TsOperational=293.15,
|
---|
37 | alpha20r=imcData.alpha20r,
|
---|
38 | TrOperational=293.15) annotation (Placement(transformation(extent={{20,10},{40,30}})));
|
---|
39 | Modelica.Electrical.QuasiStationary.MultiPhase.Sensors.CurrentQuasiRMSSensor currentQuasiRMSSensorQS(m=m) annotation (Placement(transformation(
|
---|
40 | extent={{-10,10},{10,-10}},
|
---|
41 | rotation=270,
|
---|
42 | origin={30,70})));
|
---|
43 | Modelica.Electrical.QuasiStationary.MultiPhase.Sources.VoltageSource sineVoltageQS(
|
---|
44 | final m=m,
|
---|
45 | f=fNominal,
|
---|
46 | V=fill(VNominal/sqrt(3), m)) annotation (Placement(transformation(
|
---|
47 | origin={-30,90},
|
---|
48 | extent={{10,10},{-10,-10}},
|
---|
49 | rotation=0)));
|
---|
50 | Modelica.Electrical.QuasiStationary.MultiPhase.Basic.Star starQS(final m=m) annotation (Placement(transformation(extent={{-50,80},{-70,100}})));
|
---|
51 | Modelica.Electrical.QuasiStationary.SinglePhase.Basic.Ground groundQS annotation (Placement(transformation(
|
---|
52 | origin={-90,90},
|
---|
53 | extent={{-10,-10},{10,10}},
|
---|
54 | rotation=270)));
|
---|
55 | Modelica.Blocks.Sources.BooleanStep booleanStepQS[m](each startTime=tStart1) annotation (Placement(transformation(extent={{-80,50},{-60,70}})));
|
---|
56 | Modelica.Electrical.QuasiStationary.MultiPhase.Ideal.IdealClosingSwitch idealCloserQS(
|
---|
57 | final m=m,
|
---|
58 | Ron=fill(1e-5, m),
|
---|
59 | Goff=fill(1e-5, m)) annotation (Placement(transformation(
|
---|
60 | origin={0,90},
|
---|
61 | extent={{-10,10},{10,-10}},
|
---|
62 | rotation=0)));
|
---|
63 | Modelica.Magnetic.QuasiStatic.FundamentalWave.Utilities.SwitchYD switchYDQS(final m=m) annotation (Placement(transformation(extent={{20,30},{40,50}})));
|
---|
64 | Modelica.Blocks.Sources.BooleanStep booleanStepYDQS[m](each startTime=tStart2) annotation (Placement(transformation(extent={{-40,30},{-20,50}})));
|
---|
65 | Modelica.Mechanics.Rotational.Components.Inertia loadInertiaQS(J=JLoad) annotation (Placement(transformation(extent={{50,10},{70,30}})));
|
---|
66 | Modelica.Mechanics.Rotational.Sources.QuadraticSpeedDependentTorque quadraticLoadTorqueQS(
|
---|
67 | w_nominal=wLoad,
|
---|
68 | TorqueDirection=false,
|
---|
69 | tau_nominal=-TLoad,
|
---|
70 | useSupport=false) annotation (Placement(transformation(extent={{100,10},{80,30}})));
|
---|
71 | parameter Modelica.Electrical.Machines.Utilities.ParameterRecords.AIM_SquirrelCageData imcData annotation (Placement(transformation(extent={{70,70},{90,90}})));
|
---|
72 |
|
---|
73 | Modelica.Magnetic.FundamentalWave.BasicMachines.AsynchronousInductionMachines.AIM_SquirrelCage imc(
|
---|
74 | p=imcData.p,
|
---|
75 | fsNominal=imcData.fsNominal,
|
---|
76 | TsRef=imcData.TsRef,
|
---|
77 | alpha20s(displayUnit="1/K") = imcData.alpha20s,
|
---|
78 | Jr=imcData.Jr,
|
---|
79 | Js=imcData.Js,
|
---|
80 | frictionParameters=imcData.frictionParameters,
|
---|
81 | phiMechanical(fixed=true),
|
---|
82 | wMechanical(fixed=true,displayUnit="rpm"),
|
---|
83 | statorCoreParameters=imcData.statorCoreParameters,
|
---|
84 | strayLoadParameters=imcData.strayLoadParameters,
|
---|
85 | TrRef=imcData.TrRef,
|
---|
86 | Rs=imcData.Rs*m/3,
|
---|
87 | Lssigma=imcData.Lssigma*m/3,
|
---|
88 | Lszero=imcData.Lszero*m/3,
|
---|
89 | Lm=imcData.Lm*m/3,
|
---|
90 | Lrsigma=imcData.Lrsigma*m/3,
|
---|
91 | Rr=imcData.Rr*m/3,
|
---|
92 | TsOperational=293.15,
|
---|
93 | alpha20r=imcData.alpha20r,
|
---|
94 | TrOperational=293.15) annotation (Placement(transformation(extent={{20,-90},{40,-70}})));
|
---|
95 | Modelica.Electrical.Machines.Sensors.CurrentQuasiRMSSensor
|
---|
96 | currentQuasiRMSSensor annotation (Placement(transformation(extent={{-10,10},{10,-10}}, rotation=270,
|
---|
97 | origin={30,-30})));
|
---|
98 | Modelica.Electrical.MultiPhase.Sources.SineVoltage sineVoltage(
|
---|
99 | final m=m,
|
---|
100 | freqHz=fill(fNominal, m),
|
---|
101 | V=fill(sqrt(2/3)*VNominal, m)) annotation (Placement(transformation(
|
---|
102 | origin={-30,-10},
|
---|
103 | extent={{10,10},{-10,-10}},
|
---|
104 | rotation=0)));
|
---|
105 | Modelica.Electrical.MultiPhase.Basic.Star star(final m=m) annotation (
|
---|
106 | Placement(transformation(extent={{-50,-20},{-70,0}})));
|
---|
107 | Modelica.Electrical.Analog.Basic.Ground ground annotation (Placement(
|
---|
108 | transformation(
|
---|
109 | origin={-90,-10},
|
---|
110 | extent={{-10,-10},{10,10}},
|
---|
111 | rotation=270)));
|
---|
112 | Modelica.Blocks.Sources.BooleanStep booleanStep[m](each startTime=
|
---|
113 | tStart1) annotation (Placement(transformation(extent={{-80,-50},{-60,-30}})));
|
---|
114 | Modelica.Electrical.MultiPhase.Ideal.IdealClosingSwitch idealCloser(
|
---|
115 | final m=m,
|
---|
116 | Ron=fill(1e-5, m),
|
---|
117 | Goff=fill(1e-5, m)) annotation (Placement(transformation(
|
---|
118 | origin={0,-10},
|
---|
119 | extent={{-10,10},{10,-10}},
|
---|
120 | rotation=0)));
|
---|
121 | Modelica.Electrical.Machines.Utilities.SwitchYD
|
---|
122 | switchYD(m=m) annotation (Placement(transformation(extent={{20,-70},{40,-50}})));
|
---|
123 | Modelica.Blocks.Sources.BooleanStep booleanStepYD[m](each startTime=
|
---|
124 | tStart2) annotation (Placement(transformation(extent={{-40,-70},{-20,-50}})));
|
---|
125 | Modelica.Mechanics.Rotational.Components.Inertia loadInertia(J=JLoad)
|
---|
126 | annotation (Placement(transformation(extent={{50,-90},{70,-70}})));
|
---|
127 | Modelica.Mechanics.Rotational.Sources.QuadraticSpeedDependentTorque
|
---|
128 | quadraticLoadTorque(
|
---|
129 | w_nominal=wLoad,
|
---|
130 | TorqueDirection=false,
|
---|
131 | tau_nominal=-TLoad,
|
---|
132 | useSupport=false) annotation (Placement(transformation(extent={{100,-90},{80,-70}})));
|
---|
133 | initial equation
|
---|
134 | sum(imc.is) = 0;
|
---|
135 | imc.is[1:2] = zeros(2);
|
---|
136 | imc.rotorCage.electroMagneticConverter.V_m = Complex(0, 0);
|
---|
137 | equation
|
---|
138 | connect(starQS.pin_n, groundQS.pin) annotation (Line(points={{-70,90},{-80,90}}, color={85,170,255}));
|
---|
139 | connect(sineVoltageQS.plug_n, starQS.plug_p) annotation (Line(points={{-40,90},{-50,90}}, color={85,170,255}));
|
---|
140 | connect(sineVoltageQS.plug_p, idealCloserQS.plug_p) annotation (Line(points={{-20,90},{-10,90}}, color={85,170,255}));
|
---|
141 | connect(loadInertiaQS.flange_b, quadraticLoadTorqueQS.flange) annotation (Line(points={{70,20},{80,20}}));
|
---|
142 | connect(booleanStepQS.y, idealCloserQS.control) annotation (Line(points={{-59,60},{0,60},{0,78}}, color={255,0,255}));
|
---|
143 | connect(booleanStepYDQS.y, switchYDQS.control) annotation (Line(points={{-19,40},{18,40}}, color={255,0,255}));
|
---|
144 | connect(idealCloserQS.plug_n, currentQuasiRMSSensorQS.plug_p) annotation (Line(points={{10,90},{10,90},{28,90},{28,90},{30,90},{30,80},{30,80}}, color={85,170,255}));
|
---|
145 | connect(switchYDQS.plug_sn, imcQS.plug_sn) annotation (Line(points={{24,30},{24,30}}, color={85,170,255}));
|
---|
146 | connect(switchYDQS.plug_sp, imcQS.plug_sp) annotation (Line(points={{36,30},{36,30}}, color={85,170,255}));
|
---|
147 | connect(switchYDQS.plugSupply, currentQuasiRMSSensorQS.plug_n) annotation (Line(points={{30,50},{30,60}}, color={85,170,255}));
|
---|
148 | connect(imcQS.flange, loadInertiaQS.flange_a) annotation (Line(points={{40,20},{50,20}}));
|
---|
149 | connect(star.pin_n,ground. p)
|
---|
150 | annotation (Line(points={{-70,-10},{-80,-10}},
|
---|
151 | color={0,0,255}));
|
---|
152 | connect(sineVoltage.plug_n,star. plug_p)
|
---|
153 | annotation (Line(points={{-40,-10},{-50,-10}}, color={0,0,255}));
|
---|
154 | connect(sineVoltage.plug_p,idealCloser. plug_p) annotation (Line(points={{-20,-10},{-10,-10}},
|
---|
155 | color={0,0,255}));
|
---|
156 | connect(loadInertia.flange_b,quadraticLoadTorque. flange)
|
---|
157 | annotation (Line(points={{70,-80},{80,-80}}));
|
---|
158 | connect(booleanStep.y,idealCloser. control) annotation (Line(points={{-59,-40},{0,-40},{0,-22}},
|
---|
159 | color={255,0,255}));
|
---|
160 | connect(booleanStepYD.y,switchYD. control)
|
---|
161 | annotation (Line(points={{-19,-60},{18,-60}}, color={255,0,255}));
|
---|
162 | connect(idealCloser.plug_n,currentQuasiRMSSensor. plug_p)
|
---|
163 | annotation (Line(points={{10,-10},{30,-10},{30,-20}},
|
---|
164 | color={0,0,255}));
|
---|
165 | connect(switchYD.plug_sn, imc.plug_sn) annotation (Line(points={{24,-70},{24,-70}}, color={0,0,255}));
|
---|
166 | connect(switchYD.plug_sp, imc.plug_sp) annotation (Line(points={{36,-70},{36,-70}}, color={0,0,255}));
|
---|
167 | connect(switchYD.plugSupply,currentQuasiRMSSensor. plug_n) annotation (
|
---|
168 | Line(
|
---|
169 | points={{30,-50},{30,-40}}, color={0,0,255}));
|
---|
170 | connect(imc.flange, loadInertia.flange_a) annotation (Line(points={{40,-80},{50,-80}}));
|
---|
171 | annotation (experiment(StopTime=2.5,Interval=0.001,Tolerance=1e-06),
|
---|
172 | __OpenModelica_simulationFlags(jacobian = "", nls = "newton", s = "dassl", lv = "LOG_STATS"),
|
---|
173 | Documentation(
|
---|
174 | info="<html>
|
---|
175 | <p>
|
---|
176 | At start time tStart three phase voltage is supplied to the asynchronous induction machine with squirrel cage, first star-connected, then delta-connected; the machine starts from standstill, accelerating inertias against load torque quadratic dependent on speed, finally reaching nominal speed.</p>
|
---|
177 |
|
---|
178 | <p>Simulate for 2.5 seconds and plot (versus time):</p>
|
---|
179 |
|
---|
180 | <ul>
|
---|
181 | <li>currentQuasiRMSSensor.I: stator current RMS</li>
|
---|
182 | <li>aimc.wMechanical: motor's speed</li>
|
---|
183 | <li>aimc.tauElectrical: motor's torque</li>
|
---|
184 | </ul>
|
---|
185 | <p>
|
---|
186 | Default machine parameters are used.</p>
|
---|
187 | </html>"),
|
---|
188 | Diagram(graphics={
|
---|
189 | Text(
|
---|
190 | extent={{-60,20},{20,12}},
|
---|
191 | textStyle={TextStyle.Bold},
|
---|
192 | textString="%m phase quasi static",
|
---|
193 | lineColor={0,0,0}), Text(
|
---|
194 | extent={{-60,-80},{20,-88}},
|
---|
195 | lineColor={0,0,0},
|
---|
196 | fillColor={255,255,170},
|
---|
197 | fillPattern=FillPattern.Solid,
|
---|
198 | textStyle={TextStyle.Bold},
|
---|
199 | textString="%m phase transient")}),
|
---|
200 | uses(Modelica(version="3.x.x"), Complex(version="3.2.2")));
|
---|
201 | end IMC_YD;
|
---|