
本文首发博客园作者 JustKevinShen - 博客园点击可查看我的原文SOGI-FLL 锁相环算法梳理 - JustKevinShen - 博客园二阶广义积分器 (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$$以上所有的环节用框图来表示输出交流信号设置为 $10V 50Hz$运行仿真得到的结果如下锁相环能正确追踪到交流信号的频率 $50Hz$ 并且从误差信号 $u_d$ 的曲线可以看出大约在 1 个工频周期后锁相环能准确跟踪到相位值。