Buildings.Fluid.SolarCollectors.Controls

Package for solar thermal collector controllers

Information

This package contains a controller for solar thermal collectors.

Extends from Modelica.Icons.Package (Icon for standard packages).

Package Content

Name Description
Buildings.Fluid.SolarCollectors.Controls.CollectorPump CollectorPump Controller which activates a circulation pump when solar radiation is above a critical level
Buildings.Fluid.SolarCollectors.Controls.Examples Examples Examples for solar thermal collector controller models
Buildings.Fluid.SolarCollectors.Controls.BaseClasses BaseClasses Package of BaseClass models used to create the models in the Controls package

Buildings.Fluid.SolarCollectors.Controls.CollectorPump Buildings.Fluid.SolarCollectors.Controls.CollectorPump

Controller which activates a circulation pump when solar radiation is above a critical level

Buildings.Fluid.SolarCollectors.Controls.CollectorPump

Information

Pump on/off controller for a solar thermal system.

This controller outputs whether the pump should be commanded on or off based on the incident solar radiation, the collector inlet temperature, and the system parameters. The pump is commanded on when the incident solar radiation is greater than the critical radiation plus the offset delQ_flow, and it is switched off if the incident solar radiation is below the critical radiation.

The critical radiation is defined per Equation 6.8.2 in Duffie and Beckman (2006). It is

GTC=(FRUL (TIn-TEnv))/(FR(τα))

where GTC is the critical solar radiation, FRUL is the heat loss coefficient, TIn is the inlet temperature, TEnv is the ambient temperature, and FR(τα) is the maximum efficiency.

References

J.A. Duffie and W.A. Beckman 2006, Solar Engineering of Thermal Processes (3rd Edition), John Wiley & Sons, Inc.

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

Parameters

TypeNameDefaultDescription
HeatFlowRatedelQ_flow10Required estimated heat gain per unit area of collector to switch system on [W]
Angleazi Surface azimuth (0 for south-facing; -90 degree for east-facing; +90 degree for west facing [rad]
Angletil Surface tilt (0 for horizontally mounted collector) [rad]
Realrho0.2Ground reflectance [1]
GenericSolarCollectorper Performance data

Connectors

TypeNameDescription
input RealInputTInFluid temperature entering the collector [K]
output BooleanOutputonOuputs true if collector pump should be on
BusweaBusWeather data input

Modelica definition

model CollectorPump "Controller which activates a circulation pump when solar radiation is above a critical level" extends Modelica.Blocks.Icons.Block; parameter Modelica.Units.SI.HeatFlowRate delQ_flow(min=1)=10 "Required estimated heat gain per unit area of collector to switch system on"; parameter Modelica.Units.SI.Angle azi(displayUnit="deg") "Surface azimuth (0 for south-facing; -90 degree for east-facing; +90 degree for west facing"; parameter Modelica.Units.SI.Angle til(displayUnit="deg") "Surface tilt (0 for horizontally mounted collector)"; parameter Real rho( final min=0, final max=1, final unit = "1") = 0.2 "Ground reflectance"; parameter Buildings.Fluid.SolarCollectors.Data.GenericSolarCollector per "Performance data"; Modelica.Blocks.Interfaces.RealInput TIn( final unit = "K", final displayUnit = "degC", quantity = "ThermodynamicTemperature") "Fluid temperature entering the collector"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput on "Ouputs true if collector pump should be on"; Buildings.BoundaryConditions.WeatherData.Bus weaBus "Weather data input"; Buildings.Fluid.SolarCollectors.Controls.BaseClasses.GCritCalc criSol( final slope=per.slope, final y_intercept=per.y_intercept) "Calculates the critical insolation based on collector design and current weather conditions"; BoundaryConditions.SolarIrradiation.DiffusePerez HDifTilIso( final til=til, final azi=azi, final rho=rho) "Diffuse solar irradiation on a tilted surface"; BoundaryConditions.SolarIrradiation.DirectTiltedSurface HDirTil( final til=til, final azi=azi) "Direct solar irradiation on a tilted surface"; Buildings.Controls.OBC.CDL.Reals.Add HTotTil( u1(final unit="W/m2"), u2(final unit="W/m2"), y(final unit="W/m2")) "Total irradiation on tilted surface"; Buildings.Controls.OBC.CDL.Reals.Hysteresis hys( final uLow=0, final uHigh=delQ_flow); protected Buildings.Controls.OBC.CDL.Reals.Subtract sub "Difference between incident solar and required incident to compensate thermal losses"; equation connect(TIn, criSol.TIn); connect(weaBus.TDryBul, criSol.TEnv); connect(HDirTil.weaBus, weaBus); connect(HDifTilIso.weaBus, weaBus); connect(HDifTilIso.H, HTotTil.u1); connect(HDirTil.H, HTotTil.u2); connect(HTotTil.y, sub.u1); connect(criSol.G_TC, sub.u2); connect(hys.u, sub.y); connect(on, hys.y); end CollectorPump;