王海群,费 斐,陈凯玲
(国网上海市电力公司 经济技术研究院,上海 200090)
随着电力市场化改革的进一步推进,电力市场中可再生能源渗透率进一步提高,电力系统将迎来前所未有的升级改造。能源互联网充分考虑可再生能源出力的不确定性,进行有效的互联互补,为新能源就地消纳提供了一种有效的途径[1]。在这种发展趋势下,虚拟电厂(Virtual Power Plant,VPP)应运而出。微电网在消纳分布式能源时,通常会受到地理位置的限制,而虚拟电厂却没有这种限制,打破了发电侧、用电侧的阻隔。虚拟电厂的提出,实现了区域性多能源的互联,达到能源系统智能化管理的目的[2],有利于新能源的消纳,提高了新能源的利用率,有效遏制了弃风弃光现象[3]。然而,目前VPP控制中心具有绝对的权限,VPP在聚合发电、用电单元时,缺乏信息安全的保障体系[4],同时存在着信任缺失问题[5]。多能源协同管控,提高能源利用率是目前能源市场的发展趋势。但是多能源协同管控带来的信息安全、信任缺失等成为亟待解决的问题。
区块链是一种去中心化的网络,具有智能合约、分布决策、协同自治、防篡改的高安全性和公开透明性等特征,区块链技术对于微电网分布式电能交易具有较好的适用性,可以有效提高分布式能源的消纳,进一步促进分布式能源的发展[6]。国内外学者在区块链技术应用于电力市场中的研究及应用尚处在起步阶段。Suda等[7]构建了基于区块链技术的大用户直购电交易框架。李剑峰[8]在区块链的基础上构建微电网运行优化模型,并以最小运行总成本为目标实现了电力出力波动的平抑。任建文等[9]基于区块链与微电网相似的拓扑结构,探讨了微电网分布式电能交易的总体架构。虽然这些研究利用区块链技术形成了去中心化的模型框架,但是将区块链与电力系统相结合进行调度优化方面的研究较少。
基于上述考虑,本文分析了VPP 模型的特点,提出了改进实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)算法的共识机制。PBFT算法适用于VPP运行特征,可以实现虚拟电厂的有效调度。在等耗量微增率准则的基础上,将微增量特征作为一致性变量,实现虚拟电厂的最优经济调度。最后,通过算例仿真验证了本文所提出的方法的有效性,为未来虚拟电厂的进一步发展提供了可信的参考。
区块链由一串基于密码学原理产生的数据块组成,每一个数据块包含区块头以及区块体[10-11]。区块体负责记录前一段时间内的所有交易信息,由区块头实现区块链的大部分功能。
在能源互联网中引入区块链技术形成能源区块链网络(Energy Blockchain Net-work,EBN)。在能源区块链中,利用智能合约、共识机制等技术特征[12-13],实现了点对点直接可信交易。能源区块链具有去中心化、去信任、开放共享的特点契合能源互联网的发展目标,将区块链技术引入VPP的可行性分析如图1所示。
在能源区块链连中,VPP的每个分布式能源节点作为一个单元将拥有特定ID 作为唯一的身份标识。每个能源区块储存该网络中一段时间内的信息,具体如表1所示。
表1 EBN存储的信息
在EBN 与VPP 进行协同调度时,新的分布式单元将凭借其特定的ID 才能参与调度协作,具体步骤如图2所示。
联盟链[14-15]对一个特定的行业组织开放,每个新加人的节点都需要经过验证和审核。在虚拟电厂的实际调度运行中,由于分布式能源节点发力的不确定性将导致无法实现经济最优化调度。在联盟链中,可以适应包含少量故障节点或作恶节点的情况,适用于虚拟电厂的运行特点。在区块链系统中,当共识节点数量较少时,可采用实用拜占庭容错算法(PBFT)以有效提高共识的效率及共识结果的准确性。PBFT 的运行环境要求是一个相对封闭的集群,每一次共识需要多次两两节点进行通信。PBFT 适合行业、政府等主导的联盟链,是节点数量有限系统并不需要具备数字货币发行机制时的理想选择。因此,基于虚拟电厂的运行特性,本文选择联盟链并采用PBFT 算法。
研究可知,密码学技术可保证各分布式能源节点之间信息通信不可篡改,这是运用PBFT 算法的前提条件。假设系统中的总节点数|n|=3f+1,则在系统正常运转的状态下,需要有2f+1个正常节点,整个系统中无效或恶意节点的数目的最大值为f个,进而知PBFT 的最大容错率为30%。PBFT 算法的执行分为3个时间段,分别为预准备(Pre-prepare)、准备(Prepare)和确认(Commit)。经过3个阶段的共识运作,可以确保所有参与共识的分布式能源节点目标具有一致性。
共识机制的原则是少数服从多数,PBFT 采用这一原则进行共识记账,总体过程包括如下4个步骤[16-17](见图3)。
通过分析可以发现,PBFT 算法具有4个显著优点:①在低耗能的前提下,它具备权限分级能力;②它是专业化的记账人;③可以容忍任何类型的错识,记账由多人协同完成,每一个区块都有最终性,不会分叉;④具有严格的数学证明保证算法的可靠性。
在共识过程中,PBFT 算法可保证各分布式能源节点的灵活性、安全性,同时可提供(N-1)/3的容错性[18]。PBFT 共识算法具有契合联盟链的运行机制,同时也能够降低共识信息丢失、延迟、被伪造篡改的风险性。在包含N个节点的系统中,PBFT 算法可容许出现f(N≥3f)个错误节点或恶意节点,即在含有N个节点的系统中,容许出现f(N>3f)个拜占庭节点错误,可有效提高原始拜占庭容错算法效率。在VPP运行调度过程中需要考虑分布式能源出力的波动性,为使算法与VPP调度运行具有更高的契合性,对PBFT 算法进行改进,改进后的算法流程分为5个阶段,即Request阶段、Pre-prepare阶段、Prepare阶段、Commit 1阶段以及Commit 2阶段。
(1)Request阶段。需求侧向VPP控制中心发送请求,需求侧节点单元形成集合〈Request,o,t,c〉。其中:o为请求执行的操作;t为时间戳,确保客户端的请求被有序单次的执行;c为需求侧请求方。
(2)Pre-prepare阶段。VPP 控制中心根据接收到的请求,形成预调度方案并将方案信息生成新区块,然后进行全网广播。新区块集合为〈Pre-pare,v,n,d0>m0〉。其中:v为VPP控制中心的编号;n为请求信息的序号;m0包含需求侧发送的请求及VPP形成的预调度方案消息;d0为m0的摘要。VPP控制中心将需求侧的每一次请求信息编上序号存储于控制中心内,防止未来VPP控制中心发生变更,请求信息丢失无法溯源。
(3)Prepare阶段。此阶段是分布式能源节点的接收共识过程,即当分布式单元节点在接收到调度执行指令时,首先验证指令信息是否由VPP控制中心发出,验证通过后,各分布式单元节点对调度方案的可行性进行共识,若方案满足约束条件,则通过验证并对全网进行广播,广播各分布式能源节点的验证结果〈Prepare,v,n,,i〉,其中:为能源节点对m0的验证签名;i为该节点的序号,同时等待接收超过2/3的节点广播验证结果,若验证未获通过,则不广播。在Prepare阶段,所有的分布式能源节点具有参与运行调度的能力及实际操作条件。
(4)Commit 1 阶段。等待最终的共识结果。当整个系统内有超过2/3的分布式能源节点广播自身验证通过的结果后,所有分布式能源节点达成共识。达成共识后,利用区块链技术追溯和共享历史数据,根据历史样本计算初始场景概率,并根据预调度方案d0形成初始调控方案,再次发送广播〈Commit1,v,n,d0,,di,i,mi〉。其中:mi为该能源节点提供的初始调控方案及该场景的初始概率;di为mi的摘要,同时再次等待接收超过2/3的节点的广播验证结果。
(5)Commit 2阶段。对最终待执行的调度方案进行最后的验证,并广播〈Commit1,v,n,d0,,di,i,mi〉,其中,为能源节点对mi的验证签名,当整个系统内有超过2/3的分布式能源节点达成共识而通过验证时,则验证完成并执行具体的调度方案。
在改进的PBFT 算法基础上,依据等耗量微增率准则,系统内分布式能源节点的调度方案形成过程如图4所示。
当系统内的负荷总量发生变化时,所有机组将收到功率调整需求。各个机组在收到请求后将利用PBFT 算法进行共识。共识通过后,系统内各个机组重新计算本单元出力功率以及微增量特征值λ,各机组根据计算值调整机组实际功率并且向全网广播微增量特征λ。所有机组将其更新后的出力功率值记录在区块链上,为下一次的调度做准备。具体流程如下:
图4中DERs表示能源节点,其中DERs1意为主节点。
(1)当系统内总负荷发生改变时,主节点DERs1被激活,主节点接收到功率计算请求的信息后,将对信息进行预处理。
(2)当主节点DERs1对接收到的信息预处理完成后,将基于分布式调度三阶段的具体规则向系统内各个分布式能源节点广播信息。
(3)请求的序号分配阶段,主节点DERs1给分布式能源节点的请求按照时间附上相应的序号值,不同时间段的请求得到不同的序号,利用序号和请求操作构造Pre-Prepare消息,并广播给各DERs节点。在序号分配完成后,主节点DERs1将总的变化负荷PLD和功率计算请求发送到全网进行广播,各分布式能源节点接收具体信息。
(4)信息交互阶段,各DERs 节点接收Pre-Prepare消息,每个节点向其他分布式能源节点广播消息,如果节点收到2f个不同节点的消息,根据PBFT 的规定,共识已经达成,Prepare阶段已经完成,系统内各节点获得更新后的负荷值。此时各节点初步具有计算能力,具备参与调度的条件。
(5)序号确认阶段,各节点对视图内的请求和次序进行验证后,如果节点收到了2f +1 个Commit提交消息,代表大多数节点已经进入Commit阶段,这一阶段已达成共识。共识达成后,系统内各个分布式能源节点将会执行请求。
下面以区块链中第i个节点的计算过程为例,说明等耗量微增率准则的计算过程。
依据分布式调度准则,要求所有节点微增量特征值λ一致,即满足
将所有节点功率用Pi表示,于是有:
一般情况下,总负荷功能PLD是已知的,因此,有
由于PLD已知,从而可计算得到新的Pi,然后将其代人式(2)得到所有节点的新的功率值,并更新到区块链中,同时计算λ值并发送给任务的发起节点。
(6)任务发起者接收来自不同节点的响应,若有2f+1个响应微增量特征值λ相同,则系统内所有节点对于本次负荷波动的计算值已经达成共识。该响应结果即为本次请求计算的结果,本次分布式功率分配调整将按照上述计算值完成具体操作,实现最优经济调度。
分布式能源系统的不稳定性导致当有新的能源节点加入时,系统内在审核通过新节点的加入请求后,广播自身参数及功率值,完成新节点的功率分配。当有节点退出时,采用类似操作更新链上数据和调整功率,保证整个系统运行状态平稳。
为验证本文所提出算法的有效性,通过实验进行仿真验证。假设在某VPP 系统内分散了4 个DERs,类型为微型燃气发电机(Micro Gas Generators,MGG),MGG 通过区块链网络连接,每个MGG 是网络中的一个节点,并假设该网络存在一定网络延时,但保证点对点直接通信。机组的运行参数和初始功率如表2所示。
表2 机组的运行参数和初始功率
存在网络延时的情况下,测试一致性变量λ的变化情况。由图5可知,在初始t=1时刻,各机组的λ值不同,不满足等耗量微增率准则,系统的运行没有达到最优状态。
图5展示了在共识过程中,总负荷功率PLD与机组发电总功率SUM(Pi)的对比情形。由图5可以发现,虽然网络延时和共识计算造成了系统波动,但最终达到了功率平衡。
图6展示了各个MGG 机组的有功功率调整情况,最终功率值稳定在最优运行状态。
虚拟电厂有助于优化资源配置,提高新能源的利用率。本文分析了能源区块链与VPP之间的契合互补特性,建立了基于EBN 的VPP 调度运行机制。基于区块链技术去中心化、自治等技术特点,针对虚拟电厂的运行特征,采用等耗量微增率准则,实现虚拟电厂的完全分布式运行控制。后续将进一步探讨区块链与虚拟电厂的深度融合技术,促进可再生能源的吸纳。