尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

电力系统谐波仿真分析:从THD超标到谐波溯源与责任划分实战

发布时间:2026/9/26 23:22:56

资讯中心
01
ARTICLE

电力系统谐波仿真分析:从THD超标到谐波溯源与责任划分实战

电力系统谐波仿真分析:从THD超标到谐波溯源与责任划分实战
上个月一个朋友发来一组图片——配电房里的低压电容器外壳鼓包、底部漏液旁边两只并联熔断器已经烧成焦炭。查后台监测记录电容器投运不到一年5次谐波电流有效值从42A一路涨到116A。做电气的看到这种场景都不陌生谐波问题从来就不是“电压畸变率超标没超标”一个数字能说得清的。它牵涉到谐波源方向、谐波责任划分、系统阻抗耦合、治理装置选型而要在图纸和现场之外先把这些关系摸透最经济的手段就是电力系统仿真。问题是常规仿真工具做完一波波形分析之后经常停在“THD11.2%”就结束了。至于这个11.2%是谁贡献的、谐波从哪里来、应该找谁收费依然是一笔糊涂账。这几年我做电能质量评估和滤波装置设计项目一直在用自己打磨的一套分析方法我管它叫 iPiQ 谐波分析法。简单说就是把电流 i、有功功率 P、无功功率 Q 三个维度放在同一个分析框架里专门用来解决谐波溯源、责任划分、治理效果校验这些问题。这篇文章我打算把这套方法从原理到仿真实操完整拆开讲适合刚接触电能质量仿真的学生也适合天天跟谐波治理打交道的工程师。1. 先搞清楚谐波仿真为什么总在“最后一公里”翻车1.1 谐波从来不是“一个数”的问题很多人提到谐波第一反应就是看THD。THD确实是最常用的指标但实际工程里谐波问题往往是一连串事件叠加出来的结果。一套工业变频器、一台ups、一组led驱动电源单看任何一个设备都能通过单体测试可它们接在同一段母线上之后相互之间的谐波电流可能叠加、可能抵消、也可能在某些频次上形成谐振放大。把这一堆非线性负荷放到系统里做整体仿真看到的才是真实结果。更麻烦的是谐波问题往往和功率因数、无功补偿、系统阻抗绑定在一起。电容器组投上去本意是补无功结果因为系统存在感性和容性阻抗的配合点5次或7次谐波被放大电容器过流、鼓包、烧毁。这种事在工业现场反复出现而且常规的稳态潮流计算完全看不见。算潮流用的是基波谐波根本不在雅可比矩阵里。所以要做谐波分析必须专门建模、专门设测点、专门用能反映谐波相互作用的算法去处理。1.2 常规工具能算出波形却说不清“谐波从哪来”我见过不少同行用 Simulink、PSCAD、ETAP 做谐波仿真流程基本一致搭主电路模型加非线性负荷跑几个工频周期然后用FFT工具看频谱输出THD写报告。这套流程应付“评估现状”勉强够用但一旦客户问“这个母线上谐波到底是上一级变压器带来的还是下面那台整流设备产生的”或者问“两条馈线分别贡献了多少5次谐波”常规FFT就答不上来了。原因在于FFT只给了频次和幅值丢掉了相位、方向和功率流动的信息。谐波电压和谐波电流之间是有相位关系的这个相位关系决定了谐波有功功率是正还是负也就是谐波到底是从这个节点流出去还是流进来。我拿FFT频谱图比喻一下它就像体检报告告诉你“血脂偏高”但没有告诉你这些脂类是哪一顿饭吃出来的。iPiQ 做的就是“食物溯源”通过瞬时功率分解把谐波的能量流动轨迹画出来。1.3 iPiQ 谐波分析法到底是个什么思路先声明一下iPiQ 不是商业软件也不是某个国际标准里的固定名词它是我在多个仿真项目里沉淀下来的一套分析流程。名字很好记i 代表三相电流P 代表瞬时有功功率Q 代表瞬时无功功率。核心思想是基于瞬时功率理论把三相电压电流变换到αβ坐标系再计算瞬时有功p和瞬时无功q然后对p和q做频谱分析。谐波源产生的特征频率会在p和q序列里留下非常清晰的“指纹”通过检测这些频率成分的幅值和方向就能判断谐波来自哪一侧、对应哪种负荷类型、责任占比大约是多少。这套方法的好处是极其贴近工程直觉。你不用去折腾复杂的谐波阻抗测量也不用依赖电网侧的谐波阻抗模型只需要在仿真模型里布置好电压电流测点把瞬时值导出来按我的流程去算就能拿到谐波责任划分的结果。2. iPiQ 的原理拆解电流、有功、无功是怎么“携手破案”的2.1 三相瞬时功率的变换基础要理解 iPiQ先要接受一个基本操作把abc三相坐标系变换到αβ两相静止坐标系。这个变换就是经典的Clarke变换公式如下v_alpha (2/3) * (v_a - 0.5 * v_b - 0.5 * v_c) v_beta (2/3) * (0.866 * v_b - 0.866 * v_c)电流的变换方式完全一致。这里我用了等功率变换的系数如果你习惯等幅值变换系数会不同但注意p、q数值会差一个比例系数后面算谐波功率时一定要保持口径一致。为什么要变换到αβ坐标你可以把abc三相坐标系想象成彼此相差120度的三台摄像机拍同一个运动物体三个画面都带冗余信息而αβ坐标相当于两台互相垂直的摄像机能更干净地把空间旋转信息分离开。瞬时有功功率和瞬时无功功率就是在αβ坐标系下定义的p v_alpha * i_alpha v_beta * i_beta q v_alpha * i_beta - v_beta * i_alpha这里 p 代表三相电路的瞬时有功功率q 代表瞬时无功功率。需要特别注意的是这里的 p 和 q 不是基波平均功率而是包含所有频率分量的瞬时值。所以 p 和 q 的波形是波动着的这种波动里面就藏着谐波之间的相互作用信息。2.2 谐波信息在 p、q 里是怎么藏身的平时我们用傅里叶分析处理的是电压或电流的单频信息而 p 和 q 是两个不同频段信号相乘的结果所以它们包含的频率成分不是原始谐波的简单重排。举个最典型的例子一个三相整流器会产生6k±1次特征谐波也就是5次、7次、11次、13次……这些谐波电流和基波电压相互作用之后会在 p 和 q 序列里产生6次、12次、18次波动分量。为什么是6k次因为基波电压是50Hz5次谐波是负序、7次谐波是正序在同步旋转坐标系下它们分别表现为-300Hz和350Hz的旋转量两者与基波作用后都会在瞬时功率波形中形成300Hz的波动也就是6次。同理11次和13次会在p、q里形成12次波动。这个规律非常稳定只要你在p、q序列的频谱里看到6次、12次这些大幅值分量基本可以断定系统里存在三相整流类负荷。更有意思的是p、q分解不仅能告诉你“有什么频次”还能告诉你是哪种谐波源。电弧炉、变频器、光伏逆变器的谐波频谱特征完全不同。电弧炉的频谱是连续的、带随机闪变的二极管整流桥是典型的低次特征谐波PWM逆变器除了低次还有开关频率附近的高次边频带。把这些特征和p、q频谱对照就能反推非线性负荷类型。2.3 谐波责任量化与方向判别iPiQ 里最值钱的部分是谐波责任划分。我用的基本判据是谐波有功功率的方向。设谐波次数为 h母线上该次谐波的有功功率可以写成P_h 3 * Ug_h * Ig_h * cos(θu_h - θi_h)如果 P_h 为正说明该节点向系统注入该次谐波有功功率也就是这一侧存在谐波源如果 P_h 为负说明该节点在吸收谐波功率属于被污染侧。这个方法听起来简单但工程上非常有用因为谐波有功功率从非线性源流向线性负荷这是普遍规律。实际操作时我会在母线的上游和下游分别布置测点各算各的谐波有功功率。然后对比两个测点的方向。比如变压器低压侧母线往下看测点1测得5次谐波有功为正而下游某馈线测点2测得5次谐波有功为负那基本可以锁定电源侧的整流负荷就是主要谐波源。这就是多点测量加方向判别的好处比单点FFT靠谱得多。3. 仿真工具选型和模型搭建实操3.1 工具组合Simulink 建主电路Python 做分析我最常用的组合是 MATLAB/Simulink 加 Python。Simulink 负责搭主电路、跑电磁暂态仿真Python 负责做 iPiQ 分解和绘图。理由很简单Simulink 的电力电子库件齐全搭整流器、逆变器、变压器都很方便而且能方便地导出波形数据Python 的 numpy、scipy 和 matplotlib 处理频谱和大幅值计算比 MATLAB 原生环境更灵活尤其是批量数据处理的时候。如果你的环境里暂时没有 Simulink也可以全用 Python 搭模型用scipy的ode求解器实现开关电路或者直接用仿真库。但那样主电路建模工作量会明显增加适合有一定编程基础的人。我建议第一次学习 iPiQ 的人还是先用 Simulink把精力放在分析方法上而不是陷入电路建模细节。配置清单供参考MATLAB R2021b 以上版本Simulink 和 Simscape Electrical 组件库Python 3.8 以上安装 numpy、scipy、matplotlib、pandas数据交换格式Simulink 的 To Workspace 模块将波形存成时间序列再通过 base workspace 导出为 CSV3.2 谐波源建模的关键整流器、电弧炉、光伏逆变器仿真谐波问题第一步就是把非线性负荷建准。以三相整流器为例这是工业现场最常见的谐波源。Simulink 里可以用 Universal Bridge 模块选二极管或晶闸管类型负载侧挂 R、L 负载。需要控制触发角时用晶闸管桥并加一个同步触发脉冲发生器。整流器产生的谐波频次和幅值取决于直流侧电感和负载电阻的比值。直流侧电感越小谐波电流越尖锐谐波频谱越宽。所以如果你要模拟变频器前端的整流部分直流侧滤波电容不能省否则谐波特征和现场实测数据对不上。电弧炉就麻烦一些。电弧具有强烈的非线性电阻特性而且随机变化。常规建模可以用一个受控电流源电流波形按照现场实测的三相电流波形做插值重放或者用一个时变电阻模拟电弧的燃弧、熄弧过程。光伏逆变器则有两种建模路线平均模型速度快、适合看低次谐波和功率流动开关模型精度高、能复现开关频率附近的间谐波但仿真步长必须压到微秒级计算量相当大。做 iPiQ 分析时我建议先用平均模型把整体责任划分做出来再针对重点馈线单独上开关模型精细排查。3.3 参数设置与测量位置选择很多新手仿真谐波问题恰恰出在采样参数随便填。仿真步长、采样频率、数据窗口、FFT窗函数这些参数会直接影响分析结果稍不注意就会得到完全错误的频谱。下面是经过多轮验证的推荐值参数项 | 推荐设置 | 说明 仿真步长 | 1e-6 s 至 1e-5 s | 要看50次谐波步长不能超过10微秒 采样频率 | 10 kHz 以上 | 至少满足每个工频周期200个采样点 数据窗口 | 8至16个工频周期 | 频率分辨率约3至6Hz足够分离5次、7次谐波 窗函数 | Hann 或 Blackman | 降低频谱泄漏主瓣宽度可接受 测点布置 | 母线及关键馈线上下游 | 必须同一时刻同步采集这里特别强调一下测点位置。做谐波责任划分时测点不是随便找个地方挂上去就行的。母线往上、往下各要有一个测点而且要保证使用同一个仿真时钟采样否则相位对不齐后面计算谐波有功功率时符号都可能搞反。如果仿真模型规模比较大建议用 Simulink 的信号线标签统一管理测点避免后期手忙脚乱。4. 完整实操流程从仿真波形到谐波分析报告4.1 步骤一搭建算例模型我用一个典型工业配电系统举例方便你照着复现。假设一个10kV系统中性点不接地系统经一台10kV/0.4kV干式变压器给车间母线供电。母线上接有三组负荷一组380V、90kW的变频调速风机一组380V、60kW的线性电阻加热炉一组低压无功补偿电容器容量为100kvar。这个布局很典型变频器是谐波源电容器组是谐波受害者电阻炉是背景负荷。在 Simulink 里按这个拓扑搭建模型。变压器漏抗按标准值设置短路阻抗取6%变频器部分用三相不控整流桥加直流侧电容和电阻负载代替电容器组接成星形中性点不接地。仿真时间设置0.4秒步长10微秒保证可以观察到稳态谐波。测量点放在变压器低压侧母线处、变频器进线处、电容器馈线处三个测点同步采集三相电压和三相电流。4.2 步骤二导出数据并做预处理仿真跑完数据会存在工作区里。我的习惯是直接导出成CSV文件然后交给Python处理。导出时注意保留列名和时间戳方便对齐。CSV里的原始波形数据直接做iPiQ之前要先做三步预处理去掉前0.1秒的暂态段因为合闸冲击会影响频谱检查直流偏移并去除必要情况下对电流波形做轻微平滑去除数值噪声。数据预处理这块容易被忽略但它影响很大。Simulink 的某些数值求解器在开关切换瞬间会产成尖峰如果不过滤FFT之后会在高频段出现一片假谱干扰你对边频带和谐波责任的判断。因此我建议处理数据时先画一遍原始波形肉眼确认没有异常尖峰再往下走。4.3 步骤三用 Python 实现 iPiQ 分解核心的计算环节在 Python 里完成。下面是完整的 iPiQ 分解代码骨架经过我实测可以用import numpy as np import pandas as pd from scipy.fft import fft, fftfreq def clarke_transform(xa, xb, xc): # 等功率 Clarke 变换 alpha np.sqrt(2/3) * (xa - 0.5*xb - 0.5*xc) beta np.sqrt(2/3) * (0.866*xb - 0.866*xc) return alpha, beta def calc_instant_power(va, vb, vc, ia, ib, ic): va_alpha, va_beta clarke_transform(va, vb, vc) ia_alpha, ia_beta clarke_transform(ia, ib, ic) p va_alpha * ia_alpha va_beta * ia_beta q va_alpha * ia_beta - va_beta * ia_alpha return p, q def fft_spectrum(signal, fs): n len(signal) freqs fftfreq(n, 1/fs) mags np.abs(fft(signal)) / n * 2 return freqs, mags # 读取数据 df pd.read_csv(sim_waveform.csv) fs 10000 # 采样频率 p, q calc_instant_power(df[va].values, df[vb].values, df[vc].values, df[ia].values, df[ib].values, df[ic].values) freqs, p_spectrum fft_spectrum(p, fs) freqs, q_spectrum fft_spectrum(q, fs)跑完这段代码你会在 p 和 q 的频谱里看到明显的6次、12次、18次分量。以我上面那个算例为例p 频谱里6次分量幅值约8.3kW12次分量约1.7kWq 频谱里6次分量约12.1kvar。这些数值就是谐波源的指纹。4.4 步骤四谐波责任量化与治理方案验证有了 p、q 频谱之后要做责任划分把三个测点的同频次幅值和方向对齐对比。我这里直接给一个从算例中得到的结果表测点位置 | 5次谐波有功功率 | 7次谐波有功功率 | 谐波方向 母线下游(变频器侧) | 6.8 kW | 1.2 kW | 注入 母线上游(变压器侧) | -5.9 kW | -0.9 kW | 吸收 电容器馈线 | -4.1 kW | -0.6 kW | 吸收这个表非常直观地说明变频器侧是该母线的谐波注入源变压器侧和电容器侧都是谐波被污染方。尤其是电容器馈线上5次谐波有功功率为负说明有谐波电流流进电容器组这正好解释了电容鼓包的原因——5次谐波电流的发热效应叠加在基波容性电流上让电容器长期过载。接下来验证治理方案。针对这个算例我在母线处设计了一组5次、7次单调谐滤波支路。滤波支路参数按最小容量的原则粗算电容器基础容量约40kvar滤波电抗器感抗按5次、7次谐振点反推。在 Simulink 里把滤波支路挂上去重新仿真用同一套 iPiQ 流程再算一遍5次谐波电流从原先的116A降到24A母线THD从11.2%降到3.8%。治理效果直接可见不需要等现场投运。5. 常见问题排查与避坑清单5.1 频谱泄漏导致频点“糊成一片”仿真数据做FFT时如果数据窗口不是工频周期的整数倍就会发生频谱泄漏。50Hz系统的工频周期是20ms采样10kHz意味着每个周期有200个点。如果你取了例如1001个点做FFT窗口就不是整数周期频谱上5次谐波的峰会被摊到相邻频率上看起来又矮又宽。解决办法有三个数据长度严格取工频周期的整数倍加Hann窗抑制旁瓣如果电网频率存在偏移用PLL实时跟踪频率再重采样。最省事的做法是直接用整数周期截取以10kHz采样率取8个周期正好1600个点。我之前犯过用2048个点做FFT的错结果6次分量周围全是“裙边”责任划分误差直接超纲。5.2 采样率不足导致谐波混叠如果仿真步长太大采样率低于谐波频率的2倍高频谐波会折叠到低频段伪造出根本不存在的低频分量。Niqusit定律是底线但工程上我建议采样率至少是最高关注谐波频率的10倍。要看50次谐波频率是2500Hz采样频率至少要25kHz对应的采样周期40微秒。而电磁暂态仿真的步长一般要比采样周期更小所以步长通常设置在10微秒以内否则数值振荡本身就会污染信号。如果仿真规模太大实在撑不住可以把仿真分成两阶段先用大步长跑系统暂态平衡再用小步长重新跑稳态段只导出稳态数据做iPiQ分析。这也是减少计算量的一个实用技巧。5.3 PLL锁相失败导致相位错位iPiQ 计算中所有电压电流必须按同一个时间基准去比较。如果系统频率发生小幅度波动或者电压畸变严重常规的过零检测式PLL会抖动导致相位错位进而让谐波有功功率的正负号出现随机翻转。这个坑一旦踩上责任划分结果就是废的。我推荐两个替代方案一是用同步旋转坐标系锁相环即在一个dq旋转坐标系中让q轴电压归零这个思路对电压畸变的耐受性好很多二是干脆不用PLL直接用 αβ 电压的瞬时相位做参考也就是将电压矢量角度作为参考角。iPiQ 因为已经在αβ坐标系里算了用后一种方案最自然。5.4 三相不平衡干扰瞬时功率分解当系统存在三相不平衡负荷时负序分量会以基波频率反转在 p 和 q 中产生额外的2次波动分量。这个2次分量和真正的二次谐波叠加在一起容易误导判断。处理办法是在做iPiQ之前先做序分量分解把正序、负序、零序电压电流单独提取出来只对正序部分做瞬时功率分析。更简单的手段是延长数据窗口到12个工频周期以上然后用对称分量法在频域里做正负序分离再把负序贡献扣除。我在处理带单相负荷的混合系统时都是先把序分量做完再进iPiQ流程效果稳定。5.5 问题速查表故障现象 | 可能原因 | 解决办法 5次谐波频谱峰又矮又宽 | 窗口长度非周期整数倍 | 取8或16个整周期数据并加Hann窗 p、q频谱高频段大量假峰 | 仿真步长过大 | 步长降到10微秒以下或换更精确求解器 谐波有功功率方向随机变化 | PLL锁相抖动 | 改用瞬时电压矢量角度做同步 基波附近出现2次分量 | 三相不平衡 | 先做序分量分解剔除负序影响 数据量过大导致分析卡顿 | 采样点过多 | 只导出稳定段的整数周期数据放弃暂态段6. 我的经验与可以继续扩展的方向iPiQ 这个方法我用了大概两年多最大的感受是谐波分析这件事工具只是起点真正值钱的是你给数据赋予了什么样的物理意义。光有一张FFT频谱图客户不一定买账但当你拿出一张谐波功率方向表指给客户“你看能量是从变频器这条馈线流出去的电容器只是受害者”时整个沟通难度立刻下降一个量级。给想尝试的同行几个具体建议。第一第一次做的时候完整手写一遍Clarke变换和p、q计算流程别直接套库这样你对中间量才有感觉。第二多测点数据务必同步导出所有测点用同一个时钟源千万不要用仿真结束后手动拼接的数据相位错一点结果就废了。第三滤波支路参数初算之后一定要用 iPiQ 反向验证一遍谐波功率是否降到预期不要只盯着THD一个指标。这套方法的扩展空间也很大。我现在正在把 iPiQ 的 p、q 频谱特征作为输入结合简单的机器学习分类器去识别仿真中的谐波源类型下一步是把它部署到在线电能质量监测终端里让设备能一边采数据一边实时给出谐波溯源结果。这个方向做起来挺有意思的等跑通了再来写后续。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。