ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

VSG并网系统阻抗扫描实战:从建模到扫频验证

VSG并网系统阻抗扫描实战:从建模到扫频验证 VSG阻抗扫描实战从建模仿真到扫频验证做并网逆变器的人这几年应该没少被“稳定性”这三个字折磨。尤其是当手里这套控制从PQ切换成VSGVirtual Synchronous Generator虚拟同步发电机之后原先那一套基于锁相环跟随电网的思路突然就不灵了——VSG是用功率外环和虚拟惯量去“主动顶住”电网的这种控制方式在弱电网下面极易和线路阻抗、对端等效阻抗发生动态耦合表现出来就是振荡、谐振甚至直接跳闸。问题一旦出现第一件事就是要搞清楚这个VSG并网系统在各个频率下的阻抗特性到底是什么样的阻抗扫描就是干这个的。它通过向系统注入特定频率的扰动测出逆变器端口呈现的电压-电流频响关系也就是端口阻抗的频率特性。再把实测结果和理论建模得到的阻抗模型放在一起对比既能验证模型是否准确也能定位系统是否存在负阻尼频段、谐振点落在哪里。我这次就把从建模仿真到扫频验证的完整流程走了一遍把过程中踩过的坑、算过的参数、调试的技巧都记下来给同样在做VSG稳定性分析的朋友做个参考。这套方法适合谁一个是做新能源并网仿真与算法验证的工程师你手里大概率有MATLAB/Simulink或类似的电力电子仿真平台另一个是做阻抗测量研究的研究生或测试工程师需要理解扫频注入的原理和实操细节。下面所有内容默认你已经有基本的VSG控制基础知道功率外环、虚拟惯量、电流内环这些概念大概是什么我们直接进入正题。1. 为什么VSG必须做阻抗扫描从稳定性判据说起1.1 VSG与传统控制的本质区别我先把背景说透。传统的并网逆变器控制思路是“跟随”锁相环锁住电网电压相位电流环把输出电流控制成跟电网电压成特定关系的正弦波。这种控制策略下的逆变器对外看像是一个受控电流源系统稳定性主要取决于锁相环带宽和电流环带宽之间的配合。VSG就不一样了。它借鉴了同步发电机的转子运动方程在控制里加入虚拟惯量J和阻尼系数D让逆变器具备一次调频和惯性响应能力。外特性上它更接近一个电压源输出频率和幅值会随着有功和无功的变化而浮动。这就带来一个关键问题——电压源型和电网直接面对面连接等于两个有内阻抗的电压源通过线路阻抗互联这种情况下系统稳定性对阻抗特性的敏感度极高。1.2 阻抗比判据与稳定性分析思路对于这种级联系统有个非常直观的稳定性判断方法看逆变器输出阻抗Zo和电网阻抗Zg在各频率下的关系。对于电压源型逆变器并网系统需要满足Zo/Zg或Zg/Zo视定义方向而定的奈奎斯特曲线不包围(-1, j0)点。更工程化的一种判断是在整个频率范围内逆变器输出阻抗的相位不能落在±90°之外尤其不能在某个频段出现明显的负阻尼——也就是阻抗实部为负。VSG控制里最容易出问题的地方有两个一是虚拟惯量J与阻尼系数D的匹配会直接影响低频段的阻抗特性典型的表现为低频阻抗相位大幅度穿越甚至进入负阻区二是电流内环与LCL滤波器的谐振峰在中高频段产生阻抗尖峰。这两个问题在纯仿真中不会有人说你不对但一接上真实电网电网阻抗一变振荡就来了。阻抗扫描的作用就是把阻抗的频率特性清清楚楚地测出来不管是低频段的惯量相关拐点还是高频段的谐振尖峰全部暴露出来。有了实测曲线你才能回答以下几个关键问题模型里那个谐振峰的位置对不对、阻尼参数的整定是否让阻抗相位始终保持在安全区间、VSG在电网阻抗变化后还能不能稳定运行。2. 建立VSG阻抗模型从控制框图到dq阻抗矩阵2.1 小信号线性化与频域建模思路阻抗建模的第一步是把VSG的非线性控制方程在某个工作点附近做小信号线性化。这里说的工作点不能简单地理解为一个稳态电流值——VSG由于有功率外环端电压和输出电流之间是互相影响的所以建模时必须把功率计算环节、虚拟转子方程、电压电流双闭环、滤波器动态全部纳入同一个环路里。我用的建模路径是这样的先明确系统结构——LC或LCL滤波器VSG控制的电压源模型。VSG的功率外环输出是电压参考的幅值和相位也就是说VSG本质上是一个受控电压源其幅值和相角由输出的有功功率P和无功功率Q经过虚拟惯量和无功-电压下垂环节决定。然后对功率计算进行线性化得到从电压扰动、电流扰动到功率扰动的映射关系。再把功率扰动经过转子方程转换成相位扰动经过无功下垂转换成幅值扰动最后叠加到电压参考上通过电压电流双闭环作用到滤波器端口。这套线性化过程最容易被忽略的是相位的处理细节。VSG输出的电压相位不是跟电网锁定的而是来自转子方程的角度积分。在做dq坐标变换时必须区分两个dq坐标系一个是电网电压定向的dq系通常作为参考系另一个是VSG输出电压矢量所在的dq系。两个坐标系之间有个夹角δ就是VSG的功角。建模的时候如果忽略了这个功角的动态低频段的阻抗特性会算得完全不对。2.2 dq阻抗矩阵的推导关键步骤功率级联下来回路就比较清晰了。当我们在端口施加一个特定频率的扰动在dq坐标系下会表现为d轴和q轴分量同时被激励。所以逆变器的端口阻抗特性不是一个标量而是一个2x2的矩阵[ \begin{bmatrix} V_d(s) \ V_q(s) \end{bmatrix} \begin{bmatrix} Z_{dd}(s) Z_{dq}(s) \ Z_{qd}(s) Z_{qq}(s) \end{bmatrix} \begin{bmatrix} I_d(s) \ I_q(s) \end{bmatrix} ]这里面有一个常见习惯是只关注正序阻抗Zpp因为三相平衡系统里最关心的就是正序响应。如果你需要从dq阻抗矩阵推导正序阻抗可以用 (Z_{pp} Z_{dd} - jZ_{dq})或按定义取(j)取决于dq轴变换方式这个转换公式在不同的教材里有符号差异务必先统一自己的坐标变换基准。推导过程中有几个容易翻车的点我直接列出来功率外环的带宽影响VSG的功率环带宽通常在1~50 rad/s范围内对应0.16~8Hz远低于电流内环的数百Hz带宽。这意味着在低频段阻抗特性主要是功率外环和虚拟惯量决定的在高频段功率环的响应已经很微弱阻抗主要由电流环和滤波器决定。建模时可以按频段划分化简但扫频验证时一定要测全频段确认两个区域之间的过渡行为是否符合预期。虚拟惯量和阻尼的作用转子方程线性化之后功角δ的扰动对d、q轴的电压扰动贡献是不同的。d轴电压扰动主要由功角扰动引起q轴电压扰动则直接跟无功功率扰动相关。你可以把虚拟惯量J看成一个在频域上的惯性环节它让功角对外部扰动的响应呈现低通特性——这直接映射到阻抗矩阵的dq耦合项上。锁相环PLL的处理VSG控制里功率同步环本身可以替代传统PLL所以建模时不用单独考虑PLL。但如果你在VSG控制里还额外加了PLL用于同步或者限流策略那必须把PLL的动态也纳入小信号模型否则中低频段的模型会偏差很大。我的建议是最开始建模时就明确当前系统用的同步方式是什么是纯虚拟转子同步还是挂了个PLL备份两种模式的阻抗表达式完全不一样。2.3 解析模型与仿真模型的对应关系推导完成后你会得到一组包含s域的阻抗解析表达式。此时不要急着去跟实测对比先在频域里画出理论值曲线观察几个特征点低频段10Hz以下阻抗幅值通常是上升的相位取决于阻尼系数D与虚拟惯量J的比值。D越大低频相位越接近0°容性/感性特性越弱阻尼效果越强J越大低频段的惯性特性越明显但也更容易在中频段产生相位穿越。中频段10Hz~1kHz这里往往是功率环与电流环交接的过渡区阻抗相位通常会有一次明显的变化。容易在这里出现的问题是阻尼不足导致的负阻抗效应也就是相位进入[90°, 270°]的区间这个频段如果扫频实测出来相位异常基本就是功率外环参数或电流内环带宽不匹配。高频段1kHz以上基本是LCL滤波器主导阻抗幅值随频率升高呈上升趋势感抗或容抗特性但LCL谐振峰处会出现一个阻抗尖峰尖峰处的相位会快速翻转。这个谐振峰能不能被电流内环的有源阻尼压住直接决定了高频段的稳定性。把这些特征点前后的理论曲线确认好之后建模阶段就算完成了接下来进入扫频验证阶段。3. 扫频验证的实操流程扰动注入与频响提取3.1 扰动设计原则与关键参数计算扫频验证的原理不复杂在被测系统的输出端叠加一串频率已知的正弦扰动然后测量电压和电流在该特定频率下的响应幅值和相位从而反推出该频率下的端口阻抗值。但原理简单不代表实操容易最难的部分在于扰动信号的设计。我常用的做法是分段扫频——因为一次扫描覆盖全频段1Hz到10kHz并不现实不同频段需要不同的扰动强度和测量时长。实际操作中我建议按以下原则设计频率点选取对数间隔取频率点。低频段1~10Hz每倍频程取3-5个点中频段10~100Hz每倍频程取5-8个点高频段100Hz~10kHz每倍频程取10个点左右。对数间隔的好处是低频段和高频段的点数分配合理曲线精度均匀。扰动幅值取基波幅值的2%~5%是经验区间。幅值太小FFT提取信号的信噪比不够相位容易飘幅值太大系统会偏离线性化工作点测出来的阻抗与理论模型产生偏差尤其对VSG这种带功率外环的非线性系统大扰动会触发功率环的非线性效应。我测试过5%基波幅值下低频段阻抗相位依然能对上模型但超过10%后相位偏差明显增大这个阈值值得记住。测量时间与频率分辨率这个参数是最关键的设计变量。FFT的频率分辨率由测量窗口时长决定(\Delta f 1/T)。如果你想在1Hz处测到一个清晰的响应那测量窗口至少要1秒要想分辨0.5Hz间隔的特征就得2秒以上。实际操作中每个频率点我通常会持续测量3-10个基波周期20-200ms然后取整周期数据做FFT降低频谱泄露的影响。3.2 Simulink仿真环境下的扫频实现步骤如果你用MATLAB/Simulink搭建VSG并网仿真扫频实现我建议按下面这套步骤来建立VSG并网仿真模型包括VSG控制算法功率外环、转子方程、电压电流双闭环、LCL滤波器、理想电网或带阻抗的电网模型。扰动注入点放在逆变器端口滤波器的电网侧端与电网之间的串联位置或者在电流参考或电压参考上叠加。当你想测量逆变器自身的输出阻抗时更好的方式是电网侧串入一个理想电压扰动量。编写扫频脚本用MATLAB脚本控制仿真运行每次运行注入一个频率点的扰动。每次仿真运行结束后把该频率下的电压电流波形数据保存下来提取FFT结果。这一步的关键是让仿真时间足够长以便电压电流稳定到稳态再开始采集。FFT与阻抗计算对采集的电压和电流做FFT在扰动频率处取对应的幅值和相位峰值。然后用 (Z(f) V_p(f)/I_p(f)) 计算复阻抗。这里要特别注意非线性系统里会有谐波分量FFT提取时直接用扰动频率处的复数值谐波分量不影响基频提取。下面是一段我实际用的MATLAB脚本核心逻辑简化版可以直接参考freq_list logspace(0, 4, 50); % 1Hz到10kHz对数取50个点 Z_result zeros(1, length(freq_list)); for k 1:length(freq_list) f_d freq_list(k); % 设置扰动信号参数叠加到逆变器端口 amp_d 0.03; % 基波幅值的3% set_param(VSG_model/VoltagePerturbation, Amp, num2str(amp_d)); set_param(VSG_model/VoltagePerturbation, Freq, num2str(f_d)); % 运行仿真确保仿真时长足够FFT分辨至少3个基波周期 sim_time 0.5 5/f_d; % 预留0.5s稳定时间 5个扰动周期 set_param(VSG_model, StopTime, num2str(sim_time)); sim(VSG_model); % 取最后一段数据做FFT V_port logsout.get(V_port).Values.Data; I_port logsout.get(I_port).Values.Data; t logsout.get(I_port).Values.Time; fs 1 / (t(2) - t(1)); N length(t); win hann(N); % 加窗减少频谱泄露 % 对电压电流分别做FFT V_fft fft(V_port .* win); I_fft fft(I_port .* win); freq_axis (0:N-1) * fs / N; % 找到扰动频率对应的FFT bin取最接近的索引 [~, idx] min(abs(freq_axis - f_d)); V_f V_fft(idx) / sum(win) * 2; % 补偿窗函数增益 I_f I_fft(idx) / sum(win) * 2; Z_result(k) V_f / I_f; % 复数阻抗 end3.3 从频响曲线到稳定性评判扫频完成后绘制Bode图我习惯画两条曲线——理论模型的阻抗曲线和扫频实测的阻抗曲线叠加在同一张图上对比。一条合格的扫频曲线应当能在全频段与模型保持一致性偏差通常控制在10%以内可以接受。检查时我重点看几个点位低频段1~10Hz排查相位是否与模型一致特别是相位是否在-90°~90°的包络内。如果这里出现相位大规模穿越说明VSG的阻尼参数整定有问题低频稳定性告警。谐振点附近通常500Hz~2kHz之间看实测谐振峰位置与模型中滤波器参数是否匹配。如果实测谐振峰比模型高且尖锐说明有源阻尼实际效果不如仿真预期——这个问题很常见多半是电流内环的数字化延迟一拍延迟没有在建模中考虑。高频段2kHz主要看阻抗趋势是否呈上升的感性特征。如果出现衰减或者负阻特性大概率是数字控制延迟导致的相位滞后过大这是目前VSG控制系统在高频段最典型的失稳因素。4. 扫频验证的常见问题与排查技巧4.1 低频段相位漂移严重优先怀疑工作点漂移第一次做VSG扫频时我最头疼的问题就是低频段相位和模型对不上尤其是2Hz以下的位置相位飘得离谱。排查了半天才意识到问题不出在算法而出在工作点漂移。VSG是带功率外环的当你注入一个2Hz的低频扰动时这个扰动会经过功率环反作用于输出相位和幅值导致系统的工作点本身在扰动期间被“推离”了原来的静态工作点。这不是线性化失效是静态工作点定义的方式有问题——你在模型里设定的P0、Q0是扰动前的稳态值但在扰动期间实际功率已经不是P0和Q0了。解决办法有两个一是把扰动幅值在低频段进一步减小比如降到2%以下二是采用“准静态扫频”——在扰动注入时同时调整参考功率让输出功率在扰动过程中始终围绕设定工作点波动。这个调整在模型里很好实现在真实硬件上则需要功率闭环配合难度会高一些。4.2 FFT频谱泄露导致谐振峰偏斜扫频最常见的另一个问题是FFT分析时谐波的频谱泄露干扰谐振峰的提取。特别是在LCL谐振频率附近如果没有使用整周期分析窗口FFT出来的幅值会被相邻频率分量拉低或拉偏导致实测谐振峰位置和实际偏差很大。我试过两个方法对比效果差异很直观方法操作方式效果加窗FFT用Hann窗后做FFT再做幅值补偿改善旁瓣泄漏但主瓣变宽谐振峰位置容易偏移整周期FFT取整数个周期的数据段做FFT不加窗频谱干净无泄漏频率分辨率直接对应扰动频率实测下来对于固定单频扰动的阻抗扫描整周期FFT远比加窗FFT准确。因为每次只测一个频率点不需要宽带频谱分析整周期分析自然规避了频谱泄露问题。前提是采样率必须保证扰动频率落在整数bin上也就是说总的采样点数N必须是(N_{cycle} \times (fs/f_d))的整数倍。4.3 阻抗矩阵各元素交叉验证很多人做完扫频只画一条Zpp曲线就收工了但我建议至少验证两个矩阵元素——d轴和q轴的对角元素。原因很简单VSG控制里d轴响应主要由有功功率环和虚拟惯量决定q轴响应主要由无功电压环决定两者的参数是不同的。如果只测一条正序阻抗曲线你只能看到综合效果无法定位是哪个环节出了问题。实际操作中我会分别在d轴和q轴注入扰动提取Zdd和Zqq然后和模型对比。有一次我排查一个低频振荡问题正序阻抗曲线看起来阻尼充足但一拆开dq轴才发现是q轴的无功环在8Hz附近产生了负阻这个信息只看正序阻抗是发现不了的。4.4 实际硬件扫描时的延迟补偿问题在仿真里做扫频没有延迟问题但如果你已经走到硬件在环或实机测试这一步数字控制器的零阶保持器延迟和计算延迟会让阻抗测量在高频段产生明显偏差。高频下控制延迟带来的相位滞后可能让实测的谐振峰位置比模型低几Hz甚至几十Hz。处理方法是把控制器的等效延迟显式建模——通常可以等效为一个(e^{-sT_d})的延时环节(T_d)取1.5个采样周期一个计算延迟加半个PWM更新延迟。在阻抗模型里加入这个延迟系数后再对比高频段的吻合度会大幅提升。这个细节在论文里很少提但实测时几乎必备。5. VSG阻抗扫描的工程延伸与实践建议5.1 从阻抗结果到参数整定的闭环反馈扫频验证做完得到的不只是一条曲线它应该反向指导参数整定。我的标准流程是先做一次全频段扫描找出故障频段然后针对故障频段对应的控制环节做参数调整再扫描一次看阻抗形状变化。举个例子如果低频段(2~20Hz)阻抗相位在某个频率点跌破-90°基本是虚拟惯量J过大导致的共振。这时候把J调小或增大阻尼D再重新扫描观察那个频段的阻抗相位是否恢复到安全区间。这个“扫描-调整-再扫描”的闭环比单纯看时域波形调参要高效得多因为你直接看到了每个频段的阻尼裕量。5.2 结合教学与协作场景的仿真实验设计这套方法也适合用在实践教学里。我之前用头歌实践教学平台的虚拟仿真实验环境做过类似的实验编排——学生先在需求分析阶段明确阻抗扫描的指标边界扫频范围、扰动幅值、测量精度再在仿真环境中搭建VSG模型最后用扫频脚本验证理论推导。这种模式最大的好处是学生能直观看到“理论模型”和“仿真实测”两条曲线之间的偏差并反过来理解建模时忽略的细节延迟、滤波、数字控制对稳定性分析的影响。做这类仿真实验时我建议给学生预留两个“坑”一是数字控制延迟必须在模型里显式加入否则高频段对不上二是扫频参数的设定不能随意选频率分辨率和测量时间的权衡值得让学生自己算一遍。这两个点恰好能覆盖扫频验证中最核心的两个技术难点让学生从“会跑仿真”进阶到“理解为什么这么跑”。如果你们团队也打算做VSG阻抗相关的仿真教学或验证我还有几个建议先确定扫频的必要频段范围以及被测系统最可能出问题的特征频率区间——针对性地设置频率点比盲扫一堆点效率高太多在对比模型和实测偏差时不要只看幅值误差相位偏差对稳定性判断更关键——幅值差几dB问题不大相位偏差一旦超过20°-30°稳定性结论可能完全反过来有条件的话务必把电流环带宽和功率环带宽在同一个图里标出来——你会发现几乎所有阻抗异常频段都和这两个带宽附近的行为强相关。5.3 从单机扫频走向多机系统交互最后说一个我最近在推进的方向把单台VSG的阻抗扫描扩展到多机并联场景。多机并联时你不仅需要知道单机的输出阻抗还要知道台数增加后整个并联系统的等效阻抗如何变化——因为VSG之间会因为功率外环的耦合产生新的谐振模式这种模式单机扫频是看不到的。实际做法是对多机并联系统做整体扫频在公共耦合点注入扰动测量系统的等效输出阻抗。在高频段多机并联的等效阻抗近似于单机阻抗的并联在低频段由于各VSG的功率环互相响应等效阻抗会偏离简单的并联关系。这个效应的建模和扫频验证是目前比较前沿的方向也是我后续计划继续深入的一块。如果你正在做这方面的研究我的建议是先从两台VSG并联开始扫频查看公共耦合点的阻抗曲线对比单机扫频结果你很快就能看到低频段的差异。这个实验比纯理论推导直观得多也会让你对VSG系统的多机交互有更深刻的理解。
返回列表