(SOGI-PLL)基于simulink与DSP联合开发

1.SOGI-PLL简介

​SOGI-PLL(Second-Order Generalized Integrator-Based Phase-Locked Loop)​​ 是一种结合二阶广义积分器(SOGI)与锁相环(PLL)的先进同步控制技术,专为复杂电网环境下高精度提取基波相位与频率信息而设计。其核心在于通过SOGI结构构建正交信号生成器(Quadrature Signal Generator, QSG),结合自适应频率反馈机制,提升PLL在谐波干扰、电压跌落及频率波动等非理想工况下的动态性能与抗扰能力。

小林同学

2.Simulink中的DSP底层配置(以28069M为例)

在设置里选择硬件实现为DSP28069M。

采用EPWM中断运行算法(15khz)

EPWM配置如下:

采用中心对齐模式 

死区设置为2us

使能EPWM触发ADC采集

 配置一个GPIO进入中断时翻转一次电平(验证算法执行时间)

到此步底层配置完成。

3.SOGI-PLL算法模型搭建 

整体模型如下所示,输入为电网电压通过SOGI输出α和β分量,通过坐标变换后对Q轴分量进行锁相控制。

SOGI 采用matlab-function输出。

function [alhfa, beta] = sogi_shift(ua, t,w0)
    % 定义持久变量,确保 alhfa 和 beta 跨函数调用保持其值
    persistent alhfa_persistent beta_persistent
    
    if isempty(alhfa_persistent)
        alhfa_persistent = single(0);  % 初始值为0
        beta_persistent = single(0);   % 初始值为0
    end

    % 定义常数 k 和 w0
    k = single(1);          % k = 1


    % 计算 x = ua - alhfa
    x = single(ua) - alhfa_persistent;

    % 更新 alpha (alhfa)
    alhfa_persistent = alhfa_persistent + (x * k - beta_persistent) * w0 * t;
    
    % 更新 beta
    beta_persistent = beta_persistent + alhfa_persistent * w0 * t;
    
    % 输出更新后的 alhfa 和 beta
    alhfa = alhfa_persistent;
    beta = beta_persistent;
end

采用三次谐波注入的方法得到所需的CCR值

到此步算法模型搭建完成。 

4.硬件实验

连接驱动电路和LCL滤波器。

调不好的PI参数(TI官方有参数整定的详细文档)

不使能锁相环时,电网电压和逆变器输出电压按各自的角度运行。

使能锁相后,电压电压和逆变器输出电压同频同相位。

至此,锁相环模型验证完成。 

