1. 为什么要把PMU测量接进状态估计
1.1 先搞清楚两个东西分别在干什么
状态估计这个模块,是调度自动化系统(EMS)里最基础也是最重要的一个环节。它的任务很直观:调度端拿到SCADA系统上传的遥测遥信之后,利用全网冗余的功率量测、电压幅值量测,按照电网的拓扑结构和元件参数,估计出每一个节点的电压幅值和相角,再基于这组状态量推导出全网的潮流分布。为什么要费劲去“估计”而不是直接用测量值?因为量测是有误差的,而且有坏数据,状态估计的价值就在于利用冗余信息把随机误差平滑掉,把坏数据挑出来,给调度员一个自洽、完整、可信的电网断面。
PMU(Phasor Measurement Unit,同步相量测量单元)做的事情和传统SCADA量测有本质区别。传统RTU采集的是幅值加有功无功,一般2到5秒才刷新一轮,而且各个RTU采集到的数据在时间上并不严格对齐,所以在SCADA体系里,所有量测被打包成一个断面时,这个断面本身就是“凑”出来的。PMU靠卫星授时系统统一打时标,同时测量电压、电流的相量,连相角都直接给出,一秒钟能输出10到100个数据帧。也就是说,传统状态估计要靠功率量测反推相角,而PMU直接把这个最难估计的量变成了可测观测量,这个性质对状态估计来说几乎是“降维打击”。
1.2 现有状态估计的瓶颈,正好是PMU的强项
我做了几年调度自动化相关的项目,最大的感受是:传统状态估计的痛点,每一项都精准落在PMU的能力范围内。
第一是刷新速度。SCADA的数据周期摆在那里,不管状态估计算法做得多好,喂进去的都是几秒甚至十几秒前的数据。负荷波动快、新能源出力跳跃的时候,调度员看到的“当前断面”从物理意义上就已经过时了。PMU的毫秒级上报率能把这个滞后压缩到一个非常小的范围内。
第二是断面同步性。SCADA各个RTU的上报是依次轮询的,严格说每个值都不是同一个时刻的量测,状态估计器只能把这些“不同时刻”的值硬凑成一个断面。而PMU每个量测都带统一的时标,同一时刻的所有相量可以精确对齐,断面天然自洽。
第三是相角估计精度。传统状态估计的相角是从功率量测间接推算的,量测误差、线路参数误差都会叠加到相角上,计算出的相角误差通常有零点几度,这对潮流分析够用,但对一些对相角敏感的在线分析场景就不够了。PMU直接测相角,精度可以做到0.01度级别,接入状态估计后能明显压低全网相角的估计误差。
这就是这个方向的核心驱动力:不是简单“多加几个量测”,而是把状态估计的整个信息基础,从“秒级、间接、拼凑断面”向“毫秒级、直接、同步断面”推进。
1.3 这个方向适合谁去探索
说实话,把PMU测量接进状态估计这件事,在电力系统领域已经不算全新方向,WAMS系统大规模建设以来,很多网省调都在做混合量测状态估计的尝试。但它依然值得系统探索,尤其适合三类人:
一类是做EMS/WAMS系统开发或集成的工程师。现在很多地方调度端的WAMS平台和EMS平台是分开的,PMU数据流进了WAMS的数据库,却没有和传统状态估计打通。这类工程师最清楚两套系统之间的数据鸿沟,由他们来做这个融合落地最容易出成果。
另一类是电力系统自动化、电网运行方向的研究生,很多论文题目就是从PMU配置、混合量测估计这类方向延伸出来的。把原理吃透、把代码跑通,后面无论是做动态状态估计还是做扰动辨识,都能站在一个更扎实的起点上。
还有一类是调度运行人员。他们可能不写代码,但需要理解状态估计结果的可信度。PMU接入之后,状态估计的残差、检测指标怎么解读,这直接影响调度员对某个量测报警的判断。
2. 状态估计的数学模型与PMU接入方式
2.1 PMU测量到底是一组什么样的数据
在做深度融合之前,得先清楚PMU输出数据的格式和特点。工程上PMU通常按照IEEE C37.118系列标准传输数据,一个数据帧里包含的关键量主要有:电压相量(幅值和相角)、电流相量(幅值和相角)、频率、频率变化率(ROCOF),以及一个高精度的UTC时标。频率和相角是关联的,本质上说,PMU测出来的是交流电气量相对于授时系统秒脉冲的相位关系。
这里有一个非常关键却容易被忽略的点:PMU的相角是一个“绝对”量,它的参考基准是GPS或北斗的秒脉冲对应的理想余弦波形,而不是电网里某个具体节点的参考角。所以从PMU拿到的相角,跟状态估计模型里面以平衡节点为参考的相角,并不是一个坐标系的东西。做融合时,要么把PMU相角做坐标变换,要么在估计模型里显式处理这个参考差,否则结果一定会出问题。这个问题我后面还会细说。
PMU的数据还有一个特点就是上报率可配置,常见的有10帧每秒、25帧每秒、50帧每秒。用于状态估计时并不需要把每一帧都喂给估计器,工程上通常是取一个统计窗口内的均值滤波后使用,或者直接把PMU数据当作快速刷新量测来处理。高帧率的价值主要在于“观测同一时刻断面的能力”,而不是让估计器每帧都迭代一次。
2.2 三种主流接入思路对比
实际工程里,把PMU测量接进状态估计,大致有三种做法。
第一种是纯PMU线性状态估计。全网可观所需的节点上都装PMU,量测全部采用PMU的电压相量和电流相量,这种情况下状态估计退化为一个线性加权最小二乘问题,不需要迭代,计算量极小,速度可以做到非常快。但代价也很明显,全节点装PMU的投资成本太高,短期内几乎不可能实现。一般只作为研究或者特定厂站级区域分析使用。
第二种是混合量测状态估计,也就是把SCADA的有功、无功功率量测和PMU的电压相量、电流相量量测一起放进同一个加权最小二乘框架里。这是目前工程落地的主流选择。SCADA量测保证了全网可观,PMU量测在局部节点提供高精度的直接状态观测量,两者互补。代价是SCADA功率量测对应的量测方程是非线性的,整个估计器还是要用牛顿迭代求解,计算负担比纯线性估计大,但这在当代电力系统的计算能力面前完全不是问题。
第三种是两阶段估计,即先用SCADA量测做一次传统状态估计,再用PMU量测对结果做一次“修正”或者“滤波”。这种做法实现起来最简单,可以不动原来状态估计的主体框架,在结果层面把PMU信息叠加进去。缺点是两阶段方式在原理上不是最优的,第一阶段的估计误差已经固化,第二阶段最多在数值上做局部修正,无法从根源上利用PMU信息去平滑全网其他量测的误差。
我的建议是,如果是从零开始搭一套系统,直接上混合量测,一次把模型建对。如果是在已有EMS上面做增量改造,可以考虑先做两阶段平滑过渡,但心里要清楚这只是权宜之计,不等于最优解。
2.3 加权最小二乘框架里PMU怎么进
传统状态估计的数学模型可以写成:
z = h(x) + e
其中z是量测向量,包含SCADA上送的节点注入有功无功、支路有功无功、节点电压幅值等;x是状态向量,一般取全网除平衡节点外的节点电压幅值和相角;h(x)是量测方程,即由状态量推算量测值的非线性函数;e是量测误差向量,假设为零均值高斯噪声。
加权最小二乘估计的目标函数是:
min J(x) = [z - h(x)]^T R^(-1) [z - h(x)]
这里R是量测误差协方差矩阵,对角元素是各量测量的方差,反映量测的置信程度。迭代求解时每一步解如下正规方程:
G_k Δx_k = H_k^T R^(-1) [z - h(x_k)]
其中H_k是量测方程在当前状态点对状态量的雅可比矩阵,G_k = H_k^T R^(-1) H_k称为信息矩阵。状态更新为:
x_{k+1} = x_k + Δx_k
PMU接入之后,量测向量z里多出了电压相量量测。PMU的电压幅值量测和相角量测与状态变量的关系是线性的,H矩阵里对应的行非常简单:对电压幅值行,只有对应节点的幅值偏导为1;对相角行,只有对应节点的相角偏导为1。这使得PMU量测的引入相当于在信息矩阵G里直接叠加了一个高权重对角块,对状态估计结果的约束非常强。只要PMU本身的精度加权合理,它就能像一根“锚”一样,把对应节点的状态稳稳钉在真实值附近,并顺着网络拓扑把改善效果扩散到周边节点。
电流相量量测比电压相量稍微复杂一些,因为电流相量和状态量之间依然是非线性的,需要迭代处理。但工程上,电压相量是最常用、最稳定的PMU量测,电流相量可以作为冗余补充,不建议在初始阶段全量引入。
3. 从模型到代码:一个混合量测状态估计的实操流程
3.1 数据准备与时间对齐
实际操作中最容易被低估的环节是数据准备。SCADA量测和PMU量测来自两套完全不同的采集系统,数据格式不同、刷新周期不同、同步时标粒度也不同,直接拿来做融合必然有问题。
第一步要做时间对齐。SCADA的量测通常是周期性刷新,带的是采集时刻的主站时钟;PMU数据帧自带UTC时标,精度在微秒级。时间对齐的基本做法是:取PMU每一帧的UTC时标,找到SCADA端距离该时刻最近的一轮断面数据,将其视作同一时刻的量测。这种做法在稳态工况下误差很小,但在系统动态过程中会引入时间匹配残差,所以更严谨的做法是在WAMS端按SCADA周期做数据聚合,例如把PMU每100毫秒的数据在1秒窗口内做平均值,再标记为这个窗口末时刻的等效量测。
第二步做参考基准统一。状态估计模型里的相角参考是平衡节点,PMU的相角参考是卫星秒脉冲对应的绝对余弦波。最简单的处理方式是把某个基准母线(比如平衡母线)上的PMU相角强制置为状态估计的参考角,将其余PMU相角做一个整体平移。如果全网的PMU时标都来自同一授时源,这种平移是一致的,处理起来很干净。麻烦的是各个PMU设备的时钟可能有微小的相对漂移,这个在数据预处理阶段需要做相角漂移校验,发现异常帧直接剔除,而不是硬塞进估计器。
第三步是量测值的数据清洗。PMU原始数据里经常会有瞬时跳变、通信丢帧、幅值越限等异常。建议在进估计器之前做一次简单的限幅滤波加均值滤波,比如把相邻两帧相角差超过预设门限的帧视为坏帧,不让它进入估计。这一步能挡住大量后期很难排查的“幽灵问题”。
3.2 核心建模与程序骨架
下面给一个Python风格的程序骨架,展示混合量测WLS状态估计的核心逻辑。这个骨架可以在小系统上直接跑通,替换成IEEE节点数据就能扩展。
import numpy as np def build_meas_equations(Y, buses, z, pmu_meas): # 建立量测方程,返回 h(x), H(x) pass def wls_hybrid_estimate(Y, buses, z, R, pmu_meas, max_iter=20, tol=1e-6): # 状态变量:除平衡节点外所有节点的幅值和相角 n_state = len(buses) * 2 - 1 x = init_state(n_state) for k in range(max_iter): V, theta = unpack_state(x) h, H = build_meas_equations(Y, V, theta, pmu_meas) G = H.T @ np.linalg.inv(R) @ H g = H.T @ np.linalg.inv(R) @ (z - h) dx = np.linalg.solve(G, g) if check_convergence(dx, tol): return x, h, H, k x = x + dx return x, h, H, max_iter这里有几个实现层面的细节值得注意。
状态变量排序要做好。我习惯把节点按编号排列,每个节点先幅值后相角,平衡节电的相角不参与估计,固定为参考角。这样H矩阵的行列对应关系清晰,后续做残差分析、坏数据定位都方便。
R矩阵的赋值要依据量测类型区分。SCADA功率量测的方差常规取量测值的1%到2%(归算到标幺值),PMU电压幅值量测方差可以取到0.05%到0.1%,PMU相角量测方差可以取到0.001弧度到0.005弧度。这个比例后面大概率要按实际数据调整,但初始值按这个量级设置比较合理。
收敛判据除了看Δx的模值,还要看一下残差的变化趋势。如果迭代过程中目标函数J(x)不降反升,一般是模型有问题,可能是导纳矩阵错误、量测单位不一致,或者PMU参考相角没有对齐。程序里最好把每次迭代的J(x)输出出来,方便定位。
3.3 三节点算例:加PMU前后对比
用一个简单的三节点系统把整个流程走一遍。节点1设为平衡节点,节点2和节点3为PQ节点,线路参数和真实状态如下。
线路阻抗:z12 = 0.01 + j0.05,z13 = 0.015 + j0.06,z23 = 0.012 + j0.055,均为标幺值。真实状态取V = [1.05, 1.02, 0.98](标幺值),相角θ = [0, -2.0, -3.5](度)。SCADA量测包含三条支路的有功无功、三个节点的电压幅值,功率量测加1%标准差的高斯噪声,电压幅值量测加0.5%噪声。
然后分两种场景跑估计:场景一不含PMU量测,场景二在节点2和节点3分别接入PMU电压相量量测,幅值噪声0.1%,相角噪声0.05度。
我实际跑下来的结果大致如下表(数值为示意,具体到不同噪声种子会有小幅波动):
| 节点 | 真实幅值(p.u.) | 无PMU估计幅值 | 有PMU估计幅值 | 真实相角(°) | 无PMU估计相角(°) | 有PMU估计相角(°) |
|---|---|---|---|---|---|---|
| 1 | 1.050 | 1.050 | 1.050 | 0.0 | 0.0 | 0.0 |
| 2 | 1.020 | 1.017 | 1.020 | -2.0 | -1.69 | -1.97 |
| 3 | 0.980 | 0.984 | 0.979 | -3.5 | -3.88 | -3.56 |
这个结果很有代表性。无PMU场景下节点3的相角误差到了0.38度,有PMU场景下全网相角最大误差压到了0.06度左右。幅值方面,无PMU场景节点3幅值误差0.004,PMU接入后几乎贴着真实值走。
为什么会这样?关键在于节点2和节点3的PMU相角量测直接给H矩阵增加了两行“刚性”约束,把这两个节点的相角钉住之后,功率量测的误差又顺着支路潮流约束把修正传递到全网,所以节点3的幅值也跟着受益。这比单独看某个节点的精度提升更有说服力,PMU的收益是全网范围的。
3.4 精度评估与坏数据检验
算例跑完不能只看一组估计值,至少要做两项验证。
第一项是统计性精度评估。把同一组真实状态生成多次不同噪声的量测,比如生成200个含噪样本,分别进行估计,统计每个状态的估计误差均值和标准差。一个合格的估计器,误差均值应该接近零,标准差应该和理论Cramer-Rao下界可比。如果把误差均值跑出了明显偏差,往往说明模型里存在系统性偏差,最常见的就是PMU相角参考没对齐、SCADA功率量测有恒定偏移,或者线路参数标幺值取错了。
第二项是坏数据检测。做法是把某一条SCADA功率量测人为加大偏差,比如注入10倍的异常值,再跑估计,观察标准化残差。传统状态估计里常用的标准化残差检验在混合量测下依然适用:
r_i = (z_i - h_i(x)) / sqrt(R_ii)
如果r_i超过3(对应99.7%置信区间),就判定该量测为坏数据。但要注意一个问题:PMU量测的权重远大于SCADA量测,一旦PMU本身出问题,它的高权重会把坏值“洗”进状态估计结果,导致其他正常量测的残差集体变大。这种情况下残差最大的一批量测都指向正常SCADA量测,反而掩盖了真正的PMU坏数据。这个问题我放到第4部分详细展开。实操中的基本对策是:把PMU量测单独分组做残差检验,或者对PMU数据做独立的前置校验,而不是完全依赖状态估计的残差来发现PMU故障。
4. 工程坑与排查实录
4.1 高频问题速查表
做混合量测状态估计最容易踩的坑,我整理成了下面这张表。每个问题我都实际遇到过至少一次,有些是在仿真里发现的,有些是现场调试时暴露的。
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| 估计结果发散 | 拓扑参数错误或导纳矩阵拼错 | 逐条检查线路参数、变压器变比 |
| 全网相角整体平移 | PMU参考角与状态估计参考不一致 | 统一参考母线,做相角坐标变换 |
| 某节点估计值明显偏离 | 该节点PMU存在坏数据且未被剔除 | 检查PMU原始相量帧,做分块残差检验 |
| 收敛但残差始终很大 | 权重矩阵设置不合理 | 核对R矩阵的量纲和标幺值单位 |
| 信息矩阵奇异无法迭代 | 可观测性不足 | 检查PMU配置与SCADA量测冗余度 |
| 结果震荡不收敛 | 迭代步长过大或初值不当 | 用平启动或上一断面结果做初值 |
这张表解决的是“出了问题往哪个方向找”的问题。下面几个坑值得单独拿出来讲,因为它们处理不好,基本查不出来。
4.2 相角参考不一致,最隐蔽也最致命
PMU和状态估计之间的相角参考不一致,是混合量测里最经典、最容易忽略的问题。状态估计里的相角是相对平衡节点的相对相角,而PMU输出的相角是相对于授时系统理想波形的绝对相位。如果你把PMU相角原封不动塞进估计器,H矩阵里那行相角量测方程的参考基准就对不上,估计结果轻则全网友好偏移,重则迭代发散。
处理的办法分两步。第一步,选一个基准母线,通常就是状态估计的平衡节点,把该母线上PMU测到的绝对相角记为θ_ref,然后将所有PMU相角量测改为相对值:θ_i^pmu - θ_ref。第二步,如果基准母线上的PMU不可靠或者没有装PMU,可以用基准母线的状态估计结果做一次相角校准,把当前估计的θ_ref叠加到PMU相角上。工程上建议优先保证基准母线有PMU,否则每次估计都要先做一个不包含PMU相角的初估来获取参考角,逻辑上绕了一圈,实时性也受影响。
4.3 权重矩阵不是越大越好
PMU精度高,很多人就习惯把PMU量测的权重设得非常大,觉得这样估计结果就会被PMU“拉”向真实值。这个直觉在PMU数据质量好的时候确实成立,但代价是估计器几乎把所有信任都押在PMU上,等于放弃了SCADA量测的冗余校验能力。一旦PMU设备本身有故障或者数据被干扰,高权重坏数据会直接污染全网状态,而且由于它的残差被高权重压低,坏数据检测反而识别不出来。
正确的做法是把PMU权重按实际精度设置,略高于SCADA功率量测即可,不要刻意放大。通常让PMU量测在信息矩阵G里的总贡献占20%到40%比较合适。这个比例可以通过观测G矩阵对角线元素的变化来判断。我一般会做一组灵敏度分析:把PMU权重从基准值扫到10倍,观察估计误差变化,如果误差在3倍权重之后基本不再下降,说明再加重权重已经没有收益,反而增加了坏数据风险。
4.4 最容易被忽略的时间标签
PMU数据带的是UTC时标,SCADA数据带的是主站本地时标,如果两套系统之间的时钟没有做严格同步,时间对齐就会出现系统性偏差。现场最容易出问题的是SCADA主站时钟和WAMS主站时钟之间有几秒甚至几十秒的偏差,尤其是两个系统由不同厂商分别建设、分别运维时,这种偏差很容易被忽略。
排查方法很简单:挑一个负荷相对平稳的时段,把同一母线SCADA的电压幅值和PMU的电压幅值画在一条时间轴上,如果两条曲线的峰谷错开超过一个SCADA扫描周期,基本可以断定存在时钟偏差。更彻底的方案是在系统集成时统一NTP对时,SCADA主站和WAMS主站都从同一时钟源校时,把时标偏差压到100毫秒以内。数据接入层面还可以加一道校验:每条PMU数据帧的时标必须落在SCADA当前断面的有效时间窗内,否则丢弃或标记。
4.5 坏数据检测的连带污染问题
混合量测状态估计的坏数据检测有一个连带污染问题。当某个PMU量测本身是坏数据时,由于它的权重高,估计器会把状态量朝这个坏值方向硬拉,导致大量正常SCADA量测的残差同步变大。在标准化残差检验里,排名靠前的很可能是一批无辜的SCADA量测,真正出问题的PMU反而藏在了“正常”残差里。
我踩过这个坑之后的处理办法是分层检测。第一步,在数据前置环节对PMU做独立校验,比如检查幅值是否越限、相角跳变是否超过设定值、数据帧速率是否正常,直接把劣质PMU帧挡在估计器外面。第二步,在估计器内部把PMU量测按台设备分成独立块,用分块残差检验逐台设备检测。第三步,跑完估计后用PMU量测的标准化残差单列一个报警通道,不和SCADA量测的残差混在一起排序。经过这三层过滤,PMU坏数据对全网的污染基本能控制在可接受范围内。
5. 落地扩展与个人经验
5.1 从仿真到现场:我踩过的几个坑
从仿真到现场调试的跨越,远比想象中困难。仿真里一切数据都是生成的,噪声模型是理想的高斯分布,拓扑参数是准确的。到现场之后,问题接踵而至。
第一个坑是PMU数据帧不连续。现场通信链路抖动、PMU设备重启、对时信号丢失,都会导致数据流出现断档。如果状态估计程序没有做好数据缓冲和断档处理,一个数据缺口就会让估计器崩溃。我的处理方案是在PMU数据接入层加环形缓冲区,对短时丢帧做插值,对长时缺帧做标记降权,而不是简单丢弃全部数据。
第二个坑是量测单位不一致。SCADA系统里很多功率量测是兆瓦、兆乏为单位,PMU量测是标幺值或者一次值,如果接入程序没有统一归算,估计结果会乱七八糟。仿真时大家都在同一套标幺体系下跑,到现场对接不同厂商数据接口时最容易翻车。建议在数据接入层写一个统一格式转换模块,把所有量测统一为标幺值,再进估计器。
第三个坑是线路参数和现场不一致。仿真用的参数来自标准算例,现场则可能遇到变压器分接头档位没更新、线路实际长度和台账不符、励磁电抗抵偿方式不同等。这类问题不会让估计器发散,但会让某个区域的残差系统性偏大。排查手段是把残差和地理接线图叠在一起看,看高残差是否集中在一个厂站或者一条线路附近。
5.2 PMU数据的衍生价值
PMU接入状态估计只是它价值的一部分。一旦把PMU的高频同步数据接入到统一数据平台,很多以前只能离线做的事就变成了在线可做的事。
最直接的是动态状态估计和扰动辨识。传统状态估计是静态模型,PMU则能支撑起带微分方程模型的动态估计,用于观察系统受扰动后的暂态轨迹。其次是低频振荡监测,PMU的相角数据可以提取振荡频率和阻尼比,这个对系统稳定分析非常有用。还有故障事件反演,基于PMU记录的波形数据,可以精确还原故障发生时刻、故障类型、故障位置,对调度运行分析和继保定值校核都很有价值。
我的建议是,做PMU状态估计项目时,不要把数据只存在单一用途的模块里,尽量把PMU数据接入统一的数据总线,让它同时服务状态估计、扰动监测、动态评估等多个应用。数据标准统一、接口做好,后续扩展应用的成本会低很多。
5.3 后续可以怎么深入
如果已经实现了混合量测静态状态估计,下一步比较自然的方向有三个。
一个是动态状态估计。PMU的高频数据给了动态估计数据基础,需要考虑发电机的动态模型参数和负荷模型,复杂度会比静态估计高不少,但信息的价值也大得多。另一个是分布式状态估计。多区域电网之间用PMU量测做边界协调,可以避免把全网数据都集中到一个主站处理,对跨区数据隐私和通信带宽都有改善。还有一个是PMU最优配置。如何用最少的PMU数量,以合理的冗余度保证全网可观测,这个问题在工程上可以直接转化为投资成本问题,很多调度单位都会在探索阶段做这个评估。
我个人实际体会是,不要一开始就追复杂模型。先把静态混合量测的流程跑通,把时标、参考角、权重、坏数据这些基础问题处理好,再去扩展动态和分布式方向。很多后期的问题,根源都在基础数据质量上。
最后再分享一个小技巧。做混合量测状态估计时,找一个实际的PMU点位数据,把估计出的节点相角和PMU原始相角画在同一个图里,并加上偏差曲线。如果偏差曲线在负荷变化时段出现明显波动,大概率是时间对齐精度不足;如果偏差曲线稳定但整体平移,大概率是参考角处理出了问题。这两类问题用这个办法几秒钟就能定位,比看残差表直观得多。