2026/9/4 4:02:27

DSOGI-PLL原理与工程应用:不平衡电网下的正序锁相方案

DSOGI-PLL原理与工程应用:不平衡电网下的正序锁相方案 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}sk_{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(fk{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 时如果前馈仍然是 50HzPI 输出会承担全部频率偏差。较好的做法是让 FLL 估计得到的频率作为前馈或者至少让 PI 的积分项保持一个较小的稳态频率偏移。6. 离散化实现与参考代码连续域仿真通过之后真正的难点在数字控制器里的离散实现。SOGI 的连续传递函数包含 (s^{2}) 项如果只是简单用欧拉法替换积分器在高采样率下问题不大但在较低采样率下可能出现离散极点偏移、中心频率偏移甚至数值不稳定。常用的离散化方法是双线性变换[ s\frac{2}{T_{s}}\cdot\frac{z-1}{z1} \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} ]其中 (a2/T_{s})。Q 通道的离散传递函数为[ Q(z)\frac{k\omega^{2}\left(z1\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 电气模块用基本数学模块即可。这样做的好处是离散化后可以无缝迁移到代码生成。推荐建模步骤建立三相电压源模块或用三个正弦波模块按 120° 相位差构造。编写 Clarke 变换模块输出 (u_{\alpha},u_{\beta})。建立两个 SOGI-QSG 子系统每个子系统内部实现式2和式3。建立正负序分离模块按式6到式9完成运算。只取正序分量 (u_{\alpha}^{},u_{\beta}^{}) 进入 Park 变换。把 (u_{q}^{}) 送入 PI 控制器PI 输出叠加额定频率前馈再用积分器得到角度 (\theta)。将 (\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 相幅值 311VB 相 240VC 相 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%以上的幅值这些残余