diff --git a/IBPSA/Electrical/BaseClasses/PV/BaseClasses/Icons/partialPVIcon.mo b/IBPSA/Electrical/BaseClasses/PV/BaseClasses/Icons/partialPVIcon.mo index 11d6cc6b39..d1d66b34b9 100644 --- a/IBPSA/Electrical/BaseClasses/PV/BaseClasses/Icons/partialPVIcon.mo +++ b/IBPSA/Electrical/BaseClasses/PV/BaseClasses/Icons/partialPVIcon.mo @@ -1,40 +1,70 @@ within IBPSA.Electrical.BaseClasses.PV.BaseClasses.Icons; partial model partialPVIcon "Partial model for basic PV model icon" annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100, - -80},{100,80}}), graphics={ - Rectangle(extent={{-50,80},{50,-80}},lineColor={215,215,215},fillColor={215,215,215}, + -100},{100,100}}), graphics={ + Rectangle(extent={{-100,100},{100,-100}}, + lineColor={215,215,215},fillColor={215,215,215}, fillPattern = FillPattern.Solid), - Rectangle(extent={{-46,18},{-18,-10}}, + Rectangle(extent={{-62,18},{-34,-10}}, lineColor={0,0,255},fillColor={0,0,255}, fillPattern = FillPattern.Solid), - Rectangle(extent={{-14,18},{14,-10}}, + Rectangle(extent={{-30,18},{-2,-10}}, lineColor={0,0,255},fillColor={0,0,255}, fillPattern = FillPattern.Solid), - Rectangle(extent={{18,18},{46,-10}}, + Rectangle(extent={{2,18},{30,-10}}, lineColor={0,0,255},fillColor={0,0,255}, fillPattern = FillPattern.Solid), - Rectangle(extent={{-46,-14},{-18,-42}}, + Rectangle(extent={{-62,-14},{-34,-42}}, lineColor={0,0,255},fillColor={0,0,255}, fillPattern = FillPattern.Solid), - Rectangle(extent={{-14,-14},{14,-42}}, + Rectangle(extent={{-30,-14},{-2,-42}}, lineColor={0,0,255},fillColor={0,0,255}, fillPattern = FillPattern.Solid), - Rectangle(extent={{18,-14},{46,-42}}, - lineColor={0,0,255},fillColor={0,0,255}, + Rectangle(extent={{2,-14},{30,-42}},lineColor={0,0,255},fillColor={0,0,255}, fillPattern = FillPattern.Solid), - Rectangle(extent={{-46,-46},{-18,-74}},lineColor={0,0,255},fillColor={0,0,255}, + Rectangle(extent={{-62,-46},{-34,-74}},lineColor={0,0,255},fillColor={0,0,255}, fillPattern = FillPattern.Solid), - Rectangle(extent={{-14,50},{14,22}},lineColor={0,0,255},fillColor={0,0,255}, + Rectangle(extent={{-30,50},{-2,22}},lineColor={0,0,255},fillColor={0,0,255}, fillPattern = FillPattern.Solid), - Rectangle(extent={{18,50},{46,22}},lineColor={0,0,255},fillColor={0,0,255}, + Rectangle(extent={{2,50},{30,22}}, lineColor={0,0,255},fillColor={0,0,255}, fillPattern = FillPattern.Solid), - Rectangle(extent={{-46,50},{-18,22}},lineColor={0,0,255},fillColor={0,0,255}, + Rectangle(extent={{-62,50},{-34,22}},lineColor={0,0,255},fillColor={0,0,255}, fillPattern = FillPattern.Solid), - Rectangle(extent={{-14,-46},{14,-74}},lineColor={0,0,255},fillColor={0,0,255}, + Rectangle(extent={{-30,-46},{-2,-74}},lineColor={0,0,255},fillColor={0,0,255}, fillPattern = FillPattern.Solid), - Rectangle(extent={{18,-46},{46,-74}},lineColor={0,0,255},fillColor={0,0,255}, + Rectangle(extent={{2,-46},{30,-74}}, lineColor={0,0,255},fillColor={0,0,255}, + fillPattern = FillPattern.Solid), + Rectangle(extent={{-94,50},{-66,22}},lineColor={0,0,255},fillColor={0,0,255}, + fillPattern = FillPattern.Solid), + Rectangle(extent={{-94,18},{-66,-10}}, + lineColor={0,0,255},fillColor={0,0,255}, + fillPattern = FillPattern.Solid), + Rectangle(extent={{-94,-14},{-66,-42}}, + lineColor={0,0,255},fillColor={0,0,255}, + fillPattern = FillPattern.Solid), + Rectangle(extent={{-94,-46},{-66,-74}}, + lineColor={0,0,255},fillColor={0,0,255}, + fillPattern = FillPattern.Solid), + Rectangle(extent={{34,50},{62,22}}, lineColor={0,0,255},fillColor={0,0,255}, + fillPattern = FillPattern.Solid), + Rectangle(extent={{34,18},{62,-10}}, lineColor={0,0,255},fillColor={0,0,255}, + fillPattern = FillPattern.Solid), + Rectangle(extent={{34,-14},{62,-42}},lineColor={0,0,255},fillColor={0,0,255}, + fillPattern = FillPattern.Solid), + Rectangle(extent={{34,-46},{62,-74}},lineColor={0,0,255},fillColor={0,0,255}, + fillPattern = FillPattern.Solid), + Rectangle(extent={{66,-46},{94,-74}},lineColor={0,0,255},fillColor={0,0,255}, + fillPattern = FillPattern.Solid), + Rectangle(extent={{66,-14},{94,-42}},lineColor={0,0,255},fillColor={0,0,255}, + fillPattern = FillPattern.Solid), + Rectangle(extent={{66,18},{94,-10}}, lineColor={0,0,255},fillColor={0,0,255}, + fillPattern = FillPattern.Solid), + Rectangle(extent={{66,50},{94,22}}, lineColor={0,0,255},fillColor={0,0,255}, fillPattern = FillPattern.Solid), - Text(extent={{-44,84},{40,50}}, lineColor={0,0,255},textString= "%name")}), - Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-100,-80}, - {100,80}}))); + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255})}), + Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{ + 100,100}}))); end partialPVIcon; diff --git a/IBPSA/Electrical/BaseClasses/PV/BaseClasses/PartialPVElectricalTwoDiodes.mo b/IBPSA/Electrical/BaseClasses/PV/BaseClasses/PartialPVElectricalTwoDiodes.mo deleted file mode 100644 index 0602f6a99a..0000000000 --- a/IBPSA/Electrical/BaseClasses/PV/BaseClasses/PartialPVElectricalTwoDiodes.mo +++ /dev/null @@ -1,76 +0,0 @@ -within IBPSA.Electrical.BaseClasses.PV.BaseClasses; -partial model PartialPVElectricalTwoDiodes - "2 diodes model for PV I-V characteristics with temp. dependency based on 9 parameters" - extends IBPSA.Electrical.BaseClasses.PV.BaseClasses.PartialPVElectrical( - redeclare IBPSA.Electrical.Data.PV.TwoDiodesData data); - - replaceable parameter IBPSA.Electrical.Data.PV.TwoDiodesData data - constrainedby IBPSA.Electrical.Data.PV.TwoDiodesData - "PV Panel data definition" annotation (choicesAllMatching); - - // Parameters from module data sheet - - final parameter Real c1( - unit = "m2/V") = data.c1 - "1st coefficient IPho"; - - final parameter Real c2( - unit = "m2/(kV.K)") = data.c2 - "2nd coefficient IPho"; - - final parameter Real cs1( - unit = "A/K3") = data.cs1 - "1st coefficient ISat1"; - - final parameter Real cs2( - unit = "A/K5") = data.cs2 - "2nd coefficient ISat2"; - - final parameter Real R_sh( - unit = "V/A") = data.R_sh - "Parallel resistance"; - - final parameter Real R_s( - unit = "V/A") = data.R_s - "Serial resistance"; - - Modelica.Units.SI.ElectricCurrent I_s1 - "Saturation current diode 1"; - - Modelica.Units.SI.ElectricCurrent I_s2 - "Saturation current diode 2"; - - Modelica.Units.SI.Voltage Ut - "Temperature voltage"; - - output Modelica.Blocks.Interfaces.RealOutput I( - unit="A", start = 0.0) - "Module current" - annotation (Placement(transformation(extent={{100,-60},{120,-40}}), - iconTransformation(extent={{100,-60},{120,-40}}))); - -equation - Ut =k*TCel/e; - - I_ph =(c1 + c2*0.001*TCel)*HGloTil; - - I_s1 =cs1*TCel*TCel*TCel*Modelica.Math.exp(-(Eg0*e)/(k*TCel)); - - I_s2 =cs2*sqrt(TCel*TCel*TCel*TCel*TCel)*Modelica.Math.exp(-(Eg0*e)/(2.0*k*TCel)); - - eta=if noEvent(HGloTil <= Modelica.Constants.eps*10) then 0 else P/(HGloTil* - A_mod*n_mod); - annotation ( - Documentation(info=" -

