modelPVPlantControllable

Simple controllable efficiency-based PV model with complex power port

Extends from TransiEnt.Basics.Icons.SolarElectricalModel.

Information

1. Purpose of model

The purpose of this model is to calculate the power of a photovoltaic (PV) module or several modules with an controllable inverter. The active power generation can be limited, the reactive power can be adjusted based on the active power and apparent power.

2. Level of detail, physical effects considered, and physical insight

Model is based on empiric equations and PV manufacturers data. Optical losses are being consideres due to loss factors for soiling and refraction and reflexion (contained in the incidence angle modification). Degradation of the modules and inverter consumption is not included in the model.

3. Limits of validity

The model has been validated with System Advisor Model simulation results [1] for fixed PV arrays without shading influences. The results are best with Tilt angle of ~30°.

The model has not been entirely validated for sun tracking. Disabling Incidence Angle Modifications seems to improve results with tracking enabled.

4. Interfaces

Input:

DNI_in for direct normal irradiation

DHI_in for diffuse horizontal irradiation

T_in for ambient temperature

WindSpeed_in for wind speed

controlBus for P_limit, SignalActive and Q_input (conditional interface activated by parameter useControlBus)

Output:

epp for connection to a complex root mean square grid simulation

controlBus for P_out, Q_out (conditional interface activated by parameter useControlBus)

5. Nomenclature

See parameter and variable descriptions in the code.

6. Governing Equations

6.1. Plane of Array (POA) Irradiation

The POA irradiation is being calculated in IrradianceOnATiltedSurface model.

6.2. Module Temperature

The module temperature T_module is estimated following [2]:

T_module = 273.15 + T_in + POA_Irradiation * (exp(-3.47 - 0.0594 * WindSpeed_in))

6.3. Direct Current Power output P_dc

P_dc is calculated by:

P_dc = PowerCurve_PV_Irradiation.y[1] * PowerCurve_PV_Temp.y[1] / Pmpp * (100 - LossesDC) / 100 * P_inst / Pmpp

PowerCurve_PV_Irradiation.y[1] is the Maximum Power Point (MPP) power at the current Irradiation at reference temperature of the simulated module. PowerCurve_PV_Temp.y[1] is the MPP power at the current temperature at reference irradiation of the simulated module. Pmpp is the MPP power at reference conditions of the simulated module. LossesDC are the losses in % through Connections, Wiring, Tracking Error and Mismatches. P_inst is the cumulated installed power.

6.4. Active Power Output epp.P

P_out is calculated by:

if P_dc*EfficiencyCurve_Inverter.y[1]*(100-LossesAC)/100 < P_inverter then

P_out=P_dc*EfficiencyCurve_Inverter.y[1]*(100-LossesAC)/100;

else

P_out=P_inverter;

end if;

epp.P is calculated by:

if controlBus.SignalActive then

epp.P = min(controlBus.P_limit, P_out);

else

epp.P = P_out;

end if;

EfficiencyCurve_Inverter.y[1] is the efficiency of the simulated inverter depending on the inverter load. If P_dc exceeds the inverter power P_inverter the output is cut off to P_inverter as its maximum, where P_inverter is defined as the installed PV DC power divided by DCtoACratio which is the ratio between installed DC and AC power. LossesAC are losses on the AC side not included in inverter efficiency.

6.4. Reactive Power Output epp.Q

epp.Q has to be set externally over controlBus.Q_input and is limited by Q_max_calc (Variable) and Q_max (Parameter) over two conditional limiters.

Q_max_calc^2 = S_max^2 - P_out^2

if useControlBus and use_ReactivePower then

epp.Q = min(controlBus.Q_input, Q_max_calc, Q_max);

else

epp.Q = 0 VAr;

end if;


7. Remarks for Usage

For the calculation of the output power, manufacturer datasheets are to be digitalized, e.g. with http://arohatgi.info/WebPlotDigitizer/. This is an example for a Sanyo HIT 200BA module [2]. Digitalize the following figures:

[2]

[2]

After digitalization, calculate the MPP power of each curve and write those to a record as shown in TransiEnt.Producer.Electrical.Photovoltaics.Advanced_PV.Characteristics. For the above shown curves the record is:

record PVModule_Characteristics_Sanyo_HIT_200_BA3

