DSOGI-PLL原理与工程应用:不平衡电网下的正序锁相方案
2026/9/9 12:45:38 网站建设 项目流程

DSOGI-PLL 这个名称听起来比单同步坐标系软件锁相环复杂,但用途非常聚焦:在三相电压不平衡、跌落或带畸变时,依然要稳定输出基波正序相位。对有源电力滤波器而言,这个相位直接参与指令电流计算和坐标变换,锁相一旦波动,补偿效果会立刻劣化。

上一期已经推完 SOGI-QSG 的连续域传递函数和正交信号发生原理。这一次不再重复基础公式,直接进入工程建模分析部分:双 SOGI 如何组合、正负序分量如何分离、SRF-PLL 如何闭环、参数怎么取、离散化怎么做、在仿真环境里按什么步骤验证,以及接到 APF 控制结构时需要注意哪些问题。全文会围绕通用建模方法展开,没有平台相关限定,MATLAB/Simulink、Python 仿真或自建离线模型都可以按照同样步骤对照。

1. DSOGI-PLL核心能力速览

能力项说明
模块定位电网电压同步与基波正序相位检测模块
适用领域有源电力滤波器、SVG、并网逆变器、电能质量治理装置
主要功能三相电压 Clarke 变换、两路正交信号生成、正负序实时分离、基波正序锁相
输入信号三相电压瞬时值 (u_{a},u_{b},u_{c}) 或静止坐标 (u_{\alpha},u_{\beta})
输出信号电网基波正序角频率 (\omega)、锁相角 (\theta),以及正序电压 (u_{\alpha}^{+},u_{\beta}^{+})
面对不平衡工况能分离负序分量,避免锁相结果出现二倍工频纹波
面对畸变电压SOGI 谐振滤波会衰减谐波,但高次谐波抑制能力有限,需要配合低带宽环路或额外滤波
运行平台通用数字控制器或仿真环境均可实现,不是 GPU 类计算任务
启动复杂度中等,需要先调通 SOGI,再调 FLL/PLL,最后做整体闭环
是否支持 API/批量任务不适用,属于控制算法模块,不建议按服务化工具思路使用

从表格可以清楚看到,DSOGI-PLL 解决的是“电压质量不好时如何提取到干净的基波正序相位”,不是某个单独波形生成器。实际价值体现在和 APF 指令电流模块连接之后。

2. DSOGI-PLL整体结构与建模分层

DSOGI-PLL 的信号域结构可以拆成五层,调试时也要按这个顺序逐层推进。

第一层是三相电压采样与 Clarke 变换。把三相静止坐标系转换到两相静止坐标 (\alpha\beta),这一步消除了零序和三相对称性的影响。等幅值 Clarke 表达式如下:

[ \begin{bmatrix} u_{\alpha}\ u_{\beta} \end{bmatrix} =\frac{2}{3} \begin{bmatrix} 1 & -\frac12 & -\frac12\ 0 & \frac{\sqrt3}{2} & -\frac{\sqrt3}{2} \end{bmatrix} \begin{bmatrix} u_a\ u_b\ u_c \end{bmatrix} \tag{1} ]

对于三相三线制系统,零序不存在,公式直接适用。如果装置接入三相四线制且中线电流较大,需要额外处理零序通道,DSOGI-PLL 本身不具备零序抑制能力。

第二层是两路 SOGI-QSG。轴上的电压进入同一个中心频率可调的谐振滤波器,每一路同时输出两个正交信号:

  • 同相输出 (u'{\alpha}) 和正交输出 (q u'{\alpha});
  • 同相输出 (u'{\beta}) 和正交输出 (q u'{\beta})。

SOGI-QSG 的传递函数在上一期已经完成推导,这里直接使用结论:

