网站制作公司怎样帮客户做优化,免费网站建设行情,购买手表的网站,asp网站后台管理系统源码1. 太阳辐照量模拟
pysolar是一个用于计算太阳位置和辐照量的Python库。它是基于python语言编写的#xff0c;可以方便地在各种python项目中使用。pysolar主要用于计算太阳的位置、太阳高度角、太阳方位角、日出和日落时间等信息。这些信息可以用于太阳能电池板和太阳能集热器…1. 太阳辐照量模拟
pysolar是一个用于计算太阳位置和辐照量的Python库。它是基于python语言编写的可以方便地在各种python项目中使用。pysolar主要用于计算太阳的位置、太阳高度角、太阳方位角、日出和日落时间等信息。这些信息可以用于太阳能电池板和太阳能集热器等应用的设计和优化。
Pysolar模拟始自2007年以来得太阳根据Bretagnon’s VSOP 87理论计算太阳的位置。pysolar包含了许多太阳几何和辐射计算方法的实现例如太阳方位角指的是罗盘方位相对于物理的北而言和海拔高度角的计算、地球磁场和大气层对太阳辐射的影响等。它还提供了一些实用的功能例如在给定经纬度和时间的情况下可以计算出太阳高度角、方位角、日出和日落时间等信息。 Pysolar的参考框架如上图所示。地平线定义为海拔高度为零。当太阳在地平线上时高度为正。方位角向北定义为零。正方位定义为北部以东的估计值负估计或大于180的估计位于北部以西。在北半球如果我们从海拔、方位的角度来看太阳在090左右升起在中午左右到达70180在0270左右落下。
pysolar非常容易使用可以使用pip命令来安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pysolar
pip install pysolar安装完成后可以在Python脚本中使用pysolar.solar模块进行计算。以下是一个使用pysolar计算太阳高度角和方位角的示例代码
from pysolar.solar import get_altitude, get_azimuth
import datetime
import pytz# 设置经纬度和时区
lat 39.9
lon 116.4
tz pytz.timezone(Asia/Shanghai)# 获取当前时间和太阳高度角、方位角
dt datetime.datetime.now(tz)
altitude get_altitude(lat, lon, dt)
azimuth get_azimuth(lat, lon, dt)# 输出结果
print(当前时间: , dt)
print(太阳高度角: , altitude)
print(太阳方位角: , azimuth)2. 光伏发电系统模拟
典型的太阳能光伏发电系统由太阳能电池阵列(组件)、电缆、电力电子变换器(逆变器)、储能装置(蓄电池)、负载即用户等构成如下所示。其中太阳能电池阵列和储能装置为电源系统控制器和电力电子变换器为控制保护系统负载为系统终端。
pvlib-python是一个Python库用于光伏系统性能建模和分析。它提供了光伏系统设计和性能评估所需的工具包括太阳辐照度计算、光伏组件和系统性能模拟、光伏系统建模、阴影分析等等。pvlib是一个开源项目由Solar Energy Technologies OfficeSETO资助开发。
pvlib的主要特点包括
多种太阳辐照度模型可以计算全天的太阳辐照度、太阳位置、天空散射辐射等信息。多种光伏模型包括标准模型、光谱模型和机器学习模型。多种组件模型包括单晶硅、多晶硅、CdTe等各种类型的光伏组件模型。多种系统模型包括集中式光伏电站、分布式光伏电站等。多种工具和功能如阴影分析、功率曲线绘制等。
pvlib的使用非常广泛在学术界和工业界都有很多应用。它提供了方便快捷的工具可以帮助工程师和科学家更好地理解和优化光伏系统的性能。
安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pvlib2.1. 光伏发电系统模拟实现过程 2.2. 主要模块介绍
2.2.1. PVSystem
PVSystem是一个表示光伏系统的模块类它可以用来计算光伏系统的电量输出。PVSystem包括一些属性例如组件、逆变器、阵列等这些属性可以用来描述光伏系统的各个组成部分。
在PVSystem类中有一些方法可以用来计算光伏系统的电量输出。例如可以使用PVSystem.get_irradiance()方法计算光伏系统的辐照度使用PVSystem.sapm()方法计算光伏系统的电池板电压和电流使用PVSystem.snlinverter()方法计算光伏系统的逆变器输出功率等。
PVSystem类还可以与其他pvlib模块结合使用例如Location、ModelChain等模块。使用PVSystem可以方便地模拟光伏系统的性能表现为光伏系统的设计和优化提供有力的支持。
2.2.2. ModelChain
ModelChain是pvlib中的一个类用于将多个组件比如光伏组件、逆变器、阵列组合起来并计算其整个系统的性能。
ModelChain的构建是基于PVSystem的实例即需要先定义一个PVSystem对象然后将其传递给ModelChain类的构造函数用于指定模拟的光伏系统。
ModelChain提供了一个run_model()方法该方法接受一个时间序列作为输入并计算在该时间段内系统的性能。具体而言ModelChain会将该时间段拆分成多个时间步骤并对每个时间步骤执行以下步骤
使用Location对象和时间计算大气辐射如GHI、DNI、DHI使用PVSystem对象计算总辐照度POA
使用PVSystem对象计算太阳能电池板的输出功率使用PVSystem对象计算逆变器的输入功率和输出功率使用PVSystem对象计算电池组的输入功率和输出功率
返回结果包括各个组件的性能参数如辐射度、电池板输出功率、逆变器输入功率和输出功率等。 通过ModelChain可以方便地对光伏系统进行建模和仿真并分析各个组件的性能以及整个系统的性能表现。
PVLib库中的ModelChain可以集成天气预测数据。在ModelChain中可以使用一系列模块来计算光伏电池组的电量输出其中包括天气预测模块。具体来说可以使用GFS和NAM模块将天气数据引入ModelChain中然后使用其他模块计算电量输出。
GFS是全球预报系统它可以提供全球的天气预测数据。而NAM是北美预报模型它提供了更细致的天气预测数据针对北美地区。这些模块可以将气象数据导入ModelChain中以进行更准确的光伏电量预测。
需要注意的是使用天气预测数据进行光伏电量预测需要对天气数据的准确性有一定的了解和评估。此外不同的天气预测模块和数据源可能会导致不同的预测结果。因此需要根据具体情况进行选择和评估。
2.2.3. Bifacial modeling
在pvlib中Bifacial modeling双面组件建模指的是在模拟光伏发电时考虑双面组件在正面和背面同时受到太阳辐射的情况。
pvlib中的Bifacial模型主要包括两个模块BifacialGroundDiffuse和BifacialAOI。BifacialGroundDiffuse模块用于计算反射地面散射辐射的分布可以为双面组件建模计算分布在组件背面的反射辐射量。BifacialAOI模块则用于计算太阳角度对双面组件背面散射光的影响包括反射、折射和透射的效果。
通过使用Bifacial modeling可以更准确地模拟双面组件的发电能力并帮助预测背面反射的光线以提高系统的发电量。
2.2.4. Forecasting
pvlib中的Forecasting模块提供了天气预报数据的获取和处理功能。它包括以下功能
获取天气预报数据可以通过指定时间范围和地理位置获取各种天气变量的预报数据如温度、风速、云量等。
处理天气预报数据可以将获取到的天气预报数据处理成pvlib中常用的数据结构如时间序列数据和DataFrame数据。
预测光伏发电量可以基于获取到的天气预报数据预测未来光伏发电量的变化趋势。
在使用Forecasting模块之前需要先安装好相关的天气预报数据源如NOAA等。同时需要注意的是天气预报数据存在一定的不确定性因此预测结果可能会存在一定的误差。
2.3. 示例
2.3.1. 生成晴朗天空GHI和POA辐照度的示例
以哈尔滨地区为例输入维度、经度太阳板阵列仰角25方位角180则夏至、冬至辐照度计算过程如下。
from pvlib import location
from pvlib import irradiance
import pandas as pd
from matplotlib import pyplot as plttzAsia/Shanghai
# 哈尔滨地区纬度、经度
lat, lon 45.739, 120.683# 创建本地对象存储维度、经度、时区
site location.Location(lat, lon, tztz)# 计算晴天的GHI并将其转换到阵列的平面
# 定义函数获取某个地方的辐照度理论标准辐照度
def get_irradiance(site_location, date, tilt, surface_azimuth):# 创建一天间隔10分钟的时间序列times pd.date_range(date, freq10min, periods6*24,tzsite_location.tz)#使用默认的内部模型生成晴天数据#get_ clearsky方法返回具有GHI、DNI和DHI值的数据表clearsky site_location.get_clearsky(times)# 获取太阳方位角和天空顶点以传递到函数solar_position site_location.get_solarposition(timestimes)# 使用get_total_iradiance函数将GHI转换为POAPOA_irradiance irradiance.get_total_irradiance(surface_tilttilt,surface_azimuthsurface_azimuth,dniclearsky[dni],ghiclearsky[ghi],dhiclearsky[dhi],solar_zenithsolar_position[apparent_zenith],solar_azimuthsolar_position[azimuth])return pd.DataFrame({GHI: clearsky[ghi],POA: POA_irradiance[poa_global]})#获取夏至和冬至的辐照度数据假设倾斜25度和朝南的阵列
summer_irradiance get_irradiance(site, 06-21-2022, 25, 180)
winter_irradiance get_irradiance(site, 12-22-2022, 25, 180)# 转换时间序列为小时分钟方便绘图
summer_irradiance.index summer_irradiance.index.strftime(%H:%M)
winter_irradiance.index winter_irradiance.index.strftime(%H:%M)plt.rcParams[figure.figsize] 12,4
plt.rcParams[font.sans-serif][SimHei] #显示中文标签
plt.rcParams[axes.unicode_minus]False
plt.rcParams.update({font.size:11})
# 画夏季和冬季的 GHI POA
fig, (ax1, ax2) plt.subplots(1, 2, shareyTrue)
summer_irradiance[GHI].plot(axax1, labelGHI)
summer_irradiance[POA].plot(axax1, labelPOA)
winter_irradiance[GHI].plot(axax2, labelGHI)
winter_irradiance[POA].plot(axax2, labelPOA)
ax1.set_xlabel(日时间序列 (夏季))
ax2.set_xlabel(日时间序列 (冬季))
ax1.set_ylabel(辐照度 ($W/m^2$))
ax1.legend()
ax2.legend()
plt.show()2.3.2. 一个简单的ModelChain示例
官方文档中的一个完整的示例拿到了一组光伏模块和逆变器数据并虚拟了温度数据通过模型计算得到了在该位置上的运算结果。
ModelChain有三个组成部分
PVSystem对象表示模块和逆变器的集合Location对象表示地球上的位置指定PV建模过程中每个步骤要使用的模型的属性值。
import pandas as pd
import numpy as np
import pvlibfrom pvlib.pvsystem import PVSystem, FixedMount
from pvlib.location import Location
from pvlib.modelchain import ModelChain
from pvlib.temperature import TEMPERATURE_MODEL_PARAMETERS# sapmSandia Array Performance Model一种用于预测温度的模型对应有不同的参数可以选择
temperature_model_parameters TEMPERATURE_MODEL_PARAMETERS[sapm][open_rack_glass_glass]
# 从SAM网站上获取SandiaMod光伏模块的配置
sandia_modules pvlib.pvsystem.retrieve_sam(SandiaMod)
# 从SAM网站上获取cec逆变器的配置
cec_inverters pvlib.pvsystem.retrieve_sam(cecinverter)
# 选择一个光伏模块及一个逆变器的数据
sandia_module sandia_modules[Canadian_Solar_CS5P_220M___2009_]
cec_inverter cec_inverters[ABB__MICRO_0_25_I_OUTD_US_208__208V_]# 设置位置信息
location Location(latitude32.2, longitude-110.9)
# 实例化一个PVSystem对象
system PVSystem(surface_tilt20, surface_azimuth200,module_parameterssandia_module,inverter_parameterscec_inverter,temperature_model_parameterstemperature_model_parameters)
# 实例化一个ModelChain对象
mc ModelChain(system, location)
# 虚拟一些天气数据
weather pd.DataFrame([[1050, 1000, 100, 30, 5]],columns[ghi, dni, dhi, temp_air, wind_speed],index[pd.Timestamp(20170401 1200, tzUS/Arizona)])
# 运行模型
mc.run_model(weather)
# 获取相关结果
print(mc.results.aoi) # 入射角
print(mc.results.cell_temperature) # 电池温度
print(mc.results.dc) # 直流电功率
print(mc.results.ac) # 交流电功率2.4. 关键术语
2.4.1. 辐射基本专业术语
DNI: Direct Normal Irradiance 阳光从太阳盘面直接照射到与光路正交的表面称作直接辐射简写为 DNI。
DHI: Diffuse Horizontal Irradiance 在大气中散射的直接到达地面的阳光称为散射辐射。散射辐射的标准测量在水平面上进行这个测量叫做散射水平辐射或者简化为“散射”简写为 DHI。
GHI:Global Horizontal Irradiance 太阳的 DHI和 DNI到达水平表面称为总水平辐射通常简称为总辐射简写为 GHI。
Solar Zenith Angle: 太阳天顶角 与太阳高度角之和为90度互余关系解释为一束光线从太阳到达地面一点形成的光线与此点垂直于地面的直线夹角所以在日出和日落时天顶角为 90度太阳高度角为0没有直射辐射到达水平面。
三个辐射参数之间的关系 GHI DHI (cosθ x DNI)θ Solar Zenith Angle太阳天顶角0°is vertical90°is horizontal
气团气团是指气象要素(主要指温度和湿度)水平分布比较均匀并具有一定垂直稳定度的较大空气团。在同一气团中各地气象要素的重点分布几乎相同天气现象也大致一样。气团的水平范围可达几千公里垂直高度可达几公里到十几公里常常从地面伸展到对流层顶。 气团的分类方法主要有三种一种是按气团的热力性质不同划分为冷气团和暖气团;第二种是按气团的湿度特征的差异划分为干气团和湿气团第三种是按气团的发源地常分为北冰洋气团、极地气团热带气团、赤道气团。
2.4.2. GHI 和 POA
GHI 和 POA 都是太阳辐射的度量单位但它们有不同的含义
GHIGlobal Horizontal Irradiance全水平辐照度是指垂直于地球表面的平面上所接收到的来自太阳的辐射总量包括直射辐射和散射辐射单位通常是 W/m²。POAPlane of Array Irradiance组件平面辐照度是指垂直于光伏组件表面的平面上所接收到的来自太阳的辐射总量也包括直射辐射和散射辐射单位通常是 W/m²。
通俗地说GHI 是地面上接收到的总辐射量而 POA 是太阳能电池板上接收到的总辐射量。因此POA 是在考虑组件倾角、方向和阴影遮挡等因素的基础上计算的而 GHI 不考虑这些因素。
3. 光伏发电预测方案
对于光伏发电预测可以利用pvlib进行建模和预测。下面给出一个基本的预测方案 获取天气预报数据 可以从气象局获取当地未来几天的天气预报数据包括气温、风速、湿度、降水等信息。 计算理论太阳辐照度 根据地理位置、日期、时间、太阳高度角等信息利用pvlib中的函数计算出理论太阳辐照度。 计算实际POA 根据天气预报中的气温、风速、湿度等信息结合理论太阳辐照度利用pvlib中的函数计算出实际的POA。 建立光伏发电量预测模型 利用历史数据和当前实际POA值建立光伏发电量预测模型可以选择不同的模型如物理模型或者基于机器学习的模型。在pvlib中可以使用ModelChain进行建模和预测。 进行光伏发电量预测 利用模型对未来几天的光伏发电量进行预测得到预测结果。
参考
芳樽里的歌. 从pvlib入门光伏发电系统. CSDN博客. 2022.04 https://github.com/pvlib/pvlib-python https://pvlib-python.readthedocs.io/en/stable/user_guide/pvsystem.html https://github.com/pingswept/pysolar https://pysolar.readthedocs.io/en/latest/#source-code-repository