我做有源电力滤波器(APF)的仿真模型时,第一版同步部分直接用最常见的 SRF-PLL。电网电压不太差的时候,它看起来没什么问题;一旦把工况改成整流性负载较重、电网阻抗又偏大,电压波形开始畸变,PLL 的输出相位就会跟着抖动。更麻烦的是,电压不平衡一出现,dq 轴电压里会带出明显的二倍频分量,锁相结果和真实基波正序相位之间始终差着一段“说不清”的角度。
这段经历让我重新理解了一个问题:APF 里用 DSOGI-PLL,不是为了把锁相速度做得更快,而是为了让控制回路在畸变和不平衡的电压下,仍然能拿到一个干净的基波正序 dq 基准。这比“锁得快”重要得多。
下面我会把 DSOGI-PLL 的原理、建模步骤、参数设置和实际仿真中容易踩的坑,按从基础到工程落地的顺序拆开讲。这篇主要聚焦在原理与建模,后面再继续展开不同工况下的验证和对比。
1. 为什么 APF 不能只靠 SRF-PLL 锁相
1.1 SRF-PLL 在对称无畸变电压下确实很好用
SRF-PLL 的思路用一个词就能概括:解耦。三相静止坐标先经过 Clarke 变换得到 αβ 分量,再通过 Park 变换转换到同步旋转的 dq 坐标系。只要 d 轴和电网电压矢量对齐,q 轴电压就是零。q 轴电压作为误差信号送给 PI 调节器,PI 输出修正角频率,最后再积分得到相位角。
在理想情况下,这个方案有一个非常好的特性:三相平衡且无畸变时,基波正序电压在 dq 坐标系里是直流,PI 可以做到无静差地锁相。很多三相并网逆变器、PWM 整流器都默认用这种结构,因为场景对称、电压干净,它的性价比最高。
但 APF 的工作环境和普通的并网变流器不完全一样。APF 通常并联在负载附近,负载电流谐波很大,会在系统阻抗上形成谐波压降,导致公共连接点的电压波形发生畸变。如果负载是严重不平衡的,三相电压也会出现不平衡。这时候,SRF-PLL 的输入就不再是单一的正序基波,而是叠加了负序分量和谐波的复合信号。
1.2 SRF-PLL 面对畸变和不平衡时的两个短板
第一个短板是负序分量引起的二倍频扰动。
三相不平衡电压可以分解成正序、负序、零序三组对称分量。负序分量在同步旋转坐标系中会表现为二倍工频的交流量。SRF-PLL 的闭环控制器为了维持 q 轴电压为零,会不断调整输出频率和相位,结果就是锁相角度上叠加了二倍频波动。更关键的是,PLL 输出的相位不仅是控制器的基准,它还会参与 APF 指令电流的坐标变换。相位一抖,谐波补偿指令就会被调制出额外的低频分量,补偿效果直接变差。
第二个短板是谐波电压会直接穿透同步坐标系。
SRF-PLL 的 Park 变换和 PI 调节器本身并不是高性能滤波器。如果电压中含有 5 次、7 次谐波,这些谐波转到 dq 坐标系后会分别变成 6 次、12 次等高频分量。虽然 PI 调节器对高频扰动有一定的抑制能力,但锁相环输出中仍然会残留高频纹波。为了压低这些纹波,可以收窄 PI 带宽,但收窄带宽又会牺牲动态响应,在电压暂降、相位跳变时恢复得很慢。
所以 SRF-PLL 面临的是一个很现实的矛盾:
- 带宽调高,动态响应好,但畸变扰动也容易串进来;
- 带宽调低,抗扰性好,但大扰动后恢复时间变长。
在 APF 里,我们希望锁相环输出的角度尽量只跟基波正序相位相关,其他内容都能在进入 dq 坐标变换之前被处理掉。DSOGI-PLL 的出发点就是:先不要急着把 αβ 坐标变换到 dq 坐标,而是先用滤波和对称分量分离,把基波正序电压提取出来,再去做同步旋转坐标变换。
这样一个看似“多绕了一步”的结构,解决的是基波正序幅值和相位的可观测性问题。也因此,我在看 DSOGI-PLL 时会把它整个拆成三层来理解:
- 第一层:两个 SOGI 正交信号发生器,对 αβ 分量做滤波和正交生成;
- 第二层:通过瞬时对称分量法,计算基波正序 αβ 分量;
- 第三层:把正序 αβ 分量送入 SRF-PLL,完成相位锁定和频率跟踪。
下面逐层展开。
2. SOGI:一个看起来简单,但决定整套系统性能的滤波环节
2.1 SOGI-QSG 的作用是同时给出同相分量和正交分量
SOGI 的全称是 Second Order Generalized Integrator,也就是二阶广义积分器。在 DSOGI 中,它通常被用作正交信号发生器,简称为 SOGI-QSG。
一个标准的 SOGI-QSG 有两个输出:
- 第一个输出跟输入信号同相位,称为同相分量;
- 第二个输出在中心频率处相对输入滞后 90°,称为正交分量。
在频域里,这两个输出可以写成:
[ D(s)=\frac{v_{\alpha}'}{v_{\alpha}}(s)=\frac{k\omega_0 s}{s^2+k\omega_0 s+\omega_0^2} ]
[ Q(s)=\frac{qv_{\alpha}'}{v_{\alpha}}(s)=\frac{k\omega_0^2}{s^2+k\omega_0 s+\omega_0^2} ]
其中 (\omega_0) 是 SOGI 的中心角频率,(k) 是阻尼系数。
从传递函数能看出:
- (D(s)) 是一个带通滤波特性,在中心频率处增益为 1,相位为 0;
- (Q(s)) 在中心频率处增益为 1,相位正好滞后 90°。
换句话说,当输入信号是频率等于 (\omega_0) 的正弦波时,SOGI 输出不会改变它的幅值,也不会给同相支路引入相位偏差。这是整套结构能够工作的重要前提。如果 (\omega_0) 与实际电网频率不一致,SOGI 本身的输出就会出现幅值和相位误差,后面需要对中心频率做自适应处理。
2.2 阻尼系数 k 决定的是滤波宽度和动态速度之间的取舍
对 SOGI 来说,真正需要用户决策的关键参数就是 (k)。
(k) 取大,闭环极点离虚轴更远,响应更快,但频带也会更宽,意味着与中心频率靠近的谐波更难被衰减干净。
(k) 取小,滤波效果更好,系统更“钝”,输入突变后输出需要更长的时间才能稳定。
文献和工程实现中,最常见的一组取值是:
| k 的取值 | 滤波器特性 | 适合场景 |
|---|---|---|
| 0.5 | 带宽窄,谐波抑制较好,动态慢 | 电压畸变较严重,对动态速度要求不高 |
| √2 | 临界阻尼附近,均衡 | 大多数 APF 仿真和样机调试的起点 |
| 2 | 带宽宽,响应快,高次谐波残留较多 | 电压比较干净但要求快速暂态响应 |
实际仿真时,我建议先从 (k=\sqrt{2}) 开始,不要一上来就去追求极端窄带。原因很现实:SOGI 和 PLL 是级联闭环,SOGI 的动态会直接影响 PLL 的观测精度。如果 SOGI 本身调得特别“钝”,PLL 动态响应会被拖得很慢。你需要在补偿效果和动态响应之间找到一个可接受的中间点。
另外还要注意一点:SOGI 的滤波能力不是无限的。它适合抑制低次谐波和噪声,但一旦输入中存在靠近中心频率的间谐波或频率缓慢漂移的干扰,SOGI 很难把它们彻底滤除。真正严重畸变的场合,还要考虑更高阶的滤波器或锁相环前置处理。
2.3 SOGI 也需要考虑离散化实现
DSOGI-PLL 的原理图通常用连续系统表示,但仿真和 DSP/FPGA 实现都要离散化。
常见做法是使用 Tustin 双线性变换,将连续积分环节映射到 z 域。由于双线性变换在接近奈奎斯特频率附近会出现频率畸变,若控制器的采样频率不高,需要考虑预畸变处理。预畸变的核心公式是把目标角频率 (\omega_0) 修正为:
[ \omega_{pre}=\frac{2}{T_s}\tan\left(\frac{\omega_0 T_s}{2}\right) ]
如果采样频率是 10 kHz 或更高,50 Hz 中心频率下预畸变修正量并不大;但如果采样频率降到 1 kHz,这个修正就不容忽视了。
还有一个很容易忽略的问题:SOGI 内部包含积分器,输入信号如果叠加了直流偏置,会在积分器里造成稳态偏差,进而影响正交输出。虽然电网电压本身一般不会携带大直流分量,但在故障后暂态或某些特殊负载条件下,ADC 采样偏移、地电位波动都可能引入直流分量。此时需要在采样环节或 SOGI 内部增加隔直处理,不能把问题全丢给 SOGI。
3. DSOGI 的关键:两个 SOGI 如何联合提取基波正序分量
3.1 在 αβ 坐标系中做瞬时对称分量分离
单相系统里要区分正序、负序比较麻烦,但三相系统里有成熟工具:对称分量法。
传统对称分量法是对相量做复数运算,适合稳态分析。DSOGI-PLL 需要在时域中不断更新输出,所以通常采用瞬时对称分量法在 αβ 坐标系里直接做正序分量分离。
假设三相电压经过 Clarke 变换后得到 (v_\alpha) 和 (v_\beta)。在不平衡工况下,这两个分量里既包含正序基波,也包含负序基波和谐波。可以统一写成:
[ v_{\alpha\beta}^{(+)}=\frac{1}{2} \begin{bmatrix} 1 & -q \ q & 1 \end{bmatrix} v_{\alpha\beta} ]
其中 (q) 代表一个相位滞后 90° 的时域算子。在 DSOGI-PLL 里,这个 (q) 算子正好由 SOGI-QSG 的正交输出实现。
对应的负序分量分离公式是:
[ v_{\alpha\beta}^{(-)}=\frac{1}{2} \begin{bmatrix} 1 & q \ -q & 1 \end{bmatrix} v_{\alpha\beta} ]
从控制框图来看,DSOGI 做了这样几件事:
- 对输入