extends Generic_Characteristics_PVModule(

MPP_dependency_on_Temp_fixedIrradiation=[

0,214.3545548;

25,200.8472531;

50,187.3094253;

75,173.1095017],

MPP_dependency_on_irradiation_fixedTemperature=[

0,0;

200,37.69290789;

400,77.36493756;

600,117.7097234;

800,159.0501238;

1000,201.294124]);

annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram(coordinateSystem(preserveAspectRatio=false)));

end PVModule_Characteristics_Sanyo_HIT_200_BA3;

Hereby the firste table (MPP_dependency_on_Temp_fixedIrradiation) gives the MPP power (second column) for fixed irradiation and different temperatures (first column) and the second table (MPP_dependency_on_irradiation_fixedTemperature) gives the MPP power (second column) for fixed temperature and different irradiation (first column).

8. Validation

The model has been validated with System Advisor Model simulation results [1] for bigger fixed PV arrays without shading influences.

IWEC or TMY data was used in Hamburg, Munich and Miami.

9. References

[1] https://sam.nrel.gov/

[2] http://store.affordable-solar.com/site/doc/Doc_sanyo_specs_20061106173925.pdf


10. Version History

Advanced_PV by Oliver Schülting and Ricardo Peniche, Technische Universität Hamburg, Institut für Energietechnik, 2015

Revision by Tobias Becke, Technische Universität Hamburg, Institut für Energietechnik, 2016

Adjusted by Tom Steffen, Techische Universität Hamburg, Institut für Elektrische Energietechnik, 2025

Parameters

TypeNameDefaultDescription
Modelica.Units.SI.PowerP_inst200combined installed power
Modelica.Units.SI.PowerPmpp200peak power of one module
Modelica.Units.SI.VoltageV_nominal400Nominal Voltage
Modelica.Units.SI.AreaArea1.18area of one complete module
RealStrings1choose amount of strings
RealGroundCoverageRatio0.3ratio of covered ground of modules to area of modules
RealLossesDC4.44losses in % through connections, wiring, tracking error and mismatches
RealLossesAC1losses on AC side not included in inverter efficiency
RealSoiling5Average annual losses of radiation in % due to soiling
TransiEnt.Producer.Electrical.Photovoltaics.Advanced_PV.Characteristics.Generic_Characteristics_PVModulePVModuleCharacteristicsTransiEnt.Producer.Electrical.Photovoltaics.Advanced_PV.Characteristics.PVModule_Characteristics_Sanyo_HIT_200_BA3()Characteristics of PV Module
BooleanintegratePowerDcfalsetrue if power shall be integrated
BooleanintegratePowerOutfalsetrue if output power shall be integrated
Inverter
RealDCtoACratio1.1ratio between installed DC and AC power
Booleanuse_ReactivePowerfalsetrue, if reactive power can be set
Modelica.Units.SI.ApparentPowerS_maxP_instmaximum apparent power
Modelica.Units.SI.ReactivePowerQ_max0.3*S_maxmaximum reactive power
Irradiance › Solartime
Modelica.Units.SI.Anglelongitude_localModelica.Units.Conversions.from_deg(10)longitude of the local position, east positive, 10 East for Hamburg
Modelica.Units.SI.Anglelongitude_standardModelica.Units.Conversions.from_deg(15)needed for calculation of coordinated universal time (utc), 15 for central european time, 30 for central european summer time
Irradiance › Extraterrestrial Irradiance
Modelica.Units.SI.AnglelatitudeModelica.Units.Conversions.from_deg(53.55)latitude of the local position, north positive, 53,55 North for Hamburg
Modelica.Units.SI.AngleslopeModelica.Units.Conversions.from_deg(30)slope of the tilted surface, assumption
Modelica.Units.SI.AnglesurfaceAzimuthAngle0surface azimuth angle
Booleaninput_POA_irradiationfalseIf true, plane of array irradiation is used as input instead of DNI and DHI
IAM › General
Integerkind1IAM for direct Irradiance
Realconstant_iam_dir1constant IAM for direct irradiation
Realconstant_iam_diff1constant IAM for diffuse irradiation
Realconstant_iam_ground1constant IAM for ground-reflected irradiation
Realb01assumption: constant b0-value for IAM=1-b0*(1/cos(theta)-1)
Realiam_SRCC{1, 1, 1, 1, 1, 1, 1, 1}IAM for theta = 0, 10, 20, ..., 70
Modelica.Units.NonSI.Angle_degtheta{0, 10, 20, 30, 40, 50, 60, 70}
Irradiance › Skymodel
Realreflectance_ground0.2reflectance of the ground
Booleandirect_normaltrueIs the direct irradiance measured on a surface normal to irradiance?
External Control
ControlTypecontrolTypeTransiEnt.Basics.Types.ControlType.InternalType of control (see enumeration)
BooleanuseControlBusfalseenable expandable controller with ability to control power output

