Ticket #4538: IMC_YD.mo

File IMC_YD.mo, 10.5 KB (added by Christian Kral <dr.christian.kral@…>, 8 years ago)

New MSL model with OpenModelica annotation

Line 
1within ;
2model 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}})));
133initial equation
134 sum(imc.is) = 0;
135 imc.is[1:2] = zeros(2);
136 imc.rotorCage.electroMagneticConverter.V_m = Complex(0, 0);
137equation
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>
176At 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>
186Default 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")));
201end IMC_YD;