Skip to content

Commit 632003c

Browse files
committed
Upgrade to MSL4.0.0
1 parent 61cf2f0 commit 632003c

14 files changed

Lines changed: 194 additions & 160 deletions

File tree

OpenIPSL/Electrical/Solar/PowerFactory/DIgSILENT/Auxiliary/ActivePowerController.mo

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,17 @@ model ActivePowerController "Controller for the active power of a PV plant"
2222
Modelica.Blocks.Continuous.Integrator tracker(initType = Modelica.Blocks.Types.Init.InitialOutput, k = 1 / 0.1, y_start = id0) annotation (
2323
Placement(transformation(origin = {10, 70}, extent = {{-10, -10}, {10, 10}})));
2424
Modelica.Blocks.Math.Feedback feedback annotation (
25-
Placement(transformation(origin = {-30, 70}, extent = {{-10, -10}, {10, 10}})));
26-
Modelica.Blocks.Nonlinear.Limiter limiter(uMax=yo_max, uMin=yo_min) annotation (Placement(transformation(origin={100,70}, extent={{-10,-10},{10,10}})));
25+
Placement(visible = true, transformation(origin = {-30, 70}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
26+
Modelica.Blocks.Nonlinear.Limiter limiter(uMax=yo_max, uMin=yo_min) annotation (Placement(visible=true, transformation(
27+
origin={100,70},
28+
extent={{-10,-10},{10,10}},
29+
rotation=0)));
2730
Modelica.Blocks.Math.Product product annotation (
28-
Placement(transformation(origin = {60, 70}, extent = {{-10, -10}, {10, 10}})));
29-
Modelica.Blocks.Nonlinear.Limiter limiter1(uMax=yo_max, uMin=yo_min) annotation (Placement(transformation(origin={44,-6}, extent={{-10,-10},{10,10}})));
31+
Placement(visible = true, transformation(origin = {60, 70}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
32+
Modelica.Blocks.Nonlinear.Limiter limiter1(uMax=yo_max, uMin=yo_min) annotation (Placement(visible=true, transformation(
33+
origin={44,-6},
34+
extent={{-10,-10},{10,10}},
35+
rotation=0)));
3036
//protected
3137
Modelica.Blocks.Interfaces.RealOutput yo1 annotation (
3238
Placement(transformation(origin={170,-20}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin={110,-40}, extent = {{-10, -10}, {10, 10}})));

OpenIPSL/Electrical/Solar/PowerFactory/DIgSILENT/Auxiliary/ReactivePowerSupport.mo

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,23 @@ model ReactivePowerSupport "Reactive power support for FRT"
1313
Modelica.Blocks.Logical.Switch FRT_characteristic_selection annotation (
1414
Placement(transformation(origin = {98, 0}, extent = {{-10, -10}, {10, 10}})));
1515
Modelica.Blocks.Sources.BooleanConstant FRTCharac(k=i_EEG) annotation (
16-
Placement(transformation(origin = {60, 0}, extent = {{-10, -10}, {10, 10}})));
17-
Modelica.Blocks.Nonlinear.Limiter limiter(uMax=iq_max, uMin=iq_min) annotation (Placement(transformation(origin={182,0}, extent={{-10,-10},{10,10}})));
18-
OpenIPSL.Electrical.Solar.PowerFactory.General.Picdro picdro(Tdrop = if i_EEG then 0 else 0.5, Tpick = 0) annotation (
19-
Placement(transformation(origin = {-30, 0}, extent = {{-10, -10}, {10, 10}})));
20-
Modelica.Blocks.Logical.GreaterEqualThreshold greaterEqualThreshold(threshold = 0) annotation (
21-
Placement(transformation(origin = {-70, 0}, extent = {{-10, -10}, {10, 10}})));
16+
Placement(visible = true, transformation(origin = {60, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
17+
Modelica.Blocks.Nonlinear.Limiter limiter(uMax=iq_max, uMin=iq_min) annotation (Placement(visible=true, transformation(
18+
origin={182,0},
19+
extent={{-10,-10},{10,10}},
20+
rotation=0)));
21+
OpenIPSL.Electrical.Solar.PowerFactory.General.Picdro picdro(Tdrop = if i_EEG then 0 else 0.5, Tpick = 0) annotation (
22+
Placement(visible = true, transformation(origin = {-30, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
23+
Modelica.Blocks.Logical.GreaterEqualThreshold greaterEqualThreshold(threshold = 0) annotation (
24+
Placement(visible = true, transformation(origin = {-70, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
2225
Modelica.Blocks.Math.Abs abs annotation (
23-
Placement(transformation(origin = {-110, 0}, extent = {{-10, -10}, {10, 10}})));
24-
Modelica.Blocks.Nonlinear.DeadZone deadZone(uMax=Deadband, uMin=-Deadband) annotation (Placement(transformation(origin={-158,0}, extent={{-10,-10},{10,10}})));
25-
Modelica.Blocks.Sources.Constant initial_current(k = i0) annotation (
26-
Placement(transformation(origin = {110, -50}, extent = {{-10, -10}, {10, 10}})));
26+
Placement(visible = true, transformation(origin = {-110, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
27+
Modelica.Blocks.Nonlinear.DeadZone deadZone(uMax=Deadband, uMin=-Deadband) annotation (Placement(visible=true, transformation(
28+
origin={-158,0},
29+
extent={{-10,-10},{10,10}},
30+
rotation=0)));
31+
Modelica.Blocks.Sources.Constant initial_current(k = i0) annotation (
32+
Placement(visible = true, transformation(origin = {110, -50}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
2733
Modelica.Blocks.Math.Add add annotation (
2834
Placement(transformation(origin = {140, 0}, extent = {{-10, -10}, {10, 10}})));
2935
Modelica.Blocks.Math.Gain gain(k = K_FRT) annotation (

OpenIPSL/Electrical/Solar/PowerFactory/DIgSILENT/Auxiliary/SLDWindV.mo

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,11 @@ model SLDWindV "Dynamic support during faults"
1717
Modelica.Blocks.Interfaces.RealOutput diq annotation (
1818
Placement(transformation(origin = {110, 0}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {110, 0}, extent = {{-10, -10}, {10, 10}})));
1919
Modelica.Blocks.Math.Division division annotation (
20-
Placement(transformation(origin = {-2, -30}, extent = {{-10, -10}, {10, 10}})));
21-
Modelica.Blocks.Nonlinear.Limiter limiter(uMax=Modelica.Constants.inf, uMin=Deadband) annotation (Placement(transformation(origin={-30,-30}, extent={{-10,-10},{10,10}})));
20+
Placement(visible = true, transformation(origin = {-2, -30}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
21+
Modelica.Blocks.Nonlinear.Limiter limiter(uMax=Modelica.Constants.inf, uMin=Deadband) annotation (Placement(visible=true, transformation(
22+
origin={-30,-30},
23+
extent={{-10,-10},{10,10}},
24+
rotation=0)));
2225
equation
2326
connect(product.y, gain.u) annotation (
2427
Line(points = {{51, 0}, {68, 0}}, color = {0, 0, 127}));

OpenIPSL/Electrical/Solar/PowerFactory/DIgSILENT/Controller.mo

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,11 @@ model Controller "Controller for the solar plant"
3232
Modelica.Blocks.Continuous.FirstOrder voltage_measurement_delay(T = Tr, initType = Modelica.Blocks.Types.Init.InitialOutput, y_start = uac0) annotation (
3333
Placement(transformation(origin = {-150, -70}, extent = {{-10, -10}, {10, 10}})));
3434
Modelica.Blocks.Sources.Constant reference_voltage(k = uac0) annotation (
35-
Placement(transformation(origin = {-150, -110}, extent = {{-10, -10}, {10, 10}})));
36-
Modelica.Blocks.Nonlinear.Limiter limiter(uMax=Modelica.Constants.inf, uMin=U_min) annotation (Placement(transformation(origin={-110,90}, extent={{-10,-10},{10,10}})));
35+
Placement(visible = true, transformation(origin = {-150, -110}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
36+
Modelica.Blocks.Nonlinear.Limiter limiter(uMax=Modelica.Constants.inf, uMin=U_min) annotation (Placement(visible=true, transformation(
37+
origin={-110,90},
38+
extent={{-10,-10},{10,10}},
39+
rotation=0)));
3740
Modelica.Blocks.Math.Feedback feedback1 annotation (
3841
Placement(transformation(origin = {-70, 30}, extent = {{-10, 10}, {10, -10}})));
3942
Modelica.Blocks.Continuous.FirstOrder filter(T = Tr, initType = Modelica.Blocks.Types.Init.SteadyState, y_start = 0) annotation (

OpenIPSL/Electrical/Solar/PowerFactory/DIgSILENT/CurrentLimiter.mo

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,15 @@ model CurrentLimiter "Limiter of d- and q-axis currents"
1313
Modelica.Blocks.Interfaces.RealOutput idout annotation (
1414
Placement(transformation(origin = {210, 50}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {110, 60}, extent = {{-10, -10}, {10, 10}})));
1515
Modelica.Blocks.Interfaces.RealOutput iqout annotation (
16-
Placement(transformation(origin = {210, -50}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {110, -60}, extent = {{-10, -10}, {10, 10}})));
17-
Modelica.Blocks.Nonlinear.Limiter dlim_normal_op(uMax=maxAbsCur, uMin=-maxAbsCur) annotation (Placement(transformation(origin={90,70}, extent={{-10,-10},{10,10}})));
18-
Modelica.Blocks.Nonlinear.Limiter qlim_frt_op(uMax=maxAbsCur, uMin=-maxAbsCur) annotation (Placement(transformation(origin={90,-70}, extent={{-10,-10},{10,10}})));
16+
Placement(visible = true, transformation(origin = {210, -50}, extent = {{-10, -10}, {10, 10}}, rotation = 0), iconTransformation(origin = {110, -60}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
17+
Modelica.Blocks.Nonlinear.Limiter dlim_normal_op(uMax=maxAbsCur, uMin=-maxAbsCur) annotation (Placement(visible=true, transformation(
18+
origin={90,70},
19+
extent={{-10,-10},{10,10}},
20+
rotation=0)));
21+
Modelica.Blocks.Nonlinear.Limiter qlim_frt_op(uMax=maxAbsCur, uMin=-maxAbsCur) annotation (Placement(visible=true, transformation(
22+
origin={90,-70},
23+
extent={{-10,-10},{10,10}},
24+
rotation=0)));
1925
Modelica.Blocks.Nonlinear.VariableLimiter qlim_normal_op annotation (
2026
Placement(transformation(origin = {90, -120}, extent = {{-10, -10}, {10, 10}})));
2127
Modelica.Blocks.Nonlinear.VariableLimiter dlim_frt_op annotation (
@@ -37,11 +43,17 @@ model CurrentLimiter "Limiter of d- and q-axis currents"
3743
Modelica.Blocks.Math.Pythagoras pythagoras(u1IsHypotenuse = true) annotation (
3844
Placement(transformation(origin = {-64, -170}, extent = {{-10, -10}, {10, 10}})));
3945
Modelica.Blocks.Sources.Constant const1(k = maxAbsCur) annotation (
40-
Placement(transformation(origin = {-110, -170}, extent = {{-10, -10}, {10, 10}})));
41-
Modelica.Blocks.Nonlinear.Limiter limiter(uMax=maxAbsCur, uMin=0) annotation (Placement(transformation(origin={-20,-170}, extent={{-10,-10},{10,10}})));
46+
Placement(visible = true, transformation(origin = {-110, -170}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
47+
Modelica.Blocks.Nonlinear.Limiter limiter(uMax=maxAbsCur, uMin=0) annotation (Placement(visible=true, transformation(
48+
origin={-20,-170},
49+
extent={{-10,-10},{10,10}},
50+
rotation=0)));
4251
OpenIPSL.Electrical.Solar.PowerFactory.General.Picdro picdro(Tdrop = if i_EEG then 0 else 0.5, Tpick = 0) annotation (
43-
Placement(transformation(origin = {-10, 0}, extent = {{-10, -10}, {10, 10}})));
44-
Modelica.Blocks.Nonlinear.DeadZone deadZone(uMax=Deadband, uMin=-Deadband) annotation (Placement(transformation(origin={-130,0}, extent={{-10,-10},{10,10}})));
52+
Placement(visible = true, transformation(origin = {-10, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
53+
Modelica.Blocks.Nonlinear.DeadZone deadZone(uMax=Deadband, uMin=-Deadband) annotation (Placement(visible=true, transformation(
54+
origin={-130,0},
55+
extent={{-10,-10},{10,10}},
56+
rotation=0)));
4557
Modelica.Blocks.Logical.GreaterEqualThreshold greaterEqualThreshold(threshold = Deadband) annotation (
4658
Placement(transformation(origin = {-50, 0}, extent = {{-10, -10}, {10, 10}})));
4759
Modelica.Blocks.Math.Abs abs annotation (

OpenIPSL/Electrical/Solar/PowerFactory/DIgSILENT/DCBusBar.mo

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
within OpenIPSL.Electrical.Solar.PowerFactory.DIgSILENT;
22
model DCBusBar "Model of a DC busbar between the module and inverter"
3-
parameter SI.Capacitance C=1.5e-3 "Capacity of capacitor on DC busbar";
3+
parameter Modelica.Units.SI.Capacitance C=1.5e-3 "Capacity of capacitor on DC busbar";
44
Modelica.Blocks.Interfaces.RealInput P_conv annotation (
55
Placement(
66
transformation(

OpenIPSL/Electrical/Solar/PowerFactory/DIgSILENT/PVArray.mo

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,8 @@ model PVArray "Array of PV modules"
1515
Dialog(group = "Parameters of PV Modules"));
1616
parameter Types.Current Isc_stc = 5 "Short-circuit current at Standard Test Conditions" annotation (
1717
Dialog(group = "Parameters of PV Modules"));
18-
parameter SI.LinearTemperatureCoefficient au = -0.0039 "Temperature correction factor (voltage)" annotation (
19-
Dialog(group = "Parameters of PV Modules"));
20-
parameter SI.LinearTemperatureCoefficient ai = 0.0004 "Temperature correction factor (current)" annotation (
21-
Dialog(group = "Parameters of PV Modules"));
18+
parameter Modelica.Units.SI.LinearTemperatureCoefficient au=-0.0039 "Temperature correction factor (voltage)" annotation (Dialog(group="Parameters of PV Modules"));
19+
parameter Modelica.Units.SI.LinearTemperatureCoefficient ai=0.0004 "Temperature correction factor (current)" annotation (Dialog(group="Parameters of PV Modules"));
2220
parameter Boolean use_input_E = false;
2321
parameter Boolean use_input_theta = false;
2422
Modelica.Blocks.Interfaces.RealOutput Iarray annotation (

OpenIPSL/Electrical/Solar/PowerFactory/DIgSILENT/PVModule.mo

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
within OpenIPSL.Electrical.Solar.PowerFactory.DIgSILENT;
22
model PVModule "Model of a single PV module"
3-
parameter SI.Voltage U0_stc = 43.8 "Open-circuit voltage at Standard Test Conditions";
4-
parameter SI.Voltage Umpp_stc = 35 "MPP voltage at Standard Test Conditions";
3+
parameter Modelica.Units.SI.Voltage U0_stc=43.8 "Open-circuit voltage at Standard Test Conditions";
4+
parameter Modelica.Units.SI.Voltage Umpp_stc=35 "MPP voltage at Standard Test Conditions";
55
parameter Types.Current Impp_stc = 4.58 "MPP current at Standard Test Conditions";
66
parameter Types.Current Isc_stc = 5 "Short-circuit current at Standard Test Conditions";
7-
parameter SI.LinearTemperatureCoefficient au = -0.0039 "Temperature correction factor (voltage)";
8-
parameter SI.LinearTemperatureCoefficient ai = 0.0004 "Temperature correction factor (current)";
7+
parameter Modelica.Units.SI.LinearTemperatureCoefficient au=-0.0039 "Temperature correction factor (voltage)";
8+
parameter Modelica.Units.SI.LinearTemperatureCoefficient ai=0.0004 "Temperature correction factor (current)";
99
parameter Boolean use_input_E = false "If true irradiance is used as input";
1010
parameter Boolean use_input_theta = false "If true temperature is used as input";
1111
parameter Types.ActivePower P_init "Initial active power (needed only if input E is not used)";
12-
parameter SI.Irradiance E_STC = 1000;
13-
parameter SI.Temperature theta_STC = 298.15;
12+
parameter Modelica.Units.SI.Irradiance E_STC=1000;
13+
parameter Modelica.Units.SI.Temperature theta_STC=298.15;
1414
Modelica.Blocks.Interfaces.RealInput U annotation (
1515
Placement(transformation(origin={-100,80}, extent = {{-20, -20}, {20, 20}}), iconTransformation(origin={-90,90}, extent = {{-10, -10}, {10, 10}})));
1616
Modelica.Blocks.Interfaces.RealInput E if use_input_E annotation (

OpenIPSL/Electrical/Solar/PowerFactory/DIgSILENT/PV_Plant.mo

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,9 @@ model PV_Plant "DIgSILENT model of a solar plant"
2626
Dialog(group = "Parameters of PV Modules"));
2727
parameter Types.Current Isc_stc = 5 "Short-circuit current at Standard Test Conditions" annotation (
2828
Dialog(group = "Parameters of PV Modules"));
29-
parameter SI.LinearTemperatureCoefficient au = -0.0039 "Temperature correction factor (voltage)" annotation (
30-
Dialog(group = "Parameters of PV Modules"));
31-
parameter SI.LinearTemperatureCoefficient ai = 0.0004 "Temperature correction factor (current)" annotation (
32-
Dialog(group = "Parameters of PV Modules"));
33-
parameter SI.Capacitance C=1.5e-3 "Capacity of capacitor on DC busbar" annotation (
34-
Dialog(group = "DC busbar parameters"));
29+
parameter Modelica.Units.SI.LinearTemperatureCoefficient au=-0.0039 "Temperature correction factor (voltage)" annotation (Dialog(group="Parameters of PV Modules"));
30+
parameter Modelica.Units.SI.LinearTemperatureCoefficient ai=0.0004 "Temperature correction factor (current)" annotation (Dialog(group="Parameters of PV Modules"));
31+
parameter Modelica.Units.SI.Capacitance C=1.5e-3 "Capacity of capacitor on DC busbar" annotation (Dialog(group="DC busbar parameters"));
3532
parameter Real Kp = 0.005 "Gain, Active Power PI-Controller" annotation (
3633
Dialog(group = "Current Controller Parameters"));
3734
parameter Types.Time Tip = 0.03 "Integration Time Constant, Active Power PI-Ctrl." annotation (

OpenIPSL/Electrical/Solar/PowerFactory/General/StaVmea.mo

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
within OpenIPSL.Electrical.Solar.PowerFactory.General;
2-
32
model StaVmea
4-
parameter Types.Time Tfe = 3 / 50 annotation(
3+
parameter Types.Time Tfe = 3 / 50 annotation (
54
Dialog(enable = use_ref_machine_frequency));
65
parameter Types.Frequency fn = 50;
76
parameter Types.Angle angle_0;
87
parameter Boolean use_ref_machine_frequency = false;
9-
OpenIPSL.Interfaces.PwPin p annotation(
8+
OpenIPSL.Interfaces.PwPin p annotation (
109
Placement(visible = true, transformation(origin = {-110, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 0), iconTransformation(origin = {-110, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
11-
Modelica.Blocks.Interfaces.RealOutput u annotation(
10+
Modelica.Blocks.Interfaces.RealOutput u annotation (
1211
Placement(visible = true, transformation(origin = {118, 58}, extent = {{-10, -10}, {10, 10}}, rotation = 0), iconTransformation(origin = {110, 50}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
13-
Modelica.Blocks.Interfaces.RealOutput fe annotation(
12+
Modelica.Blocks.Interfaces.RealOutput fe annotation (
1413
Placement(visible = true, transformation(origin = {108, -30}, extent = {{-10, -10}, {10, 10}}, rotation = 0), iconTransformation(origin = {110, -50}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
1514
Real cosphi(start = cos(angle_0));
1615
Real sinphi(start = sin(angle_0));
@@ -19,7 +18,7 @@ model StaVmea
1918
Real vx;
2019
Real vy;
2120
Real local_df if not use_ref_machine_frequency;
22-
Modelica.Blocks.Interfaces.RealInput omega if use_ref_machine_frequency annotation(
21+
Modelica.Blocks.Interfaces.RealInput omega if use_ref_machine_frequency annotation (
2322
Placement(visible = true, transformation(origin = {-100, 70}, extent = {{-20, -20}, {20, 20}}, rotation = 0), iconTransformation(origin = {-94, 70}, extent = {{-20, -20}, {20, 20}}, rotation = 0)));
2423
equation
2524
u = sqrt(p.vr ^ 2 + p.vi ^ 2);
@@ -46,7 +45,7 @@ equation
4645
end if;
4746
p.ii = 0;
4847
p.ir = 0;
49-
annotation(
48+
annotation (
5049
Icon(graphics = {Rectangle(fillColor = {255, 255, 255}, fillPattern = FillPattern.Solid, extent = {{-100, 100}, {100, -100}}), Text(origin = {0, 90}, extent = {{-100, 10}, {100, -10}}, textString = "StaVmeas"), Text(origin = {0, 50}, extent = {{62, 8}, {100, -10}}, textString = "u"), Text(origin = {0, -50}, extent = {{62, 8}, {100, -10}}, textString = "fe")}, coordinateSystem(initialScale = 0.1)),
5150
Documentation(info="<html>
5251
<p>

0 commit comments

Comments
 (0)