- This is a partial 2 diodes electrical model of a PV module. -

- ", revisions=" - - ")); -end PartialPVElectricalTwoDiodes; diff --git a/IBPSA/Electrical/BaseClasses/PV/BaseClasses/package.order b/IBPSA/Electrical/BaseClasses/PV/BaseClasses/package.order index 031b314450..2ccc76e56c 100644 --- a/IBPSA/Electrical/BaseClasses/PV/BaseClasses/package.order +++ b/IBPSA/Electrical/BaseClasses/PV/BaseClasses/package.order @@ -2,7 +2,6 @@ Icons lambertWSimple PartialPVElectrical PartialPVElectricalSingleDiode -PartialPVElectricalTwoDiodes PartialPVThermal PartialPVThermalEmp PartialPVOptical diff --git a/IBPSA/Electrical/BaseClasses/PV/PVElectricalTwoDiodesMPP.mo b/IBPSA/Electrical/BaseClasses/PV/PVElectricalTwoDiodesMPP.mo deleted file mode 100644 index 92b691a8ba..0000000000 --- a/IBPSA/Electrical/BaseClasses/PV/PVElectricalTwoDiodesMPP.mo +++ /dev/null @@ -1,44 +0,0 @@ -within IBPSA.Electrical.BaseClasses.PV; -model PVElectricalTwoDiodesMPP - "2 diodes model for PV I-V characteristics - with temp. dependency based on 9 parameters with automatic MPP tracking" - extends - IBPSA.Electrical.BaseClasses.PV.BaseClasses.PartialPVElectricalTwoDiodes; - Real lambda(start = 0.0) - "Lagrange multiplier"; - - output Modelica.Blocks.Interfaces.RealOutput U( - unit="V", - start = 0.0) - "Module voltage" - annotation (Placement(transformation(extent={{100,-10},{120,10}}), - iconTransformation(extent={{100,-10}, - {120,10}}))); - -equation - // Calculation of I_MPP and U_MPP with the calculation method extremes under constraints with Lagrange multiplier - 0 = I_ph - I_s1 * (Modelica.Math.exp((U / n_ser + (I / n_par) * R_s)/(1.0 * Ut)) - 1.0) - - I_s2 * (Modelica.Math.exp((U / n_ser + (I / n_par) * R_s)/(2.0 * Ut)) - 1.0) - - (U / n_ser + (I / n_par) * R_s) / R_sh - I / n_par; - - 0 = I / n_par - lambda * ((I_s1 / (1.0 * Ut)) * Modelica.Math.exp((U / n_ser + (I / n_par) * R_s) / (1.0 * Ut)) - + (I_s2 / (2.0 * Ut))* Modelica.Math.exp((U / n_ser + (I / n_par) * R_s) / (2.0 * Ut)) + 1.0 / R_sh); - - 0 = U / n_ser - lambda * (( R_s * I_s1) / (1.0 * Ut) * Modelica.Math.exp((U / n_ser + (I / n_par) * R_s) / (1.0 * Ut)) - + (R_s * I_s2) / (2.0 * Ut) * Modelica.Math.exp((U / n_ser + (I / n_par) * R_s) / (2.0 * Ut)) + R_s / R_sh + 1.0); - - P = I * U * n_mod; - annotation ( -Documentation(info=" -

-This is a 2 diodes MPP controlled electrical model of a PV module. -

