Ticket #4248: IMCNominalOperation.mo

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

Esimulation example demonstrating the issue

Line 
1within ;
2package IMCNominalOperation
3 model NominalOperation "Nominal Operation"
4 extends Modelica.Icons.Example;
5 import Modelica.Constants.eps;
6 import Modelica.Constants.pi;
7 import Modelica.SIunits.Conversions.from_rpm;
8 import Modelica.SIunits.Conversions.from_degC;
9 parameter Integer m(final min=2) = 3 "Number of phases";
10 final parameter Integer mSystems=Modelica.Electrical.MultiPhase.Functions.numberOfSymmetricBaseSystems(m) "Count of basic systems";
11 parameter Modelica.SIunits.Inertia Jr=eps*0.015 "Rotor's moment of inertia";
12 parameter Modelica.SIunits.Inertia Js=Jr "Stator's moment of inertia";
13 parameter Integer p(min=1) = 2 "Number of pole pairs (Integer)";
14 parameter Modelica.SIunits.Frequency fsNominal=133 "Nominal frequency";
15 parameter Real effectiveStatorTurns=1 "Effective number of stator turns";
16 parameter String terminalConnection="Y" "Choose Y=star/D=delta";
17 parameter Modelica.SIunits.Voltage VsNominal=300/sqrt(3) "Nominal RMS voltage per phase";
18 parameter Modelica.SIunits.Current IsNominal=38 "Nominal RMS current per phase";
19 parameter Modelica.SIunits.AngularVelocity wNominal=from_rpm(3929) "Nominal speed";
20 parameter Modelica.SIunits.Torque tauNominal=36.5 "Nominal torque";
21 parameter Modelica.SIunits.Torque tauBreakDown=165;
22 parameter Modelica.SIunits.Resistance Rs=0.0773 "Stator resistance per phase at TRef";
23 parameter Modelica.SIunits.Temperature TsRef=293.15 "Reference temperature of stator resistance";
24 parameter Modelica.Electrical.Machines.Thermal.LinearTemperatureCoefficient20
25 alpha20s=Modelica.Electrical.Machines.Thermal.Constants.alpha20Copper "Temperature coefficient of stator resistance at 20 degC";
26 parameter Modelica.SIunits.Inductance Lszero=Lssigma "Stator zero sequence inductance";
27 parameter Modelica.SIunits.Inductance Lssigma=0.000408538 "Stator stray inductance per phase";
28 parameter Modelica.SIunits.Inductance Lm=0.013019592 "Main inductance per phase";
29 parameter Modelica.SIunits.Inductance Lrsigma=0.000610054 "Rotor stray inductance per phase";
30 parameter Modelica.SIunits.Resistance Rr=0.0586 "Rotor resistance per phase at TRef";
31 parameter Modelica.SIunits.Temperature TrRef=293.15 "Reference temperature of rotor resistance";
32 parameter Modelica.Electrical.Machines.Thermal.LinearTemperatureCoefficient20
33 alpha20r=Modelica.Electrical.Machines.Thermal.Constants.alpha20Aluminium "Temperature coefficient of rotor resistance at 20 degC";
34 parameter Modelica.Electrical.Machines.Losses.FrictionParameters
35 frictionParameters(PRef=400, wRef=wNominal) "Friction loss parameter record";
36 parameter Modelica.Electrical.Machines.Losses.CoreParameters
37 statorCoreParameters(
38 final m=m,
39 PRef=630,
40 VRef=VsNominal,
41 wRef=2*pi*fsNominal)
42 "Stator core loss parameter record w.r.t. to stator side";
43 parameter Modelica.Electrical.Machines.Losses.StrayLoadParameters
44 strayLoadParameters(
45 PRef=75,
46 IRef=IsNominal,
47 wRef=wNominal) "Stray load loss parameter record";
48 parameter Modelica.SIunits.Temperature TsOperational=from_degC(95);
49 parameter Modelica.SIunits.Temperature TrOperational=from_degC(95);
50 Modelica.SIunits.AngularVelocity wSyn=2*pi*fsNominal/p;
51 Real s=1 - multiSensor.w/wSyn;
52 Real pf=cos(powerSensor.arg_y);
53 Real eta=efficiency(imc.powerBalance.powerStator, imc.powerBalance.powerMechanical);
54 parameter Modelica.SIunits.Power PmNominal=tauNominal*wNominal;
55 Modelica.Electrical.QuasiStationary.MultiPhase.Sources.VoltageSource
56 voltageSource(
57 gamma(fixed=true, start=0),
58 m=m,
59 f=fsNominal,
60 V=fill(VsNominal, m))
61 annotation (Placement(transformation(
62 extent={{-10,-10},{10,10}},
63 rotation=180,
64 origin={-50,50})));
65 Modelica.Electrical.QuasiStationary.SinglePhase.Basic.Ground ground
66 annotation (Placement(transformation(extent={{-80,-50},{-60,-30}})));
67 Modelica.Electrical.QuasiStationary.MultiPhase.Basic.Star star(m=mSystems)
68 annotation (Placement(transformation(
69 extent={{-10,-10},{10,10}},
70 rotation=270,
71 origin={-70,-10})));
72 Modelica.Magnetic.QuasiStatic.FundamentalWave.Utilities.MultiTerminalBox
73 multiTerminalBox(m=m, terminalConnection=terminalConnection)
74 annotation (Placement(transformation(extent={{-10,6},{10,26}})));
75 Modelica.Electrical.QuasiStationary.MultiPhase.Basic.MultiStar multiStar(m=m)
76 annotation (Placement(transformation(
77 extent={{-10,-10},{10,10}},
78 rotation=270,
79 origin={-70,20})));
80 Modelica.Electrical.QuasiStationary.MultiPhase.Sensors.CurrentQuasiRMSSensor
81 currentSensor(m=m) annotation (Placement(
82 transformation(
83 extent={{10,-10},{-10,10}},
84 rotation=90,
85 origin={0,30})));
86 Modelica.Mechanics.Rotational.Sensors.MultiSensor multiSensor
87 annotation (Placement(transformation(extent={{20,-10},{40,10}})));
88 Modelica.Electrical.QuasiStationary.MultiPhase.Sensors.PowerSensor
89 powerSensor(m=m)
90 annotation (Placement(transformation(extent={{-30,40},{-10,60}})));
91 Modelica.Mechanics.Rotational.Sources.Torque torque
92 annotation (Placement(transformation(extent={{70,-10},{50,10}})));
93 Modelica.Blocks.Math.Feedback feedback
94 annotation (Placement(transformation(extent={{20,-30},{40,-50}})));
95 Modelica.Blocks.Continuous.Integrator integrator(
96 initType=Modelica.Blocks.Types.Init.InitialOutput,
97 k=-1e6,
98 y_start=-tauNominal)
99 annotation (Placement(transformation(extent={{50,-50},{70,-30}})));
100 Modelica.Blocks.Sources.Ramp ramp(
101 duration=10,
102 height=-3*PmNominal,
103 offset=1.5*PmNominal)
104 annotation (Placement(transformation(extent={{-10,-50},{10,-30}})));
105 Modelica.Magnetic.QuasiStatic.FundamentalWave.BasicMachines.InductionMachines.IM_SquirrelCage
106 imc(
107 m=m,
108 Jr=Jr,
109 useSupport=false,
110 Js=Js,
111 useThermalPort=false,
112 p=p,
113 fsNominal=fsNominal,
114 effectiveStatorTurns=effectiveStatorTurns,
115 wMechanical(start=wNominal),
116 TsOperational=TsOperational,
117 Rs=Rs,
118 TsRef=TsRef,
119 Lssigma=Lssigma,
120 frictionParameters=frictionParameters,
121 statorCoreParameters=statorCoreParameters,
122 strayLoadParameters=strayLoadParameters,
123 Lm=Lm,
124 Lrsigma=Lrsigma,
125 Rr=Rr,
126 TrRef=TrRef,
127 TrOperational=TrOperational,
128 alpha20s=alpha20s,
129 alpha20r=alpha20r)
130 annotation (Placement(transformation(extent={{-10,-10},{10,10}})));
131 equation
132 connect(star.pin_n, ground.pin) annotation (Line(points={{-70,-20},{-70,-24},{
133 -70,-30}}, color={85,170,255}));
134 connect(star.plug_p, multiStar.starpoints)
135 annotation (Line(points={{-70,0},{-70,10}}, color={85,170,255}));
136 connect(multiStar.plug_p, voltageSource.plug_n) annotation (Line(points={{-70,30},
137 {-70,50},{-60,50}}, color={85,170,255}));
138 connect(star.plug_p, multiTerminalBox.starpoint) annotation (Line(points={{-70,0},
139 {-20,0},{-20,12},{-9,12}}, color={85,170,255}));
140 connect(currentSensor.plug_n, multiTerminalBox.plugSupply)
141 annotation (Line(points={{0,20},{0,20},{0,12}}, color={85,170,255}));
142 connect(voltageSource.plug_p, powerSensor.currentP)
143 annotation (Line(points={{-40,50},{-30,50}}, color={85,170,255}));
144 connect(powerSensor.currentP, powerSensor.voltageP)
145 annotation (Line(points={{-30,50},{-30,60},{-20,60}}, color={85,170,255}));
146 connect(powerSensor.currentN, currentSensor.plug_p) annotation (Line(points={{-10,50},
147 {-6,50},{0,50},{0,40}}, color={85,170,255}));
148 connect(multiStar.plug_p, powerSensor.voltageN) annotation (Line(points={{-70,
149 30},{-40,30},{-20,30},{-20,40}}, color={85,170,255}));
150 connect(multiSensor.flange_b, torque.flange)
151 annotation (Line(points={{40,0},{45,0},{50,0}}, color={0,0,0}));
152 connect(feedback.y, integrator.u)
153 annotation (Line(points={{39,-40},{48,-40}}, color={0,0,127}));
154 connect(integrator.y, torque.tau) annotation (Line(points={{71,-40},{80,-40},{
155 80,0},{72,0}}, color={0,0,127}));
156 connect(multiSensor.power, feedback.u2) annotation (Line(points={{24,-11},{24,
157 -20},{30,-20},{30,-32}}, color={0,0,127}));
158 connect(ramp.y, feedback.u1)
159 annotation (Line(points={{11,-40},{22,-40}}, color={0,0,127}));
160 connect(multiTerminalBox.plug_sn, imc.plug_sn)
161 annotation (Line(points={{-6,10},{-6,10}}, color={85,170,255}));
162 connect(multiTerminalBox.plug_sp, imc.plug_sp)
163 annotation (Line(points={{6,10},{6,10}}, color={85,170,255}));
164 connect(imc.flange, multiSensor.flange_a)
165 annotation (Line(points={{10,0},{16,0},{20,0}}, color={0,0,0}));
166 annotation (Documentation(info="<html>
167</html>"), Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},
168 {100,100}})),
169 experiment(
170 StopTime=10,
171 Interval=0.001,
172 Tolerance=1e-005,
173 __Dymola_Algorithm="Dassl"));
174 end NominalOperation;
175
176 function efficiency
177 extends Modelica.Icons.Function;
178 import Modelica.Constants.eps;
179 input Modelica.SIunits.Power Pel;
180 input Modelica.SIunits.Power Pm;
181 output Real eta;
182 algorithm
183 eta :=if noEvent(Pm > eps) then Pm/Pel else if noEvent(Pel < -eps) then Pel/Pm else 0;
184 annotation(Inline=true);
185 end efficiency;
186 annotation (uses(Modelica(version="3.2.2")));
187end IMCNominalOperation;