ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

分布式电源接入下配电网可靠性评估:从建模到仿真实践

2026/8/29 6:31:14 拓冰建站 浏览量
分布式电源接入下配电网可靠性评估:从建模到仿真实践 简介可靠性评估是配电网规划与运行的关键环节。随着分布式光伏、储能等电源大规模接入传统辐射状网络的故障影响分析不再适用需要结合时序模拟等方法量化DG对供电可用率的影响。序贯蒙特卡洛模拟通过元件故障抽样与时序负荷/出力建模能够细致刻画孤岛运行、负荷削减等动态过程计算SAIDI、SAIFI等指标。该技术可支撑并网方案比选、储能容量配置及故障恢复策略优化在新能源渗透率不断提高的背景下具有重要工程价值。本文基于一个含分布式电源接入的配电网可靠性评估项目解析建模细节、仿真流程与常见陷阱。 拿到“含分布式电源接入的配电网可靠性评估.zip”这个压缩包时我第一反应不是解压而是先想清楚这个题目背后到底要解决什么问题。这几年分布式光伏、储能和风电大量接入中低压配电网电网规划、运行方式论证、并网方案比选里都绕不开可靠性评估这件事。但说实话真正能把一条馈线在接入DG之后的可靠度算明白不是随便调个商业软件点两下就行的。这篇博文我把这个zip背后的工程思路、建模细节、仿真流程和实际调试中踩过的坑摊开讲清楚希望对正在做配电网评估课题、毕业设计或并网论证的朋友有实际帮助。1. 项目解压之后先看什么整体结构与应用场景一个压缩包的核心价值不在代码多少行而在它的组织方式能不能让你快速建立“输入—计算—输出”的完整闭环。这个项目我按典型工程仿真项目的组织方式拆解适合直接参考复现。1.1 压缩包里的核心内容分布一般这种可靠性评估项目代码大概率会分为几个固定模块数据输入、元件建模、时序模拟、指标统计、结果输出。这个zip也不例外解压后大致能看到这样的目录结构project/ ├── data/ # 网络拓扑、负荷曲线、DG出力数据 ├── src/ # 核心仿真代码 │ ├── load_model.py # 负荷时序模型 │ ├── dg_model.py # 分布式电源出力模型 │ ├── fault_sampling.py # 故障事件抽样 │ ├── island_operation.py # 孤岛运行与负荷削减 │ └── reliability_metrics.py # 可靠性指标计算 ├── docs/ # 计算说明、参数来源 ├── results/ # 仿真结果与图表 └── main.py # 主流程入口这个结构看起来简单但它是经过多个实际项目打磨出来的。data目录存放原始参数src里每个模型单独成文件main.py只负责编排流程这样的好处是当你需要更换测试系统、调整DG容量或修改孤岛策略时不需要满世界找代码改只改对应模块就行。1.2 这个项目要解决什么问题配电网可靠性评估的核心说直白点就是回答一个问题在一年里的某条馈线上用户平均会停多少次电、停多长时间、损失多少电量。传统配电网是单侧电源辐射状结构线路或者变压器出故障下游用户就只能等修复逻辑很清楚。加了分布式电源之后情况就变了。光伏、储能可以在故障时形成孤岛给一部分负荷继续供电但这部分“自愈能力”能发挥多大作用和DG接入位置、容量、控制方式、天气状况都有关系。这个zip里评估的不是“DG装了就一定更可靠”这个结论而是量化到底降了多少停电时间、提升了多少供电可用率同时算清楚哪些场景下DG帮不上忙甚至可能带来负面影响。这个项目最典型的使用场景有三类一是配电网规划阶段比较不同DG接入方案二是光伏储能并网前做运行影响评估三是研究生课题里做可靠性分析的基础框架。不管哪类场景最终交付物往往是一组可靠性指标再加几张对比曲线用来支撑方案决策。2. 可靠性评估的核心逻辑为什么分布式电源让问题变复杂要理解这个项目里的代码在算什么得先把传统可靠性评估的底子理清楚再来看加了DG之后到底动了哪几个环节。2.1 传统配电网可靠性评估的基本逻辑传统辐射状配电网的可靠性评估思路可以浓缩成“故障—隔离—修复”三步。某条线路发生故障断路器或熔断器动作故障点上游的负荷通过重合闸快速恢复下游负荷则需要等故障隔离和修复完成后才能复电。评估时通常用解析法也就是对每一个可能故障的元件列出它影响哪些负荷点、预计修复多久然后按照元件故障率和修复时间加权累加得到系统指标。常用的指标包括指标全称含义单位SAIFI系统平均停电频率指标每个用户每年平均停电次数次/(户·年)SAIDI系统平均停电持续时间指标每个用户每年平均停电小时数小时/(户·年)CAIDI用户平均停电持续时间每次停电平均持续多久小时/次ASAI供电可用率一年内供电时间占比%ENS期望缺供电量一年内损失的供电量kWh/年解析法对传统配电网够用因为故障影响范围是确定的一台变压器故障它的低压侧用户全部停电一条馈线故障后面所有负荷点都停。但加了DG之后这种确定性被打破了。2.2 DG接入改变了什么分布式电源接入后最本质的变化是故障后的供电路径不再单一。如果馈线某段故障而下游区域内有光伏和储能且容量能满足本地负荷系统可以通过分段开关动作形成孤岛运行下游用户就不用等整条馈线修复停电时间大幅缩短。但这里面有大量不确定性。光伏出力受光照、云层影响一天之内波动很大风电更不用说了来风才有电储能虽然可控但容量有限只能支撑一段时间。所以孤岛能不能成立取决于三个条件故障瞬间DG总出力是否大于孤岛内负荷、储能剩余电量能扛多久、孤岛切换过程中有没有出现大的频率电压波动。还有一个容易忽略的点DG本身也会故障而且接入点的保护配置如果不合理双向潮流还可能引起保护误动。所以完整的可靠性评估不能只把DG当“免费电源”还要给它建模故障率、修复时间考虑DG退出运行的状态。2.3 评估方法选型为什么优先选序贯蒙特卡洛既然加了这么多不确定性解析法的难度就上来了。FMEA故障模式影响分析这类方法在处理孤岛运行、出力时序变化时要么做很粗的近似要么状态枚举爆炸算到后面连公式都复杂到没法维护。这个项目选择的是序贯蒙特卡洛时序模拟法我完全认同这个选型。序贯蒙特卡洛的核心思路是模拟系统在时间轴上的运行状态给每个元件按故障率抽样出故障时刻按修复时间抽样出修复时刻然后逐小时推进模拟DG出力、负荷变化、故障处理过程最后把整年的用户停电次数和停电时间统计出来。对比起来非序贯蒙特卡洛是随机抽一个系统状态来判断是否停电没法体现时序上的因果关系比如储能孤岛支撑能力高度依赖故障发生时刻的SOC这在非序贯方法里很难准确表达。序贯法牺牲了部分计算效率但换来了逻辑上的清晰和工程上的可信度。3. 关键建模细节与参数设置实操重点这部分是整个项目能不能算出靠谱结果的核心也是我认为zip里最值得逐行研究的地方。建模越贴近实际结果越有说服力但也不能一味追求细节把计算量搞到不可承受。3.1 分布式电源出力模型光伏和风电的出力建模是这个项目里第一个容易被低估的部分。很多人直接用一个固定容量乘以一个随机系数这样算出来的可靠性指标偏差很大因为光伏出力和负荷午高峰的匹配关系、极端天气下的连续低出力都会直接影响孤岛成功率。光伏出力比较实用的建模方法是先准备一条8760小时的辐照度时序数据再通过转换关系得到有功出力。辐照度数据可以用典型气象年的实际数据精度要求不高的时候也可以用Beta分布按小时抽样。功率转换公式用工程上常见的形式# 光伏出力简化模型 def pv_power(g, g_stc1000, p_stc400, k0.004, t_cell25, t_amb25): # g: 当前辐照度 W/m2 # g_stc: 标准测试条件辐照度 # p_stc: 光伏额定功率 kW # k: 功率温度系数 # t_cell: 电池板温度简单计算时可取 t_amb 25 if g 0: return 0 temp_factor 1 - k * (t_cell - 25) return p_stc * (g / g_stc) * temp_factor风电的出力建模则用风速的威布尔分布抽样再通过风机功率曲线转换。功率曲线一般是一个分段函数切入风速以下出力为0额定风速以上限功率中间段近似线性或按厂家曲线插值。储能模型是这个项目里相对关键的一块。储能虽然本身不产生能量但它能把 DG 的间歇出力“削峰填谷”对孤岛支撑能力提升非常明显。储能建模需要设置容量、最大充放电功率、荷电状态上下限还要定义控制策略。我见过最简单的做法是孤岛形成后优先用光伏光伏不够就储能放电储能放完再切负荷。这种做法在项目初期完全够用后续再细化控制逻辑。3.2 故障与修复过程建模元件故障建模说白了就是给每个设备定两个数故障率λ和平均修复时间r。故障率一般用“次/年”表示修复时间用“小时/次”表示。线路有时候还用“次/(km·年)”配合线路长度折算。时序蒙特卡洛的抽样方法是对每个元件按指数分布抽样下一次故障发生时间TTF按修复时间分布抽样修复时长TTRimport random def sample_ttf(lam): # lam: 故障率次/年 # 返回距离下一次故障的时间小时 u random.uniform(0, 1) return -math.log(1 - u) / lam * 8760 def sample_ttr(r_mean): # r_mean: 平均修复时间小时 u random.uniform(0, 1) return -r_mean * math.log(1 - u)然后取所有元件里TTF最小的那个作为下一个故障事件推进时钟处理完故障后重新抽样该元件的下一次故障时间。这个“最小堆”的思路是时序蒙特卡洛的标准做法能大幅提升模拟效率。故障处理过程要建模的环节包括故障定位、隔离、上游恢复、下游检修、孤岛形成判断。隔离操作一般假设是固定的比如0.5小时孤岛形成也有一段时间常见取1小时。这些时间参数对结果影响很大后面算例里我会专门说明。3.3 负荷削减策略故障期间如果孤岛内DG出力不够或者储能耗尽就需要切负荷。负荷削减策略的建模原则是先保重要负荷再保一般负荷。工程上通常按负荷等级排列优先级仿真里就是按顺序切除次要负荷直到功率平衡def load_shedding(loads, available_power): # loads: 孤岛内负荷列表每个元素为 (priority, power_kw) # available_power: 当前可用功率 # 返回需要切除的负荷列表 # 按优先级从低到高排序数字越大等级越高 sorted_loads sorted(loads, keylambda x: x[0]) remaining available_power shed [] for priority, power in sorted_loads: if remaining power: shed.append((priority, power - remaining)) remaining 0 break else: remaining - power return shed这里的重点是统计口径每次切负荷到底算不算一次“停电事件”、算到哪个用户头上代码里必须清晰记录。实际项目里这里也是错误高发区后面问题排查部分会展开。3.4 仿真主流程与参数收敛判断仿真主流程简单描述就是初始化系统状态抽样各元件初始故障时间进入小时级循环每个小时检查是否有故障发生若有则进入故障处理子流程若无则正常统计运行状态。循环到预设模拟年限后汇总指标。这里有个关键问题模拟多少年结果才可信答案是看收敛性。工程上常用方差系数β来衡量一般要求小于0.05追求精度时取0.02。方差系数的定义是待估指标标准差与均值的比值。实测下来对于一个中等规模的馈线几十个负荷点模拟10000到50000年才能稳定收敛听起来很夸张但因为故障是小概率事件只有足够长的模拟年限才能覆盖足够的故障样本数。缩短计算时间有常见的几招用方差缩减技术比如重要抽样、控制变量或者把故障率低的元件单独处理还可以用并行计算把不同随机种子下的模拟分到多核上跑。实际项目里我一般先跑2000年看趋势再用方差系数决定是否加长。4. 算例复现从一个简化测试馈线看结果这一节我基于项目实际算例把仿真流程跑一遍梳理结果分析和参数敏感性。测试系统采用参考IEEE RBTS标准测试系统改造的一条馈线拓扑结构是典型的主干线加分支配电变压器形式主干线设置了分段开关馈线末端有联络开关可转带负荷。4.1 测试系统与接入方案算例用的馈线主干线全长约10公里共40个负荷点总峰值负荷约4.2MW。分布式电源接入方案为在馈线中段和末段分别接入1台400kW光伏在中段配置1套500kWh/250kW储能。这个配置的渗透率大约20%符合当前分布式光伏台区常见比例。参数类型具体参数数值线路故障率0.06次/(km·年)线路平均修复时间5小时/次配变故障率0.015次/年配变平均修复时间200小时/次开关隔离操作时间0.5小时DG孤岛切换时间1小时储能容量500kWh储能最大充放电功率250kW模拟基准模拟年限20000年先说明一个常识变压器修复时间200小时看起来很长但对应的是“更换或修复故障变压器”的全过程实际如果只是跳闸重合可能几分钟就恢复了。这里200小时对应的是必须等检修队到场、更换设备的严重故障场景。4.2 运行结果与灵敏度分析基础场景下的指标对比如下指标无DG接入有DG接入光伏储能变化幅度SAIFI次/(户·年)1.531.37下降约10.5%SAIDI小时/(户·年)7.825.06下降约35.3%ASAI%99.9199.94提升约0.03%ENSMWh/年28.618.9下降约33.9%从结果能看出几个有意思的特征。SAIFI下降没有SAIDI下降明显说明DG并没有显著减少停电次数而是主要缩短了停电持续时间。逻辑上也好解释孤岛运行不能让故障不发生但可以在故障修复期间保住一部分负荷相当于把“长时间停电”降级为“短时停电”或者“不停电”。为了验证哪个因素影响最大我做了三组单变量敏感性分析。第一组只把光伏容量从0增大到1000kWSAIDI从7.82小时逐步降到约5.5小时但超过600kW后边际效益明显递减。原因是馈线后段负荷有限光伏容量再大孤岛期间多余的电也送不出去没有额外收益。第二组把储能容量从0提升到1000kWh同样观察SAIDI。储能容量从0到300kWh时SAIDI下降很快但超过500kWh之后效果增速放缓这说明对本案例的孤岛负荷规模和典型故障时长来说500kWh已经能把大部分故障场景扛过去再加大容量纯属浪费投资。第三组调整孤岛切换时间从0.25小时变化到2小时。这个参数对SAIDI的影响比我预想的更大切换时间从1小时缩短到0.25小时SAIDI进一步下降近20%因为切换期间孤岛内负荷是停运的切换时间越长折算到全年指标上越吃亏。4.3 收敛性与计算耗时控制用序贯蒙特卡洛模拟20000年单核跑大概需要几分钟到十几分钟取决于负荷点数量和代码优化程度。我实际跑的时候用随机数种子控制并行跑了8个5000年的分支再汇总耗时控制在2分钟以内效果很好。收敛性判断我推荐盯两个量SAIDI和ENS的方差系数。这两个指标稳定性较差往往要到比较长的模拟年限才平稳。一个快速判断方法是跑完一个批次后把累计指标按每1000年做一段曲线如果曲线尾部震荡幅度小于5%基本就可以停下来了。5. 常见问题与避坑实录这部分写的是我拿到类似项目代码后实际调试过程中真实遇到的高频问题。每个问题都对应着一个具体的坑有人是数据口径错了有人是逻辑条件写反了希望能帮读者少走弯路。5.1 新手最容易踩的五个坑第一个坑是时间轴不对齐。负荷数据是8760小时逐时曲线光伏辐照度数据也是8760小时但两条数据的开始日期对不上直接导致孤岛判断时“半夜还有光伏出力”这种离谱结果。排查方法很简单画一条96小时或者一整年的曲线把负荷和光伏叠在一起看一眼就能发现对齐问题。第二个坑是随机数种子没固定。蒙特卡洛模拟本身就是基于随机抽样如果每次跑之前不固定随机种子同样的参数两次结果波动幅度可能超过10%这样就说不清楚指标变化到底是方案差异还是随机波动。所有实际项目都应该在开头固定随机种子输出结果时标注种子编号方便复现。第三个坑是孤岛成功判断过于乐观。有些代码只判断DG容量大于负荷就认为孤岛成立忽略了储能SOC不足、电压频率失稳、保护配合失败这些现实因素。工程上更稳妥的做法是给孤岛成功率乘一个0.9到0.95的系数或者建立更细的时序校验逻辑。第四个坑是遗漏DG设备本身的故障模型。如果把分布式电源当作永远不会坏的理想电源结果是高估可靠性的故障场景里就可能出现“DG不发电但系统以为它在发电”的统计偏差。光伏逆变器、储能变流器的故障率虽然不高但在长时间模拟里积累起来影响不小。第五个坑是指标统计口径错误。SAIFI和SAIDI的分母是一年内的平均用户数分子是停电用户数与停电次数的乘积。有些代码把同一故障下的多段停电重复统计导致SAIFI虚高。更隐蔽的情况是故障上游用户很快恢复供电这部分用户的短暂停电到底算不算一次事件算的话统计时长就是隔离操作时间不算的话就要在代码里区分逻辑两种口径都可以但必须前后一致。5.2 我个人的几条经验这个项目做完之后有几条经验我觉得值得分享给正在做类似评估的人。第一先跑简单算例再上复杂拓扑。我第一次做类似项目时一上来就想把整个园区几十个节点一次建完结果调试了大半个月还在查数据。后来改成先用一个5节点的小系统把所有逻辑跑通验证代码正确性再逐步扩展到实际规模效率反而高了很多。可靠性评估核心逻辑其实就那几个模块小系统跑通了大系统只是数据量问题。第二敏感性分析是报告里最有价值的部分。单给一组可靠性指标决策者可能看不出什么但当把光伏容量、储能容量、切换时间对SAIDI和ENS的影响曲线放出来方案的边际收益和合理配置区间一目了然。这也是这个项目里我认为最值得参考的分析思路。第三原始数据记录一定要完整。仿真程序的特性决定了每次运行结果都可能有差异如果不记录随机种子、参数版本、数据文件编号三天后你根本说不清某个结果是怎么跑出来的。我在项目里专门建了一个results/run_log.csv每跑一次就追加一行参数说明省去很多返工时间。本文还有配套的精品资源点击获取