ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

DSOGI-PLL原理与工程实现:从SOGI正交信号到有源电力滤波器锁相

2026/9/4 5:04:53 拓冰建站 浏览量
DSOGI-PLL原理与工程实现:从SOGI正交信号到有源电力滤波器锁相 各位做电能质量、有源电力滤波器APF或者并网逆变器控制的朋友大家好。在《有源电力滤波器专题1-DSOGI-PLL原理建模分析上》中我们推导了同步参考坐标系锁相环SRF-PLL的数学模型解释了为什么在三相电压不平衡或者波形畸变时传统锁相环输出的相位和频率会存在较大纹波。我们也引出了DSOGI-PLL的核心思想先用二阶广义积分器SOGI构造静止坐标系下的正交信号再通过对称分量法提取正序分量最后送到SRF-PLL完成锁相。本文是该专题的下半部分将集中精力解决工程落地问题。我们会重点完成以下四件事对比DSOGI-PLL与传统SRF-PLL在电网不平衡、谐波污染工况下的表现差异。推导SOGI正交信号发生器QSG的传函搞清楚它的带宽、阻尼比和滤波特性到底由哪些参数决定。完成DSOGI-PLL的完整离散化建模并给出可以在Simulink或C代码中直接使用的实现方式。基于有源电力滤波器的实际应用场景讨论参数整定方法、正负序分离、仿真验证步骤以及常见调试坑点。本文内容偏向工程建模与控制实现建议读者具备一定的自动控制原理和坐标变换基础。如果你是刚接触APF的初学者建议先复习一下 Clarke 变换、Park 变换以及瞬时无功功率理论这样阅读起来会顺畅很多。1. DSOGI-PLL 的核心结构与信号流1.1 为什么传统 SRF-PLL 扛不住不平衡电网在理想三相平衡电网中电网电压可以表示为[ \begin{cases} u_a U_m \cos(\omega t) \ u_b U_m \cos(\omega t - 2\pi/3) \ u_c U_m \cos(\omega t 2\pi/3) \end{cases} ]经过 Clarke 变换得到静止坐标系下的分量[ \begin{bmatrix} u_\alpha \ u_\beta \end{bmatrix}T_{3s/2s} \begin{bmatrix} u_a \ u_b \ u_c \end{bmatrix}\begin{bmatrix} U_m \cos(\omega t) \ U_m \sin(\omega t) \end{bmatrix} ]再经过 Park 变换进入同步旋转坐标系[ \begin{bmatrix} u_d \ u_q \end{bmatrix}\begin{bmatrix} \cos\theta \sin\theta \ -\sin\theta \cos\theta \end{bmatrix} \begin{bmatrix} u_\alpha \ u_\beta \end{bmatrix} ]当锁相环稳定时(\theta \approx \omega t)此时 (u_q \approx 0)(u_d) 近似等于电压幅值。锁相环通过 PI 调节器把 (u_q) 逐渐压到零从而获得与电网电压同步的相位角。然而当电网发生单相接地故障、两相短路或三相不平衡负载较重时电压中会出现负序分量。负序分量在同步旋转坐标系下表现为 2 倍工频的交流纹波也就是说(u_q) 不再是一个平稳的直流量而是叠加了 100 Hz 纹波的信号。这就导致锁相环输出的相位和频率发生周期性波动。在 APF 应用场景里锁相环输出的相位角要用于谐波电流提取、坐标变换和补偿电流生成。如果锁相角波动谐波检测结果就会出现误差严重时甚至会导致 APF 输出电流振荡引发过流保护。1.2 DSOGI-PLL 的总体框图DSOGI-PLL 的思路并不复杂它把锁相过程拆成了三个环节电网电压 ua/ub/uc | v Clarke 变换 (3s/2s) | v uα, uβ -- DSOGI-QSG(α轴) -- uα , q·uα \-- DSOGI-QSG(β轴) -- uβ , q·uβ | v 正序分量计算对称分量法 | v uα(正序分量静止坐标系) uβ | v SRF-PLL (Park 变换 PI 积分器) | v 输出相角 θ这里最核心的部分就是 DSOGI-QSG。DSOGI 的全称是 Dual Second Order Generalized Integrator即双二阶广义积分器。它包含两个并联的 SOGI 正交信号发生器分别处理 (\alpha) 轴和 (\beta) 轴电压。SOGI 模块的作用是输入一个正弦信号输出两个正交信号。其中一个与输入同相位另一个滞后 90°。传统的做法是用延时 1/4 工频周期来构造正交信号但这在频率偏移或谐波污染时精度较差。SOGI 的优点是它本身具有选频特性能够对输入信号进行滤波并且可以在频率变化时自适应调整。1.3 SOGI-QSG 的传递函数推导单个 SOGI-QSG 的结构如图输入误差信号经过一个比例增益 (k) 后做积分再与中心频率 (\omega_0) 交叉反馈构成一个谐振结构。为了便于工程分析我们直接推导它的两个关键传递函数。带通传递函数 (H_d(s))即输出 (v) 相对输入 (v) 的传函[ H_d(s) \frac{v(s)}{v(s)} \frac{k \omega_0 s}{s^2 k \omega_0 s \omega_0^2} ]正交输出传递函数 (H_q(s))即滞后 90° 输出 (qv) 相对输入 (v) 的传函[ H_q(s) \frac{qv(s)}{v(s)} \frac{k \omega_0^2}{s^2 k \omega_0 s \omega_0^2} ]其中(k) 为阻尼系数决定滤波器带宽(\omega_0) 为谐振角频率通常设为电网额定角频率例如电网频率 50 Hz 时(\omega_0 2\pi \times 50 \approx 314.16 \text{ rad/s})。把 (s j\omega) 代入可以分析频域特性。当输入信号角频率等于谐振角频率时即 (\omega \omega_0)有[ H_d(j\omega_0) \frac{k \omega_0 \cdot j\omega_0}{(j\omega_0)^2 k \omega_0 \cdot j\omega_0 \omega_0^2} ]分母计算为[ -\omega_0^2 j k \omega_0^2 \omega_0^2 j k \omega_0^2 ]因此[ H_d(j\omega_0) \frac{j k \omega_0^2}{j k \omega_0^2} 1 ]同理[ H_q(j\omega_0) \frac{k \omega_0^2}{j k \omega_0^2} -j ]这说明两个关键特性频率为 (\omega_0) 的信号经过同相输出通道后幅值不变、相位不变。频率为 (\omega_0) 的信号经过正交输出通道后幅值不变、相位滞后 90°。当输入频率偏离 (\omega_0) 时增益会逐渐衰减且相位不再严格保持 0° 或 -90°这正是 SOGI 具有选频滤波特性的原因。2. DSOGI 正序分量提取原理2.1 对称分量法的静止坐标系表达在三相电路中任意一组不对称的三相量都可以分解为正序、负序和零序分量。对于三相三线制系统通常不考虑零序分量。设 (\alpha\beta) 静止坐标系下的电压为 (u_\alpha)、(u_\beta)则正序分量可以表示为[ \begin{bmatrix} u_\alpha^ \ u_\beta^ \end{bmatrix}\frac{1}{2} \begin{bmatrix} 1 -q \ q 1 \end{bmatrix} \begin{bmatrix} u_\alpha \ u_\beta \end{bmatrix} ]负序分量可以表示为[ \begin{bmatrix} u_\alpha^- \ u_\beta^- \end{bmatrix}\frac{1}{2} \begin{bmatrix} 1 q \ -q 1 \end{bmatrix} \begin{bmatrix} u_\alpha \ u_\beta \end{bmatrix} ]其中(q) 是一个 90° 相移运算符。在数字实现中(q) 的作用就是让输入信号滞后 90°。在 DSOGI-PLL 结构中这个相移运算正是由 SOGI-QSG 的 (qv) 输出来实现的。为什么要采用这种表达形式原因在于负序分量在同步旋转坐标系中会表现为 2 倍频纹波。如果我们能在静止坐标系中把负序分量滤除只把正序分量送入 SRF-PLL那么锁相环看到的就是一个三相对称的正序电压锁相精度就会大幅提升。2.2 αβ 轴信号的正交处理实际实现时(\alpha) 轴和 (\beta) 轴电压分别送入各自的 SOGI-QSG。假设输入到 (\alpha) 轴 SOGI 的信号是 (u_\alpha)则输出为(u_\alpha)与 (u_\alpha) 同相位的滤波后信号(q u_\alpha)滞后 90° 的滤波后信号。同理(\beta) 轴 SOGI 输出为(u_\beta)(q u_\beta)。于是正序分量的计算式展开为[ u_{\alpha}^{} \frac{1}{2}u_{\alpha} - \frac{1}{2}q u_{\beta} ][ u_{\beta}^{} \frac{1}{2}q u_{\alpha} \frac{1}{2}u_{\beta} ]这里有四个滤波后的信号参与计算任何一路信号出现偏差都会影响最终的正序分量精度。2.3 闭环中的延迟与近似在实际应用中SOGI 的输出并非瞬时完成的其建立过程与阻尼系数 (k) 有关。正序分量提取环节会引入一定的相位延迟和幅值误差尤其在电网频率偏离 50 Hz 时更明显。为了减小这种误差DSOGI-PLL 通常把 SOGI 的中心频率 (\omega_0) 设计成跟随 PLL 输出的估计角频率 (\omega)形成频率自适应结构。也就是说SOGI 不再固定在 50 Hz而是实时跟踪电网频率。当电网频率从 50 Hz 漂移到 49.5 Hz 时SOGI 的谐振频率也随之调整保证正序分量提取精度不受影响。频率自适应结构如图简化版PLL 输出角频率 ω | v SOGI-α 的 ω0 输入 -- 来自PLL SOGI-β 的 ω0 输入 -- 来自PLL这种结构也让 DSOGI-PLL 具备频率测量能力锁相环输出的角频率本身就是一个高精度的电网频率观测值。3. DSOGI-PLL 的离散化设计与代码级实现3.1 连续域的 SOGI 状态方程在搭建仿真模型或者写嵌入式代码之前我们最好把 SOGI 用状态方程描述。这样才能方便地转换到离散域。根据前面的传函结构SOGI-QSG 的连续域实现为[ \begin{cases} \dot{x}_1 x_2 \ \dot{x}_2 -\omega_0^2 x_1 - k \omega_0 x_2 k \omega_0 v \end{cases} ]定义状态变量与输出的关系为[ v x_2 ][ qv \omega_0 x_1 ]验证一下输出传函。由 (\dot{x}_1 x_2)在拉氏域中有 (sX_1(s) X_2(s))而 (v x_2)(qv \omega_0 x_1)。由第二个状态方程可得传函与前面推导一致。3.2 前向欧拉离散化实现在数字控制系统中通常采用离散域实现 SOGI。控制周期一般为 10 kHz 到 20 kHz对于 50 Hz 工频信号来说采样频率远大于信号频率采用前向欧拉法已经能获得较高的精度。令采样周期为 (T_s)前向欧拉法离散化如下[ x_1[k1] x_1[k] T_s \cdot x_2[k] ][ x_2[k1] x_2[k] T_s \cdot \left( -\omega_0^2 x_1[k] - k \omega_0 x_2[k] k \omega_0 v[k] \right) ]输出[ v[k] x_2[k] ][ qv[k] \omega_0 x_1[k] ]这种实现方式代码最简单但在采样频率较低或谐振频率较高时可能产生较大误差。工程上如果追求高精度可以采用双线性变换即 Tustin 法。3.3 C 语言实现示例下面给出一段基于前向欧拉离散化的 SOGI C 代码适用于 TI C2000 系列 DSP 或者其他支持浮点运算的 MCU。// 文件路径sogi_qsg.h #ifndef SOGI_QSG_H #define SOGI_QSG_H typedef struct { float Ts; // 采样周期单位 s float w0; // 谐振角频率单位 rad/s float k; // 阻尼系数通常取 sqrt(2) float x1; // 状态变量1 float x2; // 状态变量2 float v_out; // 同相输出 float qv_out; // 正交输出(滞后90°) } SOGI_QSG; void SOGI_QSG_Init(SOGI_QSG *sogi, float Ts, float w0, float k); void SOGI_QSG_Update(SOGI_QSG *sogi, float v_in); void SOGI_QSG_Reset(SOGI_QSG *sogi); #endif// 文件路径sogi_qsg.c #include sogi_qsg.h void SOGI_QSG_Init(SOGI_QSG *sogi, float Ts, float w0, float k) { sogi-Ts Ts; sogi-w0 w0; sogi-k k; sogi-x1 0.0f; sogi-x2 0.0f; sogi-v_out 0.0f; sogi-qv_out 0.0f; } void SOGI_QSG_Update(SOGI_QSG *sogi, float v_in) { float x1_next; float x2_next; // 前向欧拉离散化 x1_next sogi-x1 sogi-Ts * sogi-x2; x2_next sogi-x2 sogi-Ts * ( -sogi-w0 * sogi-w0 * sogi-x1 - sogi-k * sogi-w0 * sogi-x2 sogi-k * sogi-w0 * v_in ); sogi-x1 x1_next; sogi-x2 x2_next; sogi-v_out sogi-x2; sogi-qv_out sogi-w0 * sogi-x1; } void SOGI_QSG_Reset(SOGI_QSG *sogi) { sogi-x1 0.0f; sogi-x2 0.0f; sogi-v_out 0.0f; sogi-qv_out 0.0f; }实际工程中需要注意以下几点状态变量初始化应当与电网电压的初始相位相关联否则启动瞬间可能出现较大的过渡过程如果使用定点 DSP需要把上述浮点运算改为 IQmath 格式并小心处理溢出问题如果运行频率漂移较大(w_0) 不是常数而是由锁相环频率输出反馈更新的变量。3.4 DSOGI 正序分量模块实现有了 SOGI 基础模块后我们在上一层实现 αβ 轴正序分量的计算。假设有两路 SOGI 实例分别处理 (\alpha) 轴和 (\beta) 轴信号。// 文件路径dsogi_pos_seq.h #ifndef DSOGI_POS_SEQ_H #define DSOGI_POS_SEQ_H #include sogi_qsg.h typedef struct { SOGI_QSG sogi_alpha; SOGI_QSG sogi_beta; float u_alpha_pos; // 正序 α 分量 float u_beta_pos; // 正序 β 分量 } DSOGI_POS_SEQ; void DSOGI_POS_SEQ_Init(DSOGI_POS_SEQ *dsogi, float Ts, float w0, float k); void DSOGI_POS_SEQ_Update(DSOGI_POS_SEQ *dsogi, float u_alpha, float u_beta, float w0); void DSOGI_POS_SEQ_Reset(DSOGI_POS_SEQ *dsogi); #endif// 文件路径dsogi_pos_seq.c #include dsogi_pos_seq.h void DSOGI_POS_SEQ_Init(DSOGI_POS_SEQ *dsogi, float Ts, float w0, float k) { SOGI_QSG_Init(dsogi-sogi_alpha, Ts, w0, k); SOGI_QSG_Init(dsogi-sogi_beta, Ts, w0, k); dsogi-u_alpha_pos 0.0f; dsogi-u_beta_pos 0.0f; } void DSOGI_POS_SEQ_Update(DSOGI_POS_SEQ *dsogi, float u_alpha, float u_beta, float w0) { float u_alpha_d; float u_alpha_q; float u_beta_d; float u_beta_q; // 动态更新谐振频率 dsogi-sogi_alpha.w0 w0; dsogi-sogi_beta.w0 w0; SOGI_QSG_Update(dsogi-sogi_alpha, u_alpha); SOGI_QSG_Update(dsogi-sogi_beta, u_beta); u_alpha_d dsogi-sogi_alpha.v_out; u_alpha_q dsogi-sogi_alpha.qv_out; u_beta_d dsogi-sogi_beta.v_out; u_beta_q dsogi-sogi_beta.qv_out; // 正序分量计算 dsogi-u_alpha_pos 0.5f * (u_alpha_d - u_beta_q); dsogi-u_beta_pos 0.5f * (u_alpha_q u_beta_d); } void DSOGI_POS_SEQ_Reset(DSOGI_POS_SEQ *dsogi) { SOGI_QSG_Reset(dsogi-sogi_alpha); SOGI_QSG_Reset(dsogi-sogi_beta); dsogi-u_alpha_pos 0.0f; dsogi-u_beta_pos 0.0f; }到这一步正序分量提取就完成了。接下来把 (u_\alpha^) 和 (u_\beta^) 送入 SRF-PLL 即可。3.5 SRF-PLL 数字化实现SRF-PLL 由 Park 变换、PI 调节器和积分器组成。离散化实现如下式Park 变换[ u_q -u_\alpha^ \sin\theta u_\beta^ \cos\theta ]PI 调节器输出角频率[ \omega \omega_0 K_p \cdot u_q K_i \cdot \int u_q dt ]相位角积分[ \theta \int \omega dt ]需要注意的是这里的 (\omega_0) 是电网额定角频率对应的前馈量。当电网频率偏移时由 PI 调节器输出补偿量。这样可以大幅减小 PI 调节器的稳态误差负担。离散域实现// 相位角累加采用一阶积分 theta_k1 theta_k Ts * omega_k; omega_k omega_nominal Kp * u_q_k Ki * integral_k; integral_k1 integral_k Ts * u_q_k;建议采用带限幅的积分器避免启动瞬间或电网异常时频率积分过度饱和。积分器限幅范围一般取 ±5 Hz 对应的角频率变化量即[ \Delta\omega_{\max} 2\pi \times 5 \approx 31.4 \text{ rad/s} ]同时相位角 (\theta) 要做归一化处理维持在 (0 \sim 2\pi) 范围内避免角度持续增长导致浮点精度下降。4. 基于 Simulink 的 DSOGI-PLL 建模与仿真验证4.1 仿真模型整体结构在 MATLAB/Simulink 中DSOGI-PLL 模型可以基于基本数学模块搭建也可以采用 S-Function 或 MATLAB Function 模块实现。为了便于修改参数和理解信号流建议采用底层的数学模块搭建但为了阅读性也可以在初期用 MATLAB Function 搭建。下面给出的示例采用结构化的仿真思路Three-Phase Source带不平衡/谐波设置 | v [ua ub uc] -- Clarke -- [u_alpha u_beta] | v DSOGI-QSG Alpha DSOGI-QSG Beta | v 正序分量计算Fcn 模块 | v Park 变换 (sin/cos) | v PI 控制器 → 角频率 → 积分器 → 相角如果你习惯用 MATLAB Function可以把 DSOGI 部分封装成函数输入为 (u_\alpha)、(u_\beta)、(\omega_0)、(T_s)输出为 (u_\alpha^)、(u_\beta^)。示例核心逻辑如下Simulink MATLAB Function 内function [u_alpha_pos, u_beta_pos] dsogi_sequential(u_alpha, u_beta, w0, Ts, k) % 用于 Simulink MATLAB Function 模块的 DSOGI 正序提取 persistent x1_alpha x2_alpha x1_beta x2_beta if isempty(x1_alpha) x1_alpha 0; x2_alpha 0; x1_beta 0; x2_beta 0; end % SOGI-Alpha x1_alpha_next x1_alpha Ts * x2_alpha; x2_alpha_next x2_alpha Ts * (-w0*w0*x1_alpha - k*w0*x2_alpha k*w0*u_alpha); v_alpha_d x2_alpha; qv_alpha_q w0 * x1_alpha; x1_alpha x1_alpha_next; x2_alpha x2_alpha_next; % SOGI-Beta x1_beta_next x1_beta Ts * x2_beta; x2_beta_next x2_beta Ts * (-w0*w0*x1_beta - k*w0*x2_beta k*w0*u_beta); v_beta_d x2_beta; qv_beta_q w0 * x1_beta; x1_beta x1_beta_next; x2_beta x2_beta_next; % 正序分量 u_alpha_pos 0.5 * (v_alpha_d - qv_beta_q); u_beta_pos 0.5 * (qv_alpha_q v_beta_d); end把上述函数封装成模块后在仿真中设置不同的电网工况可以非常方便地验证 DSOGI-PLL 的锁相能力。4.2 电网不平衡工况仿真设置在 Simulink 中构造不平衡电压常用方式是对三相电压幅值设置不同值。例如A 相幅值1.0 puB 相幅值0.7 puC 相幅值0.8 pu基波频率50 Hz采样频率10 kHz这种情况下传统 SRF-PLL 输出的 (u_q) 会包含明显的二次纹波。而 DSOGI-PLL 通过正负序分离送入锁相环的是纯正序分量因此在稳态条件下 (u_q) 纹波很小。仿真时建议增加一个对比子系统把传统 SRF-PLL 和 DSOGI-PLL 的相位输出同时接入 Scope便于直接观察差异。预期结果如下表工况传统 SRF-PLL 相位误差DSOGI-PLL 相位误差三相平衡00单相跌落 30%存在 2 倍频波动基本无波动含 5 次谐波存在多倍频波动波动明显衰减频率阶跃 50→50.5 Hz动态调节较慢频率自适应响应平稳4.3 谐波畸变电网的仿真设电网电压中除了基波外还叠加了 5 次和 7 次谐波[ u_a \cos(\omega t) 0.1\cos(5\omega t) 0.07\cos(7\omega t) ]另外两相依次滞后 (120^\circ) 和 (240^\circ)。在这种工况下传统 SRF-PLL 的 (u_q) 中会出现 6 次谐波纹波因为 5 次和 7 次谐波在同步旋转坐标系下分别表现为 6 次和 -6 次纹波。DSOGI-PLL 中的 SOGI 带通滤波器会在一定程度上衰减高次谐波。但是需要指出SOGI 并不是理想的滤波器它对高次谐波的衰减能力与 (k) 值有关。若谐波含量太高仅依赖 DSOGI-PLL 内部的 SOGI 滤波是不够的通常还需要在电压采样前加入前置低通滤波或在 PLL 的 (u_q) 通道上增加陷波器。4.4 仿真初始条件与收敛性DSOGI-PLL 是带有谐振环节的非线性系统在仿真中建议采用如下措施保证收敛SOGI 状态变量初值根据电网电压初始相位设定避免接入瞬间大过渡过程如果仿真关心极端情况可以故意让初始相位为 90°观察系统的动态响应能力。PLL 的积分器初始值设为电网额定频率对应的角频率 (100\pi) rad/s。相位角积分器初值设为 0 或根据三相电压过零点推算的初相位。对于不平衡工况建议让电网电压从 0 时刻开始就处于故障状态便于观察稳态性能如果要从平衡状态切换到不平衡状态则需要分析暂态过程此时关注的是 PLL 的响应速度和超调量。5. 参数整定方法与性能边界分析5.1 阻尼系数 k 的整定SOGI 的阻尼系数 (k) 决定了系统带宽。根据控制理论SOGI-QSG 可以看作一个中心频率为 (\omega_0) 的带通滤波器。它的带宽与 (k) 近似成正比[ BW \approx \frac{k \omega_0}{2\pi} ]在 50 Hz 系统中若 (k \sqrt{2})则[ BW \approx \frac{1.414 \times 314}{6.28} \approx 70.7 \text{ Hz} ]若 (k 0.5)则[ BW \approx \frac{0.5 \times 314}{6.28} \approx 25 \text{ Hz} ]带宽越窄滤波效果越好但动态响应越慢。在 APF 应用中我们通常希望锁相环既能有效抑制电网谐波又能在电压跌落时快速响应。折中方案是取 (k \sqrt{2})这也是滤波器设计中巴特沃斯响应的常用取值。不过在某些谐波含量较高且动态响应要求不高的场合可以适当减小 (k)例如取 (k1) 或 (k1.2)。下面给出一个经验参考取值带宽特性适用场景(k 1.414)带宽较宽响应快工业 APF、动态电压恢复(k 1.0)带宽中等滤波与响应均衡一般并网逆变器(k 0.707)带宽较窄滤波强响应慢弱电网、谐波严重场景虽然 (k) 的选取可以很灵活但有一个原则需要注意DSOGI-PLL 两个轴上的 SOGI 应当使用相同的 (k) 值否则正序分量提取的幅值和相位会不匹配导致 (u_q) 出现纹波。5.2 锁相环 PI 参数整定SRF-PLL 部分是一个典型的二阶系统。为简化设计我们通常把有功项 (u_d) 归一化因为 DSOGI 提取的是正序基波分量幅值恒定。令电压幅值 (U_m 1)那么从 (u_q) 到相角 (\theta) 的小信号模型近似为[ G_{open}(s) \frac{U_m (K_p s K_i)}{s^2} ]这是一个典型的二型系统开环传递函数为 (K_p U_m / s K_i U_m / s^2)。选择 PI 参数时可以从期望的闭环带宽 (\omega_{BW}) 和阻尼比 (\zeta) 出发。工程快速整定公式以 (U_m1) 为例[ K_p 2 \zeta \omega_n ][ K_i \omega_n^2 ]其中 (\omega_n) 是自然振荡角频率可以取为[ \omega_n \frac{\omega_{BW}}{\sqrt{1 2\zeta^2 \sqrt{(12\zeta^2)^2 1}}} ]一般取 (\zeta 0.707)若期望锁相环调节时间在 20 ms 到 50 ms 之间(\omega_n) 可选取在 50120 rad/s 范围。在 APF 场景中通常没有太苛刻的动态要求反而更看重稳态精度和谐波抑制能力所以 (\omega_n) 不宜取得过大。5.3 采样频率与离散化误差SOGI 的离散化对采样频率敏感。前向欧拉法的优点是结构简单、扰动小但对于快速变化的输入信号会引入相位滞后。使用前向欧拉时实际系统的稳定裕度会受到一定影响。为了确保离散化误差可接受建议[ \frac{f_s}{f_0} 100 ]也就是说50 Hz 电网信号采样频率至少 5 kHz。当采用前向欧拉时建议采样频率高于 10 kHz当使用双线性变换时采样频率下限可以适当放宽。双线性变换的离散化公式如下设 (s \frac{2}{T_s}\frac{z-1}{z1})代入 (H_d(s)) 和 (H_q(s)) 后整理可以得到直接 II 型或转置直接 II 型的差分方程。篇幅所限这里不展开推导但建议在工程实现中优先使用 Tustin 法配合预畸变尤其当采样频率低于 5 kHz 时。6. DSOGI-PLL 在有源电力滤波器中的工程落地6.1 APF 对锁相环的特殊要求有源电力滤波器的工作目标是实时检测负载谐波电流并输出反向补偿电流使电网侧电流近似正弦。整个系统的控制链路为负载电流采样 → 谐波提取(ip-iq法或dq法) → 谐波指令电流 → 电流环跟踪控制 → PWM输出这条链路中的坐标变换参考角全部来自锁相环。若锁相环输出相位含有纹波会导致谐波检测输出中混入基波成分最终表现为补偿后的电网电流仍然包含较大的谐波甚至可能因为相位偏差引入额外的无功分量。APF 中的锁相环需求可以归纳为稳态精度高相位误差尽量小抗谐波能力强不会因为电网电压畸变导致相位波动频率自适应电网频率漂移时仍能稳定锁相动态响应适中电压跌落或恢复后能快速重新锁定。DSOGI-PLL 正好满足上述大部分需求因此它在三相三线制 APF 中应用非常普遍。6.2 与谐波检测算法的配合在实际 APF 系统中DSOGI-PLL 输出的正序相位角 (\theta^) 不只用来锁相还可以优先提取正序基波电压的相位用于谐波电流检测算法。以 (d-q) 谐波检测法为例负载电流经过 Park 变换到 (d-q) 坐标系[ \begin{bmatrix} i_d \ i_q \end{bmatrix}\begin{bmatrix} \cos\theta^ \sin\theta^ \ -\sin\theta^ \cos\theta^ \end{bmatrix} \begin{bmatrix} i_\alpha \ i_\beta \end{bmatrix} ]由于 (\theta^) 是与正序基波电压同步的相位负载基波正序有功和无功电流在 (d-q) 坐标下表现为直流量而谐波分量表现为不同频次的交流量。用低通滤波器分离出直流分量后再反变换回三相坐标就得到了需要补偿的谐波电流指令。这里的关键点是如果锁相角不使用 DSOSGI-PLL 提取的正序相位而直接采用传统 SRF-PLL 的相位那么不平衡电网中锁相角存在 2 倍频纹波会导致本应平坦的基波电流直流量中也混入纹波从而影响低通滤波器的分离效果。DSOGI-PLL 的加入从根本上避免了这一耦合问题。6.3 在弱电网与频率漂移工况下的策略在厂矿企业等 APF 典型应用现场电网往往连接到大型非线性负载电压畸变率可能达到 5%10%同时还存在阻抗较大导致的弱电网特性。这种情况下仅使用 DSOGI-PLL 仍可能受到以下影响背景谐波电压幅值过大时SOGI 带通滤波不够彻底正序分量中仍然含有残余谐波。电网频率变化较快时SOGI 中心频率由 PLL 输出频率更新但两者之间会形成闭环延迟极端情况下会产生频率振荡。三相电压严重不平衡导致负序分量接近正序分量时SOGI 的 90° 相移精度会下降。实际工程中可以考虑在 DSOGI-PLL 前增加 Clarke 变换前的抗混叠滤波器同时在 PLL 的 (u_q) 信号后增加一个中心频率为 100 Hz 的陷波器专门抑制负序带来的二倍频纹波形成“DSOGINotch-PLL”的混合结构。不过需要注意的是增加陷波器会导致相位响应变化需要评估其对锁相环稳定性的影响。更好的做法是在 DSOGI 正序分离后的 (u_\alpha^)、(u_\beta^) 通道后增加相同的低通滤波器以保证两条支路相位一致性。6.4 APF 工程现场的调试记录在实际的 APF 样机调试中我们曾经遇到一个典型的 DSOGI-PLL 问题样机在实验室三相平衡电源下锁相正常但到现场接入电网后在谐波较大的工况下直流母线电压出现低频波动进一步排查发现锁相环输出频率存在约 3 Hz 的振荡。最终定位原因有两个第一个原因是 SOGI 的 (k) 值取得偏大达到了 2.0导致带通滤波带宽过宽100 Hz 的负序纹波没有充分滤除反而在闭环中形成调制第二个原因是锁相环 PI 的带宽也偏高两个环节的带宽过于接近产生了连锁振荡。解决办法是把 DSOGI 的 (k) 从 2.0 调低到 1.2同时把锁相环 PI 的穿越频率从 80 Hz 降低到 30 Hz 左右。经过调整后锁相环输出频率的波动明显减小直流母线电压波动也恢复正常。这个案例说明DSOGI-PLL 虽然结构上优于传统 SRF-PLL但参数配合不当同样会产生新的振荡。参数整定不能只看某一个环节的带宽而是要综合分析整个环路的频率特性。7. 实验波形分析方法与频率特性验证7.1 实验平台搭建要点DSOGI-PLL 的验证平台可以分层搭建信号层由可编程交流电源输出不平衡/畸变电压或用信号发生器直接产生模拟电压信号送入 DSP 采样控制层DSP 完成采样、Clarke 变换、DSOGI-PLL 计算、数据记录观测层DSP 通过 DA 输出关键中间变量例如 (u_\alpha^)、(u_\beta^)、(\theta)、(f) 等用示波器直接观察波形。需要注意的是PLL 中间变量在 DSP 中通常以 pu 值表示DA 输出前要乘以合适的比例系数否则很难从示波器波形中直接判断幅值是否合理。7.2 关键观测点当使用示波器观测 DSOGI-PLL 中间变量时建议把以下信号引出到 DA(u_\alpha) 和 (u_\alpha)观察 SOGI 是否实现同相位滤波对比滤波前后波形畸变程度。(u_\beta) 和 (u_\beta)同理判断 (\beta) 轴 SOGI 工作状态。(q u_\alpha) 与 (u_\alpha)把两路信号同时显示观察是否严格正交。如果相位差不等于 90°说明 SOGI 谐振频率与电网频率不一致或阻尼参数异常。估算频率 (f_{PLL})直接观察锁相环输出的频率值正常情况下应该是 50 Hz 左右的平滑直流量。如果频率波形有明显纹波说明 DSOGI-PLL 正序提取效果不好或者 PI 参数不合适。Park 变换后的 (u_q)这是最直接的锁相误差指示信号。理想稳态下正序 (u_q) 应该逼近零。如果 (u_q) 存在 100 Hz 纹波说明负序分量没有被完全消除。7.3 频率阶跃响应测试为了测试频率自适应效果可以用可编程交流电源把电网频率从 50 Hz 突变到 50.5 Hz观察 PLL 输出的估算频率波形。DSOGI-PLL 的性能可以从以下指标评估频率超调量过渡时间。由于 SOGI-QSG 本身存在滤波延迟加上 PLL 的闭环调节频率阶跃响应通常需要 2050 ms 才能稳定。如果调节时间过长可能影响 APF 在孤岛或频率变化场景下的性能如果超调过大则可能导致并网电流出现暂态冲击。测试时建议记录多组不同 (k) 值下的响应波形画出调节时间和超调量随 (k) 的变化趋势为参数整定提供数据支撑。这种实测数据往往比理论计算更可靠。8. 常见问题与调试清单8.1 DSOGI-PLL 常见问题汇总下面以表格形式列出 DSOGI-PLL 在调试验证中常见的现象和解决思路问题现象可能原因解决思路(u_q) 含有 100 Hz 纹波正负序分离不彻底检查 SOGI 正交输出是否严格 90°检查两个轴阻尼系数是否一致检查正序计算公式锁相环输出频率振荡SOGI 带宽与PLL带宽重叠降低 SOGI 的 (k) 值或降低 PLL 的 PI 带宽使两者带宽拉开一定距离电网不平衡时锁相角跳变未采用正序分量提取或 (k) 值过小导致动态响应差确认 PLL 前有 DSOGI 正序分离适当增大 (k) 值提高动态响应频率漂移后误差增大SOGI 中心频率未跟随估计频率将 PLL 输出频率换算为 (\omega_0) 后反馈到 SOGI 模块启动过程较长状态变量初值不当根据电网电压初始相位初始化 SOGI 状态变量数字实现后性能与仿真差距大离散化方法误差或采样频率不足采用双线性变换提高采样频率检查抗混叠滤波电压谐波含量高时锁相误差偏大SOGI 带通滤波阶数不够增加前置低通或陷波器或采用多通道滤波结构8.2 调试清单在整定 DSOGI-PLL 参数或排查问题时可以按照下面的顺序进行第一步检查输入信号正交性。用幅值为 1、频率为 50 Hz 的标准正弦波叠加少量谐波作为输入在 DSOGI-QSG 输出端测量同相输出和正交输出的相位差。如果相位差不是 90°说明 SOGI 参数或离散化方法存在问题。第二步检查正序分量提取结果。加入不平衡电压观察提取出的 (u_\alpha^)、(u_\beta^) 是否满足幅值一致、相位相差 90° 的关系。如果不满足检查正序计算公式中各信号的正负号。第三步检查 (u_q) 的稳态波形。在平衡电网下把 PLL 闭环观察 (u_q) 是否平稳且均值接近零在加入不平衡度后观察 (u_q) 纹波大小。如果在平衡状态下 (u_q) 就有纹波说明正序分离环节内部存在不对称。第四步检查频率输出和相角输出。在频率阶跃或电压跌落测试中观察频率波形是否平滑相角是否连续变化。如果相角有跳变可能是 (\sin/\cos) 与相位角配合错误或者积分器未做归一化处理。每种排查步骤最好配合示波器截图或者数据记录文件方便对比修改参数前后的波形变化。这比靠感觉调参可靠得多。9. DSOGI-PLL 的下一步改进方向DSOGI-PLL 在实际工程中已经比较成熟但它并不是万能的。在某些特殊场景下我们可以针对它的不足做进一步优化第一当电网频率变化范围较大时固定结构 SOGI 的性能会变差。可以把 SOGI 的 (k) 值设计成随频率偏差自动调整或者采用具有频率自适应能力的 SOGI-FLL 结构。SOGI-FLL 把频率估计放到一个独立的频率锁定环中不需要依赖 PLL 来反馈频率这样在一定程度上解耦了相位和频率的调节。第二当电网谐波非常严重时可以增加谐波消除通道类似于多频率自适应滤波器。例如在 DSOGI 基础上级联多个特定频率的谐振滤波器或者使用基于复系数传递函数的高阶滤波器不过这会增加计算量。第三在弱电网场景下DSOGI-PLL 的相位响应可能与电网阻抗变化发生交互。可以考虑加入电压前馈补偿或在锁相环前面加入电网阻抗辨识模块从而进一步提高锁相的鲁棒性。第四对于单相 APF 或两相系统可以把 DSOGI-PLL 移植为单相锁相环结构通过构造虚拟正交信号来实现锁相。这种结构在光伏微型逆变器等产品中有较多应用相关思路与三相 DSOGI-PLL 保持一致。总体来看无论研究方向如何演进理解 DSOGI 的滤波特性、正负序分离原理和离散化实现方式都是后续深入的基础。把本文的下半部分与上半部分的数学建模结合起来就已经形成了一套完整的理论分析与工程实现闭环。如果你在 APF 或其他并网设备开发中遇到了锁相环相关的问题欢迎在评论区把波形现象和参数贴出来一起交流。锁相环的问题往往不是孤立存在的可能需要结合整体控制环路统一分析多看波形、多对比不同参数下的响应是最有效的排查方式。