SOGI-FLL 锁相环算法梳理

[复制链接]
发表于 2026-8-17 13:17:38 | 显示全部楼层 |阅读模式
二阶广义积分器 (SOGI),主要作用是对输入的交流信号 \(u\) 进行窄带滤波,输出滤波后的一对同相分量 \(u_{sogi}\) 和正交分量 \(u_{sogi}'\),SOGI 的传递函数为:

\[\begin{cases}G_d(s) = \dfrac{\omega_0s}{s^2 + 2\omega_0s + \omega_0^2} \\[10pt]G_q(s) = \dfrac{\omega_0^2}{s^2 + 2\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 个工频周期后,锁相环能准确跟踪到相位值。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表