最近帮一位做并网装置的朋友排查过流保护误动作故障录波一打开问题就清楚了电网电压只出现了一次单相跌落逆变器侧软件锁相环输出的同步角就开始以100Hz的频率来回摆动。这个现象在传统同步坐标系SPLLSRF-PLL里太典型了三相电压一旦不平衡负序分量混进dq轴锁相角就会被二倍频扰动拽着走。后来把锁相环换成双二阶广义积分器结构的DSOGI-SPLL同样的跌落工况频率输出稳得几乎看不出波动。这篇文章就把我从Simulink建模到对比仿真的完整过程写出来重点放在两种结构的差异来源、正负序分离的实现细节以及工程上真正需要注意的取舍。适合正在做并网逆变器、有源滤波器、动态电压恢复装置或者刚接触锁相环想弄清楚SRF-PLL和DSOGI-SPLL到底差在哪的人。1. 传统SPLL的三板斧结构以及它在三相不平衡电网里吃的亏1.1 从abc到dqSPLL的开环链路先说清楚传统SPLL的基本盘。三相电压经过Clark变换得到静止坐标系下的uα、uβ再用锁相环输出的估计角度θ̂做Park变换得到ud、uq。闭环控制的目标就是让uq等于0——因为当θ̂和真实电压矢量角度θ一致时uq正好为零。PI调节器根据uq误差输出角频率修正量再积分出θ̂形成一个典型二阶闭环。工作过程看起来顺理成章但问题在于它假设了输入电压是理想对称的三相正弦量。只要电网稍微不讲武德这套结构就会露馅。小信号分析一下uq在锁相点附近近似等于Um×(θ-θ̂)其中Um是电压矢量的幅值。环路线性化之后是一个典型的二阶系统PI参数Kp、Ki配合积分环节1/s共同决定了锁相环的带宽和阻尼。1.2 负序分量是怎么混进dq轴的一倍频变两倍频三相不平衡时用对称分量法可以把电压分解成正序、负序、零序。负序分量在静止坐标系里以角频率-ω旋转但Park变换是按正序方向ω旋转的所以负序分量进入dq坐标系后会以2ω的速度旋转。结果就是uq不再是一个平稳的直流信号而是被叠加了一个100Hz的正弦扰动。这个扰动可不是个小问题。单相电压跌落30%的时候通过对称分量法算下来负序与正序幅值比大约在0.1到0.12之间。代入小信号关系锁相角的稳态误差峰值大概有6到7度角频率误差峰值按照2倍频关系折算能达到每秒十弧度以上的波动——换算成工频等效跳变就是将近10Hz的抖动。我一开始以为这只是理论推导结果Simulink里一跑频率输出确实在50Hz附近以100Hz的频率大幅摆动。并网电流在这种锁相角下被迫跟着畸变过流保护不误动才怪。1.3 谐波进来时SPLL只能用带宽硬扛负序的问题还没解决谐波又来了。5次、7次谐波经过Park变换之后会在dq轴变成300Hz左右的扰动。理论上可以把PI带宽压低把高频扰动滤掉但带宽压低了锁相环的响应速度也跟着变慢。并网设备在电网故障时往往要求锁相环尽快输出准确角度这两者天然冲突。我在实际项目中见过很多妥协方案有的在PI输出后面串陷波器专门滤2倍频或6倍频有的把电压信号先过一个低通滤波器再进锁相环。这些方法在单一故障工况下有效但工况一变比如谐波频率偏移、多重故障叠加参数就得重新调。这也是DSOGI-SPLL出现的原因它不是在SPLL外围打补丁而是在源头上把正序分量给提纯出来。2. SOGI的本质在静止坐标轴里生成干净且正交的两相电压2.1 二阶广义积分器的两个输出一个带通一个正交低通SOGI的中文名容易把人吓住其实它就是一组谐振器。它的传递函数有两条输出支路同相输出d通道H_d(s) k·ω·s / (s² k·ω·s ω²)正交输出q通道H_q(s) k·ω² / (s² k·ω·s ω²)其中ω是SOGI的中心频率或者说谐振频率k是阻尼系数。在中心频率ω处d通道的输出幅值增益是1、相位偏移是0q通道的输出幅值增益也是1但相位滞后90度。是不是有点眼熟对它本质上是给静止坐标系下的单相信号配了一个正交分量。d通道在中心频率附近是带通特性偏离中心频率的信号会被衰减q通道更接近低通特性高频分量衰减更快。两个通道组合起来就实现了只认基波、滤掉干扰、同时构造正交信号的效果。2.2 DSOGI的正负序分离四个信号如何凑出正序电压DSOGI的全称是Dual Second Order Generalized Integrator也就是在α轴和β轴各放一个SOGI。两个SOGI一共输出四个信号vα、q·vα、vβ、q·vβ。正负序分离的关键就是这四个信号怎么交叉组合。以滞后90度算子q的约定正序分量提取公式如下vα 0.5×(vα - q·vβ) vβ 0.5×(vβ q·vα)注意这里一定是交叉项α轴的同相输出要和β轴的正交输出做差β轴的同相输出要和α轴的正交输出做和。如果连错线正序算出来是错的负序更是提取不对。验证逻辑也不复杂。对纯正序输入q·vα约等于vβq·vβ约等于-vα代入上式后正序原样保留、负序被抵消对纯负序输入q算子的关系反过来了正序提取式自然输出0。这就是为什么DSOGI能分离正负序的根本原因。2.3 k值到底取多少一个阻尼系数背后的响应代价SOGI里唯一可调的增益就是k。这个参数直接决定谐振器的带宽k √2是很多论文里的默认选择幅频特性在基波附近有大约±10%的频率通带兼顾动态响应和谐波抑制。k取小一些比如0.5谐波衰减更猛但输入电压突跳后正交信号的建立时间明显变长。k取大一些比如2动态响应快了但高次谐波也更容易漏进来。我在仿真里对比过不同k值下的正交信号建立时间。k√2时阶跃扰动后大约两三个工频周期可以稳定k0.5时需要五六个周期。这个差距在故障穿越这种对时间敏感的场合会直接影响控制策略的切入时机。还要特别注意一个细节SOGI的中心频率ω如果和电网实际频率不一致d通道和q通道的幅值、相位关系都会失真正负序分离也就不再准确。因此DSOGI-SPLL一定要把锁相环估计出的频率反馈给SOGI作为ω形成完整的频率自适应闭环。这一条是很多初版仿真漏掉的。3. Simulink里搭DSOGI-SPLL模块划分、参数整定和最容易错的交叉连线3.1 三相电压源直接用表达式生成省去电力电子库的麻烦做锁相环对比仿真我的建议是不要一上来就用SimPowerSystems里的三相可编程电压源。虽然那个模块也能设不平衡和谐波但毕竟要经过电气接口转换而且电压波形受求解器影响排查问题多一层干扰。我在模型里直接用数学表达式搭建三相电压源ua Um×cos(2πft) ub Um×cos(2πft - 2π/3) uc Um×cos(2πft 2π/3)不平衡工况就把某一相幅值改成0.7倍谐波工况直接在表达式里叠加5次、7次分量比如加一项0.15×Um×cos(2π×250t)。这样每个分量的幅值、相位都清清楚楚想调哪个调哪个。唯一要注意的是仿真步长。正弦表达式用固定步长求解时如果步长设得太大波形会呈阶梯状谐波分析结果就不准。我建议用固定步长10微秒配合ode4求解器50Hz下每个工频周期有2000个采样点足够支撑锁相环和谐波对比的精度。3.2 SOGI用状态方程搭方便把锁相环频率实时反馈回来为什么不用现成的传递函数模块因为Simulink的Transfer Fcn模块参数是固定常数而DSOGI-SPLL需要把锁相环输出的频率估计值实时反馈给SOGI让ω跟着电网频率走。这时候用状态方程手动搭建最灵活。SOGI的状态方程写法如下输入为u输出为v_d和v_qx1_dot x2 x2_dot -ω²×x1 - k×ω×x2 u v_d k×ω×x2 v_q k×ω²×x1这里面x1、x2是两个积分器的状态量ω是外部输入端口。用Simulink积分器加增益模块就能搭出来两个SOGI分别接uα和uβ就行。有一个仿真中很实际的坑ω在启动瞬间如果从0开始SOGI的谐振频率会从0慢慢爬升锁相环启动时间会被拉长。我习惯把ω反馈的初值直接设成2π×50这样一开机就在额定频率附近省去启动阶段的频率搜索过程。3.3 正负序分离模块的符号坑滞后90度算子的交叉项别接反这是整个模型里最容易接错的地方务必单独拎出来说。SOGI的q输出是滞后90度这一点定下来之后正序提取公式就是前面给的vα 0.5×(vα - q·vβ) vβ 0.5×(vβ q·vα)有些资料里用的是超前90度的定义公式里的加减号会全部反过来。如果你参考了一篇文献搭模型一定先确认它的q算子到底哪个方向不然仿真波形会莫名其妙地出现正负序无法分离的现象。我在模型里把四个SOGI输出分别引出然后通过增益0.5和求和模块组合。连线时心里默念α轴的同相分量跟β轴的正交分量做差β轴的同相分量跟α轴的正交分量做和。接完之后用纯正序输入测一下输出如果vα等于vα且vβ等于vβ说明连线正确。3.4 锁相环PI参数整定从二阶闭环直接算Kp和KiSPLL和DSOGI-SPLL后面的PLL部分在结构上没有区别PI参数也可以沿用同一套。为了方便设计建议把电压进行标幺化处理送入锁相环的电压矢量为1的时候推导最简单。闭环特征方程近似为s² Kp×s Ki 0所以有ζ Kp / (2√Ki) ωn √Ki如果希望阻尼比ζ0.707自然频率ωn2π×40≈251rad/s那么Ki直接是ωn²约63000左右Kp等于2ζωn约355。这个参数下锁相环的闭环带宽大约40Hz对100Hz负序扰动有一定衰减但压不住对外正好能体现出DSOGI的优势。注意如果不用标幺化而是直接用实际电压幅值输入公式里要额外乘一个幅值增益。我在仿真里统一除以电压峰值做归一化一条链路下来不需要来回换算少踩一个坑。下表是我在模型里用到的核心参数项目参数值说明额定频率50Hz电网基频电压幅值标幺1.0Park变换前归一化SOGI阻尼系数k√2默认折衷取值SOGI中心频率初值2π×50启动即额定PLL自然频率2π×40对应ωn≈251PLL阻尼比0.707二阶最优阻尼仿真步长10μsode4固定步长杆这个参数组合跑下来稳定性和响应速度都比较均衡。4. 四组对比仿真DSOGI的优势和代价都是量化的4.1 理想平衡电网PLL部分的响应差异先做基准工况三相平衡、电压幅值标幺1.0、频率50Hz0.2秒时把初始相位加入一个30度的跳变看锁相环动态跟踪过程。传统SPLL的相位响应很快超调量也就10%左右大约两三个工频周期进入稳态DSOGI-SPLL的相位响应会慢一些因为输入到PLL之前多了一级SOGI加正负序分离等效于在环外增加了一个滤波环节阶跃响应要多出几十毫秒的过渡时间。这个差距在平衡电网下看起来是缺点但换来的是非理想工况下更干净的正序电压。做锁相环对比研究一定不能只看平衡工况下的响应速度那是SPLL的主场。4.2 单相跌落30%频率波动从十几赫兹压到0.5赫兹以内然后是重头戏。在0.3秒时把A相电压幅值从1.0瞬间降到0.69即跌落31%持续0.2秒后恢复。传统SPLL在这个工况下的频率输出直接发疯了以50Hz为中心叠加了一个接近100Hz的波动峰值偏差大约正负6到8Hz锁相角误差也在正负6度左右摆动。这个结果和前面的对称分量分析基本吻合。换成DSOGI-SPLL之后频率输出在跌落瞬间有短暂的过渡过程之后基本稳定在50Hz附近残余波动压在0.5Hz以下锁相角纹波小于0.5度。原因很直接负序电压在进入Park变换前就被正负序分离模块剔除了PLL看到的始终是干净的正序电压。坦率地说DSOGI并非瞬间稳住——在跌落发生后的第一个20毫秒内SOGI需要建立新的正交信号频率输出还是有一个小台阶但这和SPLL那种持续振荡完全是两个量级。4.3 谐波污染下的稳态相位纹波再叠加谐波工况电压在基波基础上加入15%的五次谐波和10%的七次谐波模拟非线性负载占比很高的电网环境。传统SPLL的θ输出会出现明显的六倍频纹波也就是300Hz峰峰值大概2到3度。这已经会影响并网电流的THD做高精度并网的话基本不可接受。DSOGI-SPLL在这个工况下的纹波取决于SOGI的k值。k√2时纹波能压到0.5度左右把k降到0.707纹波更小但动态响应又慢一截。如果你想在强谐波环境下用DSOGI建议在动态响应和稳态精度之间选一个k而不是无脑采用√2。4.4 频率阶跃工况动态速度与平滑度不可兼得最后一组工况模拟弱电网下频率漂移在0.3秒时电网频率从49.5Hz瞬时跳到50.5Hz。传统SPLL因为环路带宽高能在大约三到四个工频周期内把估计频率调整到50.5Hz但有10%到20%的超调DSOGI-SPLL因为SOGI的自适应频率反馈有一个重新收敛的过程整体调节时间更长大约五到六个工频周期不过过渡曲线非常平滑几乎没有超调。这对微电网和弱电网场景其实是个优点频率估计不超调意味着逆变器输出功率不会跟着锁相环一起来回冲。四组工况的量化汇总如下工况传统SPLLDSOGI-SPLL平衡电网相位跳变2~3个周期锁定有超调锁定更慢约多20~30ms单相跌落30%相位纹波±6°频率波动±6~8Hz100Hz相位纹波0.5°频率波动0.5Hz5次15%7次10%谐波θ纹波2~3°300Hzθ纹波0.3~0.5°k√2频率阶跃1Hz3~4个周期收敛有超调5~6个周期收敛无超调仿真下来对DSOGI的定位很清楚了它不是更快的锁相环而是一个在畸变环境下依然干净的锁相环。5. 我的几点实践体会这个方案不是万能的用之前先看清楚工况5.1 DSOGI-SPLL的适用边界用DSOGI-SPLL两年多一个最深的感受是方案选型要对着工况来别逢人就推荐DSOGI。如果你的设备接入的是强电网电压畸变率很低三相基本平衡传统SPLL结构简单、参数好调、动态响应快完全够用。强电网环境下硬上DSOGI反而是给自己找麻烦——多了一堆参数要调动态响应还变慢了。但如果你做的是弱电网设备、微电网逆变器、有源滤波器这类东西电网里什么妖魔鬼怪都可能出现DSOGI的价值就体现出来了。它最大的贡献不是把锁相精度从1度提到0.01度而是把负序、谐波这些让人头疼的扰动挡在PLL环路之外让后面整条控制链路不用跟着锁相环一起遭殃。5.2 从Simulink到嵌入式实现的两个提醒最后说两个把仿真模型搬到嵌入式平台时容易踩的坑。第一个坑是离散化。Simulink里用连续积分器搭的SOGI到了DSP上必须写成递推方程。如果用双线性变换离散化注意谐振频率会发生偏移通常需要做预畸变校正。如果不校正SOGI的中心频率会偏几个赫兹正负序分离效果直接打折。第二个坑是状态量数值尺度。我在前面给的SOGI状态方程里v_q k×ω²×x1x1这个状态量在电压标幺化之后数值很小。用浮点MCU还好如果你用的是定点处理器一定要提前做Q格式转换否则低通支路会出现严重的量化噪声。还有一个启动细节频率反馈ω的初值务必给到接近50Hz的位置同时把SOGI的两个积分器初值设成0。这样冷启动时不会出现频率搜索过程锁相环能快速进入跟踪状态。实际测试中这个初值设置能把启动时间缩短三分之一以上。这套模型我至今还留着每次遇到电网同步的新问题就拿出来跑一遍对比。DSOGI-SPLL和SPLL的本质差异不在于谁更先进而在于它们对电网畸变的耐受方式完全不同——一个靠外部滤波硬扛一个靠内部结构消化。想明白这一点你再看任何锁相环的改进方案都会觉得清晰很多。