[ D(s)=\frac{u'}{u}(s)=\frac{k\omega s}{s^{2}+k\omega s+\omega^{2}} \tag{2} ]

[ Q(s)=\frac{qu'}{u}(s)=\frac{k\omega^{2}}{s^{2}+k\omega s+\omega^{2}} \tag{3} ]

其中 (k) 是阻尼系数,(\omega) 是谐振中心频率。当输入频率正好等于 (\omega) 时,(D(j\omega)=1),(Q(j\omega)=-j),于是两路输出幅值相等、相位差 90°,形成理想正交信号。

第三层是正负序分离。这里使用 DSOGI 的核心优势:不需要等待一个完整基波周期再做 90° 延迟,而是用 SOGI 生成的正交信号直接构造正序和负序分量。

第四层是同步旋转坐标变换。将分离出的正序分量转到以 (\theta) 为旋转角的 (dq) 坐标系,锁定目标就是让 (u_{q}^{+}=0)。

第五层是 PI 控制器和频率积分。把 (u_{q}^{+}) 作为误差信号,经过 PI 调节后叠加到额定频率上,再积分得到相位角。

整体结构可以写成如下信号流:

[ u_{abc}\rightarrow u_{\alpha\beta}\rightarrow \text{SOGI-QSG}{\alpha},\text{SOGI-QSG}{\beta}\rightarrow u_{\alpha}^{+},u_{\beta}^{+}\rightarrow u_{d}^{+},u_{q}^{+}\rightarrow \omega\rightarrow \theta \tag{4} ]

到这里,DSOGI-PLL 的定位就已经明确:它不只是一个锁相环,而是“正交信号发生 + 正序提取 + 同步锁相”的组合模块。

3. 从αβ轴到正负序分离的关键推导

三相电压不平衡时,经过 Clarke 变换后的 (\alpha\beta) 分量中同时包含正序和负序分量。设基波正序分量为 (u_{\alpha\beta}^{+}),基波负序分量为 (u_{\alpha\beta}^{-}),则有:

[ u_{\alpha\beta}=u_{\alpha\beta}^{+}+u_{\alpha\beta}^{-} \tag{5} ]

正序分量在 (\alpha\beta) 平面中的旋转方向是逆时针,负序分量是顺时针。直接对合成矢量做 Park 变换会产生 2 倍工频振荡,这就是普通 SRF-PLL 在不平衡电压下失效的根本原因。

DSOGI-PLL 通过 90° 移相正交信号完成对称分量法中的“延迟”操作。两路 SOGI 分别输出四路信号后,正序分量可按下式计算:

[ u_{\alpha}^{+}=\frac{1}{2}\left(u_{\alpha}'-qu_{\beta}'\right) \tag{6}

[ u_{\beta}^{+}=\frac{1}{2}\left(qu_{\alpha}'+u_{\beta}'\right) \tag{7} ]

负序分量对应:

[ u_{\alpha}^{-}=\frac{1}{2}\left(u_{\alpha}'+qu_{\beta}'\right) \tag{8} ]

[ u_{\beta}^{-}=\frac{1}{2}\left(-qu_{\alpha}'+u_{\beta}'\right) \tag{9} ]

这里的 (q) 表示作用在信号上的滞后 90° 运算。SOGI-QSG 的输出 (qu_{\alpha}') 就是 (u_{\alpha}') 的滞后 90° 版本,因此不需要额外去构造移相器,系统在每一个采样周期内都能输出瞬时正负序分量。

需要特别说明的是,式(6)到式(9)中的正负序分离,只在两路 SOGI 参数完全一致且中心频率一致时才是准确的。如果实际实现中 (\alpha) 轴和 (\beta) 轴的 SOGI 阻尼系数或离散系数有差异,分离后仍会有残余负序分量,锁相环输出中依然会出现 100Hz 纹波。

正序分量提取的结果还可以进一步得到正序幅值:

[ U_{m}^{+}=\sqrt{\left(u_{\alpha}^{+}\right)^{2}+\left(u_{\beta}^{+}\right)^{2}} \tag{10} ]

在有源电力滤波器中,这个幅值常用于电压前馈、低电压穿越判断或指令电流限幅。

4. 同步控制环与整机闭环建模

正序分量提取完成后,剩下的同步任务和传统 SRF-PLL 很接近。将正序分量做 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} \tag{11} ]

当锁相角 (\theta) 与电网正序电压矢量的真实角度一致时,(u_{q}^{+}) 等于 0,(u_{d}^{+}) 等于正序电压幅值。因此可以设计闭环:

[ \omega=\omega_{ff}+\left(k_{p}+\frac{k_{i}}{s}\right)u_{q}^{+} \tag{12} ]

[ \theta=\frac{1}{s}\omega \tag{13} ]

其中 (\omega_{ff}) 是额定角频率前馈。这个前馈可以明显加快频率变化时的响应速度。如果只靠 PI 输出作为频率,从 50Hz 跳到 52Hz 时,锁相角需要经过比较长的调节过程才能跟上。

为了后续调整参数,通常把该闭环近似成二阶系统。假设正序电压幅值恒定,环路增益近似为:

[ G_{ol}(s)=\frac{k_{p}s+k_{i}}{s^{2}}\cdot U_{m}^{+} \tag{14} ]

如果写作典型二阶表达式:

[ k_{p}=2\xi\omega_{n},\qquad k_{i}=\omega_{n}^{2} \tag{15} ]

(\xi) 一般取 0.707 附近,(\omega_{n}) 需要根据动态响应和谐波抑制要求折中选取。在 50Hz 电网中,(\omega_{n}) 通常取 30~100 rad/s 量级。更宽泛的说法是:环路带宽越低,对谐波和负序残余的抑制越强,但动态响应越慢;带宽越高,锁相速度越快,但畸变电压下的相位波动也越大。

值得注意的是,DSOGI-PLL 的完整动态响应包含两个环节:SOGI 滤波环节和 SRF-PLL 同步环节。SOGI 本身是二阶谐振系统,中心频率处没有相位滞后,偏离中心频率时会产生幅值衰减和相位偏移。因此整机闭环不能只按 PI 参数的两个零点来估计,需要结合 SOGI 的带宽共同判断。

5. DSOGI-PLL关键参数选取原则

DSOGI-PLL 在工程中需要整定的参数主要有三组。

第一组是 SOGI 的阻尼系数 (k)。这个参数直接决定谐振带宽。取较大值时,SOGI 对中心频率附近的频率偏差更宽容,动态响应更快,但对输入信号中的谐波衰减能力下降。取较小值时,滤波效果更好,像带通滤波器,但频率偏移较大时增益和相位误差会明显变大。在 5 次、7 次谐波相对明显的电网中,(k) 通常取 0.5 到 1.4 之间的值。具体的取值没有“唯一最优解”,需要结合入网点电压畸变率、频率波动范围和允许的动态响应时间来确定。

为了观察不同谐波频率处的衰减效果,可以用一段简单的 Python 脚本计算式(2)的频域响应。

import numpy as np def sogi_response(k, w0, harmonic): """ 计算SOGI-QSG对某次谐波的幅值响应 """ w = harmonic * w0 s = 1j * w D = k * w0 * s / (s**2 + k * w0 * s + w0**2) Q = k * w0**2 / (s**2 + k * w0 * s + w0**2) return abs(D), abs(Q) w0 = 2 * np.pi * 50 for k_val in [0.5, 0.707, 1.0, 1.414]: d5, q5 = sogi_response(k_val, w0, 5) d7, q7 = sogi_response(k_val, w0, 7) print(f"k={k_val:.3f} | 5次谐波D={d5:.3f} Q={q5:.3f} | 7次谐波D={d7:.3f} Q={q7:.3f}")

这个脚本用于辅助设计,不是直接仿真结果。实际系统还要考虑三相不平衡导致的负序分量频率映射,以及离散化后的频率偏差。

第二组是 FLL 或频率自适应环节的增益。如果 SOGI 的中心频率完全交给外部 PLL 提供,则需要保证在频率跳变时,SOGI 中心频率能较快跟随。常用 FLL 结构为:

[ \frac{d\omega}{dt}=-\lambda\left(u-u'\right)qu' \tag{16} ]

(\lambda) 越大,频率估计收敛越快,但会引入更多噪声。(\lambda) 过小时,频率跳变后的 SOGI 输出需要更长时间才能恢复正交性。若输入电压幅值波动明显,建议采用归一化结构,使频率估计速度与电压幅值无关。

第三组是 SRF-PLL 的 PI 参数。实际调试可以采用从慢到快的策略:先把 PI 带宽放低,观察锁相是否稳定;确认无 100Hz 纹波后,再逐步提高带宽。如果直接给一个很大的 (k_{p}),在畸变电压下 (u_{q}^{+}) 中的残余谐波会被放大,导致锁相角抖动。

还有一个容易被忽略的参数是额定频率前馈 (\omega_{ff})。在电网频率偏离 50Hz 时,如果前馈仍然是 50Hz,PI 输出会承担全部频率偏差。较好的做法是让 FLL 估计得到的频率作为前馈,或者至少让 PI 的积分项保持一个较小的稳态频率偏移。

6. 离散化实现与参考代码

连续域仿真通过之后,真正的难点在数字控制器里的离散实现。SOGI 的连续传递函数包含 (s^{2}) 项,如果只是简单用欧拉法替换积分器,在高采样率下问题不大,但在较低采样率下可能出现离散极点偏移、中心频率偏移,甚至数值不稳定。

常用的离散化方法是双线性变换:

[ s=\frac{2}{T_{s}}\cdot\frac{z-1}{z+1} \tag{17} ]

将式(17)代入式(2),可以得到 D 通道的离散传递函数:

[ D(z)=\frac{k\omega a\left(z^{2}-1\right)}{\left(a^{2}+k\omega a+\omega^{2}\right)z^{2}+\left(-2a^{2}+2\omega^{2}\right)z+\left(a^{2}-k\omega a+\omega^{2}\right)} \tag{18} ]

其中 (a=2/T_{s})。Q 通道的离散传递函数为:

[ Q(z)=\frac{k\omega^{2}\left(z+1\right)^{2}}{\left(a^{2}+k\omega a+\omega^{2}\right)z^{2}+\left(-2a^{2}+2\omega^{2}\right)z+\left(a^{2}-k\omega a+\omega^{2}\right)} \tag{19} ]

实际代码中可以直接用 MATLAB 的 c2d 函数完成离散化,避免手写差分方程出错。

% DSOGI-QSG 离散化参考 % 每个轴调用两次,分别得到 D 和 Q 通道系数 % Ts 为采样周期,单位秒 % k_so 为 SOGI 阻尼系数 % f0 为当前中心频率,FLL 运行时每个周期更新 Ts = 1e-4; % 10kHz 采样 k_so = 0.7; f0 = 50; w0 = 2*pi*f0; a = 2/Ts; % 分母统一部分 den = [1, (-2*a^2 + 2*w0^2) / (a^2 + k_so*w0*a + w0^2), ... (a^2 - k_so*w0*a + w0^2) / (a^2 + k_so*w0*a + w0^2)]; % D 通道分子:k*w*a*(z^2 - 1) numD = [k_so*w0*a, 0, -k_so*w0*a] / (a^2 + k_so*w0*a + w0^2); % Q 通道分子:k*w^2*(z + 1)^2 numQ = [k_so*w0^2, 2*k_so*w0^2, k_so*w0^2] / (a^2 + k_so*w0*a + w0^2); sysD = tf(numD, den, Ts); sysQ = tf(numQ, den, Ts);

当 FLL 实时更新 (w0) 时,需要每个采样周期重新计算离散系数。如果控制器的计算周期很紧张,也可以把不同频率点预计算成表格,在线插值。通常更稳妥的做法是保留连续域模型先在 Simulink 中仿真,确认参数行为后,再切到离散域验证。

离散实现的另一个要点是积分器初值。启动瞬间,如果 SOGI 内部状态为零,而输入电压不是从零开始,那么 SOGI 会先经历一段暂态。此时 PLL 输出角频率可能出现明显超调。实际处理方式是在启动时先让 PLL 开环运行几个周期,用额定频率直接积分得到初始角度,等 SOGI 输出稳定后再闭合环路。

7. DSOGI-PLL仿真验证步骤

7.1 仿真环境与模型搭建

在 Simulink 中搭建 DSOGI-PLL 可以完全不使用 Simscape 电气模块,用基本数学模块即可。这样做的好处是离散化后可以无缝迁移到代码生成。

推荐建模步骤:

  1. 建立三相电压源模块,或用三个正弦波模块按 120° 相位差构造。
  2. 编写 Clarke 变换模块,输出 (u_{\alpha},u_{\beta})。
  3. 建立两个 SOGI-QSG 子系统,每个子系统内部实现式(2)和式(3)。
  4. 建立正负序分离模块,按式(6)到式(9)完成运算。
  5. 只取正序分量 (u_{\alpha}^{+},u_{\beta}^{+}) 进入 Park 变换。
  6. 把 (u_{q}^{+}) 送入 PI 控制器,PI 输出叠加额定频率前馈,再用积分器得到角度 (\theta)。
  7. 将 (\theta) 反馈回 Park 变换,形成闭环。

仿真步长建议设置得足够小。如果使用变步长,至少把最大步长限制在 (1\times10^{-4}) 秒以内;如果验证离散化实现,直接设置为固定步长 (1\times10^{-4}) 秒,也就是 10kHz 采样。

7.2 理想电压下的锁相过程

输入三相平衡电压,幅值 311V,频率 50Hz。运行仿真后重点观察三类变量:

  • (\theta) 是否从 0 开始平滑增长,没有跳变;
  • (u_{q}^{+}) 是否在启动暂态后收敛到 0;
  • 输出频率是否最终稳定在 314.159 rad/s 附近。

如果 (u_{q}^{+}) 不能收敛到 0,先检查 Park 变换中的正负号,再检查 PI 输出极性。常见错误是把 (u_{q}^{+}) 反馈极性接反,导致系统构成正反馈,频率一直往上跳。

7.3 三相不平衡电压验证

将三相电压设置为不平衡状态,例如 A 相幅值 311V,B 相 240V,C 相 280V。这时如果使用普通 SRF-PLL,(u_{q}^{+}) 中会出现明显的 100Hz 正弦纹波,锁相角度也会周期性抖动。

DSOGI-PLL 输出中,负序分量会进入 (u_{\alpha}^{-},u_{\beta}^{-}) 通道,而不进入后面的同步环。因此 (u_{q}^{+}) 应基本保持为 一个平直的直流信号,只剩下锁相暂态调整形成的衰减振荡。

判断分离效果是否已达标的快速方法是看 (u_{q}^{+}) 波形的频谱。若仍存在明显 100Hz 分量,则说明两路 SOGI 参数不对称或中心频率存在偏差,需要检查 (\alpha) 轴和 (\beta) 轴 SOGI 模块是否完全一致。

7.4 电压跌落和谐波畸变验证

在 0.2 秒时设置 A 相电压跌落至 40%,持续 0.1 秒后恢复。重点关注过程中锁相相位与真实正序相位之间的误差。DSOGI-PLL 由于存在 SOGI 的滤波动态,会比纯 SRF-PLL 有更大的暂态误差,但最终能恢复锁定。这个特性在 APF 低电压穿越或电网故障穿越设计时需要特别考虑。

在电压中加入 5 次和 7 次谐波后,会发现 DSOGI-PLL 并不能把所有谐波完全滤除。这是因为 SOGI 的带宽有限,5 次谐波经过 SOGI 后仍可能保留 20%以上的幅值,这些残余

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询