From 272d6b450fbea87564c0f9936c869f7c93e68d13 Mon Sep 17 00:00:00 2001 From: Christian Kral Date: Mon, 14 Nov 2022 23:23:59 +0100 Subject: [PATCH] Apply changes to Modelica.Magnetic.QuasiStaic.FundamentalWave --- .../FundamentalWave/BaseClasses/Machine.mo | 2 ++ .../InductionMachines/IM_SlipRing.mo | 14 ++++++-------- .../InductionMachines/IM_SquirrelCage.mo | 10 +++++----- .../SynchronousMachines/SM_ElectricalExcited.mo | 16 ++++++++-------- .../SynchronousMachines/SM_PermanentMagnet.mo | 16 ++++++++-------- .../SynchronousMachines/SM_ReluctanceRotor.mo | 16 ++++++++-------- 6 files changed, 37 insertions(+), 37 deletions(-) diff --git a/Modelica/Magnetic/QuasiStatic/FundamentalWave/BaseClasses/Machine.mo b/Modelica/Magnetic/QuasiStatic/FundamentalWave/BaseClasses/Machine.mo index 5cfb5181e5..be48864dae 100644 --- a/Modelica/Magnetic/QuasiStatic/FundamentalWave/BaseClasses/Machine.mo +++ b/Modelica/Magnetic/QuasiStatic/FundamentalWave/BaseClasses/Machine.mo @@ -196,6 +196,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"); diff --git a/Modelica/Magnetic/QuasiStatic/FundamentalWave/BasicMachines/InductionMachines/IM_SlipRing.mo b/Modelica/Magnetic/QuasiStatic/FundamentalWave/BasicMachines/InductionMachines/IM_SlipRing.mo index 74a523492b..24cf0233f1 100644 --- a/Modelica/Magnetic/QuasiStatic/FundamentalWave/BasicMachines/InductionMachines/IM_SlipRing.mo +++ b/Modelica/Magnetic/QuasiStatic/FundamentalWave/BasicMachines/InductionMachines/IM_SlipRing.mo @@ -2,8 +2,8 @@ within Modelica.Magnetic.QuasiStatic.FundamentalWave.BasicMachines.InductionMach model IM_SlipRing "Induction machine with slip ring rotor" parameter Integer mr(min=3) = m "Number of rotor phases" annotation(Evaluate=true); extends BaseClasses.Machine( - 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 @@ -22,9 +22,7 @@ model IM_SlipRing "Induction machine with slip ring rotor" final lossPowerRotorCore=rotor.core.lossPower, final lossPowerBrush=0, final powerRotor= - Modelica.Electrical.QuasiStatic.Polyphase.Functions.activePower( - vr, - ir))); + Modelica.Electrical.QuasiStatic.Polyphase.Functions.activePower(vr, ir))); Modelica.Electrical.QuasiStatic.Polyphase.Interfaces.NegativePlug plug_rn(final m=mr) "Negative plug of rotor" annotation (Placement( @@ -32,15 +30,15 @@ model IM_SlipRing "Induction machine with slip ring rotor" Modelica.Electrical.QuasiStatic.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 per phase" 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 per phase 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) diff --git a/Modelica/Magnetic/QuasiStatic/FundamentalWave/BasicMachines/InductionMachines/IM_SquirrelCage.mo b/Modelica/Magnetic/QuasiStatic/FundamentalWave/BasicMachines/InductionMachines/IM_SquirrelCage.mo index 80879647ea..6310ac21f6 100644 --- a/Modelica/Magnetic/QuasiStatic/FundamentalWave/BasicMachines/InductionMachines/IM_SquirrelCage.mo +++ b/Modelica/Magnetic/QuasiStatic/FundamentalWave/BasicMachines/InductionMachines/IM_SquirrelCage.mo @@ -2,8 +2,8 @@ within Modelica.Magnetic.QuasiStatic.FundamentalWave.BasicMachines.InductionMach model IM_SquirrelCage "Induction machine with squirrel cage" // Removed from extension of FUNDAMENTAL WAVE model: is(start=zeros(m)) ## extends BaseClasses.Machine( - 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 @@ -19,15 +19,15 @@ model IM_SquirrelCage "Induction machine with squirrel cage" 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 per phase" 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) diff --git a/Modelica/Magnetic/QuasiStatic/FundamentalWave/BasicMachines/SynchronousMachines/SM_ElectricalExcited.mo b/Modelica/Magnetic/QuasiStatic/FundamentalWave/BasicMachines/SynchronousMachines/SM_ElectricalExcited.mo index fb1e3f09a2..ee45004007 100644 --- a/Modelica/Magnetic/QuasiStatic/FundamentalWave/BasicMachines/SynchronousMachines/SM_ElectricalExcited.mo +++ b/Modelica/Magnetic/QuasiStatic/FundamentalWave/BasicMachines/SynchronousMachines/SM_ElectricalExcited.mo @@ -2,8 +2,8 @@ within Modelica.Magnetic.QuasiStatic.FundamentalWave.BasicMachines.SynchronousMa model SM_ElectricalExcited "Electrical excited synchronous machine with optional damper cage" extends BaseClasses.Machine( - 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 @@ -27,18 +27,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 per phase, 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 per phase, 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( @@ -51,7 +51,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", @@ -122,8 +122,8 @@ model SM_ElectricalExcited final TOperational=TrOperational, final RRef(d=Rrd, q=Rrq), final alpha20=alpha20r, - final effectiveTurns=sqrt(m/2.0)*effectiveStatorTurns) if - useDamperCage + final effectiveTurns=sqrt(m/2.0)*effectiveStatorTurns) + if useDamperCage "Symmetric rotor cage winding including resistances and stray inductances" annotation (Placement(transformation( extent={{-10,-10},{10,10}}, diff --git a/Modelica/Magnetic/QuasiStatic/FundamentalWave/BasicMachines/SynchronousMachines/SM_PermanentMagnet.mo b/Modelica/Magnetic/QuasiStatic/FundamentalWave/BasicMachines/SynchronousMachines/SM_PermanentMagnet.mo index 0c4117087b..91ed231ff6 100644 --- a/Modelica/Magnetic/QuasiStatic/FundamentalWave/BasicMachines/SynchronousMachines/SM_PermanentMagnet.mo +++ b/Modelica/Magnetic/QuasiStatic/FundamentalWave/BasicMachines/SynchronousMachines/SM_PermanentMagnet.mo @@ -2,8 +2,8 @@ within Modelica.Magnetic.QuasiStatic.FundamentalWave.BasicMachines.SynchronousMa model SM_PermanentMagnet "Permanent magnet synchronous machine with optional damper cage" extends BaseClasses.Machine( - 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 @@ -25,18 +25,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 per phase, 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 per phase, 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( @@ -49,7 +49,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", @@ -106,8 +106,8 @@ model SM_PermanentMagnet final TRef=TrRef, final TOperational=TrOperational, final alpha20=alpha20r, - final effectiveTurns=sqrt(m/2.0)*effectiveStatorTurns) if - useDamperCage + final effectiveTurns=sqrt(m/2.0)*effectiveStatorTurns) + if useDamperCage "Symmetric rotor cage winding including resistances and stray inductances" annotation (Placement(transformation( extent={{-10,-10},{10,10}}, diff --git a/Modelica/Magnetic/QuasiStatic/FundamentalWave/BasicMachines/SynchronousMachines/SM_ReluctanceRotor.mo b/Modelica/Magnetic/QuasiStatic/FundamentalWave/BasicMachines/SynchronousMachines/SM_ReluctanceRotor.mo index b7ef4a9a10..b823247b06 100644 --- a/Modelica/Magnetic/QuasiStatic/FundamentalWave/BasicMachines/SynchronousMachines/SM_ReluctanceRotor.mo +++ b/Modelica/Magnetic/QuasiStatic/FundamentalWave/BasicMachines/SynchronousMachines/SM_ReluctanceRotor.mo @@ -2,8 +2,8 @@ within Modelica.Magnetic.QuasiStatic.FundamentalWave.BasicMachines.SynchronousMa model SM_ReluctanceRotor "Synchronous reluctance machine with optional damper cage" extends BaseClasses.Machine( - 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 @@ -21,18 +21,18 @@ model SM_ReluctanceRotor powerBalance(final lossPowerRotorWinding=damperCageLossPower, final lossPowerRotorCore=0)); - 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, d-axis" annotation (Dialog( tab="Nominal resistances and inductances", groupImage= "modelica://Modelica/Resources/Images/Electrical/Machines/SMR.png")); - 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, 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( @@ -45,7 +45,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) "Rotor damper cage resistance, d-axis, w.r.t. stator side" annotation (Dialog( tab="Nominal resistances and inductances", group="Damper cage", @@ -91,8 +91,8 @@ model SM_ReluctanceRotor final TRef=TrRef, final TOperational=TrOperational, final alpha20=alpha20r, - final effectiveTurns=sqrt(m/2.0)*effectiveStatorTurns) if - useDamperCage + final effectiveTurns=sqrt(m/2.0)*effectiveStatorTurns) + if useDamperCage "Symmetric rotor cage winding including resistances and stray inductances" annotation (Placement(transformation( extent={{-10,-10},{10,10}},