This package contains a controller for solar thermal collectors.
Extends from Modelica.Icons.Package (Icon for standard packages).Name | Description |
---|---|
SolarPumpController | Controller which activates a circulation pump when solar radiation is above a critical level |
Examples | Examples for solar thermal collector controller models |
BaseClasses | Package of BaseClass models used to create the models in the Controls package |
This component models a pump controller which might be used in a solar thermal system. It controls whether the pump is active or inactive based on the incident solar radiation and the system parameters. The pump is activated when the incident solar radiation is greater than 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.
J.A. Duffie and W.A. Beckman 2006, Solar Engineering of Thermal Processes (3rd Edition),
John Wiley & Sons, Inc.
Type | Name | Default | Description |
---|---|---|---|
Real | delY | 0.01 | Width of the smoothHeaviside function [W/m2] |
GenericSolarCollector | per | Performance data |
Type | Name | Description |
---|---|---|
input RealInput | TIn | Fluid temperature entering the collector [K] |
output RealOutput | y | On/off control signal for the pump [1] |
Bus | weaBus | Weather data input |
model SolarPumpController "Controller which activates a circulation pump when solar radiation is above a critical level" extends Modelica.Blocks.Interfaces.BlockIcon; parameter Real delY(final unit = "W/m2") = 0.01 "Width of the smoothHeaviside function";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"; Modelica.Blocks.Interfaces.RealOutput y(min=0, max=1, unit="1") "On/off control signal for the pump"; 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"; Modelica.Blocks.Math.Add add(final k2=-1) "Compares the current insolation to the critical insolation"; protected Buildings.Utilities.Math.SmoothHeaviside smoHea(final delta=delY) "Creates a smooth 1/0 output"; equationconnect(TIn, criSol.TIn); connect(weaBus.TDryBul, criSol.TEnv); connect(weaBus.HDirNor, add.u1); connect(smoHea.y, y); connect(add.y, smoHea.u); connect(criSol.G_TC, add.u2); end SolarPumpController;