Connectors

TypeNameDefaultDescription
TransiEnt.Basics.Interfaces.General.TemperatureCelsiusInT_inambient temperature in Celcius
TransiEnt.Basics.Interfaces.Ambient.VelocityInWindSpeed_inwind speed in m/s
TransiEnt.Basics.Interfaces.Electrical.ComplexPowerPortepppower output
Modelica.Blocks.Interfaces.RealInputPOA_radiation_inRadiation on module in W/m^2
TransiEnt.Basics.Interfaces.Ambient.IrradianceInDNI_inDirect Normal Irradiation in W/m^2
TransiEnt.Basics.Interfaces.Ambient.IrradianceInDHI_inDiffuse Horizontal Irradiation in W/m^2
TransiEnt.Basics.Interfaces.Ambient.IrradianceOutPOA_Irradiation
TransiEnt.Basics.Interfaces.General.ControlBuscontrolBus

Components

TypeNameDefaultDescription
TransiEnt.ModelStatisticsmodelStatistics
TransiEnt.SimCentersimCenter
Modelica.Units.NonSI.Time_daytotaldays365total days of the year, standard=365, leap year=366
Modelica.Units.SI.TemperatureT_modulemodule temperature
Modelica.Units.SI.TemperatureT_cellcell temperature
Modelica.Units.SI.PowerP_dcDC input power for inverter
Modelica.Units.SI.PowerP_inverterinstalled DC inverter power
Modelica.Units.SI.PowerP_outoutout power
Modelica.Units.SI.EnergyE_dcaccumulated DC energy
Modelica.Units.SI.EnergyEaccumulated AC energy
Modelica.Units.SI.TimeFLHFull load hours
Modelica.Units.SI.AreaArea_demand
RealModulesPerStringChoose amount of modules per string
Modelica.Units.SI.Irradianceirradiance_pu_factor1Just to have no unit errors in equations below where the irradiance is needed in empirical equations
Modelica.Units.SI.ReactivePowerQ_max_calc
TransiEnt.Components.Statistics.Collectors.LocalCollectors.PowerPlantCostcollectCosts_PowerProducer
TransiEnt.Producer.Heat.SolarThermal.Base.IAMIAM
TransiEnt.Producer.Heat.SolarThermal.Base.IrradianceOnATiltedSurfaceirradiance
TransiEnt.Components.Statistics.Collectors.LocalCollectors.CollectElectricPowercollectElectricPower
Modelica.Blocks.Tables.CombiTable1DsPowerCurve_PV_IrradiationDependency of MPP on irradiation with fixed temperature
Modelica.Blocks.Tables.CombiTable1DsPowerCurve_PV_TempDependency of MPP on temperature with fixed irradiation
Modelica.Blocks.Tables.CombiTable1DsEfficiencyCurve_Inverter
Modelica.Blocks.Sources.RealExpressionrealExpression1
TransiEnt.Components.Boundaries.Electrical.ComplexPower.PQBoundarypQBoundary
Modelica.Blocks.Sources.RealExpressionQ_out_standard_2
Modelica.Blocks.Sources.RealExpressionP_out_limit
Modelica.Blocks.Math.Minmin
Modelica.Blocks.Sources.RealExpressionP_out_standard
Modelica.Blocks.Logical.SwitchLimitSwitch
Modelica.Blocks.Math.Gaingain
Modelica.Blocks.Nonlinear.LimitermaxQ_Limit
Modelica.Blocks.Nonlinear.VariableLimiterQLimiter
Modelica.Blocks.Sources.RealExpressionQ_limit
Modelica.Blocks.Sources.RealExpressionQ_limit2
Modelica.Blocks.Sources.RealExpressionQ_out_standard
Modelica.Blocks.Sources.RealExpressionActive_Power_Output
Modelica.Blocks.Sources.RealExpressionReactive_Power_Output
Modelica.Blocks.Sources.RealExpressionMaximum_Active_Power_Output

Contents

NameDescription
ProducerCosts
Skymodel