ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

PMU接入状态估计:混合量测的建模、实现与工程实践

PMU接入状态估计:混合量测的建模、实现与工程实践 1. 为什么要把PMU测量接进状态估计1.1 先搞清楚两个东西分别在干什么状态估计这个模块是调度自动化系统EMS里最基础也是最重要的一个环节。它的任务很直观调度端拿到SCADA系统上传的遥测遥信之后利用全网冗余的功率量测、电压幅值量测按照电网的拓扑结构和元件参数估计出每一个节点的电压幅值和相角再基于这组状态量推导出全网的潮流分布。为什么要费劲去“估计”而不是直接用测量值因为量测是有误差的而且有坏数据状态估计的价值就在于利用冗余信息把随机误差平滑掉把坏数据挑出来给调度员一个自洽、完整、可信的电网断面。PMUPhasor 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_{k1} x_k Δx_kPMU接入之后量测向量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_iter20, tol1e-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.05z13 0.015 j0.06z23 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估计相角(°)11.0501.0501.0500.00.00.021.0201.0171.020-2.0-1.69-1.9730.9800.9840.979-3.5-3.88-3.56这个结果很有代表性。无PMU场景下节点3的相角误差到了0.38度有PMU场景下全网相角最大误差压到了0.06度左右。幅值方面无PMU场景节点3幅值误差0.004PMU接入后几乎贴着真实值走。为什么会这样关键在于节点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原始相角画在同一个图里并加上偏差曲线。如果偏差曲线在负荷变化时段出现明显波动大概率是时间对齐精度不足如果偏差曲线稳定但整体平移大概率是参考角处理出了问题。这两类问题用这个办法几秒钟就能定位比看残差表直观得多。
返回列表