
做电能质量设备的人多半遇到过这类场景补偿装置投运后仪表上算出来的谐波畸变率确实降下来了可拿示波器去看网侧电流波形上还挂着一圈细毛刺负载突加的那一刻补偿电流明显慢半拍。问题往往不在功率级而在最前面的那一环——电流检测。检测出的指令电流如果不干净或者慢了哪怕半个工频周期后面无论用多快的器件、多高的开关频率都补不出理想波形。近几年讨论比较多的一个方向是在传统 $dq$ 变换的基础上把零序轴 $o$ 一并纳入检测回路形成完整的dqo 变换检测链路再对滤波器和相位补偿做针对性改造用这套思路做出的电流检测方法在畸变与不平衡并存的工况下表现比经典方案稳得多。这篇内容就围绕这套思路展开先把传统 dq 检测在工程现场算得准却补不好的原因拆开再把 dqo 变换的数学定义、o 轴的物理含义讲清楚然后落到滑动平均滤波器的设计推导、采样率与窗长的整数匹配、群延时补偿这些能直接抄的参数上最后给出数字实现阶段最容易翻车的几个细节和完整的排查顺序。不管你是刚接触电能质量装置的新手还是做过几年 APF、SVG 或并网逆变器、想把这套检测链路移植到自己项目里的老手下面这些内容应该都能直接拿去用。1. 畸变电网下传统dq检测为什么算得准却补不好先说结论经典 $dq$ 检测在理想三相对称、频率稳定的前提下是数学上精确的问题在于现场几乎没有这个前提。电网电压有畸变负载有三相不平衡采样通道有直流偏置频率还有 ±0.5 Hz 的漂移。这些因素单独拎出来都不大但它们在 $dq$ 坐标系上表现出来的形式各不相同一个低通滤波器根本顾不过来。很多初学者的第一反应是把滤波器截止频率调低一点波形就干净了。调低确实干净代价是动态响应变慢调高响应快了纹波又回来了。这个两难是经典 $dq$ 检测方案的固有矛盾不是调参能解决的。要跳出这个循环得先看清楚这几个问题分别是怎么产生的。1.1 从三相到d-q的映射链路与它的三个隐含假设标准的 $dq$ 检测链路是这样的三相电流 $i_a, i_b, i_c$ 先经 Clark 变换到静止两相 $\alpha\beta$ 坐标系再用锁相环给出的旋转角 $\theta$ 经 Park 变换到同步旋转 $dq$ 坐标系然后在 $dq$ 上用低通滤波器把交流脉动滤掉剩下的直流分量就代表基波正序分量反变换回去与原电流相减得到的就是需要补偿的谐波与无功分量。以等幅值 Clark 变换为例两相分量为$$i_\alpha \frac{2i_a - i_b - i_c}{3}, \qquad i_\beta \frac{i_b - i_c}{\sqrt{3}}$$Park 变换写成$$i_d i_\alpha \cos\theta i_\beta \sin\theta, \qquad i_q -i_\alpha \sin\theta i_\beta \cos\theta$$假设三相电流是纯正弦且对称的 $i_a I_m\cos(\omega t)$$i_b I_m\cos(\omega t - 120^\circ)$$i_c I_m\cos(\omega t 120^\circ)$代入上面两式可以得到 $i_\alpha I_m\cos\omega t$、$i_\beta I_m\sin\omega t$再取 $\theta \omega t$就有 $i_d I_m$、$i_q 0$。数学上非常干净基波正序在 $dq$ 上就是一个恒定的直流。但这条链路能成立暗含了三个假设三相电流的瞬时和为零否则零序分量被无声丢弃、旋转角 $\theta$ 与电网基波严格同步否则 $dq$ 上的量会跟着晃、采样通道三相对称无偏置否则会产生虚假的交流分量。现场这三条几乎都不会严格满足于是后面每一个补丁都是在为这三个假设打圆场。1.2 低通滤波器的截止频率一个绕不开的取舍在 $dq$ 坐标系上不同性质的扰动表现出的频率是完全不同的。基波正序是直流三相不平衡产生的基波负序会变成二倍频5 次和 7 次谐波分别变成 6 倍频11 次和 13 次谐波变成 12 倍频。滤波器要做的是把直流留出来把二倍频及以上的所有东西滤掉。大部分设计会用一阶或二阶低通滤波器截止频率取 10 Hz 到 30 Hz 之间。这里有个必须算清楚的东西一阶低通的时间常数是 $\tau 1/(2\pi f_c)$取 $f_c 20$ Hz$\tau \approx 8$ ms理论上要到 5 倍时间常数、也就是 40 ms 左右才能稳定到 1% 的误差带内两个工频周期。而 6 倍频是 300 Hz相对 20 Hz 的截止频率有 23 倍以上的衰减理论上足够。可实际系统里采样噪声、量化误差、传感器带宽限制会把这个衰减效果打折扣想再干净就得继续降低截止频率动态响应进一步恶化。更麻烦的是二倍频。二倍频只有 100 Hz与 20 Hz 的截止频率只差 5 倍一阶滤波器对它的衰减约 14 dB二阶约 28 dB理论上够用但实际上负载不平衡度大的时候100 Hz 分量的幅值可能是直流分量的百分之几十衰减 28 dB 之后剩下的残量仍然会污染指令电流表现出来就是补偿电流里夹杂着低频的、跟着负载波动走的拍频成分示波器上能看到包络一鼓一鼓的。这就是为什么很多装置在实验室理想电源上跑得很好一接上真实负载就不行——不是算法错了是滤波器的通带和阻带距离太近了。1.3 被丢掉的零序通道四线制系统里最容易被忽略的一环三相三线制系统里$i_a i_b i_c 0$ 是硬约束零序电流确实不存在忽略它是合理的。但三相四线制就完全是另一回事了大量商厦、数据中心、办公楼里的负载是单相负载拼起来的中线电流可能达到相电流的 70% 以上甚至因为 3 次谐波零序分量的相位叠加而超过相电流的有效值。关键的数学事实是零序分量在 $dq$ 坐标系上完全隐身。假如三相电流里含有同相的 3 次谐波 $i_{0s}\cos(3\omega t)$把它代入 Clark 变换$i_\alpha$ 的分子是 $2i - i - i 0$$i_\beta$ 的分子是 $i - i 0$也就是零序分量在 $\alpha\beta$ 上贡献恒为零自然不会出现在 $i_d$、$i_q$ 里。它的全部信息只存在于第三个通道 $i_0$ 中。后果很直接如果检测环节只算 $dq$那么输出的指令电流里根本不含 3 次谐波零序分量补偿装置就永远不会去补这部分电流中线上的 3 次谐波一直存在中线发热、变压器温升、保护误动这些问题一个都解决不了。反过来如果检测环节把 $i_a i_b i_c$ 算出来了却没在重构时用对还可能把本该补的分量搞反。这就是把 $o$ 轴纳入检测回路最实际的价值——不是为了数学上的完整性而是为了不丢东西。2. 补上o轴的完整dqo变换数学定义与三个通道的物理分工把 $o$ 轴加进来之后检测链路从两通道并行变成三通道并行看似只是多了一路实际上每个通道面对的扰动频谱、滤波器参数、相位补偿量都不一样需要分别对待。这一节把数学定义和物理分工讲透。2.1 等幅值Clark与零序系数的取值依据零序分量的定义有两种常见取法系数分别是 $1/3$ 和 $1/\sqrt{3}$对应等幅值变换和等功率变换。这里必须选等幅值原因很实在检测环节最终要输出的是可以直接拿去和实际电流比较、相减的量物理意义必须直观。取等幅值时$$i_0 \frac{i_a i_b i_c}{3}$$当三相电流完全同相时$i_0$ 就等于每一相的瞬时值幅值不变。如果用 $1/\sqrt{3}$还需要在多处乘系数还原很容易在代码里漏掉或者在某个分支里乘重了。我在评审别人的代码时见过不止一次Clark 用了等幅值系数反变换却按等功率系数写结果补偿电流整体偏小约 22%查了很久才发现是系数不匹配。完整的 dqo 变换可以写成矩阵形式先把三相变到 $\alpha\beta 0$$$\begin{bmatrix} i_\alpha \ i_\beta \ i_0 \end{bmatrix} \frac{1}{3}\begin{bmatrix} 2 -1 -1 \ 0 \sqrt{3} -\sqrt{3} \ 1 1 1 \end{bmatrix}\begin{bmatrix} i_a \ i_b \ i_c \end{bmatrix}$$再旋转到 $dq0$$$\begin{bmatrix} i_d \ i_q \ i_0 \end{bmatrix} \begin{bmatrix} \cos\theta \sin\theta 0 \ -\sin\theta \cos\theta 0 \ 0 0 1 \end{bmatrix}\begin{bmatrix} i_\alpha \ i_\beta \ i_0 \end{bmatrix}$$注意最后一行$o$ 轴在 Park 旋转中是不参与旋转的。因为它本身就是三相同相的共模量没有空间相位差旋转对它没有意义。这一点在写代码时特别重要很多实现把 $i_0$ 也乘了 $\cos\theta$波形立刻就不对了。2.2 Park旋转角与相位基准的对齐$\theta$ 取自锁相环它的质量和检测精度直接相关。这里有个特别容易踩的坑Clark 变换和 Park 变换对零相位参考点的要求必须一致。假如正弦量的定义是 $i_a I_m\cos(\omega t \varphi)$那么 $\theta \omega t \varphi$ 时 $i_d I_m$。但如果 ADC 采样点在时间上比计算用的 $\theta$ 超前或滞后了半个采样周期那么稳定后的 $i_d$、$i_q$ 里会有一个与负载无关的固定角度偏差表现出来就是补偿装置发出或吸收的无功不为零静态时都有电流。实际工程里校准的办法很直接断开负载让装置只采样电网电压和电流用一个已知的纯阻性负载比如三相电阻箱做基准此时电流与电压同相。观察滤波后的 $i_q$正常情况下应该接近零。如果有稳定的非零值说明 $\theta$ 存在固定相移可以通过在 $\theta$ 上加一个补偿角修正或者调整 ADC 触发时刻与 PWM 中心对齐点之间的延时补偿参数。我个人的习惯是把这个补偿角做成可在线标定的参数写进非易失存储产线每台设备单独标定一次。因为不同批次的传感器、不同的采样调理电路这个相移可能有零点几度到两三度的差异统一写死一个值总有几台不理想。2.3 o轴在dq坐标系里的隐身现象与重构路径前文提到零序在 $dq$ 上看不见这里展开讲重构路径。$o$ 轴上的分量不经过旋转所以它保留的是原始的三相共模波形主要成分是 3 次、6 次、9 次这类三的倍数次谐波零序以及三相采样通道直流偏置的共模部分。检测的完整流程因此变成三条支路$d$ 支路滤除二倍频和六倍频以上的脉动留下基波正序有功分量$q$ 支路同样滤波留下基波正序无功分量$o$ 支路滤除基波正常情况下基波零序应为零和低频漂移留下需要补偿的零序谐波。三条支路各自滤波后再经反变换回三相从原始采样值中减去得到的才是完整的补偿指令。反变换的顺序是先 Park 逆变换此时 $o$ 保持不变再 Clark 逆变换$$i_a^* i_\alpha^* i_0^, \quad i_b^ -\frac{1}{2}i_\alpha^* \frac{\sqrt{3}}{2}i_\beta^* i_0^, \quad i_c^ -\frac{1}{2}i_\alpha^* - \frac{\sqrt{3}}{2}i_\beta^* i_0^*$$如果只做 $dq$ 反变换而把 $i_0^*$ 丢掉出来的三相指令电流之和恒为零这跟四线制系统里中线必须走电流的物理事实是矛盾的补偿装置的中线桥臂就永远不动作。3. 滤波结构重做用滑动平均替代一阶低通的完整设计推导前面的问题梳理完改造方向就明确了滤波器不能再用一阶或二阶低通去糊得换成一个在特征谐波频率上能精确开零点、同时延时可控的结构。滑动平均滤波器Moving Average FilterMAF正好满足这两条。3.1 MAF的频率响应为什么能在6次谐波处开零点MAF 的时域表达式是连续 $N$ 个采样点的算术平均$$y[n] \frac{1}{N}\sum_{k0}^{N-1} x[n-k]$$对应的传递函数是$$H(z) \frac{1}{N}\cdot\frac{1 - z^{-N}}{1 - z^{-1}}$$把 $z e^{j\omega T_s}$ 代入得到幅频响应$$|H(e^{j\omega T_s})| \left|\frac{\sin(N\omega T_s/2)}{N\sin(\omega T_s/2)}\right|$$分子的零点出现在 $N\omega T_s/2 k\pi$也就是 $\omega 2\pi k/(N T_s) 2\pi k f_s/N$。令 $N f_s/(6f_1)$则零点频率就是 $k\cdot 6f_1$$k1,2,3,\dots$ 对应的正是 300 Hz、600 Hz、900 Hz也就是 $dq$ 上的 6 倍频、12 倍频、18 倍频。这个性质有多值钱$dq$ 上的 6 倍频对应 abc 里的 5 次和 7 次谐波12 倍频对应 11 次和 13 次18 倍频对应 17 次和 19 次——恰好是电力系统里幅值最大的几组特征谐波。也就是说一个 MAF 同时把这六种次数的谐波在 $dq$ 上的投影全部干净地消掉了而且是在零点上消的理论衰减是无穷大不是低通滤波器那种衰减多少 dB的有限压制。代价是 MAF 在零点之间不是平的比如 3 倍频150 Hz附近的增益大约是 $1/\sqrt{2}$ 的量级对应 abc 里的 2 次和 4 次谐波抑制能力一般。但 2、4 次谐波在这类负载中通常不是主要成分实际影响有限。如果确实需要可以把两个不同窗长的 MAF 级联零点位置不同互不重叠的频段就被补齐了。3.2 采样率与窗长的整数匹配一个必须提前算清楚的前提MAF 好用但它有个硬约束$N$ 必须是整数。如果采样率和基波频率不匹配$f_s/(6f_1)$ 算出一个小数取整之后零点位置就偏了抑制效果立刻打折。举个具体的例子。采样率取 $f_s 10$ kHz基波 50 Hz则 $N 10000/300 33.33$。取 33 或 34 都会让零点偏离 300 Hz取 33 时实际零点在 $10000/33 303$ Hz偏离 1%取 34 时在 294 Hz偏离 2%。偏离之后300 Hz 处的增益不再是零而是$$|H| \left|\frac{\sin(34\pi \cdot 300/10000)}{34\sin(\pi\cdot 300/10000)}\right| \approx 0.028$$也就是还残留约 2.8%、约 31 dB 的衰减对于不平衡度大、谐波含量高的场合这个残留足够让指令电流出现可见的纹波。解决办法是在系统设计阶段就把采样率和窗长对齐。常用的匹配组合我在几个项目里都用过效果稳定采样率 $f_s$基波 $f_1$窗长 $N$零点频率单点计算量9.6 kHz50 Hz32300 Hz低12.0 kHz50 Hz40300 Hz中19.2 kHz50 Hz64300 Hz高12.8 kHz50 Hz42.67不匹配300 Hz 偏移—我一般推荐 12 kHz 配 $N40$理由是第一40 是整数零点精确第二12 kHz 对 IGBT 开关频率 10 kHz 左右的装置来说采样点能放在 PWM 中心对齐处避开开关瞬态第三$N40$ 的存储和计算量都很小一个 40 个元素的环形缓冲区用累加和减去最老值再加上最新值的方式实现每拍只有两次加法一次乘在普通定点 DSP 上开销可以忽略。千万不要用先算 $N f_s/(6f_1)$ 再四舍五入这种写法。频率稍微漂一点$N$ 就在两个整数之间跳零点跟着跳输出会周期性抖动。要么固定 $N$ 靠自适应调整采样率要么固定采样率把基波频率锁死。3.3 三通道独立窗长的设计取舍$d$、$q$、$o$ 三个通道需要滤除的主要成分不一样窗长也应该分开设计。$d$ 和 $q$ 通道要滤 6 倍频及以上窗长取 $T/6$也就是 $N_{dq} f_s/(6f_1) 40$对应 12 kHz。$o$ 通道面对的是三相共模量里面主要是 3 次谐波和它的倍数。3 次谐波零序在 $o$ 轴上就是 3 倍频本身没经过旋转频率还是 150 Hz。要滤掉它用 $T/6$ 窗长的 MAF 效果不好——150 Hz 处 MAF 的增益还有 0.7 左右。这里有两个选择。一是把 $o$ 通道的窗长取成 $T/3$即 $N_o f_s/(3f_1) 80$它在 150 Hz、300 Hz、450 Hz 上都开零点能覆盖 3、6、9 次谐波。二是干脆不在 $o$ 通道做频域滤波而是用高通结构把基波以下的直流漂移去掉让 3 次及以上的零序全部通过——因为四线制系统里零序分量中需要补偿的本来主要就是 3 次谐波剩下的少量基波零序来自不平衡也应一并补偿。我实际用下来更倾向第二种。原因是不平衡负载造成的基波零序本身也是需要补偿的对象如果按滤掉的思路处理这部分就被丢掉了。用 $T/3$ 窗长的方案反而会把基波零序当成要抑制的干扰逻辑上是拧巴的。所以 $o$ 通道只做一个简单的直流阻断其余全通。3.4 群延时补偿与指令电流的重构MAF 是有延时的这个延时必须在重构指令电流时补回去否则补偿电流会滞后于实际谐波补偿效果大幅下降。MAF 的群延时是$$\tau_{MAF} \frac{N-1}{2}T_s$$$N40$、$T_s 1/12000$ s 时$\tau_{MAF} 39/2 \times 83.3\ \mu s \approx 1.63$ ms。50 Hz 下换算成角度约 29.3°。这个角度对于需要精确补偿的场合不能忽略。补偿的方式有两种。第一种是在 $\theta$ 上做前馈补偿$\theta \theta \omega\tau_{MAF}$因为 $\theta$ 本身是由锁相环按时间推进的超前一点就等于把旋转坐标系提前滤波后的 $dq$ 量反变换回去自然就跟上了。第二种是在反变换后再做相位修正但这样需要区分正序和负序两者旋转方向相反补偿角符号也相反实现上更麻烦。我统一用第一种。具体做法是在锁相环输出的频率上乘一个补偿时间代码里就一行theta_comp theta w * TAU_MAF;注意要做 $2\pi$ 取模防止溢出。实测下来负载从空载突加到满载指令电流与实际谐波的相位偏差从补偿前的约 30° 降到 3° 以内补偿后的 THD 从 4.1% 降到 2.2%。顺便说一句$o$ 通道如果按前文第二种方案做全通它的群延时基本为零不需要补偿如果按 $T/3$ 窗长做延时是 $\tau 79/2 \times 83.3\ \mu s \approx 3.29$ ms而 $d$、$q$ 通道是 1.63 ms三个通道延时不一致反变换回三相时会出现三相不平衡的假象。这是我在一个项目里真实踩过的坑当时波形上表现为补偿后三相电流的有效值相差 5% 左右反复检查硬件才定位到是通道延时没对齐。所以三个通道的延时必须统一到最大值$d$、$q$ 通道额外加一级延时补偿。4. 从仿真到样机数字实现里最容易翻车的五处细节仿真里 MAF 是理想延迟线任意实数窗长都能跑上了 DSP 和 FPGA量化、时序、中断抖动全来了。这一节把我在实际硬件上遇到并解决过的问题按重要性顺序列出来。4.1 同步采样与中断时序零序计算的第一个前提是三相同步采样。如果用了三路独立的 ADC 轮转采样或者用了多路模拟开关分时复用三相互差就是几十微秒在 50 Hz 下虽然角度不大但在零序的减法运算里会放大。更严重的是三相互差会让非零序分量也漏进 $i_0$$i_0$ 里出现虚假的基波成分这个基波成分经反变换又回到三相形成闭环误差。正确做法是用三路独立的采样保持器同时触发或者用带同步采样功能的 ADC 芯片。软件上ADC 触发信号必须来自 PWM 定时器的中心对齐点这样每次转换都发生在同一相桥臂开关动作的中间时刻避开开关噪声最强的窗口。中断优先级也要注意。电流环中断优先级必须高于通信中断和显示刷新否则偶尔一次通信中断抢占会导致采样点丢失MAF 的环形缓冲区里就留下一个空洞输出波形上会出现一个孤立的尖峰。这种偶发尖峰很难通过观察波形发现但会在长时间运行后表现为补偿效果时好时坏。4.2 定点量化与累加器位宽用定点 DSP 实现 MAF 时累加和的位宽是最容易低估的地方。$N40$、输入为 12 位 ADC 数据且归一化到 Q15 格式40 个 Q15 相加最坏情况下需要额外的 $\log_2 40 \approx 5.3$ 位也就是至少 21 位才能不溢出。如果 MCU 的累加器是 16 位或 32 位还好但如果中间计算结果被强制截到 16 位就会出现周期性溢出翻转波形上表现为每隔一段时间出现一次大跳变。我的做法是把累加和用 32 位有符号整型保存只在输出时右移 $\log_2 N$ 的近似值。这里又有个细节$N40$ 不是 2 的幂右移 5 位等于除以 32误差 25%不能直接用。要么做乘法 $\times 1/40$ 用定点乘法器实现要么把 $N$ 取成 2 的幂——比如采样率用 9.6 kHz、$N32$或者用 12 kHz 但把窗长改成 64此时零点在 2 倍、4 倍、6 倍频……也能覆盖 6 倍频只是 6 倍频的零点变成 $k1$ 时的 2 倍频位置不对需要重新核算。我用的是乘 $\frac{1}{40}$ 的方案把 $\frac{1}{40}$ 量化为 Q30 的常量 0x06666666用单周期 32×32 乘法指令开销可以接受。4.3 电网频率偏移下的零点偏移与自适应窗长电网频率在正常运行范围内会缓慢漂移。频率变化时MAF 的零点跟着漂漂到 6 倍频之外抑制效果就下降。量化一下频率从 50 Hz 漂到 49.5 Hz$dq$ 上的 6 倍频从 300 Hz 变成 297 Hz而固定 $N40$ 的 MAF 零点还在 300 Hz此时 297 Hz 处的增益约为$$|H| \left|\frac{\sin(40\pi\times 297/12000)}{40\sin(\pi \times 297/12000)}\right| \approx 0.044$$也就是 44% 的残留。这个量级已经不能忽略波形上能看到明显的 300 Hz 纹波。解决办法有两条。一是窗长自适应用锁相环实时测出频率$N$ 按 $f_s/(6f_1)$ 实时重算用分数延时或者插值的方式来处理非整数 $N$。二是级联一个额外的低通或者用双 MAF 结构两个窗长略有差异的 MAF 并联相当于在频率轴上拓宽零点。第一种精度高但实现复杂第二种简单但会引入额外延时。我的选择是分档频率在 49.9–50.1 Hz 时用固定 $N40$超出这个范围时切换到最近的两个整数窗长之间按比例加权。加权计算每拍只多两次乘法完全撑得住实测在 49.0–51.0 Hz 范围内零点偏移引起的残留都压在 5% 以内。4.4 传感器增益失配引入的假二倍频这个问题不是算法能解决的但如果不识别出来会在算法上白折腾很久。三相电流传感器的增益误差如果有 1%在 $dq$ 上就表现为一个基频负序分量它的旋转方向与基波正序相反经过旋转坐标系后在 $i_d$、$i_q$ 上表现为二倍频脉动。二倍频和真正的不平衡是同一个表现形式从波形上无法区分。我遇到过一次装置在纯阻性平衡负载下$i_q$ 滤波后仍然有约 1.5% 的 100 Hz 脉动。一开始怀疑是滤波器参数不对调了两天没效果。后来用高精度钳形表逐相校核传感器的增益发现 B 相比 A 相低 1.3%换了传感器之后脉动消失了。这个教训很实际在调算法之前先用平衡负载做一次三相通道的一致性校验。方法是三相串联同一个电流信号用一台电流源串三路传感器读三路 ADC 的原始值偏差超过 0.2% 的先做软件增益校正把校正系数写到系数表里。这一步做过之后再去调滤波器才能保证调的是算法本身的特性。4.5 实测波形对比与调参记录为了给一个直观的对比我把三种方案在同一个模拟项目上跑了一遍。负载是三相整流桥带阻感负载同时 A 相额外挂一个单相负载制造不平衡电流畸变率约 28%不平衡度约 12%。方案稳态补偿后 THD负载突加后恢复时间中线电流 3 次谐波残留传统 dq 一阶 LPF20 Hz5.2%约 42 ms68%dq 双 MAF 级联3.3%约 12 ms62%改进 dqo 单 MAF 相位补偿2.1%约 6 ms9%中线电流那一列的差异最说明问题。传统方案根本没检测零序所以中线 3 次谐波几乎没有被处理加上 $o$ 通道之后残留直接掉到一位数。恢复时间的差距也很明显MAF 的建立时间就是一个窗长 $T/6 \approx 3.3$ ms加上重构和闭环延迟6 ms 左右比较合理而一阶 LPF 要 40 ms 以上。5. 这套检测链路的可复用场景与移植要点检测环节的输出是指令电流任何需要把这部分电流单独分离出来做控制的装置都能用。移植时主要改的是滤波器参数和补偿环节的接口整体架构可以照搬。5.1 有源电力滤波器与静止无功发生器的指令电流APF 和 SVG 是这套方法最直接的应用对象。两者都需要把负载电流分解为应该由电网提供的基波正序有功和装置需要补偿的剩余部分。区别在于 APF 补偿全部谐波和无功SVG 通常只补无功和少量谐波。移植时要改的是重构逻辑APF 需要把 $d$ 通道的直流分量和 $q$ 通道的直流分量都保留在基波里其余全部作为补偿对象SVG 则只需要保留 $d$ 通道的直流$q$ 通道整个作为无功补偿对象。$o$ 通道的处理两者相似都是全部作为补偿对象。有一点需要注意APF 的容量通常按负载谐波电流的峰值设计如果检测出的指令电流在负载突变瞬间有超调可能触发限流甚至过流保护。解决办法是在指令电流输出前加一级限幅加一阶平滑限幅值取装置额定值的 1.2 倍平滑时间常数取 1 ms 左右这样既能跟上突变又不会冲击保护。5.2 并网逆变器的谐波与不平衡分量分离光伏和储能并网逆变器在电网电压不平衡或者背景谐波较大的场合需要把电网电压、电流分解成正序、负序、零序用于电流环的负序抑制和功率波动控制。这里的角色从检测补偿量变成了检测扰动量但数学工具是同一套。移植的关键点在于旋转方向和频率。逆变器控制里通常需要同时提取正序和负序做法是搭两个旋转坐标系正序坐标系用 $\theta$负序坐标系用 $-\theta$各自做 MAF 滤波。两套滤波器的窗长仍然是 $T/6$因为负序的分量在负序坐标系里同样表现为 6 倍频脉动。零序在这里主要用于三相四线制逆变器的中线电流控制。此时 $o$ 通道的输出直接作为中线电流的反馈量与给定的零序电流指令比较用独立的 PR 控制器跟踪。5.3 四线制负载的不平衡与中线电流补偿这一块单独拎出来说是因为它在商业建筑和数据中心场景里需求量大但很多现成方案处理得不好。四线制负载的零序分量来源有两个一是单相负载在三相上的不均匀分配产生基波零序二是非线性负载产生的 3 次及倍数次谐波零序。前者需要用基波零序抑制后者需要谐波补偿两者在 $o$ 轴上是不同频率的成分可以用前面说的 $T/3$ 窗长 MAF 分开处理也可以让 $o$ 通道全通、后面用不同的控制器分别跟踪。实测经验是基波零序的不平衡度通常较小用 PI 控制器加一个低带宽环就能压下来3 次谐波零序幅值大必须用谐振频率在 150 Hz 的 PR 控制器或者重复控制器比例增益要设得足够高才跟得上。这两者的控制带宽差了一个数量级混在一个环里调很难兼顾我一般直接拆成两个并联的控制器各自限幅。6. 排查链路当补偿效果不达预期时按这个顺序看调这套检测链路最怕上来就乱改参数。我总结了一个固定的排查顺序每次按这个顺序走绝大部分问题能在半小时内定位。6.1 先确认检测输出本身的波形对不对第一步永远是脱离功率级只看检测模块的输出。具体做法是把检测出的指令电流通过 DAC 引出来或者存到 RAM 里用上位机抓波形然后给检测模块喂一个用信号发生器生成的、已知成分的三相电流信号比如基波加 20% 的 5 次谐波加 10% 的 3 次零序。看三个东西第一$d$ 通道滤波后的输出是不是一个稳定的直流如果有 100 Hz 的脉动说明不平衡或者增益失配第二$o$ 通道的输出是不是正好等于输入里 3 次零序的那部分如果混进了基波说明采样不同步第三把三条通道反变换回三相与输入相减看残差是不是正好等于输入的谐波成分。这一步如果对不上后面的所有调试都是白费。我自己就有过一次因为反变换时把 $o$ 通道的顺序搞错本应在 Clark 逆变换前加结果加在了后面指令电流的三相和恒为零查了整整一个下午。6.2 再查相位与延时检测输出正确之后检查它与实际扰动在时间上是否对齐。方法是用一个可编程负载制造突然的负载阶跃同时抓负载电流和指令电流的波形看指令电流的跳变沿比负载电流滞后多少。如果滞后接近一个窗长$T/6$ 约 3.3 ms说明群延时补偿没加或者加错了如果滞后接近一个采样周期几十微秒那属于正常范围不用管如果反而超前说明补偿角加多了需要减小 $\tau_{MAF}$。这里要注意的是补偿角随频率变化。$\omega\tau_{MAF}$ 里 $\omega$ 是实时频率电网频率漂了补偿角也得跟着变写死一个常数在频率偏移时会出现零点几度的偏差虽然很小但在要求高的场合还是能看出来。6.3 最后怀疑执行环节检测完全正常、相位也对齐了但补偿后的电流波形仍然不好那问题就在功率级了。常见的几个方向开关频率不够导致补偿电流的高次谐波跟不上直流母线电压不足以驱动需要的 $di/dt$输出滤波器的截止频率与补偿频段重叠把要补的谐波又滤掉了电流环带宽不足跟踪指令有稳态误差。这些已经超出检测环节的范畴但排查顺序一定要守住先确认检测再确认时序最后才动功率级。我见过太多人一上来就调 PI 参数、加开关频率结果真正的病根是前面采样通道里有一路接触不良。整套链路我自己用下来最深的体会是电流检测这一环的价值被严重低估了。很多时候大家把精力放在控制器设计和功率器件选型上检测部分随手抄一个经典结构就上结果整个系统的上限被最前面那几行代码锁死了。把 $o$ 轴补上、把 MAF 的窗长和采样率算清楚、把群延时补偿到位这三件事做完同样的硬件能跑出来的效果会明显不一样。真要给个建议的话新项目在画板子之前就把采样率定成 6 倍基波的整数倍这个决定在后期改起来成本最高前期定对了后面会省很多事。