CN117638996B - 一种分层管控的光伏微电网能量管理***及方法 - Google Patents

一种分层管控的光伏微电网能量管理***及方法 Download PDF

Info

Publication number
CN117638996B
CN117638996B CN202410101128.0A CN202410101128A CN117638996B CN 117638996 B CN117638996 B CN 117638996B CN 202410101128 A CN202410101128 A CN 202410101128A CN 117638996 B CN117638996 B CN 117638996B
Authority
CN
China
Prior art keywords
power
energy storage
grid
photovoltaic
day
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202410101128.0A
Other languages
English (en)
Other versions
CN117638996A (zh
Inventor
李德福
詹金锭
黄克毅
林峰荣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Zhifu New Energy Co ltd
Original Assignee
Shenzhen Zhifu New Energy Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Zhifu New Energy Co ltd filed Critical Shenzhen Zhifu New Energy Co ltd
Priority to CN202410101128.0A priority Critical patent/CN117638996B/zh
Publication of CN117638996A publication Critical patent/CN117638996A/zh
Application granted granted Critical
Publication of CN117638996B publication Critical patent/CN117638996B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02EREDUCTION OF GREENHOUSE GAS [GHG] EMISSIONS, RELATED TO ENERGY GENERATION, TRANSMISSION OR DISTRIBUTION
    • Y02E10/00Energy generation through renewable energy sources
    • Y02E10/50Photovoltaic [PV] energy
    • Y02E10/56Power conversion systems, e.g. maximum power point trackers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02EREDUCTION OF GREENHOUSE GAS [GHG] EMISSIONS, RELATED TO ENERGY GENERATION, TRANSMISSION OR DISTRIBUTION
    • Y02E70/00Other energy conversion or management systems reducing GHG emissions
    • Y02E70/30Systems combining energy storage with energy generation of non-fossil origin

Landscapes

  • Supply And Distribution Of Alternating Current (AREA)

Abstract

本发明公开一种分层管控的光伏微电网能量管理***及方法,涉及发电储能技术领域。本发明光伏电站,电站储能层,包括集电侧储能端和集电储能控制单元,用于消纳所述光伏电站的功率波动后对电网进行供电;电网储能层,包括电网储能端和电网储能控制单元,用于消纳电网的功率波动;送电储能层,包括送电侧储能端和送电储能控制单元,用于消纳用电端的功率波动;主控单元,用于控制所述集电储能控制单元、所述电网储能控制单元和所述送电储能控制单元。本发明有效降低了电网的输变电波动性,提高了光伏微电网的运行稳定性。

Description

一种分层管控的光伏微电网能量管理***及方法
技术领域
本发明属于发电储能技术领域,特别是涉及一种分层管控的光伏微电网能量管理***及方法。
背景技术
在当前的能源结构转型与电力***发展背景下,光伏发电由于其清洁、可再生的特点,成为了微电网***中的关键发电方式。微电网作为电力***的一个重要组成部分,可以有效地整合多种分布式能源,提高能源利用效率,并具备一定的自治运行能力。
然而,随着光伏发电规模的不断扩大,光伏微电网面临着运行管理复杂化的挑战。特别是在光伏发电的不稳定性和间歇性特点影响下,如何实现对微电网内部能量的高效、可靠管理成为了关键问题。
发明内容
本发明的目的在于提供一种分层管控的光伏微电网能量管理***及方法,通过对光伏电站和用电端的用电波动进行分析储能消纳,在满足用户用电的前提下,有效降低了电网的输变电波动性,提高了光伏微电网的运行稳定性。
为解决上述技术问题,本发明是通过以下技术方案实现的:
本发明提供一种分层管控的光伏微电网能量管理方法,包括,
获取每个光伏电站的发电功率的历史记录;
获取每个用电端的用电功率的历史记录;
根据每个所述光伏电站的发电功率的历史记录得到全部所述光伏电站在当日内每个时刻的目标入网功率;
获取当前时刻全部所述光伏电站的累计发电功率;
根据当前时刻的所述目标入网功率和所述累计发电功率的差值对全部所述光伏电站进行充放电,使得当前时刻电网的入网功率为所述目标入网功率;
根据每个所述用电端的用电功率的历史记录得到全部所述用电端在当日内每个时刻的期望总负荷功率;
获取当前时刻全部所述用电端的累计用电功率;
根据当前时刻全部所述用电端的所述期望总负荷功率和所述累计用电功率的差值对电网进行充放电,使得当前时刻电网的输出功率为所述期望总负荷功率;
根据当前时刻所述目标入网功率和所述期望总负荷功率的差值对电网进行充放电,使得当前时刻电网能量平衡。
本发明还公开了一种分层管控的光伏微电网能量管理方法,包括,
接收当前时刻的目标入网功率和累计发电功率的差值;
控制集电侧储能端对全部所述光伏电站进行充放电使得当前时刻电网的入网功率为所述目标入网功率。
本发明还公开了一种分层管控的光伏微电网能量管理方法,包括,
接收当前时刻全部用电端的期望总负荷功率和累计用电功率的差值;
控制送电侧储能端对电网进行充放电使得当前时刻电网的输出功率为所述期望总负荷功率。
本发明还公开了一种分层管控的光伏微电网能量管理方法,包括,
接收当前时刻目标入网功率和期望总负荷功率的差值;
控制电网储能端对电网进行充放电使得当前时刻电网能量平衡。
本发明还公开了一种分层管控的光伏微电网能量管理***,包括,
光伏电站,
电站储能层,包括集电侧储能端和集电储能控制单元,用于消纳所述光伏电站的功率波动后对电网进行供电;
电网储能层,包括电网储能端和电网储能控制单元,用于消纳电网的功率波动;
送电储能层,包括送电侧储能端和送电储能控制单元,用于消纳用电端的功率波动;
主控单元,用于控制所述集电储能控制单元、所述电网储能控制单元和所述送电储能控制单元;
其中,
所述主控单元,用于获取每个光伏电站的发电功率的历史记录;
获取每个用电端的用电功率的历史记录;
根据每个所述光伏电站的发电功率的历史记录得到全部所述光伏电站在当日内每个时刻的目标入网功率;
获取当前时刻全部所述光伏电站的累计发电功率;
根据当前时刻的所述目标入网功率和所述累计发电功率的差值对全部所述光伏电站进行充放电,使得当前时刻电网的入网功率为所述目标入网功率;
根据每个所述用电端的用电功率的历史记录得到全部所述用电端在当日内每个时刻的期望总负荷功率;
获取当前时刻全部所述用电端的累计用电功率;
根据当前时刻全部所述用电端的所述期望总负荷功率和所述累计用电功率的差值对电网进行充放电,使得当前时刻电网的输出功率为所述期望总负荷功率;
根据当前时刻所述目标入网功率和所述期望总负荷功率的差值对电网进行充放电,使得当前时刻电网能量平衡;
所述集电储能控制单元,用于接收当前时刻的目标入网功率和累计发电功率的差值;
控制集电侧储能端对全部所述光伏电站进行充放电使得当前时刻电网的入网功率为所述目标入网功率;
所述电网储能控制单元,用于接收当前时刻所述目标入网功率和所述期望总负荷功率的差值;
控制电网储能端对电网进行充放电使得当前时刻电网能量平衡;
所述送电储能控制单元,用于接收当前时刻全部用电端的期望总负荷功率和累计用电功率的差值;
控制送电侧储能端对电网进行充放电使得当前时刻电网的输出功率为所述期望总负荷功率。
本发明通过主控单元分析光伏电站和用电端的功率记录生成对集电储能控制单元、电网储能控制单元和送电储能控制单元的控制信息,由此实现对电站储能层、电网储能层以及送电储能层中功率波动的抑制,由此实现电网的送变电平衡,降低了电网的输变电波动性,提高了光伏微电网的运行稳定。
当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明所述一种分层管控的光伏微电网能量管理***于一实施例的功能模块和电能、信息流向示意图;
图2为本发明所述主控单元于一实施例的步骤流程示意图;
图3为本发明所述集电储能控制单元于一实施例的步骤流程示意图;
图4为本发明所述电网储能控制单元于一实施例的步骤流程示意图;
图5为本发明所述送电储能控制单元于一实施例的步骤流程示意图;
图6为本发明所述步骤S3于一实施例的步骤流程示意图;
图7为本发明所述步骤S37于一实施例的步骤流程示意图;
图8为本发明所述步骤S6于一实施例的步骤流程示意图;
图9为本发明所述步骤S63于一实施例的步骤流程示意图;
图10为本发明所述步骤S65于一实施例的示意图;
附图中,各标号所代表的部件列表如下:
1-光伏电站;
2-电站储能层,21-集电侧储能端,22-集电储能控制单元;
3-电网储能层,31-电网储能端,32-电网储能控制单元;
4-送电储能层,41-送电侧储能端,42-送电储能控制单元;
5-主控单元;
6-用电端。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
需要说明的是,本申请中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
光伏微电网是指利用太阳能光伏发电***与当地电网相结合形成的一种小型独立电力***。它通常由光伏电池组成,通过将太阳能转化为电能来供电。光伏微电网可以与传统的电网连接,也可以独立运行。但是由于光伏发电的不稳定以及用户用电的不确定性,使得电网处于波动状态,这对电网的变电和送电***会造成损害。有鉴于此,本发明提供以下方案。
请参阅图1至5所示,本发明提供了一种分层管控的光伏微电网能量管理***,从功能模块上划分可以包括,光伏电站1、电站储能层2、电网储能层3、送电储能层4、主控单元5以及用电端6。具体来说,电站储能层2包括集电侧储能端和集电储能控制单元,用于消纳光伏电站的功率波动后对电网进行供电。电网储能层3包括电网储能端和电网储能控制单元,用于消纳电网的功率波动。送电储能层4包括送电侧储能端和送电储能控制单元,用于消纳用电端的功率波动。主控单元5用于控制集电储能控制单元、电网储能控制单元和送电储能控制单元。
在具体运行的过程中,首先由主控单元5执行步骤S1获取每个光伏电站的发电功率的历史记录。接下来可以执行步骤S2获取每个用电端的用电功率的历史记录。接下来可以执行步骤S3根据每个光伏电站的发电功率的历史记录得到全部光伏电站在当日内每个时刻的目标入网功率。接下来可以执行步骤S4获取当前时刻全部光伏电站的累计发电功率。下来可以执行步骤S5根据当前时刻的目标入网功率和累计发电功率的差值对全部光伏电站进行充放电,使得当前时刻电网的入网功率为目标入网功率。接下来可以执行步骤S6根据每个用电端的用电功率的历史记录得到全部用电端在当日内每个时刻的期望总负荷功率。接下来可以执行步骤S7获取当前时刻全部用电端的累计用电功率。接下来可以执行步骤S8根据当前时刻全部用电端的期望总负荷功率和累计用电功率的差值对电网进行充放电,使得当前时刻电网的输出功率为期望总负荷功率。最后可以执行步骤S9根据当前时刻目标入网功率和期望总负荷功率的差值对电网进行充放电,使得当前时刻电网能量平衡。
对于每个储能层而言,集电储能控制单元22在运行过程中首先可以执行步骤S011接收当前时刻的目标入网功率和累计发电功率的差值。之后可以执行步骤S012控制集电侧储能端21对全部光伏电站进行充放电使得当前时刻电网的入网功率为目标入网功率。
电网储能控制单元32在运行过程中首先可以执行步骤S021接收当前时刻目标入网功率和期望总负荷功率的差值。之后可以执行步骤S022控制电网储能端31对电网进行充放电使得当前时刻电网能量平衡。
送电储能控制单元42在运行的过程中首先可以执行步骤S031接收当前时刻全部用电端的期望总负荷功率和累计用电功率的差值。之后可以执行步骤S032控制送电侧储能端41对电网进行充放电使得当前时刻电网的输出功率为期望总负荷功率。
在此过程中同时对光伏电站1、电网2和用电端6中的功率波动进行消纳,实现了光伏微电网的稳态运行。
请参阅图6所示,由于光照具有周期性,因此每天光伏发电状态与具有相似光照条件的参考日具有相似性。有鉴于此,为了获取全部光伏电站在当日内每个时刻的目标入网功率,上述的步骤S3在运行的过程中首先可以执行步骤S31获取当前日期的日出至日落的间隔时长作为全天日照时长。接下来可以执行步骤S32获取与当前日期全天日照时长相同的多个自然日作为参考日接下来可以执行步骤S33根据每个光伏电站的发电功率的历史记录获取多个参考日内每个采集时刻光伏电站的发电功率。接下来可以执行步骤S34获取日出至下一时刻的时长作为目标日照时长。接下来可以执行步骤S35在每个参考日内,将日出开始至目标日照时长结束的时刻作为参考日的参考时刻。接下来可以执行步骤S36根据多个参考日内每个采集时刻光伏电站的发电功率得到多个参考日在对应的参考时刻光伏电站的发电功率。接下来可以执行步骤S37根据多个参考日在对应的参考时刻光伏电站的发电功率获取下一时刻光伏电站的预估发电功率。最后可以执行步骤S34至S38迭代持续更新下一时刻的预估发电功率得到全部光伏电站在当日内每个时刻的预估发电功率作为目标入网功率。
为了对上述的步骤S31至步骤S38的实施过程进行补充说明,提供部分功能模块的源代码,并在注释部分进行对照解释说明。为了避免涉及商业秘密的数据泄露,对不影响方案实施的部分数据进行脱敏处理,下同。
#include <iostream>
#include <vector>
#include <algorithm> // std::transform, std::accumulate
#include <numeric> // std::iota
// 数据结构和常量
const int NUM_PV_STATIONS = 5; // 光伏电站数量
const int NUM_REFERENCE_DAYS = 3; // 参考日数量
// 用于存储每个时刻光伏电站的发电功率的向量
struct PowerData {
std::vector<double> powerPerStation[NUM_PV_STATIONS];
};
// 光伏电站发电功率历史记录获取函数
PowerData getHistoricalPowerData(int day) {
PowerData data;
// 这里实际上应该是从数据库或者传感器等获取数据的代码
// 以下仅为示例数据
for (int i = 0; i < NUM_PV_STATIONS; ++i) {
for (int j = 0; j < 24; ++j) { // 24小时的数据
data.powerPerStation[i].push_back(10.0 + (i * j) % 10); //发电功率
}
}
return data;
}
// 获取日出至日落间隔时长的函数
int getDaylightDuration() {
// 实际应用中可能需要调用地理位置服务API
return 12; // 日照时长为12小时
}
// 获取日出时刻的函数
int getSunriseTime() {
// 实际应用中可能需要调用时间服务API
return 6; // 日出时刻为早上6点
}
// 主要的算法逻辑
int main() {
// 获取日照时长和日出时刻
int daylightDuration = getDaylightDuration();
int sunriseTime = getSunriseTime();
// 存储每个时刻的目标入网功率
std::vector<double> targetGridPower(24, 0.0);
// 对于每个参考日
for (int day = 0; day < NUM_REFERENCE_DAYS; ++day) {
// 获取历史功率数据
PowerData historicalData = getHistoricalPowerData(day);
// 对于每个光伏电站
for (int station = 0; station < NUM_PV_STATIONS; ++station) {
// 对于日出到日落的每个时刻
for (int hour = sunriseTime; hour < sunriseTime +daylightDuration; ++hour) {
// 获取当前时刻的历史发电功率
double power = historicalData.powerPerStation[station][hour];
// 累加到目标入网功率中
targetGridPower[hour] += power;
}
}
}
// 对目标入网功率进行平均处理
std::transform(
targetGridPower.begin(), targetGridPower.end(),
targetGridPower.begin(),
[NUM_REFERENCE_DAYS](double totalPower) {
return totalPower / NUM_REFERENCE_DAYS;
}
);
// 输出目标入网功率
for (int hour = 0; hour < 24; ++hour) {
std::cout << "Hour " << hour << ": " << targetGridPower[hour]<< " kW" << std::endl;
}
return 0;
}
该代码的基本思路是首先通过函数获取日照时长和日出时刻。之后对于每个参考日,获取每个光伏站的历史发电功率。之后将日出至日落期间的功率数据累加,并对累加的功率数据进行平均,得到目标入网功率。输出最终计算得到的每个时刻的目标入网功率。
请参阅图7所示,为了从数量众多的参考时刻光伏电站的发电功率选取最有可能符合真实值的预估发电功率,上述的步骤S37在具体实施的过程中首先可以执行步骤S371将多个参考日在对应的参考时刻光伏电站的发电功率作为参考功率。接下来可以执行步骤S372将多个参考功率按照数值大小进行排序得到参考功率数列。接下来可以执行步骤S373计算获取参考功率数列中每个参考功率与相邻的参考功率之间差值的均值作为平均间隔功率。接下来可以执行步骤S374将相邻之间差值小于平均间隔功率的多个参考功率组成参考功率组,得到若干组参考功率组。接下来可以执行步骤S375计算获取每一组参考功率组内全部参考功率的数量和均值。最后可以执行步骤S376将参考功率组内全部参考功率的数量作为权重,计算每一组参考功率组内全部参考功率的均值的加权均值得到下一时刻光伏电站的预估发电功率。
为了对上述的步骤S371至步骤S376的实施过程进行补充说明,提供部分功能模块的源代码,并在注释部分进行对照解释说明。
#include <iostream>
#include <vector>
#include <algorithm> // std::sort, std::adjacent_find
// 参考功率数据结构
struct ReferencePower {
double power;
int count;
};
// 计算两个相邻数值之间的差值的平均值
double calculateAverageInterval(const std::vector<double>& powers) {
double totalInterval = 0.0;
for (size_t i = 1; i < powers.size(); ++i) {
totalInterval += powers[i] - powers[i - 1];
}
return totalInterval / (powers.size() - 1);
}
// 计算加权平均
double calculateWeightedAverage(const std::vector<ReferencePower>&powerGroups) {
double totalPower = 0.0;
int totalWeight = 0;
for (const auto& group : powerGroups) {
totalPower += group.power * group.count;
totalWeight += group.count;
}
return totalWeight > 0 ? totalPower / totalWeight : 0.0;
}
// 主要的算法逻辑
int main() {
// 多个参考日的功率值
std::vector<double> referencePowers = {30.5, 28.7, 32.8, 29.1,31.2, 27.9, 30.0};
// 将参考功率数列进行排序
std::sort(referencePowers.begin(), referencePowers.end());
// 计算相邻参考功率之间的平均间隔
double averageInterval = calculateAverageInterval(referencePowers);
// 将相邻间隔小于平均间隔的参考功率组成参考功率组
std::vector<ReferencePower> powerGroups;
for (size_t i = 0; i < referencePowers.size(); ) {
// 使用std::adjacent_find查找相邻元素间隔小于平均间隔的位置
auto it = std::adjacent_find(referencePowers.begin() + i,referencePowers.end(),
[averageInterval](double a,double b) {
return (b - a) <averageInterval;
});
if (it == referencePowers.end()) {
break; // 没有找到,则结束循环
}
// 计算参考功率组内的数值和数量
double sum = *it;
int count = 1;
auto next = it + 1;
while (next != referencePowers.end() && (*next - *it) <averageInterval) {
sum += *next;
++count;
++next;
}
// 将参考功率组添加到vector中
powerGroups.push_back({sum / count, count});
i = next - referencePowers.begin(); // 更新循环起始位置
}
// 计算加权平均值得到预估发电功率
double estimatedPower = calculateWeightedAverage(powerGroups);
// 输出预估发电功率
std::cout << "Estimated Power for Next Time Slot: " <<estimatedPower << " kW" << std::endl;
return 0;
}
这段代码首先定义了一个模拟的参考功率数组referencePowers,然后按照大小对其进行排序。接下来通过计算平均间隔averageInterval,找到那些相邻功率值小于平均间隔的参考功率,并将它们组成参考功率组。每个参考功率组内的所有参考功率的数量作为权重,以及参考功率的均值,计算出每一组的加权均值。最后对所有参考功率组的加权均值求总的加权平均值,以此得到下一时刻光伏电站的预估发电功率。
这段代码模拟了光伏发电站在不同参考日的发电功率,并基于这些数据来预估下一个时刻的发电功率。首先代码通过排序算法对参考功率进行了排序。然后计算了平均间隔功率,并基于此将接近的参考功率聚集成组。接下来,计算了每一组的权重(组内参考功率的数量)和均值,并使用这些权重来计算加权平均值,以此作为预估的下一时刻发电功率,最终输出预估的发电功率。
请参阅图8所示,对于用户而言,其用电习惯具有一定过的规律,为了挖掘这些规律并以此对当日内每个时刻的期望总负荷功率进行预测。上述的步骤S6在具体实施的过程中首先可以执行步骤S61获取当前日期用电端的用电时长。接下来可以执行步骤S62根据每个用电端的用电功率的历史记录得到当前日期的零点至当前时刻用电端的用电量作为标定电量。接下来可以执行步骤S63根据用电时长和标定电量在每个用电端的用电功率的历史记录中选取参照日和对应的参照时刻。接下来可以执行步骤S64将参照日内参照时刻的下一时刻用电端的用电功率作为参照功率。接下来可以执行步骤S65根据每个参照功率和对应的参照日得到全部用电端在当日内下一时刻的期望总负荷功率。接下来可以执行步骤S66迭代持续更新下一时刻的期望总负荷功率得到全部用电端在当日内每个时刻的期望总负荷功率。
为了对上述的步骤S61至步骤S66的实施过程进行补充说明,提供部分功能模块的源代码,并在注释部分进行对照解释说明。
#include <iostream>
#include <vector>
#include <numeric> // for std::accumulate
// 每个用电端每天24小时用电功率记录
struct PowerUsage {
std::vector<std::vector<double>> dailyUsage; // 每个元素表示一天的用电功率记录
};
// 获取某个用电端在某天的总用电量
double getCalibrationPower(const PowerUsage& usage, int dayIndex) {
// dailyUsage[dayIndex]包含了该天24小时的用电功率记录
return std::accumulate(usage.dailyUsage[dayIndex].begin(),usage.dailyUsage[dayIndex].end(), 0.0);
}
// 获取当前时刻之前的总用电量
double getCurrentTotalPower(std::vector<PowerUsage>& usages, intcurrentTime) {
double totalPower = 0.0;
for (auto& usage : usages) {
// 取最后一天的记录作为示例
int lastDayIndex = usage.dailyUsage.size() - 1;
// 只累加到当前时刻的用电量
totalPower += std::accumulate(usage.dailyUsage[lastDayIndex].begin(), usage.dailyUsage[lastDayIndex].begin() + currentTime, 0.0);
}
return totalPower;
}
// 获取下一个时刻的期望总负荷功率
double getNextTotalExpectedPower(std::vector<PowerUsage>& usages, intcurrentTime) {
double totalExpectedPower = 0.0;
for (auto& usage : usages) {
int lastDayIndex = usage.dailyUsage.size() - 1;
// 参照日就是最后一天的前一天,且参照时刻为当前时刻
if (lastDayIndex > 0 && currentTime < usage.dailyUsage[lastDayIndex - 1].size() - 1) {
// 取参照日当前时刻的下一时刻作为参照功率
totalExpectedPower += usage.dailyUsage[lastDayIndex - 1][currentTime + 1];
}
}
return totalExpectedPower;
}
int main() {
// 示例有3个用电端,每个用电端有7天的用电功率历史记录
std::vector<PowerUsage> usages(3, PowerUsage{{ {1.0, 1.2, 1.1},{1.0, 1.3, 1.1}, {1.1, 1.2, 1.2}, {1.2, 1.1, 1.0}, {1.1, 1.2, 1.1}, {1.2,1.3, 1.2}, {1.1, 1.0, 1.1} }});
int currentTime = 2; // 当前时刻为第2小时
// 用于存储每个时刻的期望总负荷功率
std::vector<double> expectedTotalPowers;
// 获取从零点到当前时刻的总用电量作为标定电量
double calibrationPower = getCurrentTotalPower(usages,currentTime);
// 逐时刻计算期望总负荷功率
for (int time = 0; time < 24; ++time) {
double nextTotalExpectedPower = getNextTotalExpectedPower(usages, time);
expectedTotalPowers.push_back(nextTotalExpectedPower);
}
// 输出每个时刻的期望总负荷功率
for (int i = 0; i < expectedTotalPowers.size(); ++i) {
std::cout << "Hour " << i << ": Expected Total Load Power = "<< expectedTotalPowers[i] << std::endl;
}
return 0;
}
这段代码中定义了一个PowerUsage结构来存储每个用电端的历史用电记录。通过getCalibrationPower函数获取标定电量,用getCurrentTotalPower函数获取当前总用电量,用getNextTotalExpectedPower函数得到下一个时刻的期望总负荷功率,并在main函数中迭代计算每个时刻的期望总负荷功率。main函数最后打印出每个时刻的期望总负荷功率。
代码演示了如何基于用电端的每日用电功率历史记录来预测当日内每个时刻的期望总负荷功率。首先计算当前时刻之前的总用电量,然后选择参照日和参照时刻,以此来估算下一时刻的总负荷功率,并迭代此过程以获取一整天每个时刻的期望总负荷功率,最终将结果输出。
请参阅图9所示,由于历史上具有相似用电***均间隔用电量。接下来可以执行步骤S634将相邻之间差值小于平均间隔用电量的多个参照用电量组成参照用电量组,得到若干组参照用电量组。接下来可以执行步骤S635获取每个参照用电量组内参照用电量的最小值至最大值的范围作为每个参照用电量组的范围。接下来可以执行步骤S636根据每个参照用电量组的范围,选取覆盖标定电量的参照用电量组。最后可以执行步骤S637将覆盖标定电量的参照用电量组内每个参照用电量对应的日期和自零点至用电时长结束的时刻分别作为参照日和对应的参照时刻。
为了对上述的步骤S631至步骤S637的实施过程进行补充说明,提供部分功能模块的源代码,并在注释部分进行对照解释说明。
#include <iostream>
#include <vector>
#include <algorithm> // for std::sort
#include <numeric> // for std::adjacent_difference
// 用电端结构体
struct PowerUsage {
std::vector<std::vector<double>> dailyUsage; // 每个元素是一天的小时用电功率记录
};
// 获取历史上每日自零点至用电时长结束的时段内用电端的用电量
std::vector<double> getReferencePowerValues(const PowerUsage& usage,int duration) {
std::vector<double> referencePowers;
for (const auto& day : usage.dailyUsage) {
double sum = std::accumulate(day.begin(), day.begin() +duration, 0.0);
referencePowers.push_back(sum);
}
return referencePowers;
}
// 计算平均间隔用电量
double getAverageInterval(std::vector<double>& sortedPowers) {
std::vector<double> intervals(sortedPowers.size() - 1);
std::adjacent_difference(sortedPowers.begin(), sortedPowers.end(), intervals.begin());
// 第一个元素是无效的,所以要移除
intervals.erase(intervals.begin());
double sum = std::accumulate(intervals.begin(), intervals.end(),0.0);
return sum / intervals.size();
}
// 根据标定电量选择参照日和参照时刻
std::vector<std::pair<int, int>> selectReferenceDaysAndTimes(constPowerUsage& usage, double calibrationPower, int duration) {
std::vector<double> referencePowers = getReferencePowerValues(usage, duration);
std::sort(referencePowers.begin(), referencePowers.end());
double averageInterval = getAverageInterval(referencePowers);
// 用于存储参照用电量组的范围
std::vector<std::pair<double, double>> referenceGroupRanges;
double currentMin = referencePowers.front();
double currentMax = currentMin;
// 将相邻之间差值小于平均间隔用电量的参照用电量组成参照用电量组
for (size_t i = 1; i < referencePowers.size(); ++i) {
if (referencePowers[i] - referencePowers[i - 1] <averageInterval) {
currentMax = referencePowers[i];
} else {
referenceGroupRanges.emplace_back(currentMin, currentMax);
currentMin = referencePowers[i];
currentMax = currentMin;
}
}
// 添加最后一个区间
referenceGroupRanges.emplace_back(currentMin, currentMax);
// 选取覆盖标定电量的参照用电量组
std::vector<std::pair<int, int>> referenceDaysAndTimes;
for (const auto& range : referenceGroupRanges) {
if (calibrationPower >= range.first && calibrationPower <=range.second) {
// 在该范围内查找所有符合条件的参照日和参照时刻
for (size_t day = 0; day < usage.dailyUsage.size(); ++day) {
double dayPower = std::accumulate(usage.dailyUsage[day].begin(), usage.dailyUsage[day].begin() + duration, 0.0);
if (dayPower >= range.first && dayPower <=range.second) {
referenceDaysAndTimes.emplace_back(day, duration);
}
}
break; // 找到第一个符合条件的组后即可退出循环
}
}
return referenceDaysAndTimes;
}
int main() {
// 示例:用电端历史记录初始化
PowerUsage usage = {{{1.0, 2.0, 3.0}, {1.5, 2.5, 3.5}, {2.0, 3.0,4.0}}}; // 有三天的记录,每天三个小时
int duration = 2; // 用电时长是两个小时
double calibrationPower = 4.5; // 标定电量是4.5
// 根据标定电量和用电时长获取参照日和参照时刻
std::vector<std::pair<int, int>> referenceDaysAndTimes =selectReferenceDaysAndTimes(usage, calibrationPower, duration);
// 输出结果
for (const auto& dayTime : referenceDaysAndTimes) {
std::cout << "参照日: " << dayTime.first << ", 参照时刻: " <<dayTime.second << "小时" << std::endl;
}
return 0;
}
这段代码首先使用getReferencePowerValues 函数计算每日从零点开始到指定用电时长结束时的总用电量。这些用电量被排序,然后 getAverageInterval 函数计算相邻用电量之间的平均差值。之后使用这个平均差值来将相邻的用电量聚集成组,形成多个参照用电量组。接下来selectReferenceDaysAndTimes 函数接着选取覆盖标定电量的参照用电量组,并从中找出所有符合条件的参照日和对应的参照时刻。最后main 函数中初始化了一个用电记录示例,并调用了 selectReferenceDaysAndTimes 函数来展示如何使用整个流程。
请参阅图10所示,由于用于近期的参照功率更贴合当前的用电状态,因此上述的步骤S65在具体实施的过程中首先可以执行步骤S651获取每个参照日到当前日期的天数。之后可以执行步骤S652将每个参照日到当前日期的天数的倒数作为对应每个参照功率的权重,计算每个参照功率的加权均值作为全部用电端在当日内下一时刻的期望总负荷功率。对距今时长较远的参照功率赋予较低的权重,从而提高期望总负荷功率的准确性。
附图中的流程图和框图显示了根据本申请的多个实施例的装置、***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。
也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行相应的功能或动作的硬件,例如电路或ASIC(专用集成电路,Application Specific Integrated Circuit)来实现,或者可以用硬件和软件的组合,如固件等来实现。
尽管在此结合各实施例对本发明进行了描述,然而,在实施所要求保护的本发明过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其它变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其它单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
以上已经描述了本申请的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (9)

1.一种分层管控的光伏微电网能量管理***,其特征在于,包括,
光伏电站,
电站储能层,包括集电侧储能端和集电储能控制单元,用于消纳所述光伏电站的功率波动后对电网进行供电;
电网储能层,包括电网储能端和电网储能控制单元,用于消纳电网的功率波动;
送电储能层,包括送电侧储能端和送电储能控制单元,用于消纳用电端的功率波动;
主控单元,用于控制所述集电储能控制单元、所述电网储能控制单元和所述送电储能控制单元;
其中,
所述主控单元,用于获取每个光伏电站的发电功率的历史记录;
获取每个用电端的用电功率的历史记录;
根据每个所述光伏电站的发电功率的历史记录得到全部所述光伏电站在当日内每个时刻的目标入网功率;
获取当前时刻全部所述光伏电站的累计发电功率;
根据当前时刻的所述目标入网功率和所述累计发电功率的差值对全部所述光伏电站进行充放电,使得当前时刻电网的入网功率为所述目标入网功率;
根据每个所述用电端的用电功率的历史记录得到全部所述用电端在当日内每个时刻的期望总负荷功率;
获取当前时刻全部所述用电端的累计用电功率;
根据当前时刻全部所述用电端的所述期望总负荷功率和所述累计用电功率的差值对电网进行充放电,使得当前时刻电网的输出功率为所述期望总负荷功率;
根据当前时刻所述目标入网功率和所述期望总负荷功率的差值对电网进行充放电,使得当前时刻电网能量平衡;
所述集电储能控制单元,用于接收当前时刻的目标入网功率和累计发电功率的差值;
控制集电侧储能端对全部所述光伏电站进行充放电使得当前时刻电网的入网功率为所述目标入网功率;
所述电网储能控制单元,用于接收当前时刻所述目标入网功率和所述期望总负荷功率的差值;
控制电网储能端对电网进行充放电使得当前时刻电网能量平衡;
所述送电储能控制单元,用于接收当前时刻全部用电端的期望总负荷功率和累计用电功率的差值;
控制送电侧储能端对电网进行充放电使得当前时刻电网的输出功率为所述期望总负荷功率。
2.根据权利要求1所述的***,其特征在于,所述根据每个所述光伏电站的发电功率的历史记录得到全部所述光伏电站在当日内每个时刻的目标入网功率的步骤,包括,
获取当前日期的日出至日落的间隔时长作为全天日照时长;
获取与当前日期全天日照时长相同的多个自然日作为参考日;
根据每个所述光伏电站的发电功率的历史记录获取多个所述参考日内每个采集时刻所述光伏电站的发电功率;
获取日出至下一时刻的时长作为目标日照时长;
在每个参考日内,将日出开始至目标日照时长结束的时刻作为所述参考日的参考时刻;
根据多个所述参考日内每个采集时刻所述光伏电站的发电功率得到多个所述参考日在对应的所述参考时刻所述光伏电站的发电功率;
根据多个所述参考日在对应的所述参考时刻所述光伏电站的发电功率获取下一时刻所述光伏电站的预估发电功率;
迭代持续更新下一时刻的预估发电功率得到全部所述光伏电站在当日内每个时刻的预估发电功率作为目标入网功率。
3.根据权利要求2所述的***,其特征在于,所述根据多个所述参考日在对应的所述参考时刻所述光伏电站的发电功率获取下一时刻所述光伏电站的预估发电功率的步骤,包括,
将多个所述参考日在对应的所述参考时刻所述光伏电站的发电功率作为参考功率;
将多个所述参考功率按照数值大小进行排序得到参考功率数列;
计算获取所述参考功率数列中每个所述参考功率与相邻的所述参考功率之间差值的均值作为平均间隔功率;
将相邻之间差值小于所述平均间隔功率的多个所述参考功率组成参考功率组,得到若干组所述参考功率组;
计算获取每一组所述参考功率组内全部所述参考功率的数量和均值;
将所述参考功率组内全部所述参考功率的数量作为权重,计算每一组所述参考功率组内全部所述参考功率的均值的加权均值得到下一时刻所述光伏电站的预估发电功率。
4.根据权利要求1所述的***,其特征在于,所述根据每个所述用电端的用电功率的历史记录得到全部所述用电端在当日内每个时刻的期望总负荷功率的步骤,包括,
获取当前日期所述用电端的用电时长;
根据每个所述用电端的用电功率的历史记录得到当前日期的零点至当前时刻所述用电端的用电量作为标定电量;
根据所述用电时长和所述标定电量在每个所述用电端的用电功率的历史记录中选取参照日和对应的参照时刻;
将所述参照日内所述参照时刻的下一时刻用电端的用电功率作为参照功率;
根据每个参照功率和对应的参照日得到全部所述用电端在当日内下一时刻的期望总负荷功率;
迭代持续更新下一时刻的所述期望总负荷功率得到全部所述用电端在当日内每个时刻的期望总负荷功率。
5.根据权利要求4所述的***,其特征在于,所述根据所述用电时长和所述标定电量在每个所述用电端的用电功率的历史记录中选取参照日和对应的参照时刻的步骤,包括,
根据每个所述用电端的用电功率的历史记录得到历史上每日自零点至所述用电时长结束的时段内所述用电端的用电量作为历史上每日的参照用电量;
将历史上每日的参照用电量按照数值大小进行排序得到参照用电量数列;
计算获取所述参照用电量数列中每个所述参照用电量与相邻的所述参照用电量之间差值的均值作为平均间隔用电量;
将相邻之间差值小于所述平均间隔用电量的多个所述参照用电量组成参照用电量组,得到若干组所述参照用电量组;
获取每个所述参照用电量组内所述参照用电量的最小值至最大值的范围作为每个所述参照用电量组的范围;
根据每个所述参照用电量组的范围,选取覆盖所述标定电量的所述参照用电量组;
将覆盖所述标定电量的所述参照用电量组内每个所述参照用电量对应的日期和自零点至所述用电时长结束的时刻分别作为所述参照日和对应的所述参照时刻。
6.根据权利要求4所述的***,其特征在于,所述根据每个参照功率和对应的参照日得到全部所述用电端在当日内下一时刻的期望总负荷功率的步骤,包括,
获取每个所述参照日到当前日期的天数;
将每个所述参照日到当前日期的天数的倒数作为对应每个所述参照功率的权重,计算每个所述参照功率的加权均值作为全部所述用电端在当日内下一时刻的期望总负荷功率。
7.一种分层管控的光伏微电网能量管理方法,其特征在于,包括,
接收权利要求1至6任一项所述的一种分层管控的光伏微电网能量管理***中的当前时刻的目标入网功率和累计发电功率的差值;
控制集电侧储能端对全部所述光伏电站进行充放电使得当前时刻电网的入网功率为所述目标入网功率。
8.一种分层管控的光伏微电网能量管理方法,其特征在于,包括,
接收权利要求1至6任一项所述的一种分层管控的光伏微电网能量管理***中的当前时刻全部用电端的期望总负荷功率和累计用电功率的差值;
控制送电侧储能端对电网进行充放电使得当前时刻电网的输出功率为所述期望总负荷功率。
9.一种分层管控的光伏微电网能量管理方法,其特征在于,包括,
接收权利要求1至6任一项所述的一种分层管控的光伏微电网能量管理***中的当前时刻目标入网功率和期望总负荷功率的差值;
控制电网储能端对电网进行充放电使得当前时刻电网能量平衡。
CN202410101128.0A 2024-01-25 2024-01-25 一种分层管控的光伏微电网能量管理***及方法 Active CN117638996B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410101128.0A CN117638996B (zh) 2024-01-25 2024-01-25 一种分层管控的光伏微电网能量管理***及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410101128.0A CN117638996B (zh) 2024-01-25 2024-01-25 一种分层管控的光伏微电网能量管理***及方法

Publications (2)

Publication Number Publication Date
CN117638996A CN117638996A (zh) 2024-03-01
CN117638996B true CN117638996B (zh) 2024-05-03

Family

ID=90034228

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410101128.0A Active CN117638996B (zh) 2024-01-25 2024-01-25 一种分层管控的光伏微电网能量管理***及方法

Country Status (1)

Country Link
CN (1) CN117638996B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104701882A (zh) * 2015-03-25 2015-06-10 成都鼎智汇科技有限公司 一种可自动实现能量平衡的微电网***的监控方法
CN115774935A (zh) * 2022-12-01 2023-03-10 国网福建省电力有限公司 弱联型风光储微电网运行优化方法及***
CN115907213A (zh) * 2022-12-19 2023-04-04 国家电网有限公司 基于云集端分层架构的考虑设备健康度的群控群调策略
CN116365507A (zh) * 2023-03-02 2023-06-30 浙江大学 适用于户用光储***的储能能量管理方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7495392B2 (ja) * 2019-03-22 2024-06-04 株式会社カネカ 電力制御システムおよび電力制御方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104701882A (zh) * 2015-03-25 2015-06-10 成都鼎智汇科技有限公司 一种可自动实现能量平衡的微电网***的监控方法
CN115774935A (zh) * 2022-12-01 2023-03-10 国网福建省电力有限公司 弱联型风光储微电网运行优化方法及***
CN115907213A (zh) * 2022-12-19 2023-04-04 国家电网有限公司 基于云集端分层架构的考虑设备健康度的群控群调策略
CN116365507A (zh) * 2023-03-02 2023-06-30 浙江大学 适用于户用光储***的储能能量管理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
计及光伏预测的直流微电网能量调度研究;张东等;智慧电力;20180220(02);第28-33页 *

Also Published As

Publication number Publication date
CN117638996A (zh) 2024-03-01

Similar Documents

Publication Publication Date Title
CN107093007B (zh) 一种考虑光储持续带载能力的配电网可靠性评估方法
Ghiassi-Farrokhfal et al. Joint optimal design and operation of hybrid energy storage systems
KR102509670B1 (ko) 태양광 모듈들의 스트링 연결 방법 및 장치, 디바이스, 및 저장 매체
CN103715688B (zh) 并网型微网优化配置方法及装置
Tahir et al. Optimal ESS size calculation for ramp rate control of grid-connected microgrid based on the selection of accurate representative days
CN113991640B (zh) 基于火电的多能互补能源基地能源配置规划方法
CN114938008A (zh) 储能容量和储热容量配置方法、装置及终端设备
Al-Omary et al. A composite moving average algorithm for predicting energy in solar powered wireless sensor nodes
Khan A novel probabilistic generation model for grid connected PV based distributed generation
El Kounni et al. Solar power output forecasting using artificial neural network
CN117638996B (zh) 一种分层管控的光伏微电网能量管理***及方法
CN109829599A (zh) 基于高比例可再生能源的配电网的集群划分方法及装置
CN117013531A (zh) 配电网的容量域评估方法
CN109449972A (zh) 配电线路选型方法和装置
CN108683211A (zh) 一种考虑分布式电源波动性的虚拟发电厂组合优化方法及模型
El-Rafey et al. Load/weather/insolation database for estimating photovoltaic array and system performance in Egypt
Rouhani et al. Robust sizing of solar-powered charging station with co-located energy storage
Li et al. Assessing degradation-aware model predictive control for energy management of a grid-connected PV-battery microgrid
Crozier et al. Optimal Sizing of an Energy Storage Portfolio Considering Multiple Timescales
CN111815022A (zh) 一种基于延时坐标嵌入法的电力负荷预测方法
CN117060402B (zh) 一种基于分布式智能电网的能源互联网平台架构方法
Vance Developing a PV and Energy Storage Sizing Methodology for Off-Grid Communities
Jain et al. Impact of integrating the photovoltaic and wind energy sources on generation system reliability and operation economics
CN116976060B (zh) 分布式新能源集群-负荷-网络动态重构的灵活组网方法
You et al. Three-Phase Load Forecasting Model Based on K-Shape and STSGCN

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant