ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

电力系统基本知识与电网调控:从潮流计算到SCADA实战解析

电力系统基本知识与电网调控:从潮流计算到SCADA实战解析 简介这份PPT面向电力系统初学者、电气工程专业学生及电网调度运维人员系统梳理电力系统基本概念与电网调控核心知识帮助读者建立从发电、变电、输电、配电到用电全环节的整体认知。资源包内含1个pptx文件压缩包约527KB以幻灯片形式组织内容便于课堂讲解、自学复习与培训参考。内容涵盖电力网络与动力系统的构成、总装机容量与年发电量等规模指标、额定频率50Hz等基本参数并深入讲解电能质量标准包括频率偏差、电压偏差、三相不平衡、谐波、电压波动与闪变的具体限值要求。同时展开负荷特性分析区分电压特性、频率特性与时间特性介绍恒定阻抗、恒定功率、恒定电流及感应电机动态模型等模拟方法并延伸至负荷曲线中基荷、腰荷、峰荷的划分与年、月、日负荷调整策略。此外还涉及电网调控中的测量、调节、控制、保护、通信与调度等环节结合楚雄供电局电力调度中心实例说明供需平衡与稳定供应的保障思路。目前已有58人学习适合需要快速掌握电力系统基础与调控要点的读者参考。1. 从一份 PPT 说起电力系统基本知识与电网调控到底在讲什么很多人第一次接触「电力系统基本知识与电网调控」是在新员工培训的会议室里投影上放着一份几十页的 PPT讲师从发电、输电、变电一路讲到调度自动化。台下的人一边拍照一边犯困觉得这些东西离自己手上的活儿很远。但真正到了现场你会发现这份 PPT 里的每一个概念都在决定你今天的操作能不能做、参数能不能改、告警要不要立刻处理。它解决的不是「考试怎么过」而是让你在面对一条 110kV 线路跳闸、一台主变过载、一个断面越限时知道该看哪些量、该找谁、该动什么。这篇文章适合三类人刚入职的变电/调度/自动化专业新人想系统补齐电力系统框架从其他行业转进来的工程师需要快速建立「源网荷」全局观以及已经干了几年但只熟悉自己一亩三分地的老手想弄明白调控中心到底在盯什么。我会把这份 PPT 背后的知识体系拆成能落地、能查、能复现的模块而不是复述幻灯片。2. 电力系统基本知识从「源网荷」到潮流计算的最小认知框架2.1 发电、输电、变电、配电、用电五环节到底怎么串起来电力系统的经典划分是五个环节但很多人背得下来却串不起来。我一般用一条功率路径来记发电机发出电能升压变压器把电压抬到 220kV 或 500kV通过高压输电线路送到负荷中心降压变压器逐级降到 110kV、10kV最后到用户侧。这条路径上任何一个环节的阻抗、容量、保护配置都会影响最终能不能送出去。关键参数有三个电压等级、输送容量、短路容量。电压等级决定绝缘水平和线路走廊宽度输送容量决定导线截面和变压器容量短路容量决定断路器开断能力和保护定值。这三者不是独立的比如你把一条 10kV 线路的导线从 120 平方换成 240 平方输送容量上去了但短路容量也会变保护定值必须重新核算。常见做法是先用标幺值系统把各电压等级归算到同一基准再算潮流和短路。提示标幺值基准容量一般取 100MVA 或 1000MVA基准电压取各电压等级的平均额定电压比如 10kV 取 10.5kV110kV 取 115kV。这个细节在 PPT 里通常一笔带过但算错基准整个结果全偏。2.2 潮流计算电网调控的「黑匣子」到底在算什么潮流计算是电网调控最核心的计算工具。它求解的是节点功率平衡方程每个节点的注入功率等于流出功率包括线路损耗和变压器损耗。输入是节点注入功率和网络参数输出是各节点电压幅值、相角和各支路功率。调控中心看到的断面潮流、电压越限告警、N-1 扫描结果底层都是潮流计算。我一般用牛顿-拉夫逊法做离线分析用 PQ 分解法做在线快速计算。牛顿法收敛快但每次迭代要重新形成雅可比矩阵PQ 分解法把有功和无功解耦适合实时性要求高的场景。参数设置上收敛精度通常取 1e-5 到 1e-8最大迭代次数 20 到 50。如果潮流不收敛先查孤岛、再查 PV 节点无功越限、最后查变压器变比和线路参数。# 用 pandapower 做一个 3 节点潮流计算的最小示例 import pandapower as pp net pp.create_empty_network() # 创建 3 个母线基准电压分别为 110kV、10kV、10kV bus1 pp.create_bus(net, vn_kv110, namebus1) bus2 pp.create_bus(net, vn_kv10, namebus2) bus3 pp.create_bus(net, vn_kv10, namebus3) # 创建外部电网等值电源接在 bus1 pp.create_ext_grid(net, bus1, vm_pu1.0, va_degree0) # 创建变压器110kV 到 10kV pp.create_transformer(net, bus1, bus2, std_type25 MVA 110/10 kV) # 创建线路bus2 到 bus3 pp.create_line(net, bus2, bus3, length_km5, std_typeNA2XS2Y 1x185 RM/25 12/20 kV) # 创建负荷接在 bus3 pp.create_load(net, bus3, p_mw5.0, q_mvar2.0) # 运行潮流计算 pp.runpp(net) # 输出结果 print(net.res_bus[[vm_pu, va_degree]]) print(net.res_line[[p_from_mw, q_from_mvar]])这段代码的逻辑是先建网络拓扑再给边界条件最后求解。create_ext_grid是平衡节点负责承担全网功率不平衡量create_transformer的std_type决定了变比和阻抗create_load的p_mw和q_mvar是负荷注入。运行后res_bus给出电压幅值和相角res_line给出线路功率。如果vm_pu低于 0.95 或高于 1.05就是电压越限调控需要调整变压器分接头或投切无功补偿。2.3 标幺值与短路计算保护定值的起点短路计算是保护定值整定的基础。最常见的三相短路电流周期分量有效值可以用标幺值法算先取基准容量和基准电压把各元件阻抗归算到标幺值再根据短路点位置算总阻抗最后求短路电流。参数上发电机次暂态电抗通常取 0.1 到 0.2变压器短路阻抗取 0.05 到 0.15线路单位长度阻抗查手册。我见过太多人把短路计算当成「一次算完管十年」的事。实际上电网结构一变比如新增一条线路或更换一台主变短路容量就变了保护定值必须复核。常见做法是每年至少做一次全网短路计算或者在每次重大方式变更后做局部校核。如果断路器开断能力不够要么换断路器要么加装限流电抗器要么调整运行方式。3. 电网调控在做什么从调度指令到自动化系统的落地链路3.1 调度、监控、运维三拨人怎么分工电网调控不是一个人或一个岗位的事而是一条链路。调度员负责方式安排、指令下达、事故处理监控员负责实时告警确认、远方操作、信息汇报运维人员负责现场检查、就地操作、缺陷处理。三拨人之间的信息传递靠调度电话、调度自动化系统和操作票系统。我一般把这条链路画成三层决策层调度、执行层监控运维、感知层SCADA/PMU/保护装置。决策层看的是断面和趋势执行层看的是具体设备和信号感知层看的是原始量测。任何一层出问题整条链路都会断。比如 SCADA 遥测不刷新监控员就看不到实际潮流调度员下的指令就可能过载。3.2 SCADA、EMS、DMS、PMU 各自管什么这四个系统经常被混在一起说但职责完全不同。SCADA 是数据采集与监控负责遥测、遥信、遥控、遥调EMS 是能量管理系统跑在 SCADA 之上做潮流计算、状态估计、调度员潮流、自动发电控制DMS 是配电管理系统管 10kV 及以下配网PMU 是同步相量测量装置采样率远高于 SCADA用于动态监测和广域测量。参数上SCADA 遥测刷新周期通常 3 到 5 秒遥信变位响应小于 1 秒PMU 采样率 30 到 120 帧每秒时间同步精度优于 1 微秒。如果你要做振荡监测或故障录波分析必须用 PMU 数据SCADA 的刷新率根本不够。常见做法是 EMS 用 SCADA 数据做稳态分析PMU 数据单独组网做动态分析。系统主要功能典型刷新周期数据精度SCADA四遥、告警3-5 秒0.2 级EMS潮流、状态估计、AGC分钟级0.2 级DMS配网监控、故障定位秒级0.5 级PMU动态监测、广域测量30-120 帧/秒0.1 级3.3 从告警到操作一条 10kV 线路跳闸的完整处置流程假设一条 10kV 线路过流保护动作跳闸监控员看到 SOE 告警调度员收到汇报。处置流程分五步第一步确认跳闸线路名称、保护动作类型、重合闸是否动作第二步查看该线路所带负荷和重要用户判断是否影响供电第三步通知运维人员现场检查同时尝试远方试送第四步如果试送不成功隔离故障段恢复非故障段供电第五步填写事故报告分析保护动作是否正确。这个流程里最容易翻车的是第三步。远方试送前必须确认线路无故障、无接地、无人在线路上工作。我见过一次因为没确认现场有人试送导致人员受伤。血泪经验是任何试送操作前必须电话确认现场负责人并记录在操作票上。# 模拟从 SCADA 历史库查询某条线路跳闸前后的遥测曲线 # 假设历史库是 MySQL表结构为 scada_analog(device_id, point_id, ts, value) mysql -h scada-db -u reader -p -e SELECT ts, value FROM scada_analog WHERE device_id LINE_10KV_001 AND point_id CURRENT_A AND ts BETWEEN 2024-01-01 10:00:00 AND 2024-01-01 10:05:00 ORDER BY ts; 这段 SQL 的逻辑是按设备 ID 和测点 ID 过滤取跳闸前后 5 分钟的电流曲线。device_id是线路唯一标识point_id是测点标识ts是时间戳。查出来的曲线如果电流先升高后突降说明是过流跳闸如果电流直接归零可能是开关偷跳。参数上时间范围一般取跳闸时刻前后各 2 到 5 分钟采样间隔看历史库配置通常 5 秒一个点。4. 避坑与排查电网调控里最容易翻车的 5 个地方4.1 遥信抖动导致误告警现象监控画面上某台开关位置信号频繁变位告警窗刷屏。原因辅助触点接触不良、信号回路受潮、或 RTU 去抖时间设置过短。解决先查现场辅助触点再查信号电缆绝缘最后在 RTU 或 SCADA 侧把去抖时间从 10ms 调到 100ms 以上。注意不要为了消抖把时间调太长否则真实变位会被延迟。4.2 潮流计算不收敛就改参数现象离线潮流计算不收敛有人直接把收敛精度从 1e-8 改成 1e-4结果出来了但电压分布明显不对。原因不收敛通常是拓扑错误、参数错误或无功越限改精度只是掩盖问题。解决先查孤岛节点再查 PV 节点无功是否越限最后查变压器变比和线路参数。常见做法是用平启动改平启动或者先做直流潮流估算初值。4.3 保护定值单与现场实际不符现象保护动作后核对定值发现现场定值与定值单不一致。原因定值单下发后现场未执行、执行后未回传、或回传后未归档。解决建立定值单闭环流程每次变更必须现场拍照回传调度侧核对后归档。我一般要求定值变更后 24 小时内完成回传核对超期自动告警。4.4 遥控操作没有返校就直接执行现象监控员点遥控执行开关动了但画面上没有返校信息。原因遥控返校超时或通道中断但执行命令已经下发。解决遥控操作必须严格按「选择-返校-执行」三步走返校不成功绝不执行。参数上遥控超时一般设 10 到 30 秒超时后自动撤销选择。常见做法是在自动化系统里加逻辑闭锁返校失败直接禁止执行。4.5 事故处理时信息过载现象大面积停电时告警窗瞬间刷出几百条信息监控员根本看不过来。原因SCADA 告警没有分级、没有抑制、没有归并。解决提前配置告警分级把事故总信号、保护动作、开关变位设为一级把装置异常、通信中断设为二级把重复告警做归并。我一般建议把告警窗分成「事故区」和「异常区」事故区只显示一级信号异常区显示其余信号。5. 进阶用法用 Python 做电网调控的离线分析5.1 用 pandapower 做 N-1 扫描N-1 扫描是调控最常用的分析手段逐个断开元件看剩余电网是否过载或电压越限。用 pandapower 可以批量做。import pandapower as pp import pandapower.networks as pn net pn.case9() # 用 9 节点标准算例 # 先跑基准潮流 pp.runpp(net) base_loading net.res_line.loading_percent.copy() # 逐个断开线路做 N-1 for line_idx in net.line.index: net.line.at[line_idx, in_service] False try: pp.runpp(net) max_loading net.res_line.loading_percent.max() if max_loading 100: print(f断开线路 {line_idx} 后过载最大负载率 {max_loading:.1f}%) except pp.LoadflowNotConverged: print(f断开线路 {line_idx} 后潮流不收敛可能孤岛) finally: net.line.at[line_idx, in_service] True这段代码的逻辑是先跑基准潮流记录初始负载率再逐个断开线路重新计算如果最大负载率超过 100% 就告警如果不收敛就提示孤岛。参数上loading_percent是线路负载率超过 100% 表示过载LoadflowNotConverged是潮流不收敛异常通常意味着孤岛或无功不足。常见做法是把 N-1 结果按严重程度排序优先处理过载最严重的。5.2 用历史数据做负荷预测的简单基线负荷预测是调控做方式安排的前提。最简单的基线是「昨日同时刻负荷 天气修正」。import pandas as pd # 假设 df 有 ts 和 load_mw 两列按 15 分钟采样 df pd.read_csv(load_history.csv, parse_dates[ts]) df df.set_index(ts) # 取昨日同时刻负荷 yesterday df.shift(96) # 96 个点 24 小时 × 4 df[base] yesterday[load_mw] # 简单天气修正温度每偏离 25 度 1 度负荷修正 1.5% df[temp] pd.read_csv(temp_history.csv, parse_dates[ts]).set_index(ts)[temp_c] df[corrected] df[base] * (1 0.015 * (df[temp] - 25)) # 计算预测误差 df[error] (df[corrected] - df[load_mw]) / df[load_mw] print(df[error].describe())这段代码的逻辑是用昨日同时刻负荷作为基线再用温度偏差做线性修正。shift(96)是取 24 小时前的值0.015是温度灵敏度系数describe()给出误差分布。参数上温度基准取 25 度灵敏度系数根据当地负荷特性调整一般 1% 到 2% 每度。如果误差均值接近 0 且标准差小于 3%这个基线就够用了。5.3 一个我坚持了多年的习惯每次做方式变更或保护定值调整前我都会问自己三个问题这个操作会不会导致断面越限会不会导致短路容量超标会不会导致保护失配这三个问题对应潮流、短路、保护三个计算缺一个都不行。我见过太多人只算潮流不算短路结果一合环就跳闸。希望帮到你。本文还有配套的精品资源点击获取
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进