
有源电力滤波器专题写到这里DSOGI-PLL 的原理框架其实已经清楚了一半。真正麻烦的是后半段SOGI 参数怎么选、正负序分离的符号怎么接、PLL 环路带宽定多少、离散化之后还稳不稳定。这篇就把后半段量化建模的内容完整展开。DSOGI-PLL 的输入是三相电压输出是电网电压正序基波的相位和频率本质上属于 APF 控制系统的“传感器”不是功率控制主环。它由三个子模块组成SOGI-QSG 正交信号发生器、正负序分离计算、SRF-PLL。这也是为什么它常常比普通过零锁相复杂得多你要先让控制器“看到”一个正交、对称、不含负序的基波电压然后才谈得上锁相。这篇内容适合正在做 APF、SVG、并网逆变器控制或者想把 DSOGI-PLL 搬到 DSP/FPGA 里的工程师。文章会依次给出数学模型、频率特性、不平衡工况分析、环路参数整定、离散化方法、Simulink 验证思路和工程排查清单。不需要 GPU、显存或专用 AI 环境常规 Matlab/Simulink 环境就能跑通全部验证流程。1. DSOGI-PLL 模块核心能力速览能力项说明模块类型电网同步与正序基波相位检测单元输入信号三相电网电压可支持三相三线或三相四线输出信号正序基波相位、频率、正序 dq 轴分量核心功能在不平衡、谐波畸变电网下抑制负序和低次谐波扰动组成结构Clarke 变换 DSOGI-QSG 正负序分离 SRF-PLL典型适用场景有源电力滤波器、SVG、并网逆变器、UPS实现平台Simulink 仿真、DSP/FPGA 实时控制计算硬性要求无 GPU/显存需求但控制周期要远高于基波频率典型控制周期若使用数字控制建议 50us200us具体按实际硬件选择离散化方式Tustin 双线性变换必要时做频率预畸变是否需要批量任务不需要但可做批量参数扫描和录波回放测试主要风险点SOGI 符号接反、dq 轴约定不一致、离散系数更新滞后DSOGI-PLL 的核心价值在于它让锁相环看到的不是畸变的三相电压本身而是电网电压正序基波分量。后文所有建模和参数设计都围绕这句话展开。2. 数学模型回顾与建模边界2.1 DSOGI-PLL 的整体信号流DSOGI-PLL 不是把三个 SOGI 直接用在一起而是有明确信号流三相电压 va/vb/vc - Clarke 变换 - vα/vβ - SOGI-QSG_α - vα、qvα - SOGI-QSG_β - vβ、qvβ - 正负序分离 PNSC - vα、vβ - Park 变换 - vd、vq - PI 调节器 - ω - 积分 - θ - 反馈到 Park 变换和 SOGI 中心频率很多人在 Simulink 里搭模型时会跳过某个反馈最常见的问题是把 SOGI 的中心频率固定死在 50Hz。如果电网频率持续偏移DSOGI-QSG 的输出会产生附加相位偏差最终锁出来的角度有误差。更合理的做法是把锁相环输出的角频率反馈回 SOGI让 SOGI 始终谐振在实际电网频率附近。2.2 SOGI-QSG 的传递函数单个 SOGI-QSG 的输出分为同相分量和正交分量。以输入为 v、输出分别是 v、qv 为例常用传递函数写成$$ D(s)\frac{v(s)}{v(s)}\frac{k,\omega,s}{s^{2}k,\omega,s\omega^{2}} $$$$ Q(s)\frac{qv(s)}{v(s)}\frac{k,\omega^{2}}{s^{2}k,\omega,s\omega^{2}} $$其中(k) 为阻尼系数典型值为 (\sqrt{2})(\omega) 为 SOGI 的谐振角频率由 PLL 频率反馈动态更新(D(s)) 是带通特性输出与输入基波同相(Q(s)) 是低通特性在谐振频率处输出滞后输入 90 度。在谐振点 (sj\omega) 处(D(j\omega)1)(Q(j\omega)-j)。也就是基波分量通过 SOGI 后幅值不变正交分量严格滞后 90 度。这个性质是后面正负序分离能够正确工作的基础。2.3 Clarke 变换与正负序分离假设三相电压没有零序分量采用等幅值 Clarke 变换$$ \begin{bmatrix} v_{\alpha}\ v_{\beta} \end{bmatrix} \frac{2}{3} \begin{bmatrix} 1 -\frac12 -\frac12\ 0 \frac{\sqrt3}{2} -\frac{\sqrt3}{2} \end{bmatrix} \begin{bmatrix} v_{a}\ v_{b}\ v_{c} \end{bmatrix} $$经过两个 SOGI-QSG 后可以构造出带有正交特性的 (\alpha\beta) 分量。正序电压由下式得到$$ v_{\alpha}^{}\frac12\left(v_{\alpha}-qv_{\beta}\right) $$$$ v_{\beta}^{}\frac12\left(v_{\beta}qv_{\alpha}\right) $$负序分量对应为$$ v_{\alpha}^{-}\frac12\left(v_{\alpha}qv_{\beta}\right) $$$$ v_{\beta}^{-}\frac12\left(v_{\beta}-qv_{\alpha}\right) $$这里最关键的是 (qv_{\alpha})、(qv_{\beta}) 的符号。如果某个 SOGI 的正交输出极性接反负序分离会变成正序叠加DSOGI-PLL 锁出来的相位会直接偏 90 度甚至 180 度。2.4 DSOGI-PLL 的边界条件从工程边界看DSOGI-PLL 只能处理三相电压中的正序和负序基波不能直接处理零序分量。三相三线系统没有零序通路使用没有压力三相四线系统如果负载侧存在零序电流锁相环节仍可只处理正序电压但 APF 的零序补偿部分需要另外设计。另外SOGI-QSG 的滤波能力有限它不是万能陷波器。如果电网电压含有较多 5 次、7 次、11 次谐波DSOGI-PLL 的输出仍会有残余扰动。建模时要把 SOGI 选频特性和 PLL 环路带宽一起估计不能只看 SOGI 单模块。3. SOGI-QSG 的频率特性与参数影响3.1 阻尼系数 k 的工程含义把 SOGI-QSG 看成一个二阶振荡环节(k) 相当于阻尼项系数。(k) 越大SOGI 的谐振峰越宽动态响应越快(k) 越小选频特性越尖锐但动态过程衰减越慢超调也更明显。设计时常用 (k\sqrt{2})这也是很多仿真模型里的默认值。如果你的控制目标更偏向抑制谐波可以适当减小如果更偏向快速动态响应可以略微增大。从频率选择性上看SOGI-QSG 对偏离谐振频率的输入信号幅值是有衰减的。以 (k0.5、1.0、1.414、2.0) 为例绘制 (D(s))、(Q(s)) 的波特图能看到明显区别(k) 越小带宽越窄带外衰减越大(k) 越大基波附近的相位变化越平缓但谐波泄漏也更明显在 APF 中如果电网电压本身畸变严重PLL 前级需要尽量压低 6 倍频扰动SOGI 的 (k) 不宜取得过大。3.2 在 APF 中选 k 的基本思路APF 的同步信号并不需要极宽的锁相带宽。它更看重稳态时相位干净、抗畸变能力强。所以 SOGI 的 (k) 不需要做到很大。通常可以在 (0.5\sim1.5) 之间选择从 (\sqrt{2}) 开始调试。先做好标称电网下的锁相再在加入 5 次、7 次谐波后观察 (vq) 的纹波。需要同时考虑的是PLL 的环路滤波器和 SOGI 是串联关系。即使 SOGI 已经滤掉一部分谐波PLL 的 PI 参数如果带宽过高残余扰动仍然会进入频率输出。因此参数设计必须分两层SOGI 负责初步选频PLL 环路负责把残余高频扰动压下去。4. 非理想电网下的 DSOGI-PLL 建模分析4.1 电网电压不平衡时发生了什么假设三相电压发生单相跌落电压矢量不再对称。对称分量法把电压分解为正序、负序、零序三组。对正序同步旋转 dq 坐标系来说负序基波电压会变成一个 2 倍工频的交流分量也就是 100Hz 扰动。传统 SRF-PLL 直接对三相电压做 Park 变换锁相输出会带有 100Hz 纹波。DSOGI-PLL 的处理方法是先通过 SOGI-QSG 构造正交信号再用正负序分离公式把负序分量去掉。只要两个 SOGI 的中心频率与电网频率一致正负序分离后负序基波被抵消进入 Park 变换的就是正序基波。这样在同步旋转坐标系中不再有 2 倍频扰动PLL 输出更干净。4.2 谐波畸变时 6 倍频扰动怎么来如果电网电压包含负序 5 次谐波和正序 7 次谐波从正序同步旋转坐标系看它们都会变成 6 倍频扰动。也就是说在 (v_q) 或频率输出上会出现 300Hz 附近的纹波。SOGI-QSG 本身对谐波有衰减但衰减能力有限。尤其是电网频率或中心频率发生偏移时原本处于 250Hz、350Hz 的 5、7 次谐波与 SOGI 谐振峰的距离会变化衰减量也会变化。所以在做仿真验证时不能只看额定频率下的抑制效果还要加入谐波和频率偏移的组合工况。4.3 频率变化时中心频率反馈的作用DSOGI-PLL 的 SOGI 谐振频率由 PLL 输出的 (\omega) 动态更新。当电网频率从 50Hz 跳到 50.5Hz 时SOGI 会向着新频率收敛。这个反馈路径让 DSOGI 具有频率自适应能力。建模时需要注意(\omega) 同时出现在 SOGI 的分子和分母中不是一个固定的线性时不变环节。实时控制系统里若使用常系数离散滤波器而实际频率又明显偏离设计值输出相位角会造成额外误差。因此工程实现时必须周期更新 SOGI 系数或者保证 PLL 频率输出先收敛再把频率送入 SOGI。5. DSOGI-PLL 小信号模型与环路参数整定5.1 从 vq 到 θ 的等效模型DSOGI-PLL 的最终锁相动作仍由 SRF-PLL 完成。先假设正序分离已经稳定正序电压幅值为 (V^{})锁相角为 (\theta^{})估算相位为 (\hat{\theta})。Park 变换后的 q 轴电压可以近似为$$ v_{q}^{}\approx V^{}\sin(\theta^{}-\hat{\theta})\approx V^{}(\theta^{}-\hat{\theta}) $$锁相环的 PI 输出作为频率增量再积分得到相位$$ \omega\omega_{ff}\left(k_{p}\frac{k_{i}}{s}\right)v_{q}^{} $$$$ \hat{\theta}\frac{1}{s}\omega $$忽略前馈量后系统开环传递函数可以近似为$$ L(s)V^{}\left(k_{p}\frac{k_{i}}{s}\right)\frac{1}{s} $$对应的闭环特征方程为$$ s^{2}V^{}k_{p}sV^{}k_{i}0 $$这是一个典型二阶系统。若定义期望自然角频率 (\omega_{n}) 和阻尼比 (\zeta)则有$$ k_{p}\frac{2\zeta\omega_{n}}{V^{}} $$$$ k_{i}\frac{\omega_{n}^{2}}{V^{}} $$5.2 环路参数整定示例实际建模时(V^{}) 的单位会影响 PI 参数结果。如果电压采用标幺值正序 d 轴电压约为 1 p.u.则公式更直观。下面是 Matlab/Octave 参数整定脚本%% DSOGI-PLL PI 参数整定示例 % 前提锁相环输入采用标幺值电压Vd 接近 1.0 Vp 1.0; % 正序电压幅值标幺或按实际控制对象折算 fn 20; % 期望自然频率单位 Hz典型范围 5~30 Hz zeta 0.707; % 阻尼比 wn 2 * pi * fn; kp 2 * zeta * wn / Vp; ki wn^2 / Vp; fprintf(kp %.4f\n, kp); fprintf(ki %.4f\n, ki);这个脚本不保证所有系统直接可用。它假设对象是“电压误差到相位”的积分关系适用于 PLL 已经进入线性状态之后的小信号分析。启动阶段或电网相位跳变时环路可能进入非线性区需要额外加入频率限幅和启动处理。5.3 带宽选择的基本逻辑PLL 带宽不能只看跟踪速度。DSOGI-PLL 常用于不平整、畸变电网太高的带宽会把残余 100Hz、300Hz 扰动引入相位和频率输出。一般工程上会把锁相环的自然频率选在 530Hz阻尼比取 0.51.0。如果希望动态响应快可以取 30Hz 附近如果电网畸变严重优先降低到 1020Hz。PI 输出前通常加频率前馈。让 PI 只调整频率增量而不是完全依靠 PI 积分器从 0 建立 50Hz这样启动更快抗扰动也更好。6. DSOGI-PLL 离散化实现与工程时序6.1 连续域传递函数的离散化Matlab/Simulink 里设计和验证时多用连续域传递函数但实际 DSP 或 FPGA 控制必须离散化。推荐使用 Tustin 双线性变换因为 SOGI-QSG 本质上是二阶谐振环节Tustin 变换能保持稳定性。以下代码演示连续域传递函数转离散Ts 1e-4; % 控制周期单位秒示例取 10kHz w0 2 * pi * 50; % 额定角频率 k sqrt(2); % SOGI 阻尼系数 s tf(s); D k * w0 * s / (s^2 k * w0 * s w0^2); Q k * w0^2 / (s^2 k * w0 * s w0^2); % Tustin 离散化Q(s) 可使用预畸变以提高 50Hz 附近精度 Dd c2d(D, Ts, tustin); Qd c2d(Q, Ts, prewarp, w0);需要再次强调如果 PLL 输出的频率在实时变化SOGI 的离散系数也应随着频率更新不能把上面代码算出的固定系数直接用于全频段。对实时控制来说每一拍都要根据当前 (\omega) 重新计算离散系数或者查表更新。6.2 典型控制时序以 DSP 中断控制为例控制流程可以这样安排PWM中断触发 - ADC 采样三相电压、负载电流、母线电压 - Clarke 变换得到 vα/vβ - 更新 DSOGI-QSG 的离散状态 - 计算正负序分量 - Park 变换得到 vd/vq - PLL PI 更新 ω - 更新 θ并把 ω 反馈到 SOGI - 继续执行 APF 谐波指令计算和电流环 - PWM 比较值更新DSOGI-QSG 本身是二阶状态方程不是单纯的比例计算。如果信号流中出现代数环可以在 Simulink 中使用 memory 模块或把 PLL 上一拍的频率作为反馈避免模块直接输入输出互相依赖。6.3 数字控制延时与相位补偿数字控制从采样到 PWM 更新至少存在一拍甚至一拍半延时。对 APF 来说锁相角误差会直接影响谐波指令的相位。常用做法是在最终使用的同步角上补偿一个与小周期相关的角度$$ \theta_{comp}\approx n\cdot\omega,T_{s} $$其中 (n) 与采样、PWM 更新方式有关需要根据自己实际控制链路确认。不要照抄别人的补偿值。如果 PWM 采用三角载波比较值更新可能在下一周期中点更新(n1.5) 是常见近似但具体数值必须结合模型验证。7. Simulink 模型搭建与功能验证7.1 模型搭建步骤在 Simulink 中搭建 DSOGI-PLL 时建议把模块按功能拆分三相电压源模块可设置不平衡、谐波和频率跳变Clarke 变换模块两个 SOGI-QSG 子系统分别处理 (\alpha) 轴和 (\beta) 轴正负序分离计算模块Park 变换与 PLL 计算模块示波器和统计模块。SOGI-QSG 既可以直接用连续域传递函数建也可以用积分器搭状态方程。后一种更接近 DSP 实现也更容易把中心频率 (\omega) 作为外部输入。7.2 功能测试用例DSOGI-PLL 验证至少要覆盖以下场景测试项目注入条件主要观察量判断角度标称电压锁相三相平衡 50Hz 额定电压θ、vq、频率应能稳定锁相vq 稳态接近 0电压不平衡A 相跌落或升高到 0.7p.u.vq、θ、频率应无明显 100Hz 纹波谐波电压畸变加入 5 次、7 次谐波vq、频率相对普通 SRF-PLL波动应明显减小频率跳变50Hz 跳变到 50.5Hz频率输出、θ频率应能收敛到 50.5Hz相位跳变电压相位突跳 30°vq、θ、频率vq 峰值受限θ 在几个工频周期内跟上启动过程空载直接启动ω、θ不应大幅振荡7.3 用 FFT 分析 vq 残余谐波只看示波器曲线很难量化好坏。建议把稳态 vq 波形导出来做 FFT重点看 50Hz、100Hz、300Hz 附近的频率分量大小。以下是一个简单的 Matlab 后处理脚本%% 分析 PLL 输出 vq 的残余谐波 % vq: 仿真导出的 q 轴电压序列 % fs: 采样率单位 Hz和仿真步长/数据导出步长一致 N length(vq); vq vq(:); win hanning(N); Vq fft(vq .* win); mag abs(Vq(1:floor(N/2))); f_axis (0:floor(N/2)-1) * fs / N; % 查看 100Hz、300Hz 附近的幅度 figure; plot(f_axis, 20*log10(mag)); xlabel(Frequency (Hz)); ylabel(Magnitude (dB)); xlim([0 1000]); grid on;注意 FFT 分析只适合稳态段。若数据包含较长的动态过程应先截取稳态数据段再计算否则分析结果会被启动暂态污染。8. 从 DSOGI-PLL 到 APF 谐波指令同步DSOGI-PLL 不是独立的控制目标。它在 APF 中主要有两个作用一是给谐波检测提供一个稳定的正序同步坐标系。无论是基于瞬时无功功率的 (p-q) 法还是基于同步旋转坐标的 (d-q) 法都需要准确知道当前电压相位。若相位里混入 100Hz 或 300Hz 扰动检测出的谐波指令也会被错误调制。二是作为电流环控制的参考坐标。APF 补偿电流需要跟踪指令电流电流环在同步旋转坐标系下做 PI 控制更简单。如果参考坐标本身在抖控制输出会产生额外谐波。工程推荐的做法是先把 DSOGI-PLL 单独作为一个模块验证再用录波的电网电压作为输入对比不同锁相算法输出的指令电流。不要直接把 DSOGI-PLL 放进 APF 闭环里调试那样问题会混在一起很难定位是坐标相位问题还是电流环参数问题。9. DSOGI-PLL 常见问题与排查方法问题现象可能原因排查方式解决方案锁相角度偏 90 度或 180 度正负序分离模块符号接反或 SOGI 正交输出极性反检查 qvα、qvβ 的方向