尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

SOGI-PLL锁相环在电网同步中的应用与仿真实现

SOGI-PLL锁相环在电网同步中的应用与仿真实现 1. 项目概述与核心价值最近在搞一个双向交错CCM图腾柱无桥PFC的项目这玩意儿算是当前高效率AC-DC变换器里的一个热门拓扑。在推进到控制环路实现时一个无法绕开的基础环节就是电网电压的同步——你需要一个又快又准的锁相环PLL来实时抓取电网的相位和频率否则后续的电流环控制根本无从谈起。尤其是在图腾柱PFC这种对过零点检测要求苛刻的电路里相位信息差一点THD总谐波失真和效率就可能崩掉。我这次重点折腾的是基于二阶广义积分器SOGI的锁相环也就是常说的SOGI-PLL。为啥选它因为传统的基于同步旋转坐标系的软件锁相环SRF-PLL在电网电压畸变、不平衡时性能会大打折扣。而SOGI本身就是一个优秀的正交信号发生器QSG和带通滤波器它能从畸变的输入信号中干净地提取出基波正序分量并生成一对完美的正交信号sin和cos这正好是PLL锁相需要的。说白了SOGI-PLL就是为了应对不那么“干净”的实际电网环境而生的鲁棒性要好得多。这篇文章我就把自己从理论学习、Simulink仿真搭建到关键参数调试的整个过程和心得记录下来。目标很明确不只是把仿真跑通更要弄明白SOGI和PLL每一个参数背后的物理意义知道怎么调以及为什么会这么调。这对于真正要把算法烧录到DSP或单片机里去驱动一个实实在在的千瓦级图腾柱PFC硬件平台是至关重要的前期准备。2. SOGI-PLL原理深度拆解2.1 从需求倒推为什么图腾柱PFC需要鲁棒的PLL在深入公式之前我们得先搞清楚需求。图腾柱无桥PFC特别是工作在CCM连续导通模式下其控制目标是让输入电流波形紧紧跟随输入电压波形从而实现单位功率因数。这里的“跟随”本质是电流环的给定信号需要一个与电网电压同相位的正弦波模板。如果电网是理想的正弦波Vg Vm * sin(ωt)那锁相很简单。但现实很骨感电网电压常有谐波特别是3次、5次、7次、可能因局部负载导致轻微不平衡、还会有电压暂降或骤升。传统的SRF-PLL在遇到这些情况时其锁相输出的相位和频率会产生波动或误差这个误差会直接传递给你生成的电流正弦模板导致输入电流失真功率因数下降THD升高。SOGI-PLL的价值就在这里凸显。它的核心部件SOGI能够以特定的中心频率通常设为电网基频50/60Hz构造一个带宽很窄的带通滤波器。这个滤波器有两个输出一个是对输入信号的滤波跟踪另一个是它的正交滞后90度信号。这样它一方面滤除了电网电压中的谐波干扰另一方面直接生成了PLL鉴相器所需的正交信号对一举两得。2.2 SOGI的数学模型与传递函数SOGI的结构可以从一个积分器反馈系统推导出来。其传递函数定义如下假设我们需要从输入信号v中提取出角频率为ω的分量正交信号发生器QSG传递函数对于同相分量vD(s) v(s)/v(s) k * ω * s / (s² k * ω * s ω²)对于正交分量qvQ(s) qv(s)/v(s) k * ω² / (s² k * ω * s ω²)其中ω是SOGI的谐振频率即中心频率也就是我们期望锁定的电网角频率k是一个关键的阻尼系数。物理意义解读当输入信号频率ω等于ω时v的输出增益为1相位滞后为0度qv的输出增益也为1相位滞后为90度。完美生成了一对幅值相等、相位正交的信号。参数k直接决定了SOGI的带宽。带宽BW ≈ k * ω / 2。k值越大带宽越宽动态响应越快对频率变化的跟踪能力越强但滤波效果越差抗干扰能力越弱k值越小带宽越窄滤波效果越好但动态响应变慢。这是一个典型的响应速度与抗扰性之间的权衡。注意这里的ω是SOGI模块自身的中心频率参数在SOGI-PLL系统中它来自PLL输出频率的估计值ω_est形成一个自适应的闭环。2.3 闭环SOGI-PLL的系统构成SOGI-PLL不是一个开环结构它通过PLL闭环来动态调整SOGI的中心频率ω使其始终对准电网电压的实际基频。其典型结构包含以下三个部分SOGI-QSG模块接收电网电压vα通常经过Clark变换后的α轴分量对于单相系统β轴分量可设为0或通过虚构电路生成以及来自PLL的当前频率估计值ω_est。输出一对正交信号vα和vβ其中vβ理论上就是qvα。这一对信号可以视作一个“净化后”的虚拟两相静止坐标系αβ下的电压矢量。鉴相器PD在PLL中我们需要一个误差信号来驱动频率调整。这里通常采用基于虚拟两相旋转坐标系dq的鉴相方式。将[vα, vβ]通过Park变换转换到以θ_estPLL估计的相位为参考的旋转坐标系下vd vα * cos(θ_est) vβ * sin(θ_est)vq -vα * sin(θ_est) vβ * cos(θ_est)在锁相状态时电压矢量应与d轴重合因此vq理论上应为0。vq的值就直接反映了相位误差vq 0表示估计相位滞后于实际相位需要加快ω_estvq 0则表示超前需要减慢ω_est。因此vq信号就是我们的相位误差信号。环路滤波器LF通常是一个PI调节器。它接收鉴相器输出的误差信号vq并输出频率的修正量Δω。PI调节器的参数设计决定了PLL的动态性能锁定速度、超调、抗噪能力。其输出Δω与一个额定频率ω0如 2π*50相加得到最终的估计频率ω_est。压控振荡器VCO实际上就是一个积分器1/s。它将估计频率ω_est积分得到估计的相位角θ_est。这个θ_est一方面反馈给Park变换用于鉴相另一方面作为整个PLL的输出供给后续的PWM调制模块生成同步的正弦表。同时ω_est也反馈给SOGI模块作为其自适应中心频率。整个环路的目标就是驱动vq到零从而实现θ_est对电网电压相位的精确跟踪。3. Simulink仿真模型搭建与关键模块实现理论分析之后必须在仿真环境中把它实现并调通。我用的是Matlab/Simulink它的可视化建模对于理解信号流向非常友好。3.1 模型整体架构搭建我的仿真模型主要分为几个部分电网电压源可以设置基波频率、幅值并添加谐波如3次、5次谐波或模拟电压暂降用于测试PLL的鲁棒性。SOGI-QSG模块用Simulink基本运算模块增益、积分器、加法器根据传递函数直接搭建。PLL核心模块包含Park变换鉴相器、PI调节器环路滤波器、积分器VCO。观测与测量模块用Scope观察原始电网电压、SOGI输出信号、vq误差、估计频率ω_est、估计相位θ_est及其与真实相位的误差。3.2 SOGI-QSG模块的离散化实现这是将算法部署到数字处理器如DSP的关键一步。仿真中我们通常用连续模型但心里要清楚离散化怎么做。这里采用前向欧拉法或双线性变换Tustin进行离散化。以常用的离散化形式为例可以得到如下的迭代计算方程设采样时间为Ts离散化后的SOGI状态方程为// 假设当前采样点为 n // 输入: v[n], 输出: v_prime[n], qv_prime[n] // 内部状态变量: x1[n], x2[n] // 参数: k, w_est (来自PLL 每个采样周期更新一次) // 计算中间变量 epsilon v[n] - v_prime[n-1]; // 误差有的结构这里是 v[n] - x1[n-1] // 更新状态变量 (具体系数由离散化方法决定例如双线性变换) x1[n] a11 * x1[n-1] a12 * x2[n-1] b11 * v[n] b12 * epsilon; x2[n] a21 * x1[n-1] a22 * x2[n-1] b21 * v[n] b22 * epsilon; // 计算输出 v_prime[n] x1[n]; // 或 k * w_est * x2[n] 取决于结构定义 qv_prime[n] w_est * x2[n]; // 或 k * w_est * x1[n]在Simulink中我们可以用“Discrete Transfer Fcn”或者“Discrete State-Space”模块来实现但为了更贴近代码实现我更喜欢用“MATLAB Function”块或者基础的延迟、乘加模块来搭建这样对每一步计算都了然于胸。实操心得仿真时可以先使用连续模块验证算法逻辑的正确性。确认无误后再将其替换为离散模块并设置一个与实际数字控制器一致的采样频率例如我的DSP PWM频率是100kHz但PLL算法环路可以运行在10kHz。对比连续和离散模型的差异能帮你理解离散化带来的相位延迟和精度损失。3.3 PLL环路参数设计与整定这是调仿真的核心环节。参数没调好仿真要么不收敛要么性能很差。SOGI参数k的选择如前所述k是阻尼系数决定带宽。对于50Hz电网我通常从k sqrt(2)开始尝试这是一个经典值能在动态响应和滤波间取得较好平衡。如果想增强滤除谐波的能力可以减小到0.5~1.0如果电网比较干净但需要快速跟踪频率变化如发电机启动可以增大到1.5~2.0。在仿真中可以通过突然改变电网频率观察ω_est的跟踪速度和超调来评估k值。PLL的PI调节器参数整定这是控制环路的标准问题。可以将内层的SOGI-QSG近似看作一个增益环节在锁定时增益为1那么整个PLL的开环传递函数可以简化为G_open(s) (Kp Ki/s) * (1/s)。这是一个典型的II型系统。带宽法先确定你希望PLL具有的闭环带宽ω_bandwidth。通常PLL带宽应远小于电网频率如50Hz但又要大于期望的频率跟踪速度。对于电网同步带宽通常在10Hz到30Hz量级。根据带宽和相位裕度一般取45°~60°的要求可以反算出Kp和Ki。经验试凑法仿真中常用先设Ki0逐渐增大Kp直到系统开始振荡临界状态记录此时的Kp_critical。然后取Kp 0.5 * Kp_critical再逐渐增加Ki观察vq的收敛速度和稳态误差。Ki用于消除稳态相位误差但太大会引起超调和振荡。我的仿真调试记录表测试场景SOGI参数kPLL PI参数 (Kp, Ki)观测现象与结论调整方向理想电网 50Hz1.414(80, 3200)锁定快vq稳态为零相位误差0.1度参数可用关注动态同上 频率阶跃至51Hz1.414(80, 3200)ω_est约0.1秒跟踪上超调约0.3Hz动态可接受加入5% 3次谐波1.414(80, 3200)ω_est有约0.1Hz的纹波θ_est误差波动增大减小k以增强滤波场景3k调为0.80.8(80, 3200)ω_est纹波减小至0.05Hz但频率阶跃响应变慢至0.2秒取得折中需根据主电路对THD要求决定电压幅值暂降50%0.8(80, 3200)PLL能保持锁定vq出现短暂波动后恢复鲁棒性验证通过4. 仿真结果分析与性能评估搭建好模型并初步调参后需要系统性地评估这个SOGI-PLL的性能看它是否满足图腾柱PFC控制系统的要求。4.1 稳态精度测试在理想的50Hz/311V220Vrms正弦电网下仿真运行足够长时间达到稳态。频率跟踪精度观测ω_est/(2π)其稳态值应为50.000Hz。在我的仿真中稳态误差小于0.001Hz这主要取决于仿真求解器的精度和PI中积分项的效果。相位跟踪精度比较θ_est和电网电压的真实相位θ_real 2π*50*t。直接相减得到相位误差Δθ。在稳态时Δθ应是一个接近零的常数可能存在极小的固定偏差。更直观的方法是用锁相输出的相位θ_est去生成一个正弦波sin(θ_est)与电网电压Vg同时显示。在锁相成功后两者应几乎完全重合仅存在幅值差异。我的仿真中稳态相位误差小于0.5度。4.2 动态性能测试动态性能决定了PLL应对电网变化的能力。频率阶跃响应在仿真中途如t0.3s将电网频率从50Hz突然变为51Hz。观测ω_est的波形。上升时间从变化开始到第一次达到新稳态值90%的时间。我的设计目标是在100ms以内。超调量最大频率偏差与稳态变化量1Hz的比值。应尽可能小过大的超调会导致相位突变。稳定时间进入并保持在最终稳态值±0.1Hz误差带内所需的时间。相位阶跃响应模拟电网电压的相位突变现实中较少但可测试极限。观察θ_est的跟踪过程。电压幅值突变在t0.4s将电网电压幅值突然降至一半。观测vq和ω_est的瞬态变化。一个好的SOGI-PLL应该能保持锁定仅产生短暂、可恢复的扰动。4.3 抗干扰能力鲁棒性测试这是SOGI-PLL相比传统SRF-PLL的优势所在必须重点验证。谐波干扰测试在电网电压中注入特定次数的谐波如5%的3次谐波、3%的5次谐波。观测稳态下ω_est的纹波大小和θ_est的波动情况。SOGI的带通特性应该能有效抑制这些谐波对锁相精度的影响。记录下不同k值下谐波引起的频率/相位波动幅值。电压不平衡测试对单相系统可模拟直流偏置或波形不对称给正弦波叠加一个小的直流分量或使正负半周幅值略有不同。观察PLL输出是否会出现二次纹波。噪声测试在采样信号上叠加高斯白噪声模拟实际采样电路中的噪声。测试PLL输出的抖动情况。通过以上测试我绘制了SOGI-PLL在不同k值下的性能对比曲线定性性能指标k较大 (如1.5-2.0)k较小 (如0.5-0.8)对图腾柱PFC的影响动态响应速度快慢响应快有利于应对电网频率波动谐波抑制能力弱强抑制能力强有助于降低电流THD输出信号纯度较差含较多谐波较好基波成分纯信号纯度直接影响电流参考波质量对参数ω_est敏感性较低较高敏感性高要求PLL频率输出更稳定结论对于追求高效率低THD的图腾柱PFC输入电流的质量是首要目标。因此倾向于选择较小的k值例如0.7~1.0优先保证锁相环在畸变电网下仍能提供纯净、稳定的相位信息。动态响应稍慢一些是可以接受的因为电网频率本身变化很缓慢。5. 从仿真到实现的工程化考量仿真完美不代表代码就能直接跑。把Simulink模型变成C代码烧进芯片中间还有一堆工程坑要踩。5.1 离散化与计算精度仿真中我们用的可能是double双精度浮点但很多DSP或单片机只支持单精度浮点甚至定点数。定点数量化如果使用定点数如TI的IQmath库需要仔细确定每个变量状态变量x1,x2参数k,ω_est中间结果的Q格式整数位和小数位的分配。量化会引入误差和极限环振荡需要在仿真中提前用定点模型验证。一个技巧是在Simulink中用“Data Type Conversion”模块模拟定点数观察性能衰减。采样率选择PLL算法的执行频率采样率不需要和PWM开关频率一样高。通常取开关频率的1/2或1/4即可。例如100kHz的PWMPLL环路可以运行在25kHz或50kHz。太高的采样率对性能提升有限但会增加计算负担太低则会影响动态性能和控制精度。需要折中。5.2 初始化和抗积分饱和启动过程上电时电网电压相位是随机的θ_est和ω_est的初始值如何设置通常将ω_est初始化为额定值2π*50θ_est初始化为0。但这样在锁相过程中可能会经历一个较大的相位纠偏过程导致vq和PI输出Δω出现很大的瞬时值。PI抗饱和在启动或大扰动期间vq误差很大PI调节器的积分项会迅速累积积分饱和导致ω_est飙升或骤降甚至超出合理范围如45-65Hz。必须实现PI抗饱和Anti-windup机制。常见的有 clamping输出限幅后停止积分或 back-calculation根据输出限幅值反向计算积分项方法。这在仿真阶段就要把限幅环节加上并测试。5.3 与主电路控制器的集成SOGI-PLL模块最终要嵌入到整个图腾柱PFC的数字控制环路中。数据同步PLL输出的θ_est和sin(θ_est)需要以确定的时序提供给电流环控制器。确保PLL计算完成后再执行电流环的运算。过零点处理对于图腾柱PFC交流输入电压的过零点是一个特殊时刻电路工作模式会切换如从慢管换流到快管。需要利用PLL输出的相位信息精确判断过零点时刻θ_est为0和π的时刻并提前做好控制逻辑的切换准备。在仿真中可以增加一个过零点检测和标志位生成的逻辑验证其准确性。频率自适应SOGI-PLL的一个优点是能输出实时频率ω_est。这个值可以反馈给其他需要频率信息的模块例如数字滤波器的系数、谐振控制器的中心频率等实现全系统的频率自适应进一步提升在频率波动下的性能。6. 常见问题与调试技巧实录在实际仿真和后续的硬件调试中我遇到了不少问题这里总结几个典型的问题1仿真一开始PLL就发散ω_est飞涨或归零。可能原因PI参数过于激进Kp或Ki太大或者SOGI的k值太大导致系统不稳定。排查步骤先将PI参数设得非常小如Kp0.1, Ki1k设为1左右。运行仿真观察vq是否是一个围绕0上下波动的小信号。如果不是检查SOGI模块的输入输出连接、Park变换的公式是否正确sin/cos符号极易搞反。确认θ_est的积分器初始条件为0。逐步增大Kp观察系统响应直到出现轻微振荡然后退回一点。问题2锁相后存在固定的稳态相位误差。可能原因PI调节器中的积分项Ki不够大无法完全消除静差。或者是SOGI模块在特定频率下本身存在微小的相位偏移理论上是0但离散化会引入。解决方法适当增大Ki。但要注意Ki太大会引起动态响应超调。也可以考虑在软件中对输出的θ_est做一个固定的相位补偿偏移这是一种工程校准手段。问题3在电网含有特定次谐波时PLL输出频率ω_est有周期性纹波。可能原因SOGI的带宽 (k值) 设置得不够窄未能充分滤除该次谐波。或者该谐波分量太强。解决方法首要方法是减小k值牺牲一些动态性能来换取更好的滤波效果。如果谐波频率固定如3次150Hz可以考虑在SOGI前级或后级增加一个针对该频率的陷波器Notch Filter进行针对性滤除。检查Park变换后的vd信号。在锁相且只有谐波时vd应该是一个直流分量加谐波vq应该是纯谐波。如果vq中含有直流或低频分量说明锁相中心有偏差。问题4从仿真模型生成代码后在硬件上运行效果差噪声大。可能原因采样信号噪声实际硬件采样的电网电压信号含有开关噪声。需要在软件中增加低通滤波但滤波会引入相位延迟需要在PLL环路设计时一并考虑。计算延时软件执行PLL算法需要时间这个计算延时相当于在环路中增加了一个滞后环节可能降低相位裕度导致振荡。在离散域设计时需要将这个计算延时通常是一个采样周期Ts建模进去。定点数精度不足检查定点数运算中的溢出和精度损失。特别是积分运算容易累积误差。硬件调试技巧在代码中将关键的中间变量如vq,ω_est,θ_est通过DAC模块输出用示波器观察。这是最直观的调试方式。对比仿真波形和实际波形差异点往往就是问题的根源。通过这一轮从理论到仿真再到工程化思考的完整过程我对SOGI-PLL的理解不再停留在论文公式上。它现在是一个有血有肉、参数可调、性能可预测、问题可排查的工具。把它作为双向交错CCM图腾柱PFC项目的“同步心脏”我心里踏实多了。接下来就是把它和电流环、电压环整合去挑战整个系统的仿真与实现了。
返回列表