<think>嗯,用户问的是关于二阶广义积分器锁相环(SOGI-PLL)的开环传递函数的设计实现。首先,我需要回忆一下SOGI-PLL的结构。SOGI通常用于生成正交信号,配合锁相环来实现精确的相位跟踪。根据引用[1],用户提到双二阶广义积分器的传递函数D(s)和Q(s),但可能混淆了闭环和开环传递函数的应用。伯德图一般用于分析开环传递函数,所以用户可能在这里有疑问。 接下来,我需要确定SOGI-PLL的开环传递函数具体指的是哪个部分。根据引用[3],锁相环的传递函数通常系统开环传递函数结合形成闭环系统。在SOGI-PLL中,开环传递函数可能包括SOGI模块和环路滤波器(比如PI控制器)的组合。需要分解各个模块的传递函数,然后串联起来得到整体的开环传递函数。 SOGI的结构通常是一个二阶带通滤波器,其传递函数可以表示为$D(s) = \frac{k\omega s}{s^2 + k\omega s + \omega^2}$,其中k是阻尼系数,ω是中心频率。Q通道则是正交输出,传递函数可能为$Q(s) = \frac{k\omega^2}{s^2 + k\omega s + \omega^2}$。不过,在锁相环中,主要关注的是D(s)作为误差信号的处理部分。 然后,锁相环的环路滤波器通常使用PI控制器,传递函数为$G_{PI}(s) = k_p + \frac{k_i}{s}$。开环传递函数应该是SOGI的传递函数乘以PI控制器的传递函数,即$G_{ol}(s) = D(s) \cdot G_{PI}(s) \cdot \frac{1}{s}$,其中1/s代表压控振荡器(VCO)的积分作用。 设计时需要考虑稳定性,通过伯德图分析相位裕度和增益裕度。调整k_p和k_i来确保足够的稳定裕度,同时k的选择影响SOGI的带宽和动态响应。引用[1]提到D(s)和Q(s)是闭环传递函数,但伯德图用于开环,因此可能需要将整个环路断开,计算开环传递函数进行分析。 实现方面,离散化方法如双线性变换或前向欧拉法,将传递函数转换为数字滤波器。在代码中实现时,需要注意采样频率和参数的选择,避免数值不稳定。引用[2]提到软件锁相方案,所以用户可能对数字化实现感兴趣。 总结步骤:1. 分解SOGI-PLL结构,确定各模块传递函数;2. 组合得到开环传递函数;3. 设计参数k, k_p, k_i以满足稳定性;4. 离散化处理;5. 仿真验证。需要确保引用相关文献,比如引用[3]中提到的传递函数系统结合的例子,可能帮助用户理解如何将开环传递函数整合到整个系统中。</think>### 二阶广义积分器锁相环(SOGI-PLL)的开环传递函数设计实现 #### 1. SOGI-PLL的基本结构 二阶广义积分器(SOGI)是锁相环(PLL)的核心模块,用于生成输入信号同频正交的两路信号($v_\alpha$ 和 $v_\beta$)。其闭环传递函数为: - 同相通道:$D(s) = \frac{k\omega s}{s^2 + k\omega s + \omega^2}$ - 正交通道:$Q(s) = \frac{k\omega^2}{s^2 + k\omega s + \omega^2}$ 其中,$k$ 为阻尼系数,$\omega$ 为中心频率[^1]。 #### 2. 开环传递函数的定义 SOGI-PLL的开环传递函数需包含以下模块的串联: 1. **SOGI误差检测模块**:提取相位误差(通常由$D(s)$实现)。 2. **环路滤波器(PI控制器)**:传递函数为 $G_{PI}(s) = k_p + \frac{k_i}{s}$。 3. **压控振荡器(VCO)**:积分作用 $\frac{1}{s}$。 整体开环传递函数为: $$ G_{ol}(s) = D(s) \cdot G_{PI}(s) \cdot \frac{1}{s} = \frac{k\omega s}{s^2 + k\omega s + \omega^2} \cdot \left(k_p + \frac{k_i}{s}\right) \cdot \frac{1}{s} $$ #### 3. 设计步骤 1. **参数选择**: - **阻尼系数 $k$**:影响SOGI的带宽,通常取 $0.5 < k < 1.5$。 - **PI参数 $k_p, k_i$**:通过稳定性分析(如伯德图)调整,确保相位裕度 > 45°,增益裕度 > 6 dB[^3]。 2. **稳定性分析**: - 绘制开环传递函数 $G_{ol}(s)$ 的伯德图,验证增益穿越频率和相位裕度。 - 示例代码(MATLAB): ```matlab k = 1.0; omega = 100*pi; kp = 0.5; ki = 50; s = tf('s'); G_ol = (k*omega*s)/(s^2 + k*omega*s + omega^2) * (kp + ki/s) * 1/s; bode(G_ol); margin(G_ol); ``` 3. **离散化实现**: - 使用双线性变换(Tustin方法)将 $G_{ol}(s)$ 转换为数字滤波器,例如: $$ s \approx \frac{2}{T_s} \cdot \frac{z-1}{z+1} $$ - 离散化后通过差分方程在DSP或FPGA中实现[^2]。 #### 4. 实现验证 - **仿真验证**:在Simulink中搭建模型,注入频率阶跃或相位跳变,观察锁定时间和稳态误差。 - **实验验证**:通过硬件在环(HIL)测试,对比实际电网信号PLL输出相位。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值