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