Skip to content

Commit

Permalink
Merge pull request modelica#4052 from HansOlsson/SMFix2
Browse files Browse the repository at this point in the history
Fix SI units by introducing reference phase impedance ZsRef
  • Loading branch information
TManikantan committed May 11, 2023
2 parents 143651c + 272d6b4 commit 620ece5
Show file tree
Hide file tree
Showing 18 changed files with 95 additions and 93 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,17 @@ model IM_SlipRing "Induction machine with slipring rotor"
final Lm=Lm,
final m=m) annotation (Placement(transformation(extent={{-10,-10},{10,10}},
rotation=270)));
parameter SI.Inductance Lm(start=3*sqrt(1 - 0.0667)/(2*pi
parameter SI.Inductance Lm(start=3*ZsRef*sqrt(1 - 0.0667)/(2*pi
*fsNominal)) "Stator main field inductance per phase"
annotation (Dialog(tab="Nominal resistances and inductances"));
parameter SI.Inductance Lrsigma(start=3*(1 - sqrt(1 -
parameter SI.Inductance Lrsigma(start=3*ZsRef*(1 - sqrt(1 -
0.0667))/(2*pi*fsNominal))
"Rotor stray inductance per phase w.r.t. rotor side"
annotation (Dialog(tab="Nominal resistances and inductances"));
parameter SI.Inductance Lrzero=Lrsigma
"Rotor zero sequence inductance w.r.t. rotor side"
annotation (Dialog(tab="Nominal resistances and inductances"));
parameter SI.Resistance Rr(start=0.04)
parameter SI.Resistance Rr(start=0.04*ZsRef)
"Rotor resistance per phase at TRef w.r.t. rotor side"
annotation (Dialog(tab="Nominal resistances and inductances"));
parameter SI.Temperature TrRef(start=293.15)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,14 @@ model IM_SquirrelCage
final Lm=Lm,
final m=m) annotation (Placement(transformation(extent={{-10,-10},{10,10}},
rotation=270)));
parameter SI.Inductance Lm(start=3*sqrt(1 - 0.0667)/(2*pi
parameter SI.Inductance Lm(start=3*ZsRef*sqrt(1 - 0.0667)/(2*pi
*fsNominal)) "Stator main field inductance per phase"
annotation (Dialog(tab="Nominal resistances and inductances"));
parameter SI.Inductance Lrsigma(start=3*(1 - sqrt(1 -
parameter SI.Inductance Lrsigma(start=3*ZsRef*(1 - sqrt(1 -
0.0667))/(2*pi*fsNominal))
"Rotor stray inductance per phase (equivalent three-phase winding)"
annotation (Dialog(tab="Nominal resistances and inductances"));
parameter SI.Resistance Rr(start=0.04)
parameter SI.Resistance Rr(start=0.04*ZsRef)
"Rotor resistance per phase (equivalent three-phase winding) at TRef"
annotation (Dialog(tab="Nominal resistances and inductances"));
parameter SI.Temperature TrRef(start=293.15)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ within Modelica.Electrical.Machines.BasicMachines.SynchronousMachines;
model SM_ElectricalExcited
"Electrical excited synchronous machine with damper cage"
extends Machines.Interfaces.PartialBasicInductionMachine(
Lssigma(start=0.1/(2*pi*fsNominal)),
Lssigma(start=0.1*ZsRef/(2*pi*fsNominal)),
final idq_ss=airGap.i_ss,
final idq_sr=airGap.i_sr,
final idq_rs=airGap.i_rs,
Expand Down Expand Up @@ -45,16 +45,16 @@ model SM_ElectricalExcited
"Operational temperature of (optional) damper cage" annotation (
Dialog(group="Operational temperatures", enable=not useThermalPort
and useDamperCage));
parameter SI.Inductance Lmd(start=1.5/(2*pi*fsNominal))
parameter SI.Inductance Lmd(start=1.5*ZsRef/(2*pi*fsNominal))
"Stator main field inductance per phase in d-axis"
annotation (Dialog(tab="Nominal resistances and inductances"));
parameter SI.Inductance Lmq(start=1.5/(2*pi*fsNominal))
parameter SI.Inductance Lmq(start=1.5*ZsRef/(2*pi*fsNominal))
"Stator main field inductance per phase in q-axis"
annotation (Dialog(tab="Nominal resistances and inductances"));
parameter Boolean useDamperCage(start=true)
"Enable / disable damper cage" annotation (Evaluate=true, Dialog(tab=
"Nominal resistances and inductances", group="Damper cage"));
parameter SI.Inductance Lrsigmad(start=0.05/(2*pi*
parameter SI.Inductance Lrsigmad(start=0.05*ZsRef/(2*pi*
fsNominal)) "Damper stray inductance in d-axis" annotation (
Dialog(
tab="Nominal resistances and inductances",
Expand All @@ -65,7 +65,7 @@ model SM_ElectricalExcited
tab="Nominal resistances and inductances",
group="Damper cage",
enable=useDamperCage));
parameter SI.Resistance Rrd(start=0.04)
parameter SI.Resistance Rrd(start=0.04*ZsRef)
"Damper resistance in d-axis at TRef" annotation (Dialog(
tab="Nominal resistances and inductances",
group="Damper cage",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
within Modelica.Electrical.Machines.BasicMachines.SynchronousMachines;
model SM_PermanentMagnet "Permanent magnet synchronous machine"
extends Machines.Interfaces.PartialBasicInductionMachine(
Lssigma(start=0.1/(2*pi*fsNominal)),
Lssigma(start=0.1*ZsRef/(2*pi*fsNominal)),
final idq_ss=airGap.i_ss,
final idq_sr=airGap.i_sr,
final idq_rs=airGap.i_rs,
Expand Down Expand Up @@ -47,16 +47,16 @@ model SM_PermanentMagnet "Permanent magnet synchronous machine"
and useDamperCage));
parameter SI.Voltage VsOpenCircuit(start=112.3)
"Open circuit RMS voltage per phase @ fsNominal";
parameter SI.Inductance Lmd(start=0.3/(2*pi*fsNominal))
parameter SI.Inductance Lmd(start=0.3*ZsRef/(2*pi*fsNominal))
"Stator main field inductance per phase in d-axis"
annotation (Dialog(tab="Nominal resistances and inductances"));
parameter SI.Inductance Lmq(start=0.3/(2*pi*fsNominal))
parameter SI.Inductance Lmq(start=0.3*ZsRef/(2*pi*fsNominal))
"Stator main field inductance per phase in q-axis"
annotation (Dialog(tab="Nominal resistances and inductances"));
parameter Boolean useDamperCage(start=true)
"Enable / disable damper cage" annotation (Evaluate=true, Dialog(tab=
"Nominal resistances and inductances", group="Damper cage"));
parameter SI.Inductance Lrsigmad(start=0.05/(2*pi*
parameter SI.Inductance Lrsigmad(start=0.05*ZsRef/(2*pi*
fsNominal)) "Damper stray inductance in d-axis" annotation (
Dialog(
tab="Nominal resistances and inductances",
Expand All @@ -67,7 +67,7 @@ model SM_PermanentMagnet "Permanent magnet synchronous machine"
tab="Nominal resistances and inductances",
group="Damper cage",
enable=useDamperCage));
parameter SI.Resistance Rrd(start=0.04)
parameter SI.Resistance Rrd(start=0.04*ZsRef)
"Damper resistance in d-axis at TRef" annotation (Dialog(
tab="Nominal resistances and inductances",
group="Damper cage",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,13 @@ within Modelica.Electrical.Machines.BasicMachines.SynchronousMachines;
model SM_ReluctanceRotor
"Synchronous machine with reluctance rotor and damper cage"
extends Machines.Interfaces.PartialBasicInductionMachine(
Lssigma(start=0.1/(2*pi*fsNominal)),
Lssigma(start=0.1*ZsRef/(2*pi*fsNominal)),
final idq_ss=airGap.i_ss,
final idq_sr=airGap.i_sr,
final idq_rs=airGap.i_rs,
final idq_rr=airGap.i_rr,
redeclare final Machines.Thermal.SynchronousMachines.ThermalAmbientSMR
thermalAmbient(final useDamperCage=useDamperCage, final Tr=TrOperational),

redeclare final Machines.Interfaces.InductionMachines.ThermalPortSMR
thermalPort(final useDamperCage=useDamperCage),
redeclare final Machines.Interfaces.InductionMachines.ThermalPortSMR
Expand Down Expand Up @@ -40,16 +39,16 @@ model SM_ReluctanceRotor
"Operational temperature of (optional) damper cage" annotation (
Dialog(group="Operational temperatures", enable=not useThermalPort
and useDamperCage));
parameter SI.Inductance Lmd(start=2.9/(2*pi*fsNominal))
parameter SI.Inductance Lmd(start=2.9*ZsRef/(2*pi*fsNominal))
"Stator main field inductance per phase in d-axis"
annotation (Dialog(tab="Nominal resistances and inductances"));
parameter SI.Inductance Lmq(start=0.9/(2*pi*fsNominal))
parameter SI.Inductance Lmq(start=0.9*ZsRef/(2*pi*fsNominal))
"Stator main field inductance per phase in q-axis"
annotation (Dialog(tab="Nominal resistances and inductances"));
parameter Boolean useDamperCage(start=true)
"Enable / disable damper cage" annotation (Evaluate=true, Dialog(tab=
"Nominal resistances and inductances", group="Damper cage"));
parameter SI.Inductance Lrsigmad(start=0.05/(2*pi*
parameter SI.Inductance Lrsigmad(start=0.05*ZsRef/(2*pi*
fsNominal)) "Damper stray inductance in d-axis" annotation (
Dialog(
tab="Nominal resistances and inductances",
Expand All @@ -60,7 +59,7 @@ model SM_ReluctanceRotor
tab="Nominal resistances and inductances",
group="Damper cage",
enable=useDamperCage));
parameter SI.Resistance Rrd(start=0.04)
parameter SI.Resistance Rrd(start=0.04*ZsRef)
"Damper resistance in d-axis at TRef" annotation (Dialog(
tab="Nominal resistances and inductances",
group="Damper cage",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ partial model PartialBasicInductionMachine
parameter SI.Temperature TsOperational(start=293.15)
"Operational temperature of stator resistance" annotation (Dialog(group=
"Operational temperatures", enable=not useThermalPort));
parameter SI.Resistance Rs(start=0.03)
parameter SI.Resistance Rs(start=0.03*ZsRef)
"Stator resistance per phase at TRef"
annotation (Dialog(tab="Nominal resistances and inductances"));
parameter SI.Temperature TsRef(start=293.15)
Expand All @@ -20,7 +20,7 @@ partial model PartialBasicInductionMachine
parameter SI.Inductance Lszero=Lssigma
"Stator zero sequence inductance"
annotation (Dialog(tab="Nominal resistances and inductances"));
parameter SI.Inductance Lssigma(start=3*(1 - sqrt(1 -
parameter SI.Inductance Lssigma(start=3*ZsRef*(1 - sqrt(1 -
0.0667))/(2*pi*fsNominal)) "Stator stray inductance per phase"
annotation (Dialog(tab="Nominal resistances and inductances"));
extends PartialBasicMachine(
Expand Down Expand Up @@ -100,8 +100,8 @@ partial model PartialBasicInductionMachine
final useHeatPort=true,
final m=m) annotation (Placement(transformation(extent={{90,70},{70,90}})));
replaceable
Machines.Interfaces.InductionMachines.PartialThermalPortInductionMachines thermalPort(final m=m) if
useThermalPort
Machines.Interfaces.InductionMachines.PartialThermalPortInductionMachines thermalPort(final m=m)
if useThermalPort
annotation (Placement(transformation(extent={{-10,-110},{10,-90}})));
replaceable
Machines.Interfaces.InductionMachines.PartialThermalAmbientInductionMachines
Expand All @@ -113,6 +113,7 @@ partial model PartialBasicInductionMachine
rotation=270,
origin={-30,-80})));
protected
final parameter SI.Impedance ZsRef = 1 "Reference phase impedance based on nominal voltage 100 V and nominal current 100 A; per phase";
constant Real pi = Modelica.Constants.pi;
replaceable
Machines.Interfaces.InductionMachines.PartialThermalPortInductionMachines internalThermalPort(final m=m)
Expand Down
6 changes: 4 additions & 2 deletions Modelica/Magnetic/FundamentalWave/BaseClasses/Machine.mo
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ partial model Machine "Base model of machines"
parameter SI.Temperature TsOperational(start=293.15)
"Operational temperature of stator resistance" annotation (Dialog(group=
"Operational temperatures", enable=not useThermalPort));
parameter SI.Resistance Rs(start=0.03)
parameter SI.Resistance Rs(start=ZsRef*0.03)
"Stator resistance per phase at TRef"
annotation (Dialog(tab="Nominal resistances and inductances"));
parameter SI.Temperature TsRef(start=293.15)
Expand All @@ -30,7 +30,7 @@ partial model Machine "Base model of machines"
"Temperature coefficient of stator resistance at 20 degC"
annotation (Dialog(tab="Nominal resistances and inductances"));
parameter Real effectiveStatorTurns=1 "Effective number of stator turns";
parameter SI.Inductance Lssigma(start=3*(1 - sqrt(1 -
parameter SI.Inductance Lssigma(start=3*ZsRef*(1 - sqrt(1 -
0.0667))/(2*pi*fsNominal)) "Stator stray inductance"
annotation (Dialog(tab="Nominal resistances and inductances"));
parameter Real ratioCommonStatorLeakage(final min=0, final max=1)=1
Expand Down Expand Up @@ -170,6 +170,8 @@ partial model Machine "Base model of machines"
annotation (Placement(transformation(extent={{-44,-94},{-36,-86}})));
Modelica.Mechanics.Rotational.Interfaces.Support internalSupport
annotation (Placement(transformation(extent={{56,-104},{64,-96}})));
protected
final parameter SI.Impedance ZsRef = 1 "Reference phase impedance based on nominal voltage 100 V and nominal current 100 A; per phase";
initial algorithm
assert(not Modelica.Math.isPowerOf2(m), String(m) +
" phases are currently not supported in this version of FundametalWave");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ model IM_SlipRing "Induction machine with slip ring rotor"
parameter Integer mr(min=3) = m "Number of rotor phases" annotation(Evaluate=true);
extends Magnetic.FundamentalWave.BaseClasses.Machine(
is(start=zeros(m)),
Rs(start=0.03),
Lssigma(start=3*(1 - sqrt(1 - 0.0667))/(2*pi*fsNominal)),
Rs(start=0.03*ZsRef),
Lssigma(start=3*ZsRef*(1 - sqrt(1 - 0.0667))/(2*pi*fsNominal)),
final L0(d=2.0*Lm/m/effectiveStatorTurns^2, q=2.0*Lm/m/effectiveStatorTurns
^2),
redeclare final
Expand All @@ -31,11 +31,11 @@ model IM_SlipRing "Induction machine with slip ring rotor"
Modelica.Electrical.Polyphase.Interfaces.PositivePlug plug_rp(final m=
mr) "Positive plug of rotor" annotation (Placement(transformation(
extent={{-110,70},{-90,50}})));
parameter SI.Inductance Lm(start=3*sqrt(1 - 0.0667)/(2*pi
parameter SI.Inductance Lm(start=3*ZsRef*sqrt(1 - 0.0667)/(2*pi
*fsNominal)) "Stator main field inductance" annotation (Dialog(
tab="Nominal resistances and inductances", groupImage=
"modelica://Modelica/Resources/Images/Electrical/Machines/IMS.png"));
parameter SI.Inductance Lrsigma(start=3*(1 - sqrt(1 -
parameter SI.Inductance Lrsigma(start=3*ZsRef*(1 - sqrt(1 -
0.0667))/(2*pi*fsNominal))
"Rotor leakage inductance w.r.t. rotor side"
annotation (Dialog(tab="Nominal resistances and inductances"));
Expand All @@ -45,7 +45,7 @@ model IM_SlipRing "Induction machine with slip ring rotor"
parameter SI.Inductance Lrzero=Lrsigma
"Rotor zero inductance w.r.t. rotor side"
annotation (Dialog(tab="Nominal resistances and inductances"));
parameter SI.Resistance Rr(start=0.04)
parameter SI.Resistance Rr(start=0.04*ZsRef)
"Rotor resistance per phase w.r.t. rotor side"
annotation (Dialog(tab="Nominal resistances and inductances"));
parameter SI.Temperature TrRef(start=293.15)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ model IM_SquirrelCage
"Induction machine with squirrel cage"
extends Magnetic.FundamentalWave.BaseClasses.Machine(
is(start=zeros(m)),
Rs(start=0.03),
Lssigma(start=3*(1 - sqrt(1 - 0.0667))/(2*pi*fsNominal)),
Rs(start=0.03*ZsRef),
Lssigma(start=3*ZsRef*(1 - sqrt(1 - 0.0667))/(2*pi*fsNominal)),
final L0(d=2.0*Lm/m/effectiveStatorTurns^2, q=2.0*Lm/m/effectiveStatorTurns
^2),
redeclare final
Expand All @@ -20,15 +20,15 @@ model IM_SquirrelCage
Modelica.Electrical.Machines.Interfaces.InductionMachines.PowerBalanceIMC
powerBalance(final lossPowerRotorWinding=sum(rotorCage.resistor.resistor.LossPower),
final lossPowerRotorCore=0));
parameter SI.Inductance Lm(start=3*sqrt(1 - 0.0667)/(2*pi
parameter SI.Inductance Lm(start=3*ZsRef*sqrt(1 - 0.0667)/(2*pi
*fsNominal)) "Stator main field inductance" annotation (Dialog(
tab="Nominal resistances and inductances", groupImage=
"modelica://Modelica/Resources/Images/Electrical/Machines/IMC.png"));
parameter SI.Inductance Lrsigma(start=3*(1 - sqrt(1 -
parameter SI.Inductance Lrsigma(start=3*ZsRef*(1 - sqrt(1 -
0.0667))/(2*pi*fsNominal))
"Rotor leakage inductance of equivalent m phase winding w.r.t. stator side"
annotation (Dialog(tab="Nominal resistances and inductances"));
parameter SI.Resistance Rr(start=0.04)
parameter SI.Resistance Rr(start=0.04*ZsRef)
"Rotor resistance of equivalent m phase winding w.r.t. stator side"
annotation (Dialog(tab="Nominal resistances and inductances"));
parameter SI.Temperature TrRef(start=293.15)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ model SM_ElectricalExcited
"Electrical excited synchronous machine with optional damper cage"
extends Magnetic.FundamentalWave.BaseClasses.Machine(
is(start=zeros(m)),
Rs(start=0.03),
Lssigma(start=0.1/(2*pi*fsNominal)),
Rs(start=0.03*ZsRef),
Lssigma(start=0.1*ZsRef/(2*pi*fsNominal)),
final L0(d=2.0*Lmd/m/effectiveStatorTurns^2, q=2.0*Lmq/m/
effectiveStatorTurns^2),
redeclare final
Expand All @@ -28,18 +28,18 @@ model SM_ElectricalExcited
final lossPowerBrush=brush.lossPower,
final lossPowerRotorCore=0));
// Main field parameters
parameter SI.Inductance Lmd(start=1.5/(2*pi*fsNominal))
parameter SI.Inductance Lmd(start=1.5*ZsRef/(2*pi*fsNominal))
"Stator main field inductance, d-axis" annotation (Dialog(tab=
"Nominal resistances and inductances", groupImage=
"modelica://Modelica/Resources/Images/Electrical/Machines/SMEE.png"));
parameter SI.Inductance Lmq(start=1.5/(2*pi*fsNominal))
parameter SI.Inductance Lmq(start=1.5*ZsRef/(2*pi*fsNominal))
"Stator main field inductance, q-axis"
annotation (Dialog(tab="Nominal resistances and inductances"));
// Rotor cage parameters
parameter Boolean useDamperCage(start=true)
"Enable/disable damper cage" annotation (Dialog(tab=
"Nominal resistances and inductances", group="Damper cage"));
parameter SI.Inductance Lrsigmad(start=0.05/(2*pi*
parameter SI.Inductance Lrsigmad(start=0.05*ZsRef/(2*pi*
fsNominal))
"Rotor damper cage leakage inductance, d-axis, w.r.t. stator side" annotation (
Dialog(
Expand All @@ -52,7 +52,7 @@ model SM_ElectricalExcited
tab="Nominal resistances and inductances",
group="Damper cage",
enable=useDamperCage));
parameter SI.Resistance Rrd(start=0.04)
parameter SI.Resistance Rrd(start=0.04*ZsRef)
"Rotor damper cage resistance, d-axis, w.r.t. stator side" annotation (Dialog(
tab="Nominal resistances and inductances",
group="Damper cage",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ model SM_PermanentMagnet
"Permanent magnet synchronous machine with optional damper cage"
extends Magnetic.FundamentalWave.BaseClasses.Machine(
is(start=zeros(m)),
Rs(start=0.03),
Lssigma(start=0.1/(2*pi*fsNominal)),
Rs(start=0.03*ZsRef),
Lssigma(start=0.1*ZsRef/(2*pi*fsNominal)),
final L0(d=2.0*Lmd/m/effectiveStatorTurns^2, q=2.0*Lmq/m/
effectiveStatorTurns^2),
redeclare final
Expand All @@ -26,18 +26,18 @@ model SM_PermanentMagnet
final lossPowerRotorCore=0,
final lossPowerPermanentMagnet=permanentMagnet.lossPower));
// Main field parameters
parameter SI.Inductance Lmd(start=0.3/(2*pi*fsNominal))
parameter SI.Inductance Lmd(start=0.3*ZsRef/(2*pi*fsNominal))
"Stator main field inductance, d-axis" annotation (Dialog(tab=
"Nominal resistances and inductances", groupImage=
"modelica://Modelica/Resources/Images/Electrical/Machines/SMPM.png"));
parameter SI.Inductance Lmq(start=0.3/(2*pi*fsNominal))
parameter SI.Inductance Lmq(start=0.3*ZsRef/(2*pi*fsNominal))
"Stator main field inductance, q-axis"
annotation (Dialog(tab="Nominal resistances and inductances"));
// Rotor cage parameters
parameter Boolean useDamperCage(start=true)
"Enable/disable damper cage" annotation (Dialog(tab=
"Nominal resistances and inductances", group="Damper cage"));
parameter SI.Inductance Lrsigmad(start=0.05/(2*pi*
parameter SI.Inductance Lrsigmad(start=0.05*ZsRef/(2*pi*
fsNominal))
"Rotor damper cage leakage inductance, d-axis, w.r.t. stator side" annotation (
Dialog(
Expand All @@ -50,7 +50,7 @@ model SM_PermanentMagnet
tab="Nominal resistances and inductances",
group="Damper cage",
enable=useDamperCage));
parameter SI.Resistance Rrd(start=0.04)
parameter SI.Resistance Rrd(start=0.04*ZsRef)
"Rotor damper cage resistance, d-axis, w.r.t. stator side" annotation (Dialog(
tab="Nominal resistances and inductances",
group="Damper cage",
Expand Down

0 comments on commit 620ece5

Please sign in to comment.