SOGI-FLL 锁相环算法梳理

二阶广义积分器 (SOGI),主要作用是对输入的交流信号 \(u\) 进行窄带滤波,输出滤波后的一对同相分量 \(u_{sogi}\) 和正交分量 \(u_{sogi}'\),SOGI 的传递函数为:

\[\begin{cases} G_d(s) = \dfrac{\omega_0s}{s^2 + 2\zeta\omega_0s + \omega_0^2} \\[10pt] G_q(s) = \dfrac{\omega_0^2}{s^2 + 2\zeta\omega_0s + \omega_0^2} \end{cases} \]

Park 变换,将 SOGI 的输出经过旋转到 dq 坐标系,从而提取出相位误差值 \(e_{\theta}\),用于后面的反馈控制:

\[\begin{bmatrix} u_d \\ u_q \end{bmatrix} = \begin{bmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{bmatrix} \begin{bmatrix} u_{sogi} \\ u_{sogi}' \end{bmatrix} \\[10pt] u_d = \cos \theta u_{sogi} - \sin \theta u_{sogi}' \\[10pt] = V\sin(e_{\theta}) \approx V e_{\theta} \quad (\text{当 }e_{\theta} \text{ 较小时}) \]

PI 控制器,误差反馈控制中常见的控制器,里面包含了积分环节,将 \(e_{\theta}\) 作为控制器的输入,将输出频率跟踪值,并最终影响到相位跟踪值,从而形成反馈回路。它的传递函数:

\[G_{c}(s) = K_p + K_i/s \]

频率锁定环 (FLL),其中包括了鉴频器和积分器,主要用于将交流信号采样值和 SOGI 的滤波值做了相位偏差值的计算,再对相位偏差积分,得到一个修正后的角频率值 \(\omega_0\),这个值用于 SOGI 参数的自适应调节,从而形成反馈回路。并且这个值事实上接近于最终的频率跟踪值,因此可以直接作为前馈叠加到之前的 PI 控制器的输出上,提高跟踪速度。相位偏差的计算可以用下面的公式来描述:

\[(u - u_{sogi})u_{sogi}'\gamma = V^2(\sin(\phi) - \sin(\phi+\Delta \phi))\cos(\phi+\Delta \phi)\gamma \\[10pt] = V^2\Big(\sin(\phi+\Delta \phi/2-\Delta \phi/2) - \sin(\phi+\Delta \phi/2+\Delta \phi/2)\Big)\cos(\phi+\Delta \phi)\gamma \\[10pt] = 2V^2sin(\Delta \phi/2)\cos(\phi+\Delta \phi/2)\cos(\phi+\Delta \phi)\gamma \\[10pt] \approx V^2\Delta \phi \cos(\phi)^2\gamma \quad (\text{当 }\Delta \phi \text{ 较小时}) \]

适当设置参数 \(\gamma\) 的值,来抵消掉 \(V^2\) 的增益,其中包含的 \(\cos(\phi)^2\) 的波动需要紧接着后面的积分器进行消除。

最终 \(\omega_0 / (2\pi)\) 加到 PI 输出上得到锁相环的频率输出 \(f_o\),对 \(f_o\) 进行积分得到相位跟踪值 \(\theta\)

\[\theta = \int_0^t 2\pi f_o dt \]

以上所有的环节用框图来表示:

sogi-fll

输出交流信号设置为 \(10V 50Hz\),运行仿真,得到的结果如下:

wave1

锁相环能正确追踪到交流信号的频率 \(50Hz\) ,并且从误差信号 \(u_d\) 的曲线可以看出,大约在 1 个工频周期后,锁相环能准确跟踪到相位值。

posted @ 2026-08-17 15:03  JustKevinShen  阅读(4)  评论(0)    收藏  举报