diff --git a/Modelica/Electrical/Machines/BasicMachines/Components/ZeroImpedance.mo b/Modelica/Electrical/Machines/BasicMachines/Components/ZeroImpedance.mo new file mode 100644 index 0000000000..a37b4ede41 --- /dev/null +++ b/Modelica/Electrical/Machines/BasicMachines/Components/ZeroImpedance.mo @@ -0,0 +1,30 @@ +within Modelica.Electrical.Machines.BasicMachines.Components; +model ZeroImpedance "Zero system impedance" + extends Analog.Interfaces.OnePort(i(start=0)); + parameter SI.Inductance L "Inductance"; + parameter Boolean useZeroSystem=true "= true, if zero current is explicitely computed" annotation(Evaluate = true); +equation + if useZeroSystem then + v = L*der(i); + else + i = 0; + end if; + + annotation (Icon(graphics={ + Line(points={{-90,0},{-60,0}}, color={0,0,255}), + Line(points={{62,0},{90,0}}, color={0,0,255}), + Ellipse(extent={{-50,30},{-8,-32}}, lineColor={0,0,255}), + Ellipse(extent={{-20,30},{22,-32}}, lineColor={0,0,255}), + Ellipse(extent={{10,30},{52,-32}}, lineColor={0,0,255}), + Text( + extent={{-150,50},{150,90}}, + textString="%name", + textColor={0,0,255}), + Rectangle(extent={{-60,30},{-50,-32}}, lineColor={28,108,200}), + Rectangle(extent={{52,30},{62,-32}}, lineColor={28,108,200})}), + Documentation(info=" +
+For a short explanation of the zero system see the User's Guide of the FundamentalWave library. +
+")); +end ZeroImpedance; diff --git a/Modelica/Electrical/Machines/BasicMachines/Components/package.order b/Modelica/Electrical/Machines/BasicMachines/Components/package.order index 2766671fed..bb1ecc2440 100644 --- a/Modelica/Electrical/Machines/BasicMachines/Components/package.order +++ b/Modelica/Electrical/Machines/BasicMachines/Components/package.order @@ -1,6 +1,7 @@ PartialAirGap AirGapS AirGapR +ZeroImpedance Inductor SquirrelCage DamperCage diff --git a/Modelica/Electrical/Machines/Examples/InductionMachines/IMC_YD.mo b/Modelica/Electrical/Machines/Examples/InductionMachines/IMC_YD.mo index 77ee87ee6e..6e7d13a277 100644 --- a/Modelica/Electrical/Machines/Examples/InductionMachines/IMC_YD.mo +++ b/Modelica/Electrical/Machines/Examples/InductionMachines/IMC_YD.mo @@ -16,6 +16,7 @@ model IMC_YD Machines.BasicMachines.InductionMachines.IM_SquirrelCage aimc( p=aimcData.p, fsNominal=aimcData.fsNominal, + useZeroSystem=false, Rs=aimcData.Rs, TsRef=aimcData.TsRef, alpha20s(displayUnit="1/K") = aimcData.alpha20s, diff --git a/Modelica/Electrical/Machines/Interfaces/PartialBasicInductionMachine.mo b/Modelica/Electrical/Machines/Interfaces/PartialBasicInductionMachine.mo index 81a47c82e2..d0e8d08c93 100644 --- a/Modelica/Electrical/Machines/Interfaces/PartialBasicInductionMachine.mo +++ b/Modelica/Electrical/Machines/Interfaces/PartialBasicInductionMachine.mo @@ -5,6 +5,8 @@ partial model PartialBasicInductionMachine parameter Integer p(min=1, start=2) "Number of pole pairs (Integer)"; parameter SI.Frequency fsNominal(start=50) "Nominal frequency"; + parameter Boolean useZeroSystem=true "= true, if zero current is explicitely computed" + annotation(Evaluate=true); parameter SI.Temperature TsOperational(start=293.15) "Operational temperature of stator resistance" annotation (Dialog(group= "Operational temperatures", enable=not useThermalPort)); @@ -81,7 +83,8 @@ partial model PartialBasicInductionMachine extent={{-10,-10},{10,10}}, rotation=270, origin={20,20}))); - Modelica.Electrical.Analog.Basic.Inductor lszero(final L=Lszero) + BasicMachines.Components.ZeroImpedance lszero(final L=Lszero, final + useZeroSystem=useZeroSystem) annotation (Placement(transformation(extent={{0,40},{-20,60}}))); Machines.Losses.InductionMachines.Core statorCore( final coreParameters=statorCoreParameters, diff --git a/Modelica/Electrical/Machines/UsersGuide/Concept.mo b/Modelica/Electrical/Machines/UsersGuide/Concept.mo index ef644cf569..c2784c6929 100644 --- a/Modelica/Electrical/Machines/UsersGuide/Concept.mo +++ b/Modelica/Electrical/Machines/UsersGuide/Concept.mo @@ -13,7 +13,8 @@ class Concept "Concept"
-You may have a look at a short summary of space phasor theory at https://www.haumer.at/refimg/SpacePhasors.pdf
+You may have a look at a short summary of space phasor theory at https://www.haumer.at/refimg/SpacePhasors.pdf
+For a short explanation of the zero system see the User's Guide of the FundamentalWave library.
Model of a polyphase zero sequence inductor. +For a short explanation of the zero system see the User's Guide of the FundamentalWave library.
@@ -30,5 +36,7 @@ v = Lzero*sum(der(i)) = Lzero*der(sum(i))
textColor={0,0,255}),
Text(
extent={{-150,-80},{150,-40}},
- textString="m=%m")}));
+ textString="m=%m"),
+ Rectangle(extent={{-60,30},{-50,-32}}, lineColor={28,108,200}),
+ Rectangle(extent={{52,30},{62,-32}}, lineColor={28,108,200})}));
end ZeroInductor;
diff --git a/Modelica/Magnetic/FundamentalWave/BaseClasses/Machine.mo b/Modelica/Magnetic/FundamentalWave/BaseClasses/Machine.mo
index 7b8d849da4..e859fdbce2 100644
--- a/Modelica/Magnetic/FundamentalWave/BaseClasses/Machine.mo
+++ b/Modelica/Magnetic/FundamentalWave/BaseClasses/Machine.mo
@@ -15,6 +15,8 @@ partial model Machine "Base model of machines"
parameter Integer p(min=1, start=2) "Number of pole pairs (Integer)";
parameter SI.Frequency fsNominal(start=50)
"Nominal frequency";
+ parameter Boolean useZeroSystem=true "= true, if zero current is explicitely computed"
+ annotation(Evaluate=true);
parameter SI.Temperature TsOperational(start=293.15)
"Operational temperature of stator resistance" annotation (Dialog(group=
"Operational temperatures", enable=not useThermalPort));
@@ -116,6 +118,7 @@ partial model Machine "Base model of machines"
final TRef=TsRef,
final Lsigma=Lssigma,
final ratioCommonLeakage=ratioCommonStatorLeakage,
+ final useZeroSystem=useZeroSystem,
final effectiveTurns=effectiveStatorTurns,
final TOperational=TsOperational,
final GcRef=statorCoreParameters.GcRef,
diff --git a/Modelica/Magnetic/FundamentalWave/BasicMachines/Components/SymmetricPolyphaseWinding.mo b/Modelica/Magnetic/FundamentalWave/BasicMachines/Components/SymmetricPolyphaseWinding.mo
index b34ead7c14..492871a0a9 100644
--- a/Modelica/Magnetic/FundamentalWave/BasicMachines/Components/SymmetricPolyphaseWinding.mo
+++ b/Modelica/Magnetic/FundamentalWave/BasicMachines/Components/SymmetricPolyphaseWinding.mo
@@ -43,6 +43,7 @@ model SymmetricPolyphaseWinding
parameter Real ratioCommonLeakage(final min=0, final max=1)=1
"Ratio of common stray inductance / total stray inductance";
parameter SI.Inductance Lzero "Zero sequence inductance of winding";
+ parameter Boolean useZeroSystem=true "= true, if zero current is explicitely computed";
parameter Real effectiveTurns=1 "Effective number of turns per phase";
parameter SI.Conductance GcRef "Electrical reference core loss reluctance";
final parameter Integer nBase=Modelica.Electrical.Polyphase.Functions.numberOfSymmetricBaseSystems(m)
@@ -76,7 +77,8 @@ model SymmetricPolyphaseWinding
final Lsigma=(1 - ratioCommonLeakage)*Lsigma)
"Symmetric winding"
annotation (Placement(transformation(extent={{-10,-20},{10,0}})));
- Modelica.Electrical.Polyphase.Basic.ZeroInductor zeroInductor(final m=m, final Lzero=Lzero)
+ Modelica.Electrical.Polyphase.Basic.ZeroInductor zeroInductor(final m=m, final Lzero=Lzero,
+ final useZeroSystem=useZeroSystem)
if mBase<>2 "Zero sequence inductance of winding"
annotation (Placement(transformation(
origin={-70,-30},
diff --git a/Modelica/Magnetic/FundamentalWave/Examples/BasicMachines/InductionMachines/IMC_YD.mo b/Modelica/Magnetic/FundamentalWave/Examples/BasicMachines/InductionMachines/IMC_YD.mo
index 09a8c9fd8a..0a4a5e67ea 100644
--- a/Modelica/Magnetic/FundamentalWave/Examples/BasicMachines/InductionMachines/IMC_YD.mo
+++ b/Modelica/Magnetic/FundamentalWave/Examples/BasicMachines/InductionMachines/IMC_YD.mo
@@ -17,6 +17,7 @@ model IMC_YD
Magnetic.FundamentalWave.BasicMachines.InductionMachines.IM_SquirrelCage aimc(
p=aimcData.p,
fsNominal=aimcData.fsNominal,
+ useZeroSystem=false,
TsRef=aimcData.TsRef,
alpha20s(displayUnit="1/K") = aimcData.alpha20s,
Jr=aimcData.Jr,
@@ -37,8 +38,7 @@ model IMC_YD
TsOperational=293.15,
effectiveStatorTurns=aimcData.effectiveStatorTurns,
alpha20r=aimcData.alpha20r,
- TrOperational=293.15,
- stator(zeroInductor(i0(nominal=10))))
+ TrOperational=293.15)
annotation (Placement(transformation(extent={{20,10},{40,30}})));
Modelica.Electrical.Machines.Sensors.CurrentQuasiRMSSensor currentQuasiRMSSensor
annotation (Placement(transformation(
diff --git a/Modelica/Magnetic/FundamentalWave/UsersGuide/ZeroSystem.mo b/Modelica/Magnetic/FundamentalWave/UsersGuide/ZeroSystem.mo
new file mode 100644
index 0000000000..a3b612b23a
--- /dev/null
+++ b/Modelica/Magnetic/FundamentalWave/UsersGuide/ZeroSystem.mo
@@ -0,0 +1,27 @@
+within Modelica.Magnetic.FundamentalWave.UsersGuide;
+class ZeroSystem "Explanation of the zero system"
+ extends Modelica.Icons.Information;
+ annotation (Documentation(info="
+
+The polyphase winding relates the currents to the magnetic potential phasor of the fundamental wave and the derivative of the magnetic flux phasor of the fundamental wave to the voltages,
+taking the orientation of the phases into account. However, for the number of phases m > 2 the zero sequence system has to be treated with care.
+This happens in the zero inductance:
+
+
+i0 = sum(i)/m;
+v0 = Lzero*der(i0);
+v0 is included in all phases with the same phase shift.
+
+
+This is equivalent to the zero inductor used in the
+machine model of Modelica.Electrical.Machines after applying
+space phasor transformation.
+
+
+In some cases it could be desired to suppress the calculation of the zero system. This can be done in both machine models (Modelica.Magnetic.FundamentalWave and
+Modelica.Electrical.Machines) by setting the Boolean parameter useZeroSystem = false (which by default is true).
+This ensures that the zero current is equal to zero and there is no need to calculate it:
+i0 = 0;
+
+"));
+end ZeroSystem;
diff --git a/Modelica/Magnetic/FundamentalWave/UsersGuide/package.order b/Modelica/Magnetic/FundamentalWave/UsersGuide/package.order
index 2f15c38f95..7292347b2f 100644
--- a/Modelica/Magnetic/FundamentalWave/UsersGuide/package.order
+++ b/Modelica/Magnetic/FundamentalWave/UsersGuide/package.order
@@ -1,6 +1,7 @@
Concept
Polyphase
WindingModel
+ZeroSystem
Parameters
Contact
ReleaseNotes
diff --git a/Modelica/Magnetic/QuasiStatic/FundamentalWave/Examples/BasicMachines/InductionMachines/IMC_YD.mo b/Modelica/Magnetic/QuasiStatic/FundamentalWave/Examples/BasicMachines/InductionMachines/IMC_YD.mo
index a8af2c617d..5ad88469d8 100644
--- a/Modelica/Magnetic/QuasiStatic/FundamentalWave/Examples/BasicMachines/InductionMachines/IMC_YD.mo
+++ b/Modelica/Magnetic/QuasiStatic/FundamentalWave/Examples/BasicMachines/InductionMachines/IMC_YD.mo
@@ -78,6 +78,7 @@ model IMC_YD "Induction machine with squirrel cage starting Y-D"
Magnetic.FundamentalWave.BasicMachines.InductionMachines.IM_SquirrelCage imc(
p=imcData.p,
fsNominal=imcData.fsNominal,
+ useZeroSystem=false,
TsRef=imcData.TsRef,
alpha20s(displayUnit="1/K") = imcData.alpha20s,
Jr=imcData.Jr,
@@ -98,8 +99,7 @@ model IMC_YD "Induction machine with squirrel cage starting Y-D"
TsOperational=293.15,
effectiveStatorTurns=imcData.effectiveStatorTurns,
alpha20r=imcData.alpha20r,
- TrOperational=293.15,
- stator(zeroInductor(i0(nominal=10))))
+ TrOperational=293.15)
annotation (Placement(transformation(extent={{20,-90},{40,-70}})));
Modelica.Electrical.Machines.Sensors.CurrentQuasiRMSSensor
currentQuasiRMSSensor annotation (Placement(transformation(extent={{-10,10},{10,-10}}, rotation=270,