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; |
---|