十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

基于ARMAX模型与PMU数据的电力系统惯量在线辨识方法

基于ARMAX模型与PMU数据的电力系统惯量在线辨识方法 这几个月一直在折腾新能源场站并网后的频率稳定问题最让我头疼的不是控制策略本身反而是系统惯量到底还有多少——调度要这个数做低频减载整定稳控要这个数判断切机策略但传统等值法只能算个大概。后来我换了个思路不依赖精确的发电机模型直接用PMU实测的扰动数据和功率变化量通过ARMAX模型做在线辨识把系统的等效惯量时间常数H从几秒长的数据里“挖”出来实测下来误差控制在3%以内。这个方法本质上是系统辨识在电力工程里的一次落地工具只用MATLAB的System Identification Toolbox代码量不大但坑不少。这篇文章我会把完整的MATLAB代码、参数推导过程和我在实际数据上踩过的坑都写出来适合电力系统方向的研究生、新能源场站调试工程师以及所有想用辨识方法解决工程估计问题的朋友。1. 为什么电力系统需要惯量评估1.1 惯量的物理意义与频率稳定惯量在电力系统里不是抽象概念它直接决定了系统频率受扰动后的变化速度。发电机的转子是一个旋转质量体转子动能等于 1/2 Jω²当系统出现功率缺额时这个动能会释放出来支撑频率让频率不是瞬间跌落而是以一定速率下降。工程上习惯用惯性时间常数 H 来表示这种能力它等于额定转速下的转子动能除以发电机额定容量单位是秒。常规火电机组的H大概在3到8秒水电稍小一些但也是2到4秒。频率变化率RoCoF与功率缺额的关系可以从摇摆方程直接推出来2H·dΔf/dt ΔPm - ΔPe - D·Δf其中D是负荷阻尼系数。当一个大机组跳闸功率缺额瞬间出现此时调速器还没动作dΔf/dt 近似等于 ΔP/(2H)。如果系统惯量H很小频率下跌速度就会很快留给一次调频和低频减载的动作时间窗口就短得多。所以惯量不是锦上添花的指标它是频率稳定三道防线的第一道。1.2 新能源渗透率升高后的新挑战风电和光伏通过变流器并网转子与电网是解耦的也就是说它们不提供传统意义上的旋转惯量。虽然现在有些风机可以模拟惯量响应但响应速度和支撑能力跟同步机组比还是有差距。这就导致一个现象总装机容量越来越大但系统等效惯量却可能在下滑同样的功率缺额扰动下RoCoF会比以前大很多极端情况下频率变化率超过低频减载装置的耐受能力造成连锁脱网。这就是惯量评估的工程价值所在——调度需要知道当前运行方式下的系统等效惯量是多少是4秒还是6秒这个数值直接关系到安控策略的整定。问题是现代电网的惯量不是固定值它随开机方式、新能源出力和联络线潮流实时变化靠离线计算根本追不上运行状态的变化这就催生了从实测数据里在线辨识惯量的需求。1.3 从等值法到在线辨识法传统做法是把系统里所有发电机的H按容量加权平均再用负荷模型修正得到一个等效H。这个方法在大多数机组都是同步机的年代够用但现在并不让人放心——它假设所有机组都严格跟随电网频率忽略了调速器动态和负荷频率特性更没法反映新能源场站虚拟惯量控制带来的影响。而且等值法的前提是准确知道每台机的参数和投运状态这在复杂电网里很难实时获取。基于量测数据的辨识法是另一种思路把系统等效成一个输入是功率扰动、输出是频率偏差的单输入单输出模型实测数据中包含了系统的动态响应信息通过系统辨识方法解出模型参数再反推惯量系数。这个思路的好处是不需要知道内部详细参数只要有高质量的扰动数据和合理的模型结构就能工作。ARMAX模型就是这类方法里很实用的一种它比简单的ARX模型多了一个噪声模型能更好处理实际量测中的负荷随机波动和测量噪声。2. ARMAX模型原理凭什么能从数据里“挖”出惯量2.1 ARMAX模型长什么样ARMAX的全称是Auto-Regressive Moving Average with eXogenous input中文叫带外生输入的受控自回归滑动平均模型。它的标准离散形式是A(q)·y(k) B(q)·u(k) C(q)·e(k)其中y(k)是输出序列u(k)是输入序列e(k)是白噪声序列q是移位算子。A(q)、B(q)、C(q)分别是关于q的多项式A(q) 1 a1·q⁻¹ ... ana·q⁻ⁿᵃB(q) b1·q⁻ⁿᵏ ... bnb·q⁻ⁿᵏ⁻ⁿᵇ⁺¹C(q) 1 c1·q⁻¹ ... cnc·q⁻ⁿᶜ几个阶次由四元组 [na nb nc nk] 决定分别对应A、B、C多项式的阶次和输入延迟。简单说这个模型的逻辑是当前输出y(k)由三部分决定一是自身历史值自回归部分A二是输入的历史值外生输入部分B三是过去噪声的加权和滑动平均部分C。第三部分就是它和ARX模型的本质区别——ARX假设噪声是白噪声直接叠加在输出上而ARMAX允许噪声是带相关性的有色噪声。2.2 从摇摆方程到ARMAX结构电力系统频率响应的最简化模型就是之前提到的摇摆方程拉普拉斯变换后可以得到连续域传递函数G(s) Δf(s) / ΔP(s) 1 / (2H·s D)这是一个典型的一阶惯性系统时间常数τ2H/D稳态增益K1/D。如果只做频率响应分析直接拟合这个传递函数也够但问题在于实际采集到的数据都是离散的而且含有噪声直接拟合传递函数对噪声很敏感。把连续模型离散化后用ARMAX框架来辨识是最稳的路径。离散化采用零阶保持器ZOH方式这与数字采样系统物理上最接近。一阶连续系统在ZOH离散化后变成G(z) K·(1-α) / (z-α)其中α exp(-Ts/τ)Ts是采样周期。写成差分方程就是y(k) α·y(k-1) K·(1-α)·u(k-1)这个形式正好对应ARMAX模型在na1、nb1、nc1、nk1时的结构。也就是说如果真实系统可以被一阶惯性环节近似那么辨识ARMAX模型得到的A、B多项式系数与连续域参数之间存在确定的解析关系。辨识得到离散模型之后反向推导就能还原H和D。具体公式我在后面代码部分会详细写这里先把思路理清楚。2.3 为什么选ARMAX而不是直接最小二乘有人会问既然模型本质上是一阶的直接用最小二乘拟合差分方程不就行了吗我一开始也是这么干的但拿到实测数据就发现不行——现场的负荷波动是持续存在的它不是一个理想的白噪声会在低频段产生明显的频谱能量。用普通最小二乘估计时这些有色噪声会被错误地吸收进A和B多项式的估计中导致参数估计有偏惯量可能被高估或低估而且偏差方向不确定。ARMAX的优势在于它的C多项式专门用来刻画噪声的统计特性把噪声从信号模型里“分离”出来。在辨识迭代过程中A和B的估计会尽量拟合系统动态部分而C则吸收噪声的相关性结构这样得到的A和B更接近真实系统。当然代价是参数更多、计算量稍大、收敛性对初值更敏感。对于惯量评估这个场景一分钟级别的数据长度完全足够支撑这个模型复杂度所以ARMAX是性价比最高的选择。3. MATLAB完整实现流程附代码3.1 仿真数据准备先造一个“标准答案”在一开始调试方法时我强烈建议先用仿真数据验证整个流程因为只有仿真时H的真值是已知的才能判断辨识算法到底准不准。下面这段代码会生成一个带真实惯量参数的频率响应数据。我选用PRBS伪随机二进制序列作为输入扰动信号因为PRBS具有持续的频率激励能力能覆盖系统的动态带宽比单一阶跃信号包含更丰富的信息。%% 1. 场景参数设置 clear; close all; clc; rng(42); H_true 6.0; % 真实惯量时间常数单位秒 D_true 0.8; % 等效阻尼系数标幺值 Ts 0.02; % 采样周期单位秒 Tsim 60; % 仿真总时长单位秒 t (0:Ts:Tsim); N length(t); %% 2. 生成PRBS扰动信号幅值±0.01pu % band[0 0.05] 表示PRBS切换频率约为奈奎斯特频率的5%适合激励一阶系统 u_pu idinput(N, prbs, [0 0.05], [-0.01 0.01]); u_pu u_pu - mean(u_pu); % 去直流分量这里PRBS的幅值0.01pu不要随便加大。仿真里怎么设都行但真实系统中0.01pu的功率扰动已经会引起约0.5Hz级别的频率偏移再大会影响系统正常运行。幅值太小则激励不足输入信号没有激发系统的动态特性辨识出来的参数方差会非常大。这个平衡是实际工程里需要反复试的。3.2 连续域仿真与叠加噪声有了输入信号以后我直接在连续域里仿真更接近物理现实。然后叠加两种噪声——测量噪声和随机负荷波动。测量噪声主要是PMU的采样误差随机负荷波动则是系统里时刻存在的负荷投切。合理设置噪声幅度很重要我按信噪比约30dB来加这个水平接近现场PMU数据的质量。%% 3. 连续域模型仿真输出频率偏差 s tf(s); G_sys 1 / (2*H_true*s D_true); y_clean_pu lsim(G_sys, u_pu, t); % 标幺值频率偏差 % 叠加噪声0.0005为标准差的高斯白噪声相对于正弦波动约4% rng(7); noise_std 0.0005; y_meas_pu y_clean_pu noise_std * randn(N,1); % 去均值处理辨识前必须做 y_meas_pu y_meas_pu - mean(y_meas_pu); u_pu u_pu - mean(u_pu); % 把标幺值换成Hz视角展示方便理解 y_meas_hz y_meas_pu * 50;有一个特别容易踩的坑在给数据去均值时要检查输入和输出是不是都去了只去一个会让辨识结果出现直流偏置。另外一个坑是噪声的方差不能设成固定值要结合信号幅值看。如果PRBS幅值是0.01pu系统稳态频偏约0.0125pu噪声标准差0.0005pu约是信号的4%这个量级是合理的。如果信号幅值改了噪声也要相应调整。3.3 核心辨识代码与惯量提取这是整套流程最核心的部分调用MATLAB的armax函数进行模型辨识然后从辨识出的离散模型参数反推连续域惯量。这里的数学推导我再简单复盘一遍——ZOH离散化后α exp(-Ts·D/(2H))稳态增益K·(1-α)对应离散模型B多项式的系数从A多项式的第二个系数能直接得到α。反推过程用到了对数运算所以α必须严格为正否则说明辨识的参数不合理。%% 4. ARMAX辨识 data iddata(y_meas_pu, u_pu, Ts); % 阶次选择na1,nb1,nc1,nk1 % 理由系统物理上是一阶惯性A、B各取1阶噪声模型取1阶吸收有色噪声 % 延迟取1是因为离散因果系统输入对当前输出的影响要延后一拍 model armax(data, [1 1 1 1]); % 抽取离散模型系数 Acoef model.a; % 例如 [1 a1] Bcoef model.b; % 注意nk1时,Bcoef为长度1的向量 alpha -Acoef(2); % 离散极点alpha M Bcoef(end); % b1系数, 对应K*(1-alpha) %% 5. 从离散参数反推连续域惯量H与阻尼D D_est (1 - alpha) / M; H_est -D_est * Ts / (2 * log(alpha)); fprintf(真实值: H%.4f s, D%.4f\n, H_true, D_true); fprintf(辨识值: H%.4f s, D%.4f\n, H_est, D_est); fprintf(H相对误差: %.2f%%\n, abs(H_est-H_true)/H_true*100);在我运行这段代码的典型结果里H的辨识值是6.10s左右相对误差约1.7%。D的辨识误差通常比H大一些因为阻尼系数在短数据里没有惯量那么强的可辨识性。如果你看到H误差在5%以内说明数据质量和模型结构都是合适的如果误差超过10%优先检查数据预处理和阶次选择而不是急着换模型。3.4 模型验证不要只盯着拟合曲线辨识完成后一定要做模型验证只看拟合优度是不够的。拟合优度只能说明模型输出和实测数据在整体波形上接近但无法说明模型结构是否偷工减料比如用了过拟合的高阶或者残差里是否残留了相关信息。我用两步验证用compare函数对比模型预测输出与实测输出用resid函数查看残差的自相关函数以及残差与输入的互相关函数。%% 6. 模型验证 compare(data, model); % 观察预测输出与实测输出的匹配程度 figure; resid(model, data); % 残差分析自相关和互相关需落在置信区间内残差分析看什么如果残差的自相关函数还有明显的尖峰超出置信区间说明模型没有完全吸收数据中的动态信息此时增大na或nc可能有效。如果残差与输入信号的互相关函数超出置信区间说明输入输出之间还有未建模的延迟或非线性这时要重新检查延迟nk的设置。我遇到过一种情况数据里混入了几个PMU跳变点残差互相关函数就会在某一延迟处出现明显的越界尖峰这是坏数据导致的而不是模型阶次问题。4. 关键参数与调优细节避坑指南4.1 采样时间怎么定采样时间对辨识结果的影响很大但很多人容易忽略。PRBS信号通过采样进入系统时采样率至少要覆盖系统动态带宽的10倍以上。以惯量典型值H6s、阻尼D0.8为例连续环节的时间常数τ2H/D15s对应极点频率约0.011Hz那么采样周期取0.02s50Hz采样完全够用如果取0.1s也还能凑合取1s就基本废了因为离散极点α会非常接近1log(α)的数值误差会被放大H的估计值会剧烈抖动。判断采样率是否合理的一个简单办法看辨识出的A多项式系数。如果α非常接近0.999甚至0.9999说明采样太快或数据长度不够数值稳定性会很差。反过来如果α小于0.5说明系统动态在采样间隔内已经衰减干净了这个方法也不再适用。总结一句采样周期要明显小于τ/10又要在数据记录长度上覆盖至少几个τ数据长度至少要有10倍时间常数以上。4.2 扰动信号设计激励不足是万病之源系统辨识领域有句话叫“无激励、不辨识”。如果输入信号没有持续变化输出响应就主要由噪声主导辨识出来的参数方差大得离谱。现场用自然负荷波动做辨识时经常遇到这个问题——负荷波动虽然在变化但能量集中在极低频段无法有效激发系统在中高频段的动态特性。这时辨识出的惯量结果可能每次都不一样换个数据段结果就跳变。主动注入PRBS扰动是更可靠的方式。设计PRBS时有三个参数要权衡幅值、切换周期和扰动持续时间。幅值受到系统频率偏差限制一般peak-to-peak不超过0.02pu。切换周期决定了激励频率范围切换太慢低频分量充足但高频激励不足切换太快则高频分量虽然宽但每个频点上的能量太低。我的经验是切换周期设为系统时间常数τ的1/5到1/2在这个区间能得到较平坦的激励谱。最后扰动持续时间至少要覆盖5个完整切换周期否则低频段信息不够。4.3 数据预处理流程实测数据不是拿来就能用的必须走完下面四步预处理。第一步去均值把稳态频率偏差清零因为变量定义本身是增量形式。第二步去趋势项如果数据里存在缓慢的AGC自动发电控制调节趋势会污染低频分量用detrend函数做线性或多项式去趋势。第三步去坏数据PMU通信偶尔会丢包或产生突变尖峰这些点必须在辨识前剔除推荐用一个简单的滑动窗口阈值检测。第四步带宽滤波如果研究重点是惯量响应的低频段可以用低通滤波滤掉上百赫兹的噪声但滤波器截止频率至少要高于系统响应带宽的5倍否则会把有用的动态信息一起滤掉。有一个细节去均值和去趋势都要基于完整数据段做不能在分段后再各自去均值否则相当于人为引入了阶跃扰动辨识结果会偏向错误的方向。这也跟工程直觉一致——频率数据全场共享一个稳态基准分段去均值等于强行把每段频率拉回零点改变了真实的物理过程。4.4 模型阶次怎么选才合适很多人一上来就把阶次设高na3、nb3、nc3以为阶次越高辨识越准。实际恰恰相反高阶模型在有限数据长度下容易过拟合把噪声细节当成系统动态结果H估计值的方差急剧增大。对于惯量评估这个特定问题最合理的默认值是na1、nb1、nc1。物理依据是摇摆方程本身的阶次就是一阶A和B多项式再高并不能提供更多关于惯量的信息。什么时候需要提高阶次一种情况是数据里存在明显的机电振荡分量比如500MW机组跳闸后数据里叠加了0.5Hz左右的振荡这时一阶模型无法完全拟合残差分析会显示自相关严重越界可以考虑把na、nb提高到2或3让模型能够吸收振荡模态。另一种情况是输入输出通道存在通信延迟通过增大nk可以调整。但无论怎么调都不能违背一个原则——辨识的最终目标不是把数据拟合到100%而是让H的估计值稳定可靠。可以用一个简单的方法检查把数据分成前后两段分别辨识如果两段的H差异小于5%说明阶次设置是合理的否则就是过拟合或数据质量问题。5. 常见问题与排查技巧实录5.1 辨识结果偏差大的快速排查表在调试过程中我总结了这张排查表基本可以覆盖90%的问题。现象可能原因排查思路解决方案H估计值比真实值偏大输入信号激励不足低频噪声被当成系统响应查看PRBS切换频率是否太低增大PRBS切换频率或延长扰动数据长度H估计值比真实值偏小滤波器把低频动态信息滤掉了检查预处理环节的滤波截止频率重做滤波截止频率至少留5倍余量多次辨识H值跳动很大数据含坏点或噪声过大检查PMU数据是否有突变尖峰加入坏数据检测提高信噪比到20dB以上α接近1或等于1采样过快或数据长度不够检查离散极点数值增大采样周期或延长数据记录残差自相关仍越界模型结构不足以描述系统动态运行残差分析工具查看相关函数适当增大na/nc阶次D估计误差比H大很多D参数本身可辨识性弱对比不同数据段的D结果重点关注HD结果仅供参考5.2 一个让我排查了一整天的案例有一次拿到某厂站实测数据怎么辨识H都在2.2秒左右但同一时段调度系统给出的等效惯量参考值是4秒多差距大到离谱。我先是怀疑数据质量把坏点剔了又把滤波调了好几版结果没变化。后来无意中画了一下输入信号的频谱发现PRBS里实际上有一个大约0.3Hz的正弦分量几乎占满了整个激励能量其他频段的激励几乎为零。这个PRBS是由现场一个控制器生成的它的执行逻辑里有一个固有的振荡模态把本来应该平坦的PRBS频谱“污染”了导致辨识过程只对某个特定频率敏感H自然就偏离真实值了。换成自己可控的PRBS发生器重新做扰动实验后H很快就稳定在4.1秒附近。这件事给我的教训是辨识结果的可靠性很大程度取决于你对输入信号频谱的了解。接上数据之后不要急着跑算法先plot一下输入输出数据的时域波形和频谱这个习惯能省掉至少一天的调试时间。5.3 实测数据落地时还要注意什么实测落地时还有两个工程问题容易被忽视。第一个是时间基准对齐PMU数据来自不同设备输入功率数据和输出频率数据如果存在几个毫秒的时标偏差辨识出的延迟项nk会异常进而影响所有参数估计。建议在预处理时对输入输出做互相关分析自动校准时延。第二个是外部运行方式变化一次长的数据记录可能跨越了机组启停或联络线潮流转移这种情况下系统惯量本身已经变了再把整段数据当做一个时不变系统辨识结果自然不对。处理办法是把数据分段每段30到60秒分别辨识后看H的时间演化趋势而不是追求一个全年统一的“惯量值”。6. 从仿真到实用我的几点体会这套ARMAX流程我用了几个月从仿真验证到实测数据最大的体会是方法的准确度不取决于算法有多新而取决于每一步细节是否扎实。系统辨识不是把数据丢进armax函数等结果就完了数据质量、信号设计、模型验证、参数解释每一步都直接影响最终H的可靠性。另外提醒一下我用MATLAB跑通后也试过用Python的sysidentpy库复现流程上完全可行但数值稳定性上还是MATLAB工具箱更省心如果只是做研究验证MATLAB仍然是最顺手的工具。最后再分享一个小技巧如果你想在IEEE或中文核心期刊里引用这个方法建议在论文里同时报告辨识模型的残差白噪声检验通过情况、不同信噪比下的H辨识误差曲线以及和传统等值法的对比结果。审稿人最关心的永远是“你怎么证明你给出的惯量值是对的”而这套ARMAX流程恰好给了你一个清晰的回答框架——物理模型推导加实测数据验证加误差分析。
返回列表