ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

pandapower 电网分析实战:从建模到短路计算的 5 个高频问题

pandapower 电网分析实战:从建模到短路计算的 5 个高频问题 pandapower 电网分析实战从建模到短路计算的 5 个高频问题【免费下载链接】pandapowerConvenient Power System Modelling and Analysis based on PYPOWER and pandas项目地址: https://gitcode.com/gh_mirrors/pa/pandapower深夜的办公室你盯着第 5 版 Excel 潮流表第 3 次手动核对线路两端功率是否平衡旁边的商业软件虽然能算但导出的结果永远是那几张固定模板想加一列负载率超过 80% 的线路得先学会它的报表脚本。这不是你的问题而是工具的问题——直到你遇到 pandapower。这个基于 PYPOWER 和 pandas 的开源电力系统分析工具把电网建模变成写几行 Python 代码把结果分析变成 DataFrame 查询专治想改一处参数就要重来一遍的重复劳动。本文不按官方文档的顺序复述功能而是用 5 个你大概率踩过的真实问题带你走完一次完整的电网分析流程。问题一不想手动画图怎么用代码搭出第一个电网模型电网建模的核心动作只有四个建母线、接电源、连线路或变压器、挂负荷。pandapower 把这四步都做成了函数返回的每个元件都带一个自增编号后续引用全靠它。下面这段代码创建一个 110kV 电源经变压器降压到 10kV 的简单配电系统import pandapower as pp # 1. 创建空电网对象name 只是给这个网络起个标签 net pp.create_empty_network(name我的第一个电网) # 2. 建母线110kV 进线侧和 10kV 出线侧 bus_hv pp.create_bus(net, vn_kv110, name110kV母线) bus_lv pp.create_bus(net, vn_kv10, name10kV母线) # 3. 接外部电网slack 节点电压设为 1.02 p.u.作为潮流平衡节点 pp.create_ext_grid(net, busbus_hv, vm_pu1.02, name上级电网) # 4. 加变压器从标准型号库直接选 25 MVA 110/10 kV pp.create_transformer(net, hv_busbus_hv, lv_busbus_lv, std_type25 MVA 110/10 kV, name主变) # 5. 挂负荷p_mw 为有功q_mvar 为无功正数表示消耗 pp.create_load(net, busbus_lv, p_mw20, q_mvar10, name工业负荷)运行后net内部的bus、trafo、load等表会自动各多出一行你可以在 Jupyter 里直接输入net.load查看负荷表看到 p_mw20、q_mvar10 的记录就是建模成功的标志。模型的本质是一组 pandas 表格这意味着改参数和增删元件都像操作 DataFrame 一样直观。想临时把负荷翻倍net.load[p_mw] * 2一行搞定想停掉某台变压器把in_service置为 False 即可。传统软件里新建一个运行方式的流程在这里只是改几个单元格的事。常见问题Q: create_bus 返回的数字是什么是自动编号吗A: 是母线 ID从 0 开始自动递增。手动指定也可以用index参数强制编号但新手建议交给系统自动分配避免编号冲突。Q: 变压器和线路的 std_type 参数去哪找A: 输入pp.available_std_types()会列出全部内置标准型号覆盖常用电压等级。找不到合适的就自己定义pp.create_std_type(net, {sn_mva: 40, vk_percent: 12, ...}, name自定义主变)。问题二潮流算完了结果到底怎么看pp.runpp(net)一行就能完成交流潮流计算但新手常困惑结果存在哪。答案很简单全部写在net.res_*开头的表里——res_bus存母线电压、res_line存线路潮流、res_trafo存变压器负载率。下面这段代码执行潮流计算并输出最关心的母线电压结果# 执行交流潮流计算默认使用牛顿-拉夫逊算法 pp.runpp(net) # 查看母线电压vm_pu 是标幺值电压va_degree 是相角度 print(net.res_bus[[vm_pu, va_degree]])预期输出类似下面这样10kV 母线带负荷后电压略低于 1.0 p.u.这正是潮流计算的典型结果——电源侧电压被拉低幅值变化一目了然。vm_pu va_degree bus 0 1.020000 0.000000 1 0.983456 -2.134521因为结果就是 pandas DataFrame所以分析手段完全放开net.res_line[net.res_line[loading_percent] 80]筛选重载线路、net.res_bus[vm_pu].min()找全网最低电压、甚至直接接 matplotlib 画曲线都不需要额外的导出步骤。pandapower 内部把网络转成 PYPOWER 格式求解再把结果映射回元件表整个过程对用户透明常见问题Q: res_bus 里的 vm_pu 是什么单位为什么和电网电压对不上A: 是标幺值p.u.即实际电压除以母线额定电压vn_kv。10kV 母线显示 0.983 p.u.实际电压约 9.83kV。要换算实际电压用net.res_bus.vm_pu * net.bus.vn_kv即可。Q: 算完一次后改了负荷要不要重新 runppA: 要。net.res_*只是上一次计算结果的快照任何参数修改后都必须重新调用pp.runpp(net)才会刷新。pandapower 支持initresults参数用上次结果作为初值时间序列迭代时能显著加速收敛。问题三潮流不收敛是电网错了还是我错了这是新手问得最多的问题。runpp报 Newton-Raphson failed 时90% 的原因不在求解器而在模型本身。按下面这个顺序排查比盲目调参数有效得多检查孤岛pp.runpp(net, check_connectivityTrue)默认开启pandapower 会直接告诉你哪些母线没连上电源检查负荷量级20MVA 的变压器挂 30MW 负荷不收敛是物理上就该发生的事检查电压初值initdc先跑一次直流潮流作为初值能救回不少只差一点就收敛的情况换求解算法辐射状配电网用前推回代法algorithmbfsw往往比牛顿法更稳。# 辐射状配电网首选 bfsw提高迭代上限防止误报不收敛 try: pp.runpp(net, algorithmbfsw, max_iteration50) print(潮流收敛最低电压, net.res_bus.vm_pu.min()) except pp.LoadflowNotConverged: print(仍未收敛请检查网络拓扑和负荷量级)预期输出是潮流收敛最低电压0.xxx如果打印了仍未收敛说明问题大概率出在建模层面回到上面四条逐一排查。pandapower 源码里把每次迭代的雅可比矩阵、失配量都暴露在net._ppc中实在查不出来时可以import pdb; pdb.pm()进去看失配最大的节点。常见问题Q: 报错说 No convergence in loadflow但我确认网络没问题A: 试试algorithmiwamoto_nr它带阻尼因子对重载网络的鲁棒性比普通牛顿法好另外确认变压器分接头档位设置是否合理极端档位会让电压初值严重偏离。Q: runpp 有哪些常用求解算法分别适合什么场景A:nr牛顿法默认适合输电网、bfsw前推回代适合辐射状配电网、gs高斯-赛德尔收敛慢但鲁棒、helm全纯嵌入法不依赖初值适合难收敛网络。在pandapower/run.py的 runpp 文档字符串里能查到完整列表和各自默认迭代上限。问题四保护整定需要的短路电流怎么快速拿到短路计算是保护定值校验的基础。pandapower 的calc_sc实现了 IEC 60909 的等效电压源法一行代码就能算出各母线的三相短路电流。计算前先在net上把故障点设好——短路电流计算需要一个运行网络所以先跑一次潮流再算短路# 先算一次潮流为短路计算提供故障前运行状态 pp.runpp(net) # 对 10kV 母线做三相短路计算IEC 60909 最大短路电流工况 pp.calc_sc(net, fault3ph, casemax) # 查看短路结果ikss_ka 是初始对称短路电流kAip_ka 是峰值短路电流 print(net.res_bus_sc[[ikss_ka, ip_ka, skss_mva]])预期输出会给出 10kV 母线处的短路电流约几 kA 量级、短路容量几十 MVA 的结果这些数字可以直接用于校验断路器的开断能力和保护的灵敏度配合。calc_sc还支持fault2ph两相短路和fault1ph单相接地配合casemin就能同时覆盖最大/最小短路电流两种校核工况完整实现在pandapower/shortcircuit/calc_sc.py中。常见问题Q: 短路计算前一定要先跑 runpp 吗A: 建议跑。calc_sc默认用额定电压作为等效电压源use_pre_fault_voltageFalse此时不跑潮流也能算但如果要按故障前实际电压计算use_pre_fault_voltageTrue就必须先 runpp。Q: 结果表里的 ikss_ka 是什么电流和 ip_ka 什么关系A: ikss_ka 是初始对称短路电流周期分量ip_ka 是峰值短路电流含非周期分量用于校验动稳定。两者通过冲击系数 kappa 关联pandapower 支持kappa_methodC标准法和B计算法两种取值。问题五网络太大算不动怎么既保精度又降规模含几千个节点的配电网模型跑一次潮流可能要几十秒做 N-1 扫描或时间序列时就难以忍受。pandapower 的思路是网络等值把不关心的内部区域折叠成几个等值电源和阻抗只保留你关注的关键母线计算量立刻降一个数量级。先用内置的 CIGRE 中压测试网络演示这是一个含 14 条母线、带变压器和负荷的标准算例选出要保留的外部母线然后做 Ward 等值import pandapower as pp from pandapower.grid_equivalents import get_equivalent # 加载 CIGRE 中压配电网标准测试网络 net pp.networks.create_cigre_network_mv() # 保留关键母线比如变电站出口和主要馈线节点其余区域将被折叠 external_buses [0, 1, 12] # 执行 Ward 等值得到简化网络 eq_net get_equivalent(net, external_busesexternal_buses, methodward) # 分别对原始网络和等值网络做潮流对比保留母线的结果 pp.runpp(net) pp.runpp(eq_net) print(原始网络母线数:, len(net.bus), | 等值网络母线数:, len(eq_net.bus))预期输出是等值网络的母线数明显少于原始网络从十几条降到个位数而保留母线的电压、功率与原始结果高度一致。等值方法不止 Ward 一种pandapower/grid_equivalents/目录下还有 REI 等值、toolbox.py里的自动选点工具选点策略对等值精度影响很大值得花时间研究。常见问题Q: 等值后的网络还能继续做短路计算吗A: 可以但要注意等值网络主要保精度于潮流工况。做短路校核时建议保留故障点附近的母线并复核等值前后的短路电流差异必要时换用对短路阻抗保留更友好的等值方法。Q: get_equivalent 的 external_buses 怎么选A: 选你真正关心结果的母线——通常是上级电网接口、重要负荷节点、新能源并网点。选得越少网络越小但边界处的精度损失越大建议先用完整网络算一遍作基准再对比等值结果调整选点。下一步从抄代码到改自己的电网现在你已经用 5 个问题串起了 pandapower 的核心链路建模 → 潮流 → 收敛排查 → 短路计算 → 网络等值。建议的练手路径是先跑通本文的两节点示例然后把它改成你们公司实际的电压等级和负荷数据接着去doc/目录看各元件的参数表doc/elements/line.rst、doc/elements/trafo.rst等再对照tutorials/下的 Notebook从minimal_example.ipynb开始逐个击破。遇到具体 API 拿不准时直接读pandapower/create/下的源码 docstring那是最新最准的文档。把这套流程跑熟之后把单次计算扩展成批量场景、接上时间序列数据就是你迈向自动化电网分析的第一步。【免费下载链接】pandapowerConvenient Power System Modelling and Analysis based on PYPOWER and pandas项目地址: https://gitcode.com/gh_mirrors/pa/pandapower创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表