ARTICLE DETAIL

资讯详情

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

虚拟同步机阻抗扫描实战:建模、扫频与硬件在环验证

虚拟同步机阻抗扫描实战:建模、扫频与硬件在环验证 VSG阻抗扫描实战从建模仿真到扫频验证先说结论如果你手头正在做虚拟同步机VSG的并网稳定性分析单纯跑时域仿真看波形是远远不够的。我最近在给一台500kW的VSG样机做并网稳定性评估时就是靠“解析建模仿真扫频硬件在环验证”这条链路从频域阻抗的角度把问题定位得明明白白。这篇文章把整套流程里的关键思路、坑和实操细节都摊开来讲尤其是扫频验证部分——这部分文档最少、坑最多但恰恰是决定阻抗扫描准不准的核心环节。整个过程分四步走先把VSG的控制结构和主电路参数化成可以线性化的小信号模型推导出解析阻抗表达式然后在仿真环境里用“扰动注入FFT提取”的方式做扫频测量拿到数值阻抗的Bode图再把数值结果和解析表达式对照校正建模误差最后把模型搬到实时仿真平台上做扫频验证确认控制器代码和实物样机做出来以后实测的阻抗特性一致。这套方法不仅适用于VSG也适用于构网型grid-forming储能变流器、弱电网下的跟网型逆变器只是不同控制策略的阻抗形态差异很大需要针对性地处理。适合谁来读这篇文章正在做新能源并网稳定性研究的研究生和工程师、需要给变流器做控制器硬件在环测试的电力电子从业者、以及在看“构网型设备宽频振荡”这类问题的同学。内容里有建模公式推导也有仿真扫频的实操脚本思路如果你是纯做工程、不太想碰公式可以直接跳到第3和4章扫频验证的流程照样能落地。1. 设计思路拆解为什么给VSG做阻抗扫描而不是只看时域波形1.1 阻抗扫描到底解决了什么工程痛点时域仿真是我们最熟悉的稳定性分析手段搭好主电路、控制器模型跑一个并网冲击、看电压电流波形有没有发散就行了。但时域仿真有两个很难绕开的短板一个是稳定裕度看不出来。波形不发散只能说系统在这个工况下稳定但离失稳有多远、参数再恶化多少会振荡时域波形给不出量化结论。另一个是振荡发生的频段定位困难。VSG这种控制器的动态特性跨了多个时间尺度——虚拟惯量对应秒级的功率响应、一次调频对应百毫秒级的有功调节、电压电流内环对应毫秒级甚至微秒级一旦电网阻抗和控制器阻抗在某一个频段形成负阻尼现场的振荡现象往往是特定频点的窄带振荡比如25Hz、75Hz、175Hz等等时域仿真里看波形只能看到“在抖”却很难快速回答“为什么是这个频率在抖”。阻抗扫描本质上是在频域回答这个问题。把整个变流器网络从端口看进去用一个2x2的阻抗矩阵dq坐标系下或者一对正负序阻抗序分量坐标系下来描述。电网侧也有自己的等效阻抗。两个阻抗在某个频点处“对着干”——即变流器输出阻抗的相角和电网阻抗的相角差超过180度、且幅值比满足一定条件——这个频点就是潜在振荡点。这也就是经典的Nyquist判据在阻抗域的落地用Zc和Zg的比值判据来看系统稳定性。拿我测过的一台VSG样机来说它在并网初期用dq阻抗扫描就在45Hz附近发现了一个阻抗幅值凹陷、相位急剧变化的位置对应的相位裕度只有不到15度。后来在实时仿真平台复现并网场景果然在这个频点附近出现了6-8Hz的低频功率振荡以及45Hz附近的谐波放大迹象。这个结果如果只靠时域扫短路比、扫控制器参数得盲人摸象试很久。1.2 VSG的阻抗特性和传统逆变器有什么本质区别传统跟网型逆变器PLL锁相同步在dq坐标系下的阻抗模型有两个显著特点一是低频段阻抗主要由电流环和PLL动态决定PLL带宽一般设在20-50Hz所以在带宽以下PLL的动态会强烈整形阻抗特性二是在不考虑PLL不对称或者正负序解耦控制做得比较好的情况下dq轴之间耦合较弱可以用对角占优的2x2矩阵近似。VSG完全不一样。它的同步机制不依赖PLL而是靠有功-频率下垂和虚拟惯量自己建立相位这就导致阻抗特性里的“功率控制环节”对整个频段的影响非常大。具体来说低频段0.1Hz到几Hz阻抗特性主要由虚拟惯量J、阻尼系数D、有功下垂系数决定。这个频段的阻抗近似表现为一个“容性阻性”的复合形态因为功率环在低频段像一个积分器反应在阻抗上就是相位负移。中频段几Hz到几十Hz无功-电压下垂和电压外环开始介入Q-V环的动态会影响dq轴阻抗的幅度和相位走势。高频段几百Hz以上电流内环和数字控制延时主导LCL滤波器特性开始显现。最关键的是VSG的dq轴阻抗是强耦合的。因为功率计算环节天然存在dq轴交叉项瞬时功率P和Q都同时含d轴和q轴电压电流分量的乘积项这个耦合效应在全频段都存在不能被简化掉。如果按照传统PQ逆变器那样忽略Zdq和Zqd得到的阻抗判据会给出完全错误的稳定性结论。1.3 建模路线的三种方案解析、数值拟合、仿真扫频怎么选想做阻抗扫描路线有不止一条我按工程实用程度排个序路线A解析小信号建模。从主电路KVL/KCL方程出发加上VSG的功率环、电压电流环、调制和采样延时逐级线性化得到d轴和q轴的电压电流增量关系最后整理成2x2阻抗矩阵。优点是可以写进文档、可以做参数灵敏度分析缺点是推导繁琐、容易出错。路线B阻抗辨识/频率响应拟合。给非线性模型加扫频扰动测量得到频响数据点然后拿等效电路模型比如RLC串联谐振支路去拟合。优点是最终得到一个能放进电磁暂态程序的等效电路缺点是模型阶数和结构要靠经验猜容易欠拟合或者过拟合。路线C仿真扫频直接测量。利用离线仿真或硬件在环平台在VSG的并网点注入不同频率的小信号扰动测量电压电流响应后做FFT直接得到阻抗的幅频和相频特性。这个最直接和实测台架测试的物理逻辑也一致。正确的做法是三管齐下先用路线A推导解析表达式得到一个参考基准然后用路线C的仿真扫频拿到数值阻抗和解析结果互校如果还需要把阻抗特性塞进大电网仿真做进一步分析再用路线B做等效电路拟合。我在实际项目中常踩的坑是直接跳路线C不做解析建模互校结果仿真扫频测出来的低频段阻抗相位总有一个零点几度的偏差自己还不知道是扫描方法引入的还是模型本身的问题。有了解析解在手上这个偏差就能立刻定位。2. 解析建模的核心细节从控制框图到阻抗矩阵的落地2.1 主电路方程线性化从三相旋转坐标系到dq轴增量方程主电路的建模从三相LCL滤波器开始通常我们对阻抗扫描关心的频率范围是0.1Hz到2kHz这基本覆盖了功率环、电压电流环和LCL谐振点。在这个频段里可以把LCL滤波器的电容支路留出来而不是像传统简化那样仅仅用一个等效L。三相LCL滤波器的状态方程写出来之后经过Park变换到dq旋转坐标系再取小信号增量得到Lf * d(Δi_dq)/dt Δv_i_dq - Δv_c_dq - Rf * Δi_dq - j * ω0 * Lf * Δi_dq Cf * d(Δv_c_dq)/dt Δi_dq - Δi_g_dq - j * ω0 * Cf * Δv_c_dq这里有个很多人容易忽略的细节旋转坐标系变换后dq轴之间会出现一个耦合项也就是上面式子里的jω0L和jω0C项。这两项在任何dq阻抗建模里都存在无论是PLL同步还是VSG同步。很多人在推导时为了简化把它丢掉但在高频段接近甚至超过谐振频率时这个交叉耦合项会明显影响阻抗相频特性不能丢。做解析推导时我建议用符号计算工具辅助展开矩阵比如MATLAB Symbolic或者Python的SymPy。2x2矩阵的符号推导纯手推非常容易出错尤其是功率环线性化那一块十几项乘积求偏导任何一项符号反了最后的阻抗表达式就是对不上的。2.2 功率环线性化VSG区别于传统控制器的关键所在VSG的功率环核心方程可以写成J * dω/dt Pref / ω - Pe / ω - D * (ω - ωg) Qref - Qe Dq * (Vref - Vc) 0这里J是虚拟惯量D是阻尼系数Pe和Qe是VSG输出的瞬时有功和无功功率Dq是无功下垂或虚拟电抗相关的系数。线性化之后功率环的输出Δω和ΔV会进一步影响调制波参考电压。关键在于这个反馈通道构成了一个“多输入多输出”系统ΔPe同时由Δvd、Δvq、Δid、Δiq决定而Δω又同时影响dq轴的调制电压。最终在我们推导出来的2x2阻抗矩阵中Zdd和Zqq明显不对称Zdq和Zqd也不相等而且它们的幅值可能达到对角项的30%-60%。这里值得补充一个工程直觉当J取很大比如惯量常数H4s、阻尼D取很小的时候VSG在低频段的等效阻抗会呈现明显的“感性”特征也就是相位接近0度左右以电流流出为正方向这个时候在强电网下反而容易出现低频功率振荡。而当D调大或引入阻尼转矩之后低频段阻抗相位会往正角度移动阻尼特性改善。我做参数灵敏度分析时就是通过解析表达式快速看清这个规律的用扫频法一个个参数地扫时间成本要高很多。2.3 控制链路延时与采样保持的处理方法数字控制延时是阻抗建模最容易出错、也最容易被忽略的一环。在扫频验证中最终能复现出多少分量的误差很大程度上取决于延时建模是否准确。在VSG控制中调制波从控制器输出到PWM调制器执行通常会有一个开关周期Ts的延时加上PWM的零阶保持效应等效再增加半个开关周期总延时一般取1.5个开关周期。这个延时在频域上对应一个e^(-1.5Ts*s)的相位滞后项在1kHz附近开关频率20kHz时这个项引入的相位滞后大约为1.5 * 50 μs * 2π * 1000 ≈ 27度。如果不加这个延时段高频段阻抗的相位会明显偏乐观扫频验证时与实际模型对不上。还有一个细节在dq旋转坐标系下建模时延时对d轴和q轴的影响是相同的这个可以直接用一个标量传递函数表示。但如果用的是静止坐标系下的序分量建模延时就会产生正负序不对称效应处理方式完全不同。这也是为什么我特别强调要先选定坐标系、再统一建模中途切换坐标系极易出错。3. 仿真扫频的实操流程如何设计一次可复现的扫频测试3.1 扫频的物理逻辑注入、响应、FFT三件套仿真扫频的原理和实验室里用频率分析仪测阻抗没有本质区别在VSG的并网点注入一个已知频率和幅值的小信号电流扰动测量该频率下的电压响应电压增量除以电流增量就得到该频点的阻抗值。实现方式有两种。第一种是电流注入法在并网点并联一个受控电流源注入扰动。第二种是电压扰动法把电网电压源做成一个受控电压源在基波电压上叠加同频率的小信号电压扰动。两种方法最终得到的阻抗数学上有换算关系但实际操作中我会优先用电流注入法因为受控电流源的建模和实现更简单而且对主电路的稳态运行点影响更小、更容易保持直流偏置清晰。扰动幅值的选择有讲究。太大会导致系统进入非线性区特别是VSG的功率环有饱和限幅环节扰动一大触发限幅FFT提取出来的响应就包含明显的谐波分量太小则信噪比不足。我通常在额定电流的2%-5%之间取具体值可以通过一个简单的验证——注入后查看FFT结果中基波分量的幅值是否远远大于二次、三次谐波。单频率点的扫频流程如下让系统运行到稳态一般需要模拟2s以上的VSG功率响应时间在第t0时刻叠加扰动信号持续5-10个扰动周期取后一半数据做FFT提取扰动频点处的电压电流复矢量计算阻抗切换下一个频率点重启扫描。3.2 中点扫频法能节省一半仿真时间的实用技巧直接做完整扫频的仿真时间很长。如果扫50个频点每个频点仿真2s加起来就是100s的仿真时长。对于电磁暂态仿真步长只剩下几微秒跑100s可能需要几个小时这在调试阶段是没法忍受的。中点扫频法two-tone或incremental scan的思路是在一个扫频周期里叠加两个频率的扰动利用FFT的频率分辨率同时提取两个频率点的响应。但更常用、更稳定的做法是“中点分割法”——利用VSG阻抗在小范围频率变化时是缓慢连续的这一特性把扫频步长翻倍先在偶数频点扫描然后以偶数频点的阻抗值作为初始估计对相邻点进行小范围线性插值即可。实际工程中还可以用叠加扫频法即一个跑批里叠加多个不同幅值的扰动频率然后用FFT一次性提取多个频点的响应。这个方法对线性时不变系统有效但对VSG这种含功率环、惯量非线性的系统多频同时注入容易产生交叉调制我实测下来会引入1%-3%的误差。整体来说还是建议老老实实单频扫或者最多两个频点做一次叠加。要节省时间更推荐的做法是优化每个频点的稳态等待时间。低频段比如0.1Hz-5Hz功率环响应慢稳态等待时间需要长一些比如3s以上高频段100Hz以上功率环几乎不起作用稳态等待时间缩到0.5s就足够了。这样50个频点的总仿真时间能压缩到原本的1/3左右。3.3 频率点选取策略对数分布才是正确选择频率点的分布直接决定Bode图的画质和扫描效率。均匀分布在频域上很直观但用起来效果差低频段0.1Hz到1Hz只占了10个点的一个格高频段900Hz到1000Hz却也有10个点——但高频段的阻抗变化往往集中在谐振峰附近需要更细的分辨率。我建议采用对数分布从0.1Hz到2000Hz每十倍频程取10-12个点总共约35-45个频点。如果要对谐振峰附近加细则在LCL谐振频率附近额外加密。选点时要特别关注几个位置基波频率的整数倍附近50Hz、100Hz、150Hz...这里是电网背景谐波最丰富的区域注入扰动幅值容易被背景谐波淹没需要加大扰动幅值或做谐波抵消LCL谐振频率附近阻抗会出现显著的幅值峰和相位跳变加密采样点能更精确地捕捉谐振峰的尖锐程度控制带宽边界附近VSG的功率环带宽一般0.5-2Hz、电压环带宽一般50-200Hz在频响曲线上会有转折加密这些区域的点能更清楚地标识阻抗特性的转折频率。3.4 数据后处理从时域波形到阻抗Bode图的完整链路这一步是扫频验证里技术含量最高的部分。虽然逻辑上只是“幅值相除、相位相减”但实际操作中有几个容易被忽视的细节。首先是FFT窗口的选择。如果直接用整段时域数据做FFT扰动开始和结束时的瞬态响应会污染频谱。我的做法是在每个频点的扫描时间段里丢弃前20%的数据点对应开关暂态然后对后面的数据做FFT。另外为了保证频率分辨率每个频点总采样时间至少要包含10个完整的扰动周期。比如扫描0.1Hz的频点时至少要记录10s以上的数据否则FFT主瓣宽度不够提取出来的幅值误差很大。其次是对直流偏移和基波分量的处理。dq坐标系下做FFT时需要先做Park变换再把信号转换到频域。直流偏移对应的是基波分量本应该在提取时忽略。但要注意因为VSG的功率环响应比较慢在扰动注入后的短时间内会有一个低频的功率振荡这个振荡频率很低可能在0.2Hz-1Hz之间如果落入FFT分析的频段会造成干扰。所以建议在提取阻抗值时先做高通滤波或者扣掉扰动前的平均值再计算FFT。最后是阻抗的相位参考。dq坐标系下阻抗矩阵每一项都是一个复数幅频特性是模的曲线相频特性是辐角的曲线。很多人在这一步会把辐角的反正切计算搞错需要根据复数的实部和虚部符号确定象限直接用atan函数会丢失相位信息。4. 从仿真扫频到硬件在环验证的迁移实践4.1 为什么建模正确还不够还要做实时仿真验证仿真模型里的扫频通过后下一步是做硬件在环测试。这一步的价值在于离线仿真里的控制器模型比如Simulink里的控制算法和你最终烧进DSP或者FPGA里的代码往往有差异。最典型的差异有两个。第一个是数值精度差异离线仿真里用的double精度DSP里可能用single甚至定点数积分器溢出、截断误差都会对低频段的功率环动态产生影响进而在低频阻抗的相位上引入几度的偏差。第二个是执行顺序和调度差异离线仿真是理想化的模块调度实际控制代码里中断优先级、ADC采样时序、PWM更新时刻都改变了延时的大小和相位滞后。硬件在环平台的选型上我倾向于用FPGA-based的实时仿真器比如RT Box、MT或者类似的国产平台开关步长可以跑到亚微秒级别这样扫频的高频段几百Hz到几kHz才有足够精度。如果用纯CPU的实时仿真器步长通常在10-20微秒扫到500Hz以上时仿真的离散误差就会明显影响测量结果。4.2 硬件在环扫频的操作要点与实际差异把离线扫频的脚本迁移到实时仿真平台需要改动两个地方。一个是扰动源的类型实时仿真里通常没有办法像离线那样直接放置受控电流源因为会占用额外的硬件资源。更常见的方法是在电网电压源模块里加一个扰动选项通过软件配置叠加谐振分量。另一个是数据采集方式离线仿真可以直接从模型变量里取数实时仿真只能从DA输出或者内部观测变量里取采样率往往低于模型步长。这要求在扫频数据后处理时做抗混叠滤波否则FFT结果会出现镜像频率分量。实际测试中高频段的阻抗曲线和离线仿真的差距一般是可控的2%-5%以内但低频段1Hz以下经常出现更大的偏差。这是因为实时仿真里的离散积分器在低频段会产生相位偏差尤其是采用双线性变换和向前欧拉法实现的积分器差异较大。为了校准低频段我把VSG功率环的积分器统一成同样的离散方法这样离线、在环、实测三个结果的差距能控制在2%以内。4.3 扫频时长与实际执行效率的权衡在实时仿真平台上做扫频没有办法像离线仿真那样单频点慢慢跑。HIL平台的算力是共享的扫频任务不能占用过长时间。我的做法是分两个批次第一个批次覆盖主要频段用较粗的步长第二个批次只返回谐振区附近的细扫。总体控制在10分钟内完成50个频点的扫描这样不会影响同一平台上跑其他测试任务的实时性。如果需要更快的速度可以考虑在一个扫描批次中注入多频叠加的信号用“梳状频谱”一次提取多个频点但要记得提前做误差评估。我在一台构网型变流器上实测过四频叠加的情况下中低频段误差小于1.5%高频段误差达到4%-6%在工程可接受范围内。5. 常见问题与排查技巧实录5.1 扫频结果“抖”得厉害Bode图像心电图现象同样的工况跑两次扫频低频段阻抗相位相差5-10度曲线看着没有重复性。排查思路先确认是否稳态没等到。VSG的功率环时间常数很大尤其当J值很大的时候一个阶跃扰动后功率需要好几秒才能稳定。如果每个频点的仿真时间只有1s那么提取到的FFT窗口里还包含功率振荡的瞬态分量阻抗相位自然不稳定。解决办法是延长稳态等待时间或用两个扰动周期做差分处理——先记录扰动前0.5s的数据再记录扰动后0.5s的数据用两者的差值做FFT。另一个容易被忽略的原因是开关纹波污染。FFT窗口如果取整段数据开关频率附近的纹波能量会泄漏到低频。建议在FFT之前先做数字滤波或者用同步采样法把采样时刻对齐到PWM载波周期。5.2 高频段阻抗相位和解析模型对不上整体有一个固定偏移现象100Hz以上扫频得到的相位总比解析值差5-10度且频率越高偏差越大。排查思路这几乎可以肯定是延时建模的问题。检查模型里是否包含了1.5个开关周期的延时是否考虑了ADC采样的保持延时。在Simulink里常用的是一个Transport Delay模块如果用Memory模块代替延时量会变成随步长变化的数值造成相位偏差。我踩过的一个具体的坑是在离线仿真模型里用了一个理想PWM发生器它每个采样周期只更新一次调制波。加上连续域里的VSG控制器总延时被隐式地引入了半个周期但我在解析模型里只加了1个周期的延时。对应的高频段相位差在2kHz附近有将近20度的差距当时排查了很久才找到。5.3 扫到LCL谐振点附近的阻抗值异常大且相位跳变不连续现象在LCL谐振频率附近例如500Hz测量出的阻抗幅值比解析值高出一倍相位从正50度突然跳到负80度。排查思路LCL谐振频率附近的阻抗对阻尼项非常敏感。如果VSG有有源阻尼算法比如电容电流反馈有源阻尼并且实现时增益符号取反了反了会造成谐振峰被放大而不是被抑制。这时扫频结果就会显示出一个无阻尼的尖峰。另一个可能原因是扫频扰动幅值过大。在LCL谐振频率附近注入同样幅值的扰动电流产生的电压响应比其他频段大一个数量级会触发调制限幅导致系统进入非线性。所以扫高频段时要把扰动幅值适当降低——比如从5%降到2%。5.4 表格速查扫频验证问题排查参考现象可能原因建议措施低频阻抗相位抖动稳态等待时间不足低频段等待时间至少3s或用扰动前后差分相位随频率稳步偏差延时环节建模不准核对PWM更新周期、ADC采样延时统一离散方法谐振点峰值异常有源阻尼失效/扰动非线性减小高频扰动幅值检查阻尼算法正负反馈个别频点阻抗跳变背景谐波或电网电压畸变检查该频率是否接近基波整倍数加密或改用差分扫频扫频结果与解析模型全频段偏差主电路参数不一致核对LCL参数、死区效应、寄生电阻是否纳入建模硬件在环与离线结果不一致平台步长过大、积分器离散方法不同统一积分器算法降低HIL步长至亚微秒级5.5 一个容易被忽视的问题电网背景谐波造成的“伪谐振”扫频验证时如果用的是带电网谐波电压源的模型而电网源里本身含有3次、5次、7次谐波那么在扫某些频率点比如150Hz、250Hz、350Hz附近时注入扰动信号会和背景谐波发生干涉。此时FFT提取的电压电流响应实际上包含了背景谐波的分量导致阻抗测量值在这几个频点出现尖峰或凹陷。这个问题的隐蔽之处在于扫频曲线在大部分频段是平滑的只有这几个点看起来“异常”容易被误判为系统存在真实的谐振。解决办法也不难一种方式是在数据处理时把背景谐波对应的频点抠掉另一种方式是采用“双扰动”法——在扰动频率的±50Hz各注入一个小信号然后用对称分量法把正序和负序分开从数学上剔除背景谐波贡献。我强烈建议在扫频验证时记录一版不加扰动、只运行背景谐波的“底噪谱”然后在每个频点做频谱相减。这个底噪谱的采集非常快一次即可却能让扫频结果的置信度显著提高。结尾个人的一些体会最后分享两个我在这一轮VSG阻抗扫描实战中沉淀下来的小技巧。第一个是扫频数据的热点图比Bode图更容易发现多频段交互问题。把不同电网强度短路比SCR从1到10下的阻抗相位画在同一张图上用颜色表示相位裕度一眼就能看出在哪种电网强度、哪个频段会落入不稳定区。这个可视化方法在我们排查一次弱网下25Hz振荡时直接把问题定位到了VSG阻尼系数D与电网感抗的交互频段比单看某个工作点的Bode图高效得多。第二个是做扫频验证时仿真模型里一定要把电网的LCL电容和VSG的LCL电容同时保留不能只保留一侧。两个电容之间在特定频率会产生串联谐振这个交互在单侧简化模型里完全看不到但在实际并网中恰恰是高频振荡的常见诱因。阻抗扫描这件事做一次不难难的是每一次扫出来的结果都能被解释、能被解析模型和实测复现。把建模、仿真、扫频验证这一条链路打通之后后续无论是调控制器参数、加阻尼算法还是评估并网适应性你都会发现手里多了一把极其好使的尺子。希望这篇文章能帮你少走几趟我走过的弯路。
返回列表