Ticket #4538: IMC_YD.mo

File IMC_YD.mo, 10.5 KB (added by Christian Kral <dr.christian.kral@…>, 7 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;