Skip to content

Commit fe8aa5c

Browse files
authored
Merge pull request OpenIPSL#343 from fachif/master
New IEEE Microgrid and new components
2 parents 541d54c + 3213bd3 commit fe8aa5c

36 files changed

+1585
-0
lines changed
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
within OpenIPSL.Electrical.Controls.PSSE.TG;
2+
model DEGOV "DEGOV - Woodward Diesel Governor"
3+
extends BaseClasses.BaseGovernor;
4+
5+
parameter Modelica.Units.SI.Time T1 "Governor Mechanism Time Constant";
6+
parameter Modelica.Units.SI.Time T2 "Turbine Power Time Constant";
7+
parameter Modelica.Units.SI.Time T3 "Turbine Exhaust Temperature Time Constant";
8+
parameter OpenIPSL.Types.PerUnit K "Governor Gain";
9+
parameter Modelica.Units.SI.Time T4 "Governor Lead Time Constant";
10+
parameter Modelica.Units.SI.Time T5 "Governor Lag Time Constant";
11+
parameter Modelica.Units.SI.Time T6 "Actuator Time Constant";
12+
parameter Modelica.Units.SI.Time TD "Engine Time Delay";
13+
parameter OpenIPSL.Types.PerUnit TMAX "Upper Limit";
14+
parameter OpenIPSL.Types.PerUnit TMIN "Lower Limit";
15+
16+
17+
Modelica.Blocks.Continuous.TransferFunction transferFunction(b={-T3,-1}, a={
18+
T2*T1,T1,1},
19+
initType=Modelica.Blocks.Types.Init.InitialOutput,
20+
y_start=0)
21+
annotation (Placement(transformation(extent={{-140,-10},{-120,10}})));
22+
Modelica.Blocks.Continuous.Integrator integrator(k=K, y_start=P0)
23+
annotation (Placement(transformation(extent={{-100,-10},{-80,10}})));
24+
NonElectrical.Continuous.LeadLag leadLag(
25+
K=1,
26+
T1=T4,
27+
T2=T5,
28+
y_start=P0)
29+
annotation (Placement(transformation(extent={{-60,-10},{-40,10}})));
30+
NonElectrical.Continuous.SimpleLagLim simpleLagLim(
31+
K=1,
32+
T=T6,
33+
y_start=P0,
34+
outMax=TMAX,
35+
outMin=TMIN)
36+
annotation (Placement(transformation(extent={{-20,-10},{0,10}})));
37+
Modelica.Blocks.Nonlinear.FixedDelay fixedDelay(delayTime=TD)
38+
annotation (Placement(transformation(extent={{20,-10},{40,10}})));
39+
Modelica.Blocks.Math.Product product1
40+
annotation (Placement(transformation(extent={{80,-10},{100,10}})));
41+
Modelica.Blocks.Math.Add add
42+
annotation (Placement(transformation(extent={{-80,-124},{-60,-104}})));
43+
Modelica.Blocks.Sources.Constant Constant(k=1)
44+
annotation (Placement(transformation(extent={{-140,-80},{-120,-60}})));
45+
46+
protected
47+
parameter Types.PerUnit P0(fixed=false) "Power reference of the governor";
48+
initial equation
49+
P0 = PMECH0;
50+
51+
equation
52+
connect(SPEED, transferFunction.u) annotation (Line(points={{-240,-120},{-180,
53+
-120},{-180,0},{-142,0}}, color={0,0,127}));
54+
connect(transferFunction.y, integrator.u)
55+
annotation (Line(points={{-119,0},{-102,0}}, color={0,0,127}));
56+
connect(integrator.y, leadLag.u)
57+
annotation (Line(points={{-79,0},{-62,0}}, color={0,0,127}));
58+
connect(leadLag.y, simpleLagLim.u)
59+
annotation (Line(points={{-39,0},{-22,0}}, color={0,0,127}));
60+
connect(simpleLagLim.y, fixedDelay.u)
61+
annotation (Line(points={{1,0},{18,0}}, color={0,0,127}));
62+
connect(fixedDelay.y, product1.u1)
63+
annotation (Line(points={{41,0},{60,0},{60,6},{78,6}}, color={0,0,127}));
64+
connect(Constant.y, add.u1) annotation (Line(points={{-119,-70},{-94,-70},{-94,
65+
-108},{-82,-108}}, color={0,0,127}));
66+
connect(add.u2, transferFunction.u) annotation (Line(points={{-82,-120},{-180,
67+
-120},{-180,0},{-142,0}}, color={0,0,127}));
68+
connect(add.y, product1.u2) annotation (Line(points={{-59,-114},{70,-114},{70,
69+
-6},{78,-6}}, color={0,0,127}));
70+
connect(product1.y, PMECH)
71+
annotation (Line(points={{101,0},{250,0}}, color={0,0,127}));
72+
annotation (Icon(graphics={
73+
Text(
74+
extent={{-100,160},{100,100}},
75+
lineColor={28,108,200},
76+
textString="DEGOV")}));
77+
end DEGOV;