-", revisions=" - -")); -end PVElectricalTwoDiodesMPP; diff --git a/IBPSA/Electrical/BaseClasses/PV/PartialPVSystem.mo b/IBPSA/Electrical/BaseClasses/PV/PartialPVSystem.mo index e68b3738f0..2b4f6143df 100644 --- a/IBPSA/Electrical/BaseClasses/PV/PartialPVSystem.mo +++ b/IBPSA/Electrical/BaseClasses/PV/PartialPVSystem.mo @@ -54,28 +54,28 @@ partial model PartialPVSystem "Base PV model with internal or external MPP track "Global irradiation on tilted surface" annotation (Placement(transformation(extent={{-20,-20},{20,20}}, rotation=0, - origin={-100,-60}), + origin={-120,-60}), iconTransformation(extent={{-20,-20},{20,20}}, rotation=0, - origin={-100,-60}))); + origin={-120,-60}))); Modelica.Blocks.Interfaces.RealInput TDryBul(final unit="K") "Ambient dry bulb temperature" annotation (Placement(transformation(extent={{-20,-20},{20,20}}, rotation=0, - origin={-100,0}), + origin={-120,0}), iconTransformation(extent={{-20,-20},{20,20}}, rotation=0, - origin={-100,0}))); + origin={-120,0}))); Modelica.Blocks.Interfaces.RealInput vWinSpe(final unit="m/s") "Wind speed" annotation ( Placement(transformation(extent={{-20,-20},{20,20}}, rotation=0, - origin={-100,30}), iconTransformation( + origin={-120,30}), iconTransformation( extent={{-20,-20},{20,20}}, rotation=0, - origin={-100,30}))); + origin={-120,30}))); Modelica.Blocks.Interfaces.RealOutput PDC(final unit="W") "DC Power output" - annotation (Placement(transformation(extent={{80,-10},{100,10}}), - iconTransformation(extent={{80,-10},{100,10}}))); + annotation (Placement(transformation(extent={{100,-10},{120,10}}), + iconTransformation(extent={{100,-10},{120,10}}))); replaceable IBPSA.Electrical.BaseClasses.PV.BaseClasses.PartialPVOptical PVOptical( final use_Til_in = use_Til_in, final PVTechType=PVTechType) @@ -96,44 +96,44 @@ partial model PartialPVSystem "Base PV model with internal or external MPP track //Conditional connectors Modelica.Blocks.Interfaces.RealInput tilSet(final unit="rad") if use_Til_in "Conditional input for tilt angle control" annotation (Placement( - transformation(extent={{-20,-20},{20,20}}, + transformation(extent={{20,20},{-20,-20}}, rotation=-90, - origin={0,120}), iconTransformation( - extent={{-20,-20},{20,20}}, + origin={0,-120}), iconTransformation( + extent={{20,20},{-20,-20}}, rotation=-90, - origin={0,120}))); + origin={0,-120}))); Modelica.Blocks.Interfaces.RealInput HGloHor(final unit="W/m2") "Global irradiation on horizontal surface" annotation (Placement( transformation(extent={{-20,-20},{20,20}}, rotation=0, - origin={-100,-30}), iconTransformation(extent={{-20,-20}, + origin={-120,-30}), iconTransformation(extent={{-20,-20}, {20,20}}, rotation=0, - origin={-100,-30}))); + origin={-120,-30}))); Modelica.Blocks.Interfaces.RealInput HDifHor(final unit="W/m2") if use_HDifHor "Diffuse irradiation on horizontal surface" annotation (Placement( transformation(extent={{-20,-20},{20,20}}, rotation=0, - origin={-100,-90}), iconTransformation( + origin={-120,-90}), iconTransformation( extent={{-20,-20},{20,20}}, rotation=0, - origin={-100,-90}))); + origin={-120,-90}))); Modelica.Blocks.Interfaces.RealInput incAngle(final unit="rad") if use_incAng "Incidence angle of irradiation" annotation (Placement(transformation(extent={{-20,-20},{20,20}}, rotation=0, - origin={-100,60}), + origin={-120,60}), iconTransformation(extent={{-20,-20},{20,20}}, rotation=0, - origin={-100,60}))); + origin={-120,60}))); Modelica.Blocks.Interfaces.RealInput zenAngle(final unit="rad") if use_zenAng "Zenith angle of irradiation" annotation (Placement(transformation(extent={{-20,-20},{20,20}}, rotation=0, - origin={-100,90}), + origin={-120,90}), iconTransformation(extent={{-20,-20},{20,20}}, rotation=0, - origin={-100,90}))); + origin={-120,90}))); protected Modelica.Blocks.Interfaces.RealInput Til_in_internal @@ -163,6 +163,6 @@ First implementation. "), - Diagram(coordinateSystem(extent={{-80,-100},{80,100}})), - Icon(coordinateSystem(extent={{-80,-100},{80,100}}))); + Diagram(coordinateSystem(extent={{-100,-100},{100,100}})), + Icon(coordinateSystem(extent={{-100,-100},{100,100}}))); end PartialPVSystem; diff --git a/IBPSA/Electrical/BaseClasses/PV/package.order b/IBPSA/Electrical/BaseClasses/PV/package.order index 0d4b30d038..63c64d9628 100644 --- a/IBPSA/Electrical/BaseClasses/PV/package.order +++ b/IBPSA/Electrical/BaseClasses/PV/package.order @@ -1,6 +1,5 @@ PartialPVSystem PVElectricalSingleDiodeMPP -PVElectricalTwoDiodesMPP PVOpticalAbsRat PVThermalEmpMountCloseToGround PVThermalEmpMountContactToGround diff --git a/IBPSA/Electrical/DC/Sources/PVTwoDiodes.mo b/IBPSA/Electrical/DC/Sources/PVTwoDiodes.mo deleted file mode 100644 index 8034254e60..0000000000 --- a/IBPSA/Electrical/DC/Sources/PVTwoDiodes.mo +++ /dev/null @@ -1,68 +0,0 @@ -within IBPSA.Electrical.DC.Sources; -model PVTwoDiodes - "Photovoltaic module(s) model based on two diodes approach" - extends IBPSA.Electrical.BaseClasses.PV.PartialPVSystem( - replaceable IBPSA.Electrical.Data.PV.TwoDiodesData data, - redeclare IBPSA.Electrical.BaseClasses.PV.PVOpticalAbsRat - PVOptical( - final alt=alt, - final til=til, - final groRef=groRef, - final glaExtCoe=glaExtCoe, - final glaThi=glaThi, - final refInd=refInd), - redeclare IBPSA.Electrical.BaseClasses.PV.PVElectricalTwoDiodesMPP - PVElectrical(redeclare IBPSA.Electrical.Data.PV.TwoDiodesData - data=data), - replaceable IBPSA.Electrical.BaseClasses.PV.BaseClasses.PartialPVThermalEmp - PVThermal( - redeclare IBPSA.Electrical.Data.PV.TwoDiodesData data=data)); - - -equation - connect(PVElectrical.eta, PVThermal.eta) annotation (Line( - points={{-3.45455,-53},{40,-53},{40,-20},{-72,-20},{-72,-11.8},{-17.0909, - -11.8}}, - color={0,0,127})); - connect(PVThermal.TCel, PVElectrical.TCel) annotation (Line( - points={{-4.54545,-10},{0,-10},{0,-14},{-58,-14},{-58,-47},{-16,-47}}, - color={0,0,127})); - connect(PVElectrical.P, PDC) annotation (Line(points={{-3.45455,-47},{20,-47}, - {20,-40},{60,-40},{60,0},{90,0}}, color={0,0,127})); - connect(PVOptical.absRadRat, PVElectrical.absRadRat) - annotation (Line(points={{-4.54545,30},{20,30},{20,-34},{-64,-34},{-64,-51.8}, - {-16,-51.8}}, color={0,0,127})); - connect(HGloTil, PVElectrical.HGloTil) annotation (Line(points={{-100,-60},{-100, - -60},{-100,-54},{-68,-54},{-68,-54.2},{-16,-54.2}}, color={0, - 0,127})); - connect(TDryBul, PVThermal.TDryBul) annotation (Line(points={{-100,0},{ - -60,0},{-60,-4.6},{-17.0909,-4.6}},color={0,0,127})); - connect(HGloTil, PVThermal.HGloTil) annotation (Line(points={{-100,-60}, - {-80,-60},{-80,6},{-40,6},{-40,-15.4},{-17.0909,-15.4}}, - color={0,0,127})); - connect(vWinSpe, PVThermal.winVel) annotation (Line(points={{-100,30},{ - -40,30},{-40,28},{-52,28},{-52,-8.2},{-17.0909,-8.2}}, - color={0,0,127})); - connect(zenAngle, PVOptical.zenAng) annotation (Line(points={{-100,90}, - {-44,90},{-44,34.2},{-17.0909,34.2}}, - color={0,0,127})); - connect(incAngle, PVOptical.incAng) annotation (Line(points={{-100,60}, - {-100,64},{-22,64},{-22,31.8},{-17.0909,31.8}}, color={0,0,127})); - connect(HDifHor, PVOptical.HDifHor) annotation (Line(points={{-100,-90}, - {-100,70},{-72,70},{-72,27},{-17.0909,27}}, color={0,0,127})); - - connect(HGloHor, PVOptical.HGloHor) annotation (Line(points={{-100,-30}, - {-20,-30},{-20,29.4},{-17.0909,29.4}},color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false)), - Documentation(info=" -

This is a photovoltaic generator model based on a two diodes approach with replaceable thermal models accounting for different mountings.

-",revisions=" - -")); -end PVTwoDiodes; diff --git a/IBPSA/Electrical/DC/Sources/Validation/BaseClasses/partialPVRooftopBuildingValidation.mo b/IBPSA/Electrical/DC/Sources/Validation/BaseClasses/partialPVRooftopBuildingValidation.mo index 97c3118972..9039b52468 100644 --- a/IBPSA/Electrical/DC/Sources/Validation/BaseClasses/partialPVRooftopBuildingValidation.mo +++ b/IBPSA/Electrical/DC/Sources/Validation/BaseClasses/partialPVRooftopBuildingValidation.mo @@ -32,14 +32,14 @@ partial model partialPVRooftopBuildingValidation Modelica.Blocks.Interfaces.RealOutput PDCSim(final unit="W") "Simulated DC output power" - annotation (Placement(transformation(extent={{100,30},{120,50}}))); + annotation (Placement(transformation(extent={{100,20},{120,40}}))); Modelica.Blocks.Interfaces.RealOutput PDCMea(final unit="W") "Measured DC power" annotation (Placement(transformation(extent={{100,-10},{120,10}}))); BoundaryConditions.SolarIrradiation.GlobalPerezTiltedSurface HGloTil(til=til, azi=azi, rho=rho) - annotation (Placement(transformation(extent={{20,40},{40,60}}))); + annotation (Placement(transformation(extent={{0,40},{20,60}}))); Modelica.Blocks.Sources.CombiTimeTable MeaDatHGloHor( tableOnFile=true, @@ -72,7 +72,7 @@ partial model partialPVRooftopBuildingValidation smoothness=Modelica.Blocks.Types.Smoothness.ContinuousDerivative, shiftTime=nDay) "This file contains the ambient temperature. The PVSystem model is validaded with measurement data from Rooftop building: http://www.solar-rooftop.de." - annotation (Placement(transformation(extent={{-98,-60},{-80,-42}}))); + annotation (Placement(transformation(extent={{-100,-60},{-80,-40}}))); Modelica.Blocks.Sources.CombiTimeTable MeaDatPVPDC( tableOnFile=true, @@ -83,7 +83,7 @@ partial model partialPVRooftopBuildingValidation smoothness=Modelica.Blocks.Types.Smoothness.ContinuousDerivative, shiftTime=nDay) "This file contains the DC power output of two selected modules. The PVSystem model is validaded with measurement data from Rooftop building: http://www.solar-rooftop.de." - annotation (Placement(transformation(extent={{62,-20},{78,-4}}))); + annotation (Placement(transformation(extent={{60,-20},{80,0}}))); Modelica.Blocks.Sources.RealExpression souGloHorDif(y=HGloHorDif) annotation (Placement(transformation(extent={{-100,-34},{-80,-14}}))); @@ -93,19 +93,19 @@ partial model partialPVRooftopBuildingValidation TDryBulSou=IBPSA.BoundaryConditions.Types.DataSource.Input, winSpeSou=IBPSA.BoundaryConditions.Types.DataSource.Input, HSou=IBPSA.BoundaryConditions.Types.RadiationDataSource.Input_HGloHor_HDifHor) - annotation (Placement(transformation(extent={{-40,0},{-20,20}}))); + annotation (Placement(transformation(extent={{-60,0},{-40,20}}))); Modelica.Blocks.Math.UnitConversions.From_degC from_degC - annotation (Placement(transformation(extent={{-58,-58},{-42,-42}}))); + annotation (Placement(transformation(extent={{-60,-60},{-40,-40}}))); Modelica.Blocks.Sources.Constant sounDay(k=nDay) "Number of validation day (July 28th 2023) in seconds" - annotation (Placement(transformation(extent={{-98,64},{-82,80}}))); + annotation (Placement(transformation(extent={{-100,60},{-80,80}}))); BoundaryConditions.SolarGeometry.IncidenceAngle incAng(azi=azi, til=til) - annotation (Placement(transformation(extent={{22,-18},{38,-2}}))); + annotation (Placement(transformation(extent={{0,-20},{20,0}}))); BoundaryConditions.WeatherData.Bus weaBus "Weather data bus" - annotation (Placement(transformation(extent={{-16,-20},{4,0}}))); + annotation (Placement(transformation(extent={{-50,30},{-30,50}}))); Modelica.Blocks.Routing.RealPassThrough zen - annotation (Placement(transformation(extent={{20,-60},{40,-40}}))); + annotation (Placement(transformation(extent={{-20,-60},{0,-40}}))); Modelica.Blocks.Sources.CombiTimeTable MeaDatTMod( tableOnFile=true, tableName="MeaDatTMod", @@ -114,7 +114,7 @@ partial model partialPVRooftopBuildingValidation smoothness=Modelica.Blocks.Types.Smoothness.ContinuousDerivative, shiftTime=nDay) "This file contains the module temperature of two selected modules. The PVSystem model is validaded with measurement data from Rooftop building: http://www.solar-rooftop.de." - annotation (Placement(transformation(extent={{62,-60},{78,-44}}))); + annotation (Placement(transformation(extent={{60,-60},{80,-40}}))); Modelica.Blocks.Interfaces.RealOutput TModMea(final unit="degC") "Measure module temperature" annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); @@ -125,11 +125,6 @@ partial model partialPVRooftopBuildingValidation annotation (Placement(transformation(extent={{100,-90},{120,-70}}))); Modelica.Blocks.Interfaces.RealOutput CloTim(final unit="s") "Clock time" annotation (Placement(transformation(extent={{100,-110},{120,-90}}))); - Modelica.Blocks.Interfaces.RealOutput PDCMeacorrected(final unit="W") - "Measured DC power" - annotation (Placement(transformation(extent={{100,-30},{120,-10}}))); - Modelica.Blocks.Math.Gain gain(k=1.1/1.2) - annotation (Placement(transformation(extent={{80,-34},{90,-24}}))); equation //Approximation of diffuse horizontal irradiation still necessary because //the validation data does not contain this information so far @@ -154,54 +149,50 @@ equation (HGloHor)*(0.9511-0.1604*k_t+4.388*k_t^2-16.638*k_t^3+12.336*k_t^4); connect(MeaDatPVPDC.y[1], PDCMea) - annotation (Line(points={{78.8,-12},{96,-12},{96,0},{110,0}}, + annotation (Line(points={{81,-10},{96,-10},{96,0},{110,0}}, color={0,0,127})); connect(weaDat.weaBus, HGloTil.weaBus) annotation (Line( - points={{-20,10},{-6,10},{-6,50},{20,50}}, + points={{-40,10},{-6,10},{-6,50},{0,50}}, color={255,204,51}, thickness=0.5)); - connect(MeaDatTDryBul.y[1], from_degC.u) annotation (Line(points={{-79.1,-51}, - {-69.15,-51},{-69.15,-50},{-59.6,-50}}, color={0,0,127})); - connect(from_degC.y, weaDat.TDryBul_in) annotation (Line(points={{-41.2,-50},{ - -42,-50},{-42,-6},{-44,-6},{-44,19},{-41,19}}, color={0,0,127})); + connect(MeaDatTDryBul.y[1], from_degC.u) annotation (Line(points={{-79,-50},{ + -62,-50}}, color={0,0,127})); + connect(from_degC.y, weaDat.TDryBul_in) annotation (Line(points={{-39,-50},{ + -34,-50},{-34,28},{-61,28},{-61,19}}, color={0,0,127})); connect(MeaDatHGloHor.y[1], weaDat.HGloHor_in) - annotation (Line(points={{-79,-90},{-60,-90},{-60,-80},{-20,-80},{-20,-20},{ - -40,-20},{-40,-2},{-41,-2},{-41,-3}}, color={0,0,127})); + annotation (Line(points={{-79,-90},{-74,-90},{-74,-64},{-104,-64},{-104,-3}, + {-61,-3}}, color={0,0,127})); connect(weaDat.weaBus, incAng.weaBus) annotation (Line( - points={{-20,10},{0,10},{0,0},{22,0},{22,-10}}, + points={{-40,10},{-6,10},{-6,-10},{0,-10}}, color={255,204,51}, thickness=0.5)); connect(weaDat.weaBus, weaBus) annotation (Line( - points={{-20,10},{-6,10},{-6,-10}}, + points={{-40,10},{-40,40}}, color={255,204,51}, thickness=0.5)); connect(weaBus.solZen, zen.u) annotation (Line( - points={{-6,-10},{-6,-50},{18,-50}}, + points={{-40,40},{-40,-64},{-30,-64},{-30,-50},{-22,-50}}, color={255,204,51}, thickness=0.5)); connect(MeaDatTMod.y[1], TModMea) - annotation (Line(points={{78.8,-52},{96,-52},{96,-40},{110,-40}}, + annotation (Line(points={{81,-50},{96,-50},{96,-40},{110,-40}}, color={0,0,127})); connect(MeaDatWinAngSpe.y[2], weaDat.winSpe_in) annotation (Line(points={{-79,10}, - {-46,10},{-46,6.1},{-41,6.1}}, color={0,0,127})); + {-68,10},{-68,6.1},{-61,6.1}}, color={0,0,127})); connect(souGloHorDif.y, weaDat.HDifHor_in) annotation (Line(points={{-79,-24}, - {-60,-24},{-60,0.5},{-41,0.5}}, color={0,0,127})); + {-74,-24},{-74,0.5},{-61,0.5}}, color={0,0,127})); connect(weaBus.solHouAng, SolHouAng) annotation (Line( - points={{-6,-10},{-6,-62},{110,-62}}, + points={{-40,40},{-40,-66},{94,-66},{94,-62},{110,-62}}, color={255,204,51}, thickness=0.5)); connect(weaBus.solDec, SolDec) annotation (Line( - points={{-6,-10},{-6,-80},{110,-80}}, + points={{-40,40},{-40,-80},{110,-80}}, color={255,204,51}, thickness=0.5)); connect(weaBus.cloTim, CloTim) annotation (Line( - points={{-6,-10},{-6,-100},{110,-100}}, + points={{-40,40},{-40,-100},{110,-100}}, color={255,204,51}, thickness=0.5)); - connect(PDCMea, gain.u) annotation (Line(points={{110,0},{96,0},{96,-38},{72, - -38},{72,-29},{79,-29}}, color={0,0,127})); - connect(gain.y, PDCMeacorrected) annotation (Line(points={{90.5,-29},{94,-29}, - {94,-20},{110,-20}}, color={0,0,127})); annotation ( Icon(coordinateSystem(preserveAspectRatio=false, extent={{-120,-100},{100, 100}})), diff --git a/IBPSA/Electrical/DC/Sources/Validation/PVSingleDiodeNISTValidation.mo b/IBPSA/Electrical/DC/Sources/Validation/PVSingleDiodeNISTValidation.mo index 119e690164..90be6ec7d8 100644 --- a/IBPSA/Electrical/DC/Sources/Validation/PVSingleDiodeNISTValidation.mo +++ b/IBPSA/Electrical/DC/Sources/Validation/PVSingleDiodeNISTValidation.mo @@ -52,7 +52,7 @@ model PVSingleDiodeNISTValidation til=til, redeclare IBPSA.Electrical.BaseClasses.PV.PVThermalEmpMountCloseToGround PVThermal) - annotation (Placement(transformation(extent={{64,0},{80,20}}))); + annotation (Placement(transformation(extent={{60,0},{80,20}}))); Modelica.Blocks.Interfaces.RealOutput PDCSim "Simulated DC output power" annotation (Placement(transformation(extent={{100,-10},{120,10}}))); @@ -122,8 +122,9 @@ equation connect(pVSingleDiode.PDC, PDCSim) annotation (Line(points={{81,10},{96,10},{96,0},{110,0}}, color={0,0,127})); - connect(zen.y, pVSingleDiode.zenAngle) annotation (Line(points={{21,-70},{54,-70}, - {54,19},{62,19}}, color={0,0,127})); + connect(zen.y, pVSingleDiode.zenAngle) annotation (Line(points={{21,-70},{54, + -70},{54,19},{58,19}}, + color={0,0,127})); connect(weaDat.weaBus, weaBus) annotation (Line( points={{-20,0},{-6,0}}, color={255,204,51}, @@ -135,20 +136,21 @@ equation connect(NISTdata.y[2], weaDat.winSpe_in) annotation (Line(points={{-75,0},{-68, 0},{-68,-8},{-46,-8},{-46,-3.9},{-41,-3.9}}, color={0,0,127})); connect(souGloHorDif.y, pVSingleDiode.HDifHor) - annotation (Line(points={{-57,-30},{62,-30},{62,1}}, color={0,0,127})); + annotation (Line(points={{-57,-30},{58,-30},{58,1}}, color={0,0,127})); connect(NISTdata.y[3], pVSingleDiode.HGloHor) annotation (Line(points={{-75,0}, - {-68,0},{-68,-16},{32,-16},{32,7},{62,7}}, color={0,0,127})); + {-68,0},{-68,-16},{32,-16},{32,7},{58,7}}, color={0,0,127})); connect(HGloTil.H, pVSingleDiode.HGloTil) - annotation (Line(points={{43,40},{56,40},{56,4},{62,4}}, color={0,0,127})); + annotation (Line(points={{43,40},{56,40},{56,4},{58,4}}, color={0,0,127})); connect(weaBus, HGloTil.weaBus) annotation (Line( points={{-6,0},{-8,0},{-8,40},{22,40}}, color={255,204,51}, thickness=0.5)); connect(incAng.y, pVSingleDiode.incAngle) annotation (Line(points={{-19.2,-50}, - {-12,-50},{-12,-14},{30,-14},{30,16},{62,16}}, color={0,0,127})); + {-12,-50},{-12,-14},{30,-14},{30,16},{58,16}}, color={0,0,127})); connect(NISTdata.y[2], pVSingleDiode.vWinSpe) annotation (Line(points={{-75,0}, - {-68,0},{-68,-8},{-44,-8},{-44,-16},{32,-16},{32,6},{52,6},{52,13},{62, - 13}}, color={0,0,127})); + {-68,0},{-68,-8},{-44,-8},{-44,-16},{32,-16},{32,6},{52,6},{52,13},{ + 58,13}}, + color={0,0,127})); connect(weaBus, incAng.weaBus) annotation (Line( points={{-6,0},{-6,-24},{-46,-24},{-46,-50},{-36,-50}}, color={255,204,51}, @@ -170,7 +172,7 @@ equation color={255,204,51}, thickness=0.5)); connect(from_degC.y, pVSingleDiode.TDryBul) - annotation (Line(points={{-53.6,0},{62,0},{62,10}}, color={0,0,127})); + annotation (Line(points={{-53.6,0},{58,0},{58,10}}, color={0,0,127})); connect(souGloHorDif.y, weaDat.HDifHor_in) annotation (Line(points={{-57,-30}, {-48,-30},{-48,-18},{-41,-18},{-41,-9.5}}, color={0,0,127})); connect(NISTdata.y[3], weaDat.HGloHor_in) annotation (Line(points={{-75,0},{-68, @@ -192,5 +194,32 @@ equation StopTime=86400, Interval=300, __Dymola_Algorithm="Dassl"), + __Dymola_Commands(file= + "modelica://IBPSA/Resources/Scripts/Dymola/Electrical/DC/Sources/Validation/PVSingleDiodeNISTValidation.mos" + "Simulate and plot"), + Documentation(info=" +

The PVSystem single-diode model is validaded with measurement data from the NIST https://pvdata.nist.gov/

+

June 14th was chosen as an exemplary day for the PVSystem model.

+

The system consists of 312 mono-Si modules which are mounted on a rooftop.

+

The validation model proves that single-diode PV models tend to overestimate the power output.

+

This is due to the neglection of staining, shading, other loss effects.

+

More information can be found in the study of Maier et al. [1].

+

References

+

[1] Maier, Laura, Michael Kratz, Christian Vering, Philipp Mehrfeld, and Dirk Mueller.

+

"Open-source photovoltaic model for early building planning processes: Modeling, application and validation".

+In Building Simulation 2021, vol. 17, pp. 2315-2316. IBPSA, 2021. +Available + +online. +

+", +revisions=" + +"), __Dymola_experimentSetupOutput(events=false)); end PVSingleDiodeNISTValidation; diff --git a/IBPSA/Electrical/DC/Sources/Validation/PVSingleDiodeRooftopBuildingValidation.mo b/IBPSA/Electrical/DC/Sources/Validation/PVSingleDiodeRooftopBuildingValidation.mo index e18a470a33..653ed3d14f 100644 --- a/IBPSA/Electrical/DC/Sources/Validation/PVSingleDiodeRooftopBuildingValidation.mo +++ b/IBPSA/Electrical/DC/Sources/Validation/PVSingleDiodeRooftopBuildingValidation.mo @@ -6,76 +6,75 @@ model PVSingleDiodeRooftopBuildingValidation HGloTil(H(start=100))); extends Modelica.Icons.Example; - IBPSA.Electrical.DC.Sources.PVSingleDiode pVSystemSingleDiode( + IBPSA.Electrical.DC.Sources.PVSingleDiode pVSystem1Diode115Wp( PVTechType=IBPSA.Electrical.BaseClasses.PV.BaseClasses.PVOptical.PVType.ThinFilmSI, use_Til_in=false, til(displayUnit="rad") = til, - n_mod=3, - redeclare IBPSA.Electrical.Data.PV.SingleDiodeSolibroSL2CIGS110 data, + n_mod=2, + redeclare IBPSA.Electrical.Data.PV.SingleDiodeSolibroSL2CIGS115 data, groRef=rho, alt=0.08, redeclare IBPSA.Electrical.BaseClasses.PV.PVThermalEmpMountCloseToGround - PVThermal) - annotation (Placement(transformation(extent={{64,0},{92,20}}))); + PVThermal) "PV modules with a peak power of 115 Wp" + annotation (Placement(transformation(extent={{60,20},{80,40}}))); - PVSingleDiode pVSystemSingleDiode1( + PVSingleDiode pVSystem1Diode120Wp( PVTechType=IBPSA.Electrical.BaseClasses.PV.BaseClasses.PVOptical.PVType.ThinFilmSI, use_Til_in=false, til(displayUnit="rad") = til, - n_mod=3, - redeclare IBPSA.Electrical.Data.PV.SingleDiodeSolibroSL2CIGS110 data, + n_mod=4, + redeclare IBPSA.Electrical.Data.PV.SingleDiodeSolibroSL2CIGS120 data, groRef=rho, alt=0.08, redeclare IBPSA.Electrical.BaseClasses.PV.PVThermalEmpMountCloseToGround - PVThermal) - annotation (Placement(transformation(extent={{52,56},{86,84}}))); + PVThermal) "PV modules with a peak power of 120 Wp" + annotation (Placement(transformation(extent={{60,60},{80,80}}))); Modelica.Blocks.Math.Add add - annotation (Placement(transformation(extent={{80,32},{90,42}}))); + annotation (Placement(transformation(extent={{86,24},{96,34}}))); equation - connect(HGloTil.H, pVSystemSingleDiode.HGloTil) annotation (Line(points={{41,50}, - {60.5,50},{60.5,4}}, color={0,0,127})); - connect(MeaDatHGloHor.y[1], pVSystemSingleDiode.HGloHor) annotation (Line( - points={{-79,-90},{-16,-90},{-16,-84},{44,-84},{44,48},{60.5,48},{60.5,7}}, - color={0,0,127})); - connect(souGloHorDif.y, pVSystemSingleDiode.HDifHor) annotation (Line(points={{-79,-24}, - {-60,-24},{-60,80},{60.5,80},{60.5,1}}, - color={0,0,127})); - connect(incAng.y, pVSystemSingleDiode.incAngle) annotation (Line(points={{38.8, - -10},{52,-10},{52,32},{88,32},{88,16},{60.5,16}}, - color={0,0,127})); - connect(zen.y, pVSystemSingleDiode.zenAngle) annotation (Line(points={{41,-50}, - {60,-50},{60,-34},{96,-34},{96,19},{60.5,19}}, color={0,0,127})); - connect(from_degC.y, pVSystemSingleDiode.TDryBul) annotation (Line(points={{-41.2, - -50},{0,-50},{0,20},{40,20},{40,34},{68,34},{68,10},{60.5,10}}, - color={0,0,127})); - connect(MeaDatWinAngSpe.y[2], pVSystemSingleDiode.vWinSpe) annotation (Line( - points={{-79,10},{-56,10},{-56,40},{60.5,40},{60.5,13}}, color={0,0,127})); - connect(add.y, PDCSim) annotation (Line(points={{90.5,37},{90.5,36},{96,36},{ - 96,40},{110,40}}, color={0,0,127})); - connect(pVSystemSingleDiode1.PDC, add.u1) annotation (Line(points={{88.125,70}, - {86,70},{86,46},{74,46},{74,40},{79,40}}, color={0,0,127})); - connect(pVSystemSingleDiode.PDC, add.u2) annotation (Line(points={{93.75,10}, - {92,10},{92,24},{79,24},{79,34}}, color={0,0,127})); - connect(zen.y, pVSystemSingleDiode1.zenAngle) annotation (Line(points={{41, - -50},{40,-50},{40,-36},{48,-36},{48,52},{42,52},{42,64},{40,64},{40, - 82},{47.75,82},{47.75,82.6}}, color={0,0,127})); - connect(incAng.y, pVSystemSingleDiode1.incAngle) annotation (Line(points={{ - 38.8,-10},{46,-10},{46,52},{42,52},{42,78.4},{47.75,78.4}}, color={0, + connect(HGloTil.H, pVSystem1Diode115Wp.HGloTil) annotation (Line(points={{21,50}, + {50,50},{50,24},{58,24}}, color={0,0,127})); + connect(MeaDatHGloHor.y[1], pVSystem1Diode115Wp.HGloHor) annotation (Line( + points={{-79,-90},{-16,-90},{-16,-84},{44,-84},{44,27},{58,27}}, color={ + 0,0,127})); + connect(from_degC.y, pVSystem1Diode115Wp.TDryBul) annotation (Line(points={{-39, + -50},{-34,-50},{-34,26},{46,26},{46,30},{58,30}}, color={0,0,127})); + connect(MeaDatWinAngSpe.y[2], pVSystem1Diode115Wp.vWinSpe) annotation (Line( + points={{-79,10},{-68,10},{-68,84},{46,84},{46,33},{58,33}}, color={0,0, + 127})); + connect(add.y, PDCSim) annotation (Line(points={{96.5,29},{96.5,30},{110,30}}, + color={0,0,127})); + connect(pVSystem1Diode120Wp.PDC, add.u1) + annotation (Line(points={{81,70},{85,70},{85,32}}, color={0,0,127})); + connect(pVSystem1Diode115Wp.PDC, add.u2) + annotation (Line(points={{81,30},{81,26},{85,26}}, color={0,0,127})); + connect(zen.y, pVSystem1Diode120Wp.zenAngle) annotation (Line(points={{1,-50}, + {14,-50},{14,-22},{34,-22},{34,38},{52,38},{52,79},{58,79}}, color={0, 0,127})); - connect(MeaDatWinAngSpe.y[2], pVSystemSingleDiode1.vWinSpe) annotation (Line( - points={{-79,10},{-58,10},{-58,74.2},{47.75,74.2}}, color={0,0,127})); - connect(from_degC.y, pVSystemSingleDiode1.TDryBul) annotation (Line(points={{ - -41.2,-50},{-41.2,-6},{-44,-6},{-44,18},{-46,18},{-46,70},{47.75,70}}, + connect(incAng.y, pVSystem1Diode120Wp.incAngle) annotation (Line(points={{21,-10}, + {52,-10},{52,76},{58,76}}, color={0,0,127})); + connect(MeaDatWinAngSpe.y[2], pVSystem1Diode120Wp.vWinSpe) annotation (Line( + points={{-79,10},{-68,10},{-68,84},{46,84},{46,73},{58,73}}, color={0,0, + 127})); + connect(from_degC.y, pVSystem1Diode120Wp.TDryBul) annotation (Line(points={{-39, + -50},{-34,-50},{-34,26},{46,26},{46,30},{52,30},{52,70},{58,70}}, + color={0,0,127})); + connect(MeaDatHGloHor.y[1], pVSystem1Diode120Wp.HGloHor) annotation (Line( + points={{-79,-90},{-16,-90},{-16,-84},{44,-84},{44,26},{52,26},{52,67},{ + 58,67}}, color={0,0,127})); + connect(HGloTil.H, pVSystem1Diode120Wp.HGloTil) annotation (Line(points={{21,50}, + {50,50},{50,64},{58,64}}, color={0,0,127})); + connect(souGloHorDif.y, pVSystem1Diode120Wp.HDifHor) annotation (Line(points={ + {-79,-24},{-74,-24},{-74,88},{-66,88},{-66,76},{54,76},{54,61},{58,61}}, + color={0,0,127})); + connect(incAng.y, pVSystem1Diode115Wp.incAngle) annotation (Line(points={{21,-10}, + {52,-10},{52,36},{58,36}}, color={0,0,127})); + connect(zen.y, pVSystem1Diode115Wp.zenAngle) annotation (Line(points={{1,-50}, + {14,-50},{14,-22},{34,-22},{34,39},{58,39}}, color={0,0,127})); + connect(souGloHorDif.y, pVSystem1Diode115Wp.HDifHor) annotation (Line(points={ + {-79,-24},{-74,-24},{-74,88},{-66,88},{-66,76},{54,76},{54,21},{58,21}}, color={0,0,127})); - connect(MeaDatHGloHor.y[1], pVSystemSingleDiode1.HGloHor) annotation (Line( - points={{-79,-90},{-60,-90},{-60,-80},{-16,-80},{-16,-84},{44,-84},{44, - 36},{18,36},{18,42},{14,42},{14,65.8},{47.75,65.8}}, color={0,0,127})); - connect(HGloTil.H, pVSystemSingleDiode1.HGloTil) annotation (Line(points={{41, - 50},{41,54},{47.75,54},{47.75,61.6}}, color={0,0,127})); - connect(souGloHorDif.y, pVSystemSingleDiode1.HDifHor) annotation (Line(points= - {{-79,-24},{-60,-24},{-60,0},{-50,0},{-50,42},{16,42},{16,57.4},{47.75, - 57.4}}, color={0,0,127})); annotation ( Icon(coordinateSystem(preserveAspectRatio=false, extent={{-120,-100},{100, 100}})), @@ -92,7 +91,8 @@ equation "Simulate and plot"), Documentation(info="

The PVSystem single-diode model is validaded with empirical data from the Rooftop solar builidng of UdK Berlin: http://www.solar-rooftop.de/

-

The dates 28.07.2023 to 09.08.2023 were chosen as an example for the PVSystem model.

+

The dates 29.07.2023 to 09.08.2023 were chosen as an example for the PVSystem model.

+

The system consists of four modules with 120 Wp and two modules with 115 Wp.

The validation model proves that single-diode PV models tend to overestimate the power output.

This is due to the neglection of staining, shading, other loss effects.

",revisions=" diff --git a/IBPSA/Electrical/DC/Sources/Validation/PVTwoDiodesRooftopBuildingValidation.mo b/IBPSA/Electrical/DC/Sources/Validation/PVTwoDiodesRooftopBuildingValidation.mo deleted file mode 100644 index 7211a91d68..0000000000 --- a/IBPSA/Electrical/DC/Sources/Validation/PVTwoDiodesRooftopBuildingValidation.mo +++ /dev/null @@ -1,64 +0,0 @@ -within IBPSA.Electrical.DC.Sources.Validation; -model PVTwoDiodesRooftopBuildingValidation - "Validation of the two-diodes PV model with empirical data from a rooftop PV system with CIGS modules at UdK, Berlin" - extends Modelica.Icons.Example; - extends - IBPSA.Electrical.DC.Sources.Validation.BaseClasses.partialPVRooftopBuildingValidation; - IBPSA.Electrical.DC.Sources.PVTwoDiodes pVSystemTwoDiodes( - PVTechType=IBPSA.Electrical.BaseClasses.PV.BaseClasses.PVOptical.PVType.ThinFilmSI, - til=til, - n_mod=6, - redeclare IBPSA.Electrical.Data.PV.TwoDiodesSolibroSL2CIGS110 data, - groRef=rho, - alt=0.08, - redeclare IBPSA.Electrical.BaseClasses.PV.PVThermalEmpMountCloseToGround - PVThermal) - annotation (Placement(transformation(extent={{64,0},{84,20}}))); - -equation - - connect(pVSystemTwoDiodes.PDC, PDCSim) annotation (Line(points={{85.25,10},{96, - 10},{96,40},{110,40}}, color={0,0,127})); - connect(zen.y, pVSystemTwoDiodes.zenAngle) annotation (Line(points={{41,-50},{ - 52,-50},{52,19},{61.5,19}}, color={0,0,127})); - connect(incAng.y, pVSystemTwoDiodes.incAngle) annotation (Line(points={{38.8,-10}, - {54,-10},{54,16},{61.5,16}}, color={0,0,127})); - connect(MeaDatWinAngSpe.y[2], pVSystemTwoDiodes.vWinSpe) annotation (Line( - points={{-79,10},{-46,10},{-46,24},{48,24},{48,13},{61.5,13}}, color={0, - 0,127})); - connect(MeaDatHGloHor.y[1], pVSystemTwoDiodes.HGloHor) annotation (Line( - points={{-79,-90},{-60,-90},{-60,-80},{-20,-80},{-20,-24},{14,-24},{14,7}, - {61.5,7}}, color={0,0,127})); - connect(souGloHorDif.y, pVSystemTwoDiodes.HDifHor) annotation (Line(points={{-79, - -24},{-16,-24},{-16,-22},{61.5,-22},{61.5,1}}, color={0,0,127})); - connect(HGloTil.H, pVSystemTwoDiodes.HGloTil) annotation (Line(points={{41,50}, - {52,50},{52,20},{54,20},{54,4},{61.5,4}}, color={0,0,127})); - connect(from_degC.y, pVSystemTwoDiodes.TDryBul) annotation (Line(points={{-41.2, - -50},{-41.2,-6},{-44,-6},{-44,22},{46,22},{46,10},{61.5,10}}, color={0, - 0,127})); - annotation ( - Icon(coordinateSystem(preserveAspectRatio=false, extent={{-120,-100},{100, - 100}})), - Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-120,-100},{ - 100,100}})), - experiment( - StartTime=12182400, - StopTime=13046400, - Interval=900, - Tolerance=1e-06, - __Dymola_Algorithm="Dassl"), - __Dymola_Commands(file= - "modelica://IBPSA/Resources/Scripts/Dymola/Electrical/DC/Sources/Validation/PVTwoDiodesRooftopBuildingValidation.mos" - "Simulate and plot"), - Documentation(info=" -

The PVSystem 2 diode model is validaded with empirical data from the Rooftop solar builidng of UdK Berlin: http://www.solar-rooftop.de/

-

The date 18.04.2023 was chosen as an example for the PVSystem model.

-",revisions=" - -")); -end PVTwoDiodesRooftopBuildingValidation; diff --git a/IBPSA/Electrical/DC/Sources/Validation/package.order b/IBPSA/Electrical/DC/Sources/Validation/package.order index b548b707ac..4f4e9393e2 100644 --- a/IBPSA/Electrical/DC/Sources/Validation/package.order +++ b/IBPSA/Electrical/DC/Sources/Validation/package.order @@ -1,4 +1,3 @@ -PVSingleDiodeRooftopBuildingValidation PVSingleDiodeNISTValidation -PVTwoDiodesRooftopBuildingValidation +PVSingleDiodeRooftopBuildingValidation BaseClasses diff --git a/IBPSA/Electrical/DC/Sources/package.order b/IBPSA/Electrical/DC/Sources/package.order index c861dd262a..d400cf13a1 100644 --- a/IBPSA/Electrical/DC/Sources/package.order +++ b/IBPSA/Electrical/DC/Sources/package.order @@ -1,6 +1,5 @@ ConstantVoltage PVSingleDiode -PVTwoDiodes VoltageSource Validation Examples diff --git a/IBPSA/Electrical/Data/PV/TwoDiodesData.mo b/IBPSA/Electrical/Data/PV/TwoDiodesData.mo deleted file mode 100644 index 0aced9f1f3..0000000000 --- a/IBPSA/Electrical/Data/PV/TwoDiodesData.mo +++ /dev/null @@ -1,21 +0,0 @@ -within IBPSA.Electrical.Data.PV; -record TwoDiodesData - "Basic record of a PV module with two diodes base model" - extends Modelica.Icons.Record; - extends IBPSA.Electrical.Data.PV.Generic; - - parameter Real c1(unit = "m2/V") - "1st coefficient IPho"; - parameter Real c2(unit = "m2/(kV.K)") - "2nd coefficient IPho"; - parameter Real cs1(unit = "A/K3") - "1st coefficient ISat1"; - parameter Real cs2(unit = "A/(K5)") - "2nd coefficient ISat2"; - parameter Modelica.Units.SI.Resistance R_s - "Serial resistance"; - parameter Modelica.Units.SI.Resistance R_sh - "Parallel resistance"; - annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram(coordinateSystem( - preserveAspectRatio=false))); -end TwoDiodesData; diff --git a/IBPSA/Electrical/Data/PV/TwoDiodesSolibroSL2CIGS110.mo b/IBPSA/Electrical/Data/PV/TwoDiodesSolibroSL2CIGS110.mo deleted file mode 100644 index c6c39ffeae..0000000000 --- a/IBPSA/Electrical/Data/PV/TwoDiodesSolibroSL2CIGS110.mo +++ /dev/null @@ -1,20 +0,0 @@ -within IBPSA.Electrical.Data.PV; -record TwoDiodesSolibroSL2CIGS110 - "Solibro SL2 CIG S110 record" - extends IBPSA.Electrical.Data.PV.TwoDiodesData( - n_ser=150, - n_par=1, - A_cel=1.0, - A_mod=0.7895*1.190, - Eg0 = 1.107, - R_sh = 500.0, - R_s = 0.027484527, - c1 = 0.0011962052, - c2 = 0.001542755, - cs1 = 9.490919, - cs2 = 0.007634368, - T_NOCT=51 + 273.15); - //Eg = 1.107, - annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false))); -end TwoDiodesSolibroSL2CIGS110; diff --git a/IBPSA/Electrical/Data/PV/package.order b/IBPSA/Electrical/Data/PV/package.order index 0cc663dcaf..60adda299a 100644 --- a/IBPSA/Electrical/Data/PV/package.order +++ b/IBPSA/Electrical/Data/PV/package.order @@ -1,8 +1,6 @@ Generic SingleDiodeData +SingleDiodeShardNUU235F2 SingleDiodeSolibroSL2CIGS110 SingleDiodeSolibroSL2CIGS115 SingleDiodeSolibroSL2CIGS120 -SingleDiodeShardNUU235F2 -TwoDiodesData -TwoDiodesSolibroSL2CIGS110 diff --git a/IBPSA/Resources/Scripts/Dymola/Electrical/DC/Sources/Validation/PVTwoDiodesRooftopBuildingValidation.mos b/IBPSA/Resources/Scripts/Dymola/Electrical/DC/Sources/Validation/PVSingleDiodeNISTValidation.mos similarity index 60% rename from IBPSA/Resources/Scripts/Dymola/Electrical/DC/Sources/Validation/PVTwoDiodesRooftopBuildingValidation.mos rename to IBPSA/Resources/Scripts/Dymola/Electrical/DC/Sources/Validation/PVSingleDiodeNISTValidation.mos index 93799ad681..5fdba0131b 100644 --- a/IBPSA/Resources/Scripts/Dymola/Electrical/DC/Sources/Validation/PVTwoDiodesRooftopBuildingValidation.mos +++ b/IBPSA/Resources/Scripts/Dymola/Electrical/DC/Sources/Validation/PVSingleDiodeNISTValidation.mos @@ -1,5 +1,5 @@ // Plot commands -simulateModel("IBPSA.Electrical.DC.Sources.Validation.PVTwoDiodesRooftopBuildingValidation", startTime=18057600, stopTime=19094400, outputInterval=300, method="dassl", tolerance=1e-6, resultFile="PVTwoDiodesRooftopBuildingValidation"); +simulateModel("IBPSA.Electrical.DC.Sources.Validation.PVSingleDiodeNISTValidation", startTime=0, stopTime=86400, outputInterval=300, method="dassl", tolerance=1e-6, resultFile="PVSingleDiodeNISTValidation"); removePlots(); Advanced.FilenameInLegend = false; Advanced.SequenceInLegend = true; @@ -16,7 +16,7 @@ description=false, grid=true, color=true, online=false, -filename="PVTwoDiodesRooftopBuildingValidation.mat", +filename="PVSingleDiodeNISTValidation.mat", leftTitleType=1, bottomTitleType=1, colors={{0,0,255},{238,46,47}});