资讯详情

资讯详情

分布式电源接入对配电网故障定位的影响:Python仿真与分析

1. 为什么分布式电源一进来故障定位就开始犯迷糊先说点我自己的体会。搞配电网的人都知道传统配电网的设计思路是单电源、辐射状电能从变电站流向用户路径清晰方向和大小都很好预测。所以故障定位这一块无论是站内继电保护用的阻抗测距、电流保护还是后来配网自动化里常用的短路电流比幅比相法本质上都建立在一个共同地基上故障电流主要从变电站这一个方向灌进来波形、幅值都有规律可循。分布式电源DERDistributed Energy Resource接入之后这个地基被撬动了。光伏、风电、储能甚至电动汽车充放电设施只要并在馈线上故障时它们也是电源。故障点不再只接受变电站一个方向的电流还可能从线路中段、末端反向注入短路电流。这一下就带来了两个连锁反应一是保护装置和故障指示器感受到的电流幅值、方向不再符合原来设定的判据二是基于单端电气量推算故障距离的算法会因为短路电流分布模型失真而出现不小的定位误差。我最早接触这个问题是在一个配电网故障定位的模拟项目里。当时用某高校课题组给的馈线参数跑仿真先做无分布式电源的基线测试阻抗法定位误差在几百米以内效果相当能接受。后来把一台额定容量不大、约占总负荷15%左右的分布式电源接在馈线中段同样位置的故障定位结果直接偏出去一两公里。当时我心里只有一个念头这不是算法调参能救的问题而是整个故障分析模型的前提变了。所以这篇东西我不打算只贴一堆代码而是想把这事的来龙去脉讲清楚DER到底是怎么影响故障定位的我们在Python里怎么建模去量化这种影响以及实际做仿真和工程落地时需要注意什么。适合正在做配电网保护整定、配网自动化方案设计或者在做分布式电源接入影响评估的同行也适合刚接触这个方向、想快速建立感性认识的同学。2. 故障定位还可以这么做几种常见算法的适用边界2.1 阻抗测距法为什么最受关注又最容易翻车配电网故障定位里阻抗法使用率最高原因很简单只需要装置安装处的电压、电流量不需要对端数据同步工程量小。它的基本原理是故障发生后保护安装处测到的电压等于系统等效电动势减去线路压降而线路压降又等于测量电流乘以故障距离对应的线路阻抗。写成简化形式就是Z_meas U_meas / I_meas其中Z_meas包含系统阻抗、线路阻抗和故障电阻的贡献。在不考虑故障电阻的情况下Z_meas的虚部除以单位长度线路电抗就能估算故障距离。即便考虑了故障电阻很多实现也会利用电流与电压的相位关系做补偿。但这里有一个极其关键的隐含假设测量电流是流入故障点的唯一电流。在传统单电源辐射网中这是成立的。接了DER之后故障点还有来自中段或者末端的注入电流保护安装处测到的电流只是故障电流的一部分。按照这个被削过的电流去反推距离结果自然是往偏的方向跑。2.2 行波法精度高但配电网用起来很奢侈行波法利用故障产生的电压、电流行波在母线和故障点之间往返传播的时间差来测距不依赖短路电流幅值所以理论上受DER影响较小。实际工程中真要上这套系统需要高采样率至少1MHz以上的采集装置还需要可靠的行波捕捉和波头识别算法。配电网线路短、分支多、末端反射复杂波头识别很容易被干扰淹没。在我接触过的落地项目里行波法基本用在输电线路或重要的电缆馈线上普通配电网馈线很少装成本是一道坎维护又是一道坎。2.3 零序电流法痛点在于消弧线圈和小电流接地系统国内中压配电网大量采用中性点不接地或经消弧线圈接地方式单相接地故障的电流小用零序电流的方向和幅值做定位判断是经典做法。分布式电源接入后它的并网变压器会改变零序网络的结构。如果DER的变压器绕组接线方式选得不好就会给零序网络引入额外的接地通路改变故障时零序电流的分布。更麻烦的是并网逆变器在故障期间的零序特性跟传统同步机完全不一样控制策略一变零序电流幅值和相位也跟着变。这就导致基于零序电流稳态量的定位算法在DER接入场景下可靠性明显打折。2.4 智能算法数据驱动方法绕开了物理模型误差这几年配电网故障定位的方向明显在向数据驱动倾斜。利用馈线上的故障指示器、智能监测终端上报的故障信息或者用短路电流幅值分布作为特征训练分类模型来判故障区段这类方法在含DER的配电网里反而有优势。原因在于它不依赖故障电流从哪来的精确模型喂进去的是实际采集的数据特征里天然包含了DER的影响。当然缺点也明显需要足够多的故障样本尤其是各种DER出力水平、各种过渡电阻下的样本数据否则模型泛化能力堪忧。做个表格能更直观地看到这些方法的差异定位方法所需信息DER影响程度实现成本配电网适用性阻抗测距法单端电压电流高低中需补偿措施零序电流法单端或多端零序量中高低小电流接地系统常用行波法高频行波信号低高短线路反射干扰大数据驱动法大量故障样本低靠样本适应中需要样本积累2.5 选Python做仿真图的是敏捷迭代做这类影响分析用Python有几个实打实的优势。第一数值计算库成熟numpy、pandas处理矩阵运算和批量场景非常顺手第二配电网仿真有专门的工具包比如某电气分析库可以搭建任意拓扑的馈线模型还支持接入分布式电源并做短路计算省去自己手搓潮流域的功夫第三可视化、机器学习库生态完善做批量误差分析和智能化定位算法沉淀都方便。不过要注意这类库做短路计算时大都采用机电暂态或准稳态模型对逆变型分布式电源的暂态特性模拟是简化处理的。要是想精确研究DER变流器的故障穿越特性还是得用电磁暂态仿真工具Python更适合做上层算法验证和批量统计分析。3. 用Python量化DER对故障定位的影响一整套可复现的流程3.1 先从一条馈线的案例说起我拿一个典型的10kV辐射状馈线做例子。为方便说明我会把模型刻意简化重点突出DER接入对定位结果的影响机制。馈线总长设定为12公里单位长度线路参数取常见的架空线水平。分布式电源我设计成两种方案一种接在馈线中段一种接在靠近末端的位置分别观察同一个故障点在不同DER接入位置下的定位误差变化。这个案例分析的核心目的有三个。第一验证DER接入是否真的会让阻抗法定位产生显著偏差第二量化偏差跟DER接入位置、DER注入电流大小之间的关系第三给后续改进算法提供一个基准测试集。下面所有代码我都建议在Jupyter Notebook里分步跑边跑边看中间结果理解会更清晰。3.2 构建馈线仿真模型并完成短路计算先定义线路参数和系统参数然后用叠加法做短路电流计算。这里我把系统等效成一个电压源串联阻抗DER在故障期间等效成一个受控电流源向故障点注入短路电流。简化处理是因为我们关注的是DER对定位误差的影响趋势而不是建立完整的逆变器电磁暂态模型。import numpy as np import pandas as pd # 基础参数10kV配电网 base_u 10.5 # 系统等效线电压 kV source_z 1.5 8.0j # 变电站等效阻抗 ohm # 线路单位参数 (ohm/km) line_z 0.31 0.42j # 馈线总长 line_len 12.0 # km # 系统等效相电压 u_phase base_u / np.sqrt(3) * 1.05 # 故障点位置距变电站距离 fault_km 4.0 # 故障电阻 R_fault 3.0 # 分布式电源参数容量2MW接入位置离变电站7km der_capacity_mw 2.0 der_pos_km 7.0 # 计算DER额定电流近似值按并网点电压约为额定值估算 der_i_norm der_capacity_mw / (np.sqrt(3) * base_u / 1000) # kA print(fDER额定电流约 {der_i_norm:.2f} kA接入位置 {der_pos_km} km)这一步输出的DER额定电流是后续配置故障期间注入电流的参考基准。要注意的是实际逆变器在故障时的输出电流要受控制策略约束通常限制在1.2~1.5倍额定电流以内并不是想象中按短路容量无限放大。我在仿真里一般设定DER故障电流倍数在1.2左右更贴近工程实际。3.3 实现阻抗测距算法对比有无DER场景现在直接计算两种场景无DER以及DER以不同电流倍数注入时的定位结果。def impedance_distance(u_meas, i_meas, line_z): 经典阻抗测距利用测量阻抗的虚部估算距离 u_meas: 保护安装处测量相电压 (kV) i_meas: 保护安装处测量电流 (kA) line_z: 线路单位阻抗 (ohm/km) z_meas u_meas / i_meas # 取虚部估算电抗距离 d_est np.imag(z_meas) / np.imag(line_z) return d_est # 场景一无DER传统辐射网 z_total_1 source_z line_z * fault_km i_fault_1 u_phase / (z_total_1 R_fault) u_meas_1 u_phase - i_fault_1 * (source_z line_z * fault_km) # 注意这里计算的是变电站母线处电压减去系统阻抗压降后即为母线电压 u_bus_1 u_phase - i_fault_1 * source_z d_est_1 impedance_distance(u_bus_1, i_fault_1, line_z) print(f无DER场景实际故障距离 {fault_km} km定位结果 {d_est_1:.2f} km误差 {abs(d_est_1-fault_km)*1000:.0f} m)这里有个容易混淆的点我提一下用阻抗法时测量电压应该是保护安装处也就是变电站出线断路器位置的电压而不是系统等效电动势。所以我先用线电压减去系统阻抗压降得出母线电压再拿母线电压和线路电流去算测量阻抗。这一步如果搞错后面全盘皆输。再看接了DER的场景。DER在故障点上游或下游对定位结果的影响是不同的。我把它分成两种情况来模拟。# 场景二DER在故障点下游例如故障在4kmDER在7km # DER向故障点注入电流相当于故障点额外获得一份注入 der_i_Times 1.2 # 故障期间DER输出电流倍数 i_der_inject der_i_norm * der_i_Times # 简化DER注入电流幅值 angle_der 0.0 # 假设DER注入电流与系统电流同相极端但便于观测机理 # DER支路对故障点电流的贡献经过4km到7km之间3km线路阻抗 z_der_to_fault line_z * (der_pos_km - fault_km) i_der_contribution i_der_inject * np.exp(1j * angle_der) # 故障点总电流 系统侧电流 DER注入电流 # 而系统侧测量电流 i_meas_2 未知需联立求解节点电压 # 建立方程: u_bus u_phase - i_meas_2 * source_z # 故障点电压 u_f u_bus - i_meas_2 * line_z * fault_km # 同时 u_f (i_meas_2 i_der_contribution) * R_fault # 联立得: u_bus i_meas_2 * line_z * fault_km (i_meas_2 i_der_contribution) * R_fault # 且 u_bus u_phase - i_meas_2 * source_z # 所以 i_meas_2 (u_phase - i_der_contribution * R_fault) / (source_z line_z*fault_km R_fault) i_meas_2 (u_phase - i_der_contribution * R_fault) / (source_z line_z * fault_km R_fault) u_bus_2 u_phase - i_meas_2 * source_z d_est_2 impedance_distance(u_bus_2, i_meas_2, line_z) print(fDER在下游7km定位结果 {d_est_2:.2f} km误差 {abs(d_est_2-fault_km)*1000:.0f} m) # 场景三DER在故障点上游也就是在变电站和故障点之间 der_pos_up 2.0 # DER接入点在2km处故障在4km处 # 电流计算会更复杂这里使用叠加法简化为系统电流与DER电流在故障点汇合 # 用同样思路但DER与故障点之间的阻抗方向相反 z_der_to_fault_up line_z * (fault_km - der_pos_up) # 实际上DER在上游时系统侧测量电流 I_meas 本身会包含DER注入电流 # 简化处理假设DER注入使系统侧电流减小方向相反 i_der_up_contrib -i_der_inject * np.exp(1j * angle_der) # 负号表示它与系统电流方向相反 i_meas_3 (u_phase - i_der_up_contrib * R_fault) / (source_z line_z * fault_km R_fault) u_bus_3 u_phase - i_meas_3 * source_z d_est_3 impedance_distance(u_bus_3, i_meas_3, line_z) print(fDER在上游2km定位结果 {d_est_3:.2f} km误差 {abs(d_est_3-fault_km)*1000:.0f} m)这段代码看起来机械但其实是把这个问题的物理本质给表达出来了DER在故障点下游时相当于给故障点额外喂了一份电流系统侧只需要提供相对较小的电流DER在故障点上游时情况更微妙系统侧测量到的电流里混入了DER的分量方向关系会随DER出力和故障点位置变化。两种情况的定位误差方向也不同后面我会用批量仿真数据把这种差异展示得更清楚。3.4 批量场景扫描DER容量、位置与故障位置的全组合单点仿真只能说明个例要回答DER到底多大的影响必须做全组合扫描。我把DER容量从0逐渐加到5MW接入位置从馈线头扫到馈线尾故障点则选取线路前、中、后三个典型位置。这样跑出来的是一个三维误差曲面能清晰看出DER对定位影响的规律。results [] fault_points [2.0, 6.0, 10.0] # 三个典型故障位置 der_positions np.arange(1.0, 12.0, 1.0) # 接入位置从1km到11km der_capacities [0.5, 1.0, 2.0, 3.0, 5.0] # MW for fp in fault_points: for dp in der_positions: for dc in der_capacities: # 如果DER和故障点重合跳过 if abs(dp - fp) 0.1: continue # DER额定电流 i_der dc / (np.sqrt(3) * base_u / 1000) i_der_inj i_der * 1.2 if dp fp: # DER在故障点下游同向注入电流 i_contrib i_der_inj else: # DER在故障点上游假设其注入电流在测量点造成相反分量 i_contrib -i_der_inj i_meas (u_phase - i_contrib * R_fault) / (source_z line_z * fp R_fault) u_bus u_phase - i_meas * source_z d_est impedance_distance(u_bus, i_meas, line_z) err abs(d_est - fp) results.append({ fault_km: fp, der_pos: round(dp, 1), der_cap: dc, est_km: round(d_est, 3), err_m: round(err * 1000, 1) }) df_result pd.DataFrame(results) df_result.to_csv(der_fault_location_results.csv, indexFalse) print(批量计算完成样本数, len(df_result))这段跑完之后我习惯先做一次宏观统计看看误差的分布区间。print(定位误差分布所有场景) print(df_result[err_m].describe()) print(\n最差的10个场景) print(df_result.nlargest(10, err_m))如果误差在几公里级别说明DER对阻抗法的影响在某些极端配置下是灾难性的。实际项目里我的经验是DER容量在配变总容量5%以下时影响基本可忽略超过15%之后就必须认真对待定位算法补偿的问题了。4. 结果梳理影响不是线性的位置比容量更关键4.1 无DER基线误差来源主要是故障电阻先看基线情况。在没有DER的场景里我跑了不同故障电阻下的定位结果发现随着接地电阻从0增加到10欧姆定位误差从几十米增加到数百米。原因很直接阻抗法把故障电阻当成纯电阻引入测量阻抗计算方法只取电抗分量但故障电阻的存在本身会拉偏测量电压和电流的相位关系导致估算距离偏大。这一部分误差是传统方法的老毛病大家心里都有数工程中通常通过自适应整定或利用故障分量来缓解。顺便说一句我在另一篇文章里详细讲过故障电阻补偿的几种思路这里不展开。核心结论只有一个做DER影响分析之前必须先确保基线算法的误差在可接受范围否则后面估算的DER导致偏差就会混入算法自身误差数据就不干净了。4.2 DER下游与上游误差方向完全不同批量计算的结果显示出一个非常直观的规律DER接入位置故障点位置定位误差主要方向典型误差量级故障点下游线路中前段定位距离偏近数百米到2公里故障点上游线路中后段定位距离偏远数百米到1.5公里靠近馈线末端故障点更靠近变电站复杂误差较小数百米为什么下游时定位偏近因为在无DER模型里算法认为测量电流就是全部故障电流而实际上有DER在故障点下游额外注入系统侧电流比预期小。但电压降落又是按系统电流乘以故障段阻抗来的所以从测量电压和电流构造出来的测量阻抗偏小折算出来的距离也就偏短。下游DER容量越大这个电流偷让效应越明显。上游时则相反。DER接入在变电站和故障点之间它的注入电流在故障电流分配里占据了相当比例而系统侧测量电流里也包含了DER的间接作用相位关系被打乱。在我这个简化模型里表现为定位距离偏大。实际电网中要比这个复杂因为DER的控制策略会显著影响故障期间的输出特性尤其逆变型电源的负序、零序注入策略五花八门很难用一个固定的相位关系描述。这也是为什么很多研究都强调必须结合具体DER的变流器控制策略来分析。4.3 容量扫描结果存在一个临界渗透率我把DER容量和定位误差画成趋势分析发现了一个值得注意的现象当DER容量从0增加到2MW的过程中定位误差增长得很明显但继续增加到5MW时误差增长速度反而变缓了。这说明两者之间不是线性关系而是接近某种饱和趋势。这个现象用物理直觉也能解释。DER注入电流变大它对故障电流分布的影响当然更显著但当注入电流达到一定程度后它基本主导了故障点附近的电流分配系统侧电流已经被压制得很小测量电压和电流的性能变化趋于饱和误差也就慢慢逼近一个极限值。另外我还对比了DER在故障点同一侧和异侧的影响权重。比如故障点在6km处DER在7km下游和在5km上游的效果差异会达到两倍之多。实际做影响评估时不应该只按容量占比这一个维度来衡量DER的影响程度必须把DER与故障点的相对位置作为一个主要变量纳入分析。4.4 从误差分析反推改进方向有了批量误差数据之后我试着做了两件延伸的事。第一件是在阻抗测距公式里加入DER注入电流补偿项。既然误差来源是系统侧测量电流不等于故障电流那我在计算测量阻抗时引入一个系数k让Z_meas U_meas / (I_meas k * I_der)其中I_der通过DER的并网监测信息获知。这个方法在仿真中把平均定位误差从接近900米降到了200米以内说明只要DER的实时出力信息可获取经典阻抗法完全可以在补偿后继续使用。第二件是把DER容量、接入位置、故障点位置和测量到的电压电流特征一起送入一个简单的随机森林回归模型直接预测故障距离。数据集就是批量仿真生成的几千条样本。模型训练的定位误差均值压到了150米以内而且对DER容量和位置的敏感度大幅降低。这再次印证了前面说的数据驱动方法在处理模型失配问题上确实有天然优势。下面这段代码展示了补偿后阻抗法的效果对比def impedance_distance_compensated(u_meas, i_meas, line_z, i_der_comp, k_comp1.0): 带DER电流补偿的阻抗测距 i_total i_meas k_comp * i_der_comp z_meas u_meas / i_total d_est np.imag(z_meas) / np.imag(line_z) return d_est # 对比故障点6kmDER在7km容量2MW fp 6.0 dp 7.0 dc 2.0 i_der dc / (np.sqrt(3) * base_u / 1000) * 1.2 i_meas (u_phase - i_der * R_fault) / (source_z line_z * fp R_fault) u_bus u_phase - i_meas * source_z d_no_comp impedance_distance(u_bus, i_meas, line_z) d_comp impedance_distance_compensated(u_bus, i_meas, line_z, i_der) print(f未补偿定位距离: {d_no_comp:.2f} km误差 {abs(d_no_comp-fp)*1000:.0f} m) print(f补偿后定位距离: {d_comp:.2f} km误差 {abs(d_comp-fp)*1000:.0f} m)实际工程应用里要拿到I_der的实时值并不难现在的并网逆变器普遍具备通信接口电网调度系统能看到每个分布式电源的出力曲线。难点在于故障瞬间的DER输出电流并不等于故障前的出力电流它取决于变流器的故障穿越控制策略、不平衡电网下的负序指令等。所以精确补偿思路是好的但在没有建立逆变器详细模型之前建议保守处理把补偿系数k设置得小一点宁可欠补偿也不能过补偿。5. 实战心法做DER故障定位影响分析时的经验与避坑指南5.1 建模阶段的坑DER等效模型不能一概而论我在一开始处理DER时习惯性地把它当成一个恒压源或者恒流源后来发现这会导致结论偏差很大。不同分布式电源的故障特性差距非常明显DER类型故障期间特性对故障定位的主要影响同步机型分布式电源短路电流可达4-6倍额定电流显著抬高故障点周边电流水平逆变器型光伏/储能短路电流通常限制在1.2-1.5倍额定电流对电流幅值影响小但控制特性复杂双馈感应风电故障穿越期间电流由转子侧变流器控制负序电流特性特殊影响方向判据如果只笼统地把DER设定为一个固定倍率的电流源做出来的结论可能夸大或者低估它的影响。尤其是逆变器型电源不同厂家的故障穿越策略差异很大有的优先输出正序无功有的在负序电流上也投入分量这些直接决定了它在故障点注入电流的相位和幅值。做影响评估时我建议至少建两个模型一个按恒功率因数控制的电流源型DER一个按低压穿越策略订阅的无功优先型DER对比着看结论才立体。5.2 采样数据的坑故障时刻数据窗口要足够短在做阻抗测距时测量数据取的是故障后一个很短窗口内的稳态量。DER逆变器在故障后有一个暂态调节过程大概持续几十毫秒如果测量窗口跨过了这个调节期电流幅值相位还在变化得到的阻抗值就是晃的。我踩过的坑是最初用故障后100ms的采样窗口取有效值结果定位误差忽大忽小毫无规律。后来把窗口缩短到故障后第三个周波到第五个周波之间测量结果才稳定下来。这不是数据质量的问题而是DER控制动态在起作用。5.3 算法验证的坑不要只看平均误差很多人喜欢用一个平均误差指标来评估定位算法好坏比如平均定位误差从800米降到200米。但我要提醒一句平均误差好不代表可靠性高。我跑了很多分布式场景发现有些算法的定位结果呈现双峰分布大部分场景误差很小但特定DER接入位置和故障点组合下误差突然飙升。这时候平均值会被大多数好样本掩盖住。我建议看两个指标一是误差的P90分位数二是最大误差。一个算法如果P90误差能控制在300米以内最大误差不超过800米在工程上才勉强算靠谱。5.4 现场工程的经验动态感知DER信息才是出路纯靠本地算法去适应DER影响理论上可行但工程落地时会遇到一个现实问题DER的出力状态是随时间变化的白天光伏大发和夜间零出力时的故障定位效果完全不同。如果算法只按一种模式整定很难兼顾所有场景。我目前比较看好的思路是把定位算法和配电网的实时拓扑/出力感知系统联动起来。现在很多配电网已经装了配电终端、计量终端和并网逆变器通信设备调度主站完全有能力实时掌握每台DER的出力情况。故障发生时保护或终端把测量数据上送主站主站根据当时的DER运行方式动态选择对应的定位算法或者修正参数。这个思路在多个模拟项目中验证过效果比单纯地在本地装置里做自适应做得更彻底。当然这对通信和主站计算能力提出了更高要求但是配网自动化的整体走势本来就是往这个方向走。5.5 给新手的建议六个字先复现再创新如果你刚开始接触这个话题我的建议是不要一上来就尝试提出新算法。先把一个经典的辐射网故障定位案例复现出来搞清楚阻抗法的推导每一步怎么来的然后在馈线模型上加一个DER电流源观察定位误差从哪开始变差再考虑怎么补偿或改用其他算法。这个过程走通一遍你对DER影响配电网故障定位的感性认识就和别人不一样了。代码不用多复杂重要的是把物理过程映射到程序逻辑里的每一步都想通。我在文中给出的代码都是一个骨架级别的简化版本你完全可以直接跑起来看看结果然后再往里面加自己的理解。最后分享一个我自己的操作习惯每次跑完一组仿真我都会把误差最大的几个场景单独摘出来去反推它们的共同特征。有一次我发现误差最大的场景几乎都集中在DER刚好在故障点邻近区域时后来才意识到这是因为测量阻抗在靠近有限电源注入点时会出现畸变。这个发现不是靠理论推导出来的而是全靠看数据才悟出来的。做这类影响分析数据和物理直觉缺一不可光靠套公式很难做出真正有价值的东西。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →