1 | within ;
|
---|
2 | package 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")));
|
---|
187 | end IMCNominalOperation;
|
---|