手把手教你打电赛(开源)--单相锁相环原理与仿真验证
本文研究了基于二阶广义积分器(SOGI)的单相锁相环设计。针对单相系统缺乏正交分量的问题,采用SOGI作为正交信号发生器来构造虚拟正交信号。文章详细分析了SOGI的结构特性、传递函数及其离散化实现方法,并通过MATLAB仿真验证了其鲁棒性。结果表明,SOGI-QSG能够有效滤除谐波干扰,保持输入与输出信号的正交关系。仿真测试证实该锁相环具有快速准确的锁相性能。文中给出了关键参数整定方法和代码实现细
一、基于二阶广义积分器的单相锁相环原理
1、单相锁相环原理简介
在三相电网系统中,基于同步旋转坐标系的锁相环(SRF-PLL)应用非常广泛。因为三相信号中有三个分量,可以通过Park变换将静止坐标系变换为旋转坐标系,从而实现对电网频率和相位的锁定。
对于单相电网,由于只有一个电压信号,缺乏正交分量,无法直接进行坐标变换。为此,引入正交信号发生器(QSG),通过数学方法虚拟构造一个与原信号正交的信号,使单相信号也能实现类似三相系统的相位锁定。
图1给出了单相锁相环的结构图。输入电压信号经过QSG后生成两路互为正交的信号,分别记为uα和uβ,再通过Park变换得到ud和uq。接着,将uq作为相位误差信号,送入PI控制器,通过积分环节不断修正估计角速度ω,最终使估计的相位角θ^与输入信号的实际相位同步。

图 1 基于 QSG 的单相锁相环结构图

图 2 Park 变换示意图
图2直观地展示了Park变换的过程。QSG输出的uα和uβ可以看作是一个二维向量u⃗。当旋转坐标系(即dq坐标系)与这个向量对齐时,输入信号在d轴上的投影最大,而在q轴上的投影为零。因此,锁相控制的目标就是使得uq=0,也就是说让dq坐标系的d轴与输入信号对齐。通过不断调节估计的相位角θ^,实现q轴输出趋近于零,从而达到相位锁定的目的。
2、二阶广义积分器
单相锁相环的性能优劣取决于QSG模块的性能,二阶广义积分器(SOGI)对比与其他正交发射器而言有着结构简单、滤除谐波能力强、锁相精度高被广泛应用于虚拟量的构造。图3给出了SOGI的结构图。

图 3 二阶广义积分器结构图
图3中,v、v′和qv′分别是输入信号、同相位信号和虚拟正交信号;k是系统增益,也是闭环系统的带宽;ω0是角频率,即系统的谐振频率。由图3,可写出SOGI的闭环传递函数


从传递函数可以看出,H1(s)和H2(s)的带宽仅与参数k有关,而与中心频率ω0无关。当令s=jω0时,H1(s)和 H2(s)之间的相位差为90°,体现出正交特性。参数k的取值直接影响系统的滤波性能与动态响应,通常取经验值1.414。

图 4 SOGI 伯德图
利用MATLAB软件对SOGI的鲁棒性进行可视化分析,绘制了参数为ω0=100π、k=1.414时的Bode图,如图4所示。可见,H2(s)在全频域内始终滞后 H1(s) 90°,表明无论ω0取值如何,H1(s)与H2(s)始终保持正交关系。
二、关键实现步骤
1、SOGI离散化部分
1.1 实现代码

1.2 实现原理
由于 H1(s) 和 H2(s) 均为二阶滤波器,下面给出二阶传递函数在 C 语言中的通用实现代码。通过修改输入信号和相关系数,即可实现不同形式的二阶滤波器。具体原理如下:
二阶系统传递函数的离散化传递函数为:

(1) 定义中间变量(为减少计算量)
将传递函数分解为两个部分:

引入中间变量W(z)

(2) 推导递归部分
![]()
转换为时域差分方程:
![]()
对应代码:

(3) 推导非递归部分
输出表达式:
![]()
转换为时域差分方程:
![]()
对应代码:

1.3 SOGI参数整定
上面代码中涉及到多个参数,包括gain、B0、B1、A1、A2、A3。它们可使用下列matlab代码进行整定。先运行matlab代码,再去仿真里面核对。其中关键参数为Ts,即fsw。
% SOGI spll
clc;
clear all;
% SOGI coefficient
fline = 50;
wsogi = 2 * pi * fline;
wline = 2 * pi * fline;
fsw = 20e3;
Ts = 1/fsw;
k = 1.414;
% SOGI TF
tf_in = tf([0 k*wsogi 0], [1 k*wsogi wsogi^2]);
tf_out_dly90deg = tf([0 0 k*wsogi^2], [1 k*wsogi wsogi^2]);
% C 2 D
tf_in_d = c2d(tf_in, Ts, 'tustin')
tf_out_d = c2d(tf_out_dly90deg, Ts, 'tustin')
[num_vd, den_vd] = tfdata(tf_in_d,'v')
[num_id, den_id] = tfdata(tf_out_d,'v')
% Show TF bode
figure(1)
z = bodeplot(tf_in_d, tf_out_d);
setoptions(z,'FreqUnits','Hz','PhaseVisible','on')
grid on;
2、单相锁相环
2.1 实现代码

2.2 实现原理与参数整定
实现原理见图1。PI参数整定用试凑法,见仿真文件。
三、仿真验证
3.1. 仿真模型(开源文件见文末)
图5为所搭建的仿真模型,采用锁相环获取单相逆变器输出电压的相位信息。图6为仿真结果,锁相环能实现快速准确锁相。

图 5 仿真模型截图

图 6 仿真结果:锁相环能快速准确锁相
公众号“电源海盗船”中,回复“single_PLL”我将发出这个仿真文件,包括单相逆变器仿模型和锁相环代码。
特别说明:本内容所涉仿真基于微信公众号“开关电源仿真与实用设计”的开源文件进行二次开发与注解。详细链接如下:基于广义二阶积分器的的单相交流锁相环仿真
其他参考资料:
-
胡辉.单相并网逆变器的矢量控制策略研究. 2024. 华东交通大学, MA thesis.
-
袁静.两级式单相DC-AC变换器的二次谐波抑制及稳定性研究. 2024. 华北电力大学, MA thesis.
-
高鑫波.单相准Z源逆变器二次谐波抑制及稳定性研究. 2024. 华北电力大学, MA thesis.
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)