OpenIPSL/Electrical/Controls/PSSE/TG/package.order

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
ConstantPower
2+
DEGOV
23
GAST
34
GGOV1
45
GGOV1DU
Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
within OpenIPSL.Electrical.Machines.PSSE.BaseClasses;
2+
partial model baseMotor "Base model for the PSSE three-phase induction motor models"
3+
4+
parameter OpenIPSL.Types.ApparentPower M_b = 15e6 "Machine base power"
5+
annotation (Dialog(group="Power flow data"));
6+
extends OpenIPSL.Electrical.Essentials.pfComponent(
7+
final enabledisplayPF=false,
8+
final enablefn=false,
9+
final enableV_b=false,
10+
final enableangle_0=false,
11+
final enablev_0=false,
12+
final enableQ_0=false,
13+
final enableP_0=false,
14+
final enableS_b=true);
15+
16+
import OpenIPSL.NonElectrical.Functions.SE;
17+
18+
parameter Boolean Sup = true "True: Start-up process, False: Steady-state condition" annotation (Dialog(group="Motor Setup"));
19+
parameter Boolean Ctrl = true "True: Model for VSD control, False: Model not controllable"
20+
annotation (Dialog(group="Motor Setup"));
21+
parameter Real N = 1 "Number of pair of Poles"
22+
annotation (Dialog(group="Machine parameters"));
23+
parameter Modelica.Units.SI.Time H = 0.4 "Inertia constant"
24+
annotation (Dialog(group="Machine parameters"));
25+
26+
OpenIPSL.Types.PerUnit v "Bus voltage magnitude";
27+
OpenIPSL.Types.Angle anglev "Bus voltage angle";
28+
OpenIPSL.Types.Angle delta "Bus voltage angle";
29+
OpenIPSL.Types.PerUnit s "Induction motor slip";
30+
OpenIPSL.Types.PerUnit P "Active power";
31+
OpenIPSL.Types.PerUnit Q "Reactive power";
32+
Modelica.Units.SI.AngularVelocity nr "Rotor speed";
33+
Modelica.Units.SI.AngularVelocity ns "Synchronous speed";
34+
Modelica.Units.SI.AngularVelocity w_sync "Controllable synchronous speed";
35+
OpenIPSL.Types.PerUnit P_motor "Active power in motor base power";
36+
OpenIPSL.Types.PerUnit Q_motor "Reactive power in motor base power";
37+
OpenIPSL.Types.PerUnit Vr "Real part of terminal voltage";
38+
OpenIPSL.Types.PerUnit Vi "Imaginary part of terminal voltage";
39+
OpenIPSL.Types.PerUnit Ir "Real part of terminal current";
40+
OpenIPSL.Types.PerUnit Ii "Imaginary part of terminal current";
41+
OpenIPSL.Types.PerUnit Imag "Terminal current magnitude";
42+
OpenIPSL.Types.PerUnit Te_motor "Electromagnetic torque in motor base";
43+
OpenIPSL.Types.PerUnit Te_sys "Electromagnetic torque in system base";
44+
45+
Modelica.Blocks.Math.Gain we_fix(k=1) "Necessary gain for controllable synchronous speed functionality"
46+
annotation (Placement(transformation(extent={{80,-88},{90,-78}})));
47+
Modelica.Blocks.Sources.Constant we_source_fix(k=0)
48+
if not Ctrl "Necessary source for controllable synchrnous speed functionality"
49+
annotation (Placement(transformation(extent={{32,-86},{44,-74}})));
50+
OpenIPSL.Interfaces.PwPin p(
51+
vr(start=vr0),
52+
vi(start=vi0),
53+
ir(start=ir0_sys),
54+
ii(start=ii0_sys))
55+
annotation (Placement(transformation(extent={{90,-10},{110,10}})));
56+
Modelica.Blocks.Interfaces.RealOutput wr
57+
"Absolute angular velocity of flange as output signal (rad/s)"
58+
annotation (Placement(transformation(extent={{-100,-10},{-120,10}}),
59+
iconTransformation(
60+
extent={{20,-20},{-20,20}},
61+
rotation=90,
62+
origin={60,-120})));
63+
Modelica.Blocks.Interfaces.RealInput we if Ctrl "Input for controllable synchronous speed functionality (rad/s)" annotation (Placement(
64+
transformation(
65+
extent={{-20,-20},{20,20}},
66+
rotation=90,
67+
origin={60,-120}), iconTransformation(
68+
extent={{-20,-20},{20,20}},
69+
rotation=90,
70+
origin={-60,-120})));
71+
72+
protected
73+
parameter OpenIPSL.Types.PerUnit p0 = P_0/M_b "Initial active power";
74+
parameter OpenIPSL.Types.PerUnit q0 = Q_0/M_b "Initial reactive power";
75+
parameter Modelica.Units.SI.AngularVelocity w_b=2*C.pi*fn/N "Base freq in rad/s";
76+
parameter OpenIPSL.Types.PerUnit vr0=v_0*cos(angle_0) "Initial real voltage";
77+
parameter OpenIPSL.Types.PerUnit vi0=v_0*sin(angle_0) "Initial imaginary voltage";
78+
parameter OpenIPSL.Types.PerUnit ir0=(p0*vr0 + q0*vi0)/(vr0^2 + vi0^2) "Initial real current in motor base";
79+
parameter OpenIPSL.Types.PerUnit ii0=(p0*vi0 - q0*vr0)/(vr0^2 + vi0^2) "Initial real current in motor base";
80+
parameter OpenIPSL.Types.PerUnit ir0_sys = CoB*ir0 "Initial real current in system base";
81+
parameter OpenIPSL.Types.PerUnit ii0_sys = CoB*ii0 "Initial imaginary current in system base";
82+
parameter Real CoB = M_b/S_b "Change of base";
83+
equation
84+
connect(we,we_fix. u)
85+
annotation (Line(points={{60,-120},{60,-83},{79,-83}}, color={0,0,127}));
86+
connect(we_source_fix.y,we_fix. u)
87+
annotation (Line(points={{44.6,-80},{70,-80},{70,-83},{79,-83}},
88+
color={0,0,127}));
89+
90+
w_sync = (if Ctrl == true then we_fix.y else w_b);
91+
[Vr; Vi] = [p.vr; p.vi];
92+
[Ir; Ii] = (1/CoB)*[p.ir; p.ii];
93+
Imag = sqrt(Ir^2 + Ii^2);
94+
v = sqrt(p.vr^2 + p.vi^2);
95+
anglev = atan2(p.vi, p.vr);
96+
delta = anglev;
97+
//P = if Ctrl == true then (p.vr*p.ir + p.vi*p.ii)*(we_fix.y/w_b) else (p.vr*p.ir + p.vi*p.ii);
98+
//Q = if Ctrl == true then ((-p.vr*p.ii) + p.vi*p.ir)*(we_fix.y/w_b) else ((-p.vr*p.ii) + p.vi*p.ir);
99+
//P = (p.vr*p.ir + p.vi*p.ii);
100+
P = if Ctrl == true then Te_sys*nr/w_b else Te_sys;
101+
Q = (-p.vr*p.ii) + p.vi*p.ir;
102+
103+
P_motor = P/CoB;
104+
Q_motor = Q/CoB;
105+
ns = w_sync/N;
106+
nr = (1-s)*ns;
107+
wr = nr;
108+
109+
annotation (preferredView = "info",Icon(graphics={
110+
Rectangle(extent={{-100,100},{100,-100}}, lineColor={28,108,200}),
111+
Ellipse(
112+
fillColor={255,255,255},
113+
extent={{-56,-58},{55.932,54}}), Text(
114+
extent={{-50,48},{50,-52}},
115+
lineColor={0,0,0},
116+
textString="M"),Text(
117+
origin={0,-80},
118+
extent={{-100,-20},{100,20}},
119+
fontName="Arial",
120+
lineColor={0,0,0},
121+
textString="%name")}),
122+
Documentation(info="<html>
123+
<p>
124+
This component is the base class for the PSSE induction motor models from the Machines.PSSE sub-package.
125+
</p>
126+
</html>"));
127+
end baseMotor;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
baseMachine
2+
baseMotor
Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
within OpenIPSL.Electrical.Machines.PSSE;
2+
model CIM5 "PSSE CIM5 three-phase induction motor model"
3+
extends OpenIPSL.Electrical.Machines.PSSE.BaseClasses.baseMotor;
4+
//import Modelica.Constants.eps;
5+
import OpenIPSL.NonElectrical.Functions.SE;
6+
7+
parameter Integer Mtype = 1 "1- Motor Type A; 2- Motor Type B" annotation (Dialog(group=
8+
"Motor Setup"), choices(choice=1, choice=2));
9+
parameter OpenIPSL.Types.PerUnit Ra=0 "Stator resistance" annotation (Dialog(group="Machine parameters"));
10+
parameter OpenIPSL.Types.PerUnit Xa=0.0759 "Stator reactance" annotation (Dialog(group="Machine parameters"));
11+
parameter OpenIPSL.Types.PerUnit Xm=3.1241 "Magnetizing reactance" annotation (Dialog(group="Machine parameters"));
12+
parameter OpenIPSL.Types.PerUnit R1=0.0085 "1st cage rotor resistance" annotation (Dialog(group="Machine parameters"));
13+
parameter OpenIPSL.Types.PerUnit X1=0.0759 "1st cage rotor reactance" annotation (Dialog(group="Machine parameters"));
14+
parameter OpenIPSL.Types.PerUnit R2=0 "2nd cage rotor resistance. To model single cage motor set R2 = 0." annotation (Dialog(group="Machine parameters"));
15+
parameter OpenIPSL.Types.PerUnit X2=0 "2nd cage rotor reactance. To model single cage motor set X2 = 0." annotation (Dialog(group="Machine parameters"));
16+
parameter OpenIPSL.Types.PerUnit E1=1 "First Saturation Voltage Value"
17+
annotation (Dialog(group="Machine parameters"));
18+
parameter OpenIPSL.Types.PerUnit SE1 = 0.06 "Saturation Factor at E1" annotation (Dialog(group="Machine parameters"));
19+
parameter OpenIPSL.Types.PerUnit E2=1.2 "Second Saturation Voltage Value"
20+
annotation (Dialog(group="Machine parameters"));
21+
parameter OpenIPSL.Types.PerUnit SE2 = 0.6 "Saturation Factor at E2" annotation (Dialog(group="Machine parameters"));
22+
parameter Modelica.Units.SI.Time H = 0.4 "Inertia constant" annotation (Dialog(group="Machine parameters"));
23+
parameter Real T_nom = 1 "Load torque at 1 pu speed" annotation (Dialog(group="Machine parameters"));
24+
parameter Real D = 1 "Load Damping Factor" annotation (Dialog(group="Machine parameters"));
25+
26+
27+
OpenIPSL.Types.PerUnit TL "Load torque";
28+
29+
OpenIPSL.Types.PerUnit Epr "Real voltage behind transient reactance";
30+
OpenIPSL.Types.PerUnit Epi "Imaginary voltage behind transient reactance";
31+
OpenIPSL.Types.PerUnit Eppr "Real voltage behind sub-transient reactance";
32+
OpenIPSL.Types.PerUnit Eppi "Imaginary voltage behind sub-transient reactance";
33+
OpenIPSL.Types.PerUnit Epp "Voltage magnitude behind sub-transient reactance";
34+
OpenIPSL.Types.PerUnit Ekr "Real voltage component related to 2nd cage for sub-transient reactance";
35+
OpenIPSL.Types.PerUnit Eki "Imaginary voltage component related to 2nd cage for sub-transient reactance";
36+
OpenIPSL.Types.PerUnit NUM "Numerator expression for determining EQC";
37+
OpenIPSL.Types.PerUnit EQC "Intermediate step equation C";
38+
OpenIPSL.Types.PerUnit EQ1 "Intermediate step equation 1";
39+
OpenIPSL.Types.PerUnit EQ2 "Intermediate step equation 2";
40+
OpenIPSL.Types.PerUnit EQ3 "Intermediate step equation 3";
41+
OpenIPSL.Types.PerUnit EQ4 "Intermediate step equation 4";
42+
OpenIPSL.Types.PerUnit EQ5 "Intermediate step equation 5";
43+
OpenIPSL.Types.PerUnit EQ6 "Intermediate step equation 6";
44+
OpenIPSL.Types.PerUnit EQ7 "Intermediate step equation 7";
45+
OpenIPSL.Types.PerUnit EQ8 "Intermediate step equation 8";
46+
OpenIPSL.Types.PerUnit EQ9 "Intermediate step equation 9";
47+
OpenIPSL.Types.PerUnit EQ10 "Intermediate step equation 10";
48+
OpenIPSL.Types.PerUnit EQ11 "Intermediate step equation 11";
49+
OpenIPSL.Types.PerUnit EQ12 "Intermediate step equation 12";
50+
OpenIPSL.Types.PerUnit EQ13 "Intermediate step equation 13";
51+
OpenIPSL.Types.PerUnit EQ14 "Intermediate step equation 14";
52+
OpenIPSL.Types.PerUnit EQ15 "Intermediate step equation 15";
53+
OpenIPSL.Types.PerUnit EQ16 "Intermediate step equation 16";
54+
OpenIPSL.Types.PerUnit EQ17 "Intermediate step equation 17";
55+
OpenIPSL.Types.PerUnit EQ18 "Intermediate step equation 18";
56+
OpenIPSL.Types.PerUnit EQ19 "Intermediate step equation 19";
57+
OpenIPSL.Types.PerUnit EQ20 "Intermediate step equation 20";
58+
OpenIPSL.Types.PerUnit EQ21 "Intermediate step equation 21";
59+
OpenIPSL.Types.PerUnit EQ22 "Intermediate step equation 22";
60+
OpenIPSL.Types.PerUnit EQ23 "Intermediate step equation 23";
61+
OpenIPSL.Types.PerUnit EQ24 "Intermediate step equation 24";
62+
OpenIPSL.Types.PerUnit Omegar "Rotor angular velocity";
63+
64+
OpenIPSL.Types.PerUnit Ls "Sum of stator and magnetization reactances";
65+
OpenIPSL.Types.PerUnit Ll "Stator reactance";
66+
OpenIPSL.Types.PerUnit Lp "Total reactance for stator and 1st cage rotor reactances";
67+
OpenIPSL.Types.PerUnit Lpp "Total reactance for stator, 1st, and 2nd cage rotor reactances";
68+
69+
OpenIPSL.Types.PerUnit Xa_c "Variable stator reactance";
70+
OpenIPSL.Types.PerUnit Xm_c "Variable magnetic impedance";
71+
OpenIPSL.Types.PerUnit X1_c "Variable 1st cage rotor cage reactance";
72+
OpenIPSL.Types.PerUnit X2_c "Variable 2nd cage rotor cage reactance";
73+
74+
OpenIPSL.Types.PerUnit constant1 "Intermediate constant 1";
75+
OpenIPSL.Types.PerUnit constant2 "Intermediate constant 2";
76+
OpenIPSL.Types.PerUnit constant3 "Intermediate constant 3";
77+
OpenIPSL.Types.PerUnit constant4 "Intermediate constant 4";
78+
OpenIPSL.Types.PerUnit constant5 "Intermediate constant 5";
79+
80+
Modelica.Units.SI.Time Tp0 "Transient open-circuit time constant";
81+
Modelica.Units.SI.Time Tpp0 "Sub-transient open-circuit time constant";
82+
83+
initial equation
84+
if Sup == false then
85+
der(s) = 0;
86+
der(Ekr) = 0;
87+
der(Eki) = 0;
88+
der(Epr) = 0;
89+
der(Epi) = 0;
90+
91+
else
92+
s = (1 - C.eps);
93+
94+
end if;
95+
96+
equation
97+
98+
Xa_c = if (Ctrl == false) then Xa else (we_fix.y/w_b)*(Xa);
99+
Xm_c = if (Ctrl == false) then Xm else (we_fix.y/w_b)*(Xm);
100+
X1_c = if (Ctrl == false) then X1 else (we_fix.y/w_b)*(X1);
101+
X2_c = if (Ctrl == false) then X2 else (we_fix.y/w_b)*(X2);
102+
Ls = Xa_c + Xm_c;
103+
Ll = Xa_c;
104+
Lp = Xa_c + X1_c*Xm_c/(X1_c + Xm_c);
105+
Lpp = if (Mtype == 1 and R2 == 0 and X2 == 0) then Lp elseif (Mtype == 1) then Xa_c + X1_c*Xm_c*X2_c/(X1_c*X2_c + X1_c*Xm_c + X2_c*Xm_c) elseif (Mtype == 2 and R2 == 0 and X2 == 0) then Lp else Xa_c + (Xm_c*(X1_c+X2_c)/(X1_c + X2_c + Xm_c));
106+
Tp0 = if (Mtype == 1) then (X1_c + Xm_c)/(w_b*R1) elseif (Mtype == 2 and R2 == 0 and X2 == 0) then (X1_c + Xm_c)/(w_b*R1) else (X1_c + X2_c +Xm_c)/(w_b*R2);
107+
Tpp0 = if (Mtype == 1 and R2 == 0 and X2 == 0) then 1e-7 elseif (Mtype == 1) then (X2_c + (X1_c*Xm_c/(X1_c + Xm_c)))/(w_b*R2) elseif (Mtype == 2 and R2 == 0 and X2 == 0) then 1e-7 else (1/((1/(X1_c+Xm_c) + 1/X2_c)))/(w_b*R1);
108+
constant5 = Ls - Lp;
109+
constant3 = Lp - Ll;
110+
constant4 = (Lp - Lpp)/((Lp - Ll)^2);
111+
constant2 = (Lp - Lpp)/(Lp - Ll);
112+
constant1 = (Lpp - Ll)/(Lp - Ll);
113+
Eppr = EQ1 + EQ2;
114+
EQ1 = Epr*constant1;
115+
EQ2 = Ekr*constant2;
116+
EQ3 = Tpp0*der(Ekr);
117+
EQ3 = EQ4 + EQ5;
118+
EQ4 = (Tpp0*w_b*s)*Eki;
119+
EQ5 = Epr - Ekr - EQ6;
120+
EQ6 = Ii*constant3;
121+
EQ7 = EQ5*constant4;
122+
EQ8 = EQ7 + Ii;
123+
EQ9 = EQ8*constant5;
124+
EQ10 = Eppi*EQC;
125+
EQ11 = Epi*(Tp0*w_b*s);
126+
EQ12 = EQ10 + EQ11 - Epr - EQ9;
127+
EQ12 = Tp0*der(Epr);
128+
EQC = NUM/(Epp + C.eps);
129+
NUM = SE(Epp,SE1,SE2,1,1.2);
130+
Epp = sqrt(Eppr^2 + Eppi^2);
131+
EQ13 = EQC*Eppr;
132+
EQ14 = Epr*(Tp0*w_b*s);
133+
EQ22 = Ir - EQ21;
134+
EQ15 = EQ22*constant5;
135+
EQ16 = EQ15 - EQ14 - EQ13 - Epi;
136+
EQ16 = Tp0*der(Epi);
137+
EQ17 = Ir*constant3;
138+
EQ18 = EQ17 + Epi - Eki;
139+
EQ21 = EQ18*constant4;
140+
EQ19 = Ekr*(Tpp0*w_b*s);
141+
EQ20 = EQ18 - EQ19;
142+
EQ20 = Tpp0*der(Eki);
143+
EQ24 = Epi*constant1;
144+
EQ23 = Eki*constant2;
145+
Eppi = EQ23 + EQ24;
146+
Vr = Eppr + Ra*Ir - Lpp*Ii;
147+
Vi = Eppi + Ra*Ii + Lpp*Ir;
148+
s = (1 - Omegar);
149+
der(s) = (TL - Te_motor)/(2*H);
150+
Te_sys = Te_motor*CoB;
151+
Te_motor = Eppr*Ir + Eppi*Ii;
152+
TL = T_nom*(1 - s)^D;
153+
154+
annotation (preferredView = "info",Dialog(group="Machine parameters"),
155+
Documentation(info="<html>
156+
<p>The CIM5 induction motor model represents an induction machine that can be either model a single or double cage motor. The model can represent two distinct
157+
impedance circuits depending on the selected type.</p>
158+
<p>The load torque equation for the CIM5 motor model is defines as:</p>
159+
<blockquote><pre>
160+
TL = T(1+w)^D
161+
</pre></blockquote>
162+
163+
<p>The modelling of such devices is based, mainly, on the following references:</p>
164+
<ul>
165+
<li><p>Siemens: \"PSS&reg;E Model Library\"
166+
<a href=\"modelica://OpenIPSL.UsersGuide.References\">[PSSE-MODELS]</a>.</p>
167+
</li>
168+
<li><p>PowerWorld: Load Characteristic Models
169+
<a href=\"modelica://OpenIPSL.UsersGuide.References\">[PSSEMotor]</a>.</p>
170+
</li>
171+
</ul>
172+
</html>"));
173+
end CIM5;

0 commit comments

Comments
 (0)