1. 为什么要做VSG阻抗扫描:并网稳定性的“透视镜”
做VSG(虚拟同步发电机)并网项目这几年,我越来越觉得阻抗扫描这件事是绕不开的坎。很多做微网、做储能变流器、做新能源并网的朋友,最初关注的都是功率控制、惯性支撑、调频调压这些“看得见”的外特性,但真正到了现场联调、遇到振荡、抓瞎排查的时候,才会意识到:变流器对外呈现的阻抗特性,才是决定并网系统稳不稳的关键。
虚拟同步发电机说白了,就是用电力电子变换器去模拟同步发电机的转子运动方程和外特性。它能让逆变器在电网面前表现得像一个“有惯量、有阻尼”的电压源,这在弱电网、孤岛微网这些场景里尤其有价值。但问题恰恰出在这里——VSG的控制结构比普通的PQ控制、VF控制要复杂得多,功率外环、电压电流内环、虚拟阻抗、惯量阻尼参数,一环套一环,每个环节都会在输出阻抗曲线上留下“指纹”。阻抗的幅值和相位在某个频段如果出现负电阻特性,或者谐振峰贴近电网背景谐波频率,系统就可能莫名其妙地振荡起来。
阻抗扫描的这个“扫描”二字,就是它的核心操作:在变流器并网点注入一系列不同频率的小扰动,测量对应的电压电流响应,算出幅值比和相位差,从而得到从变流器看进去的阻抗频率特性曲线。这条曲线一出来,你就能直观地看到这个VSG在哪个频段是“硬”的、在哪个频段是“软”的、会不会跟电网阻抗形成不利的交点。它就像一面透视镜,把控制参数、滤波器设计、电网环境的影响全部投射到一条波特图上。
这篇文章我打算按我自己的实操路径来写:先讲VSC并网系统阻抗建模的基本思路和推导要点,再讲怎么在Matlab/Simulink里把扫频环境搭出来,把这些仿真复现的方法移植到自己的模型上,然后讲怎么处理扫频数据、怎么跟理论曲线对照验证,最后把我在这个过程中踩过的坑和经验教训一并交代清楚。不管你是刚接触VSG的研究生,还是在做并网逆变器产品开发的工程师,只要你需要对系统的稳定性底细摸个底,这篇文章应该能帮你省下一大段走弯路的时间。
2. 系统结构与建模思路:先把“敌我双方”的阻抗分清楚
2.1 并网系统的诺顿/戴维南等效思路
在做阻抗分析之前,先把视角拔高一点。一个三相并网系统,从公共耦合点(PCC)往两边看,可以分别等效成两个一端口网络:变流器侧看进去是一个电压源串联阻抗,或者说电流源并联阻抗;电网侧看进去是一个理想电压源串联电网阻抗。稳定性分析的基本思路,就是考察这两个阻抗之间的比值或者环路增益是否满足奈奎斯特判据。
这个思路其实跟模拟电路里的阻抗匹配有点类似,只不过在电力电子系统里,问题更复杂:变流器的输出阻抗不是固定值,它随频率、随工作点、随控制参数都在变。你说它是“器件参数”吧,它还带着控制器的灵魂;你说它是“控制效果”吧,它又实实在在影响功率传输。所以工程上常用的一种处理办法,是把它按频率分段来看:
- 低频段(几赫兹到几十赫兹):主要由功率外环、虚拟同步机的转子运动方程、虚拟阻抗决定;
- 中频段(几十赫兹到几百赫兹):电压环和电流内环开始起主导作用;
- 高频段(几百赫兹到开关频率附近):滤波器、采样延时、PWM调制器特性占主导。
我在建模的时候习惯先把这三个频段的分工在脑子里立起来,这样后面扫频结果出来,哪个频段曲线异常,立刻能反推是哪一层控制环节出了问题,排查效率高很多。
2.2 dq坐标系下的阻抗模型推导要点
三相系统的阻抗分析,直接在abc坐标下做会非常痛苦,因为正弦稳态下电压电流都是时变量,没法直接套用小信号线性化。常规做法是转到dq同步旋转坐标系下,把工频量变成直流量,然后在直流工作点附近做小信号扰动线性化。
这一步是整个建模过程的理论核心,我写下几个关键点:
- 两个正交轴不是独立的:在dq坐标系里,由于Park变换的存在,d轴和q轴的电压电流之间存在交叉耦合项,通常表现为$-\omega L$和$+\omega L$的形式。这个耦合在推导传递函数的时候很容易漏,漏掉之后的阻抗模型在非单位功率因数工况下会明显对不上扫频结果。
- 功率外环必须参与:VSG的功率环决定了输出阻抗的低频特性。很多人建模只搭电流内环加滤波器,算出来的阻抗在低频段是正电阻特性,一接上VSG功率环就变成负电阻特性了,差别非常大。后来我在建模时把转子运动方程、无功-电压下垂、虚拟阻抗全部纳入,低频段曲线才跟实测对得上。
- 控制延时要折算进去:数字控制里的采样保持和PWM更新延迟,通常等效成$e^{-1.5T_s s}$的滞后环节,其中$T_s$是采样周期。如果不加这个延时,扫出来的高频谐振峰位置会整体偏高,稳定性判断就可能出现乐观偏差。
建模完成之后,输出阻抗表达式可以写成频率的函数$Z_{out}(s)$,但这只是理论值。实践里我更依赖扫频实测去验证它,因为建模时不可避免会有参数摄动、非线性因素、死区效应、数字控制离散化误差,这些在理论表达式里很难全部精确刻画——这也是为什么一定要做扫频实测,并且要让实测和理论相互印证的原因。
2.3 电压源型VSG与电流源型控制的主要差异
前几年做并网逆变器时,很多人默认用电流源型控制(PQ控制),逆变器被建模成诺顿等效电路——理想电流源并联一个较大输出阻抗。这种做法在强电网里很有效,因为电网电压被钳住了,电流源型控制本质上是在“跟随”电网电压,不需要为电网提供电压支撑。
但VSG是电压源型控制。它的外环输出直接给定电压幅值和相位,内环再去跟踪这个电压指令,整体呈现戴维南等效——理想电压源串联一个较小的输出阻抗。这个差异带来的直接影响有两个:
- 在弱电网场景下,VSG可以主动支撑并网点电压,不会因为电网阻抗大而出现电流源型控制那种“控制跟随不上、相位裕度不足”的问题;
- 但电压源型控制的 VSG,其输出阻抗低频段在功率环带宽内更容易出现负电阻特征,尤其是在重载、低短路比工况下,这是它比PQ控制更容易发生振荡的原因之一。
我在实际项目里感受很深的一点是:影响振荡频率的,往往是VSG功率环的带宽。你把转动惯量调大,惯性增强,但功率环带宽压低了,低频段的负电阻区间就会向更低频率移动,如果电网阻抗在这个频段的相频特性跟你“撞车”,照样会不稳定。阻抗扫描的价值恰恰在于,它能让你提前看见这种隐患,而不是等到并网那一瞬间才发现问题。
3. 仿真环境搭建:Simulink里的VSG模型与扰动注入设计
3.1 主电路与控制参数怎么设定
仿真环境我用的是Matlab/Simulink,配合Simscape Electrical(早年叫SimPowerSystems)里的三相逆变器模型。这个环境做扫频很方便,因为可以灵活地在连续域和离散域之间切换控制算法,也可以很方便地注入扰动信号并采集波形数据。
我以一个20kW/380V的VSG并网系统为例,把主电路参数列出来,作为后面所有仿真和扫频实验的基准:
| 参数 | 数值 | 说明 |
|---|---|---|
| 额定功率 | 20 kW | 并网输出功率 |
| 直流母线电压 | 700 V | 由前级整流/光伏提供 |
| 交流线电压有效值 | 380 V | 三相三线制 |
| 电网频率 | 50 Hz | 理想电压源模拟 |
| 滤波电感 | 0.5 mH | LC滤波电感 |
| 滤波电容 | 20 μF | 三角形接法 |
| 开关频率 | 10 kHz | PWM载波频率 |
| 采样频率 | 10 kHz | 与控制频率同步 |
| VSG惯量 | 0.5 kg·m² | 转子运动方程等效惯量 |
| 阻尼系数 | 20 N·m·s/rad | VSG阻尼项 |
| 电压环PI参数 | Kp=0.5,Ki=50 | 电压外环 |
| 电流环PI参数 | Kp=1.2,Ki=100 | 电流内环 |
VSG部分的控制结构我用了最常见的双环结构:功率外环(含虚拟惯量和阻尼,模拟同步机的转子运动)→ 电压外环 → 电流内环 → PWM。功率外环输出的相位和幅值经过Park反变换得到三相电压参考值,电压电流双环在dq坐标系下做PI控制,最终输出PWM占空比。
有一点容易踩坑:功率环的PI参数和惯量阻尼系数之间是有等价关系的。转子运动方程如果写成小信号形式,惯量$J$和阻尼$D$基本上对应了有功环的积分和比例环节。你直接改了惯量,相当于改了有功环的PI参数,所以别在仿真里今天调一下这个明天调一下那个,最后都不知道是谁导致了结果变化。我习惯先固定惯量阻尼,用功率环PI做微调,配合阻抗曲线验证。
3.2 扫频扰动注入方法:串并联与正负序的取舍
扫频的核心问题是怎么把扰动“塞”进系统。目前主流的方法有两类:一类是串联电压扰动,在PCC点串入一个小电压源;另一类是并联电流扰动,在PCC点并联一个可控电流源。两种方式在Simulink里都能实现,但各有侧重:
- 串联电压扰动更贴近电网电压畸变场景,适合研究变流器对电网背景谐波的阻抗特性;
- 并联电流扰动更容易注入,能量也更可控,但需要注意电流源的输出阻抗要尽量大,防止扰动能量被电流源自身吸收掉。
我个人的习惯是用并联电流扰动,因为实现起来简单,而且对变流器正常工作点的影响相对较小,扰动幅度可控。在Simulink里,可以在PCC节点并联一个大电阻后接一个受控电流源(可控电流源模块),给它加一个幅值很小、频率可变的谐波电流指令。
扰动幅值的选取有一个实操经验:初始扰动幅度控制在额定电流的2%到5%之间,太大容易使系统进入非线性区,扫出来的阻抗曲线会变形;太小则信噪比差,高频段很容易被测量噪声淹没。比如额定电流30A的系统,扫频扰动电流给0.6A到1.5A比较合适,低频段可以给1.5A,高频段可以适当加大到2%,因为开关纹波和采样噪声在高频的影响更明显。
正负序的处理也值得单独说一句。如果系统三相平衡、无零序通路,你可以只扫正序阻抗。但在弱电网或者单相负载不平衡场景下,负序阻抗同样重要,甚至更重要——因为在不对称故障下,负序阻抗决定了负序电流的大小,直接影响保护动作和系统安全。我建议有条件时把正序、负序分开测,至少理论模型里要能算得出负序阻抗的表达式,方便跟扫频结果对照。实现上可以在dq轴中分别注入正序和负序旋转坐标系下的扰动分量,整理数据时按对应频率和相序分离。
3.3 扫频序列设计:对数扫频与单频点扫频的选择
扫频设计上,我常用两种策略:
- 单频点逐点扫:对每个关注频率单独注入正弦扰动,测量稳态响应后切换到下一个频率点。这种方法实现简单,每个频点都能够独立控制注入时间,且不存在频谱泄漏问题,适合频率点很少(比如只关心5~1000Hz的几十个点)的情况。缺点是耗时,几十个频点可能要跑上百秒仿真时间。
- 线性调频(chirp)信号一次性注入:在仿真时间轴里注入一个频率连续变化的正弦扰动,然后用FFT做时频分析。优点是单次仿真就能覆盖整个频段,速度快很多。缺点是低频段需要的持续时间长,高频段容易因采样时间不足导致分辨率下降。
工程实践里,我更推荐第二种:用一个chirp信号扫10Hz到2kHz,扫频时长设为1秒(低频分辨率1Hz),在Simulink里用固定步长仿真,步长设成5微秒(对应200kHz采样率),然后对采集到的电压电流数据做短时傅里叶变换或者分段FFT,提取每个频点的幅值和相位。
要注意的是,chirp信号的幅值包络要平滑处理,最好用汉宁窗或者连续升余弦窗包络,避免扫频开始和结束时产生突变分量,否则这两个瞬态会污染整个频谱,让低频段的数据变得很脏。我第一次做的时候没加包络,结果低频段阻抗相位曲线像锯齿一样,后来的经验是:扫频信号给包络、持续秒级时间、每次仿真多跑几个周期等系统稳定后再开始记录数据。
4. 扫频数据的处理与阻抗计算:从时域波形到波特图
4.1 FFT窗口选取与频谱泄漏的消除
扫频仿真结束,你会得到PCC点的三相电压、电流波形,以及注入的扰动电流信号。接下来的问题是怎么把这些时域波形变成一条平滑的阻抗曲线。
最朴素的思路是在每个频率点直接做FFT,但实际操作里有个坑是频谱泄漏。如果你的FFT窗口长度与扰动频率不成整数倍关系,频谱能量会泄漏到邻近频点,导致幅值相位计算偏差。解决的办法有三个:
- 让FFT窗口长度正好等于扰动周期的整数倍,这个在单频点扫频时最容易做到;
- 使用汉宁窗或布莱克曼窗加窗处理,牺牲一定频率分辨率来换取旁瓣抑制;
- 采用Goertzel算法,只对关注的频点计算DFT,效率高、泄漏小,尤其是在频率点看起来比较稀疏的时候。
因为我通常用chirp信号做宽频扫描,所以在数据处理阶段我会先对采集到的三相电压电流做Park变换(以PCC电压相位为参考),然后对d、q轴分量分别做FFT。这样做的原因是dq坐标系下的分量是直流量加小信号扰动,更容易把工频基波分离掉,扰动信号在各个频率点上的幅值相位也更清楚。
4.2 正负序和dq轴分量的换算关系
无论是理论模型还是仿真扫频,阻抗数据最终都要落实到一定的坐标系下描述。如果你在dq旋转坐标系里测阻抗,得到的实际上是$2\times2$的阻抗矩阵:
$$ \begin{bmatrix} v_d \ v_q \end{bmatrix} = \begin{bmatrix} Z_{dd}(s) & Z_{dq}(s) \ Z_{qd}(s) & Z_{qq}(s) \end{bmatrix} \begin{bmatrix} i_d \ i_q \end{bmatrix} $$
在控制参数对称、三相平衡的VSG系统里,$Z_{dd}$与$Z_{qq}$会比较接近,而$Z_{dq}$与$Z_{qd}$可能是符号相反或近似相等。这个矩阵模型与正负序阻抗之间可以互相转换,转换公式是:
$$ Z_{pos}(s) = Z_{dq}(s - j\omega_1), \quad Z_{neg}(s) = Z_{dq}(s + j\omega_1) $$
这里$\omega_1$是工频角频率。很多论文里直接画正序阻抗波特图,但仿真时用的是dq坐标系,这中间差一步频移换算,不换算直接对比曲线是会对不上的,这也是我第一次对照时困惑了很久的地方。
好在实际工程里,如果主要关注稳定性,可以直接在dq阻抗矩阵的框架下做广义奈奎斯特判据,不必强行转换成序阻抗。两种框架各有利弊,我是建议建模和仿真阶段用dq阻抗,展示给其他同事或写报告时再用序阻抗,因为序阻抗的画法更直观,更符合“感性/容性”的直觉。
4.3 幅值相位提取与曲线平滑技巧
从FFT结果里提取每个频点的幅值比和相位差,公式很简单:
$$ Z(f_k) = \frac{V_{pcc}(f_k)}{I_{inj}(f_k)} $$
其中$V_{pcc}(f_k)$是PCC点电压在扰动频率$f_k$处的FFT复数值,$I_{inj}(f_k)$是注入电流的FFT复数值。注意这里用的是PCC电压和注入电流的比值,如果你测的是网侧电流或者逆变器输出电流,结果会有差异,因为滤波电容支路会分流。
曲线平滑方面,我有两个心得:
- 频域数据在对数坐标下做滑动平均,窗口长度选1/12倍频程比较合适,太长了会抹掉真实谐振峰,太短了噪声压不住;
- 相位数据要做unwrap处理,因为FFT提取的相位默认在$(-\pi, \pi]$区间,而真实的相频曲线可能跨越多个周期,直接画会是锯齿状的。
实际操作里还有一个非常实用的检查方法:把仿真扫频测出的阻抗曲线和理论推导的阻抗波特图叠加在一起画,如果两者在中低频段的趋势一致、谐振峰位置接近(偏差在10%以内),基本可以认为建模和扫频流程都是可靠的。剩下的高频段偏差,多数来源于开关频率附近的离散化效应和死区时间影响,那属于正常范围。
5. 扫频实测环节的关键步骤与案例复盘
5.1 从仿真搬到硬件在环(HIL)平台
在纯仿真环境里验证完阻抗模型后,我强烈建议你把VSG控制器搬到硬件在环(HIL)平台上跑一遍扫频测试。HIL平台的值在于它能以真实控制器的采样频率、延时特性、量化精度去执行控制算法,同时还能源源不断地制造各种电网工况——弱电网、谐波电网、三相不平衡等——而且不会烧任何功率器件。
我使用的HIL平台是NI PXI搭配VeriStand,或者用RT-LAB也可以。核心配置流程是这样的:
- 把Simulink里的主电路模型下载到实时仿真机,仿真步长定为5微秒,这是为了在10kHz开关频率下准确模拟PWM谐波;
- 把VSG控制算法部署到真实的DSP控制器里,通过模拟量IO接口跟实时仿真机连接;
- 在HIL上位机里配置扰动信号源,让它在PCC点注入扫频电流扰动;
- 同步采集PCC电压、电流和扰动指令信号,记录到时序文件里供离线分析。
HIL和纯仿真最大的区别在于控制延时的真实性。纯Simulink仿真里如果你用的是理想零延时控制,扫出来的阻抗高频段会明显偏向乐观;而在HIL里,AD采样延时、PWM更新延时、占空比量化误差全部真实存在,扫出来的曲线才更贴近实际装置的表现。我在这个过程中验证出来的结论是:1.5个采样周期的等效延时对阻抗的影响非常大,它会把高频段的相位裕度削掉10到20度,这在稳定性分析里足以改变结论。
5.2 实测参数设计与数据记录规范
实测扫频的参数设计跟你做仿真时差不多,但有几点需要额外注意:
- 扰动发生器的输出阻抗要足够大(或者用电流源模式),避免扰动信号被电网的低阻抗短路;
- 注入点的选择要在PCC处,而不是逆变器输出端子处,否则滤波电容支路的影响会被遗漏;
- 数据记录要连续,至少要覆盖注入扰动前2个工频周期到扰动结束后2个工频周期,方便后面做同步和窗函数处理;
- 每组工况至少重复扫3次,取中值作为最终结果,因为现场的电网频率波动和谐波背景会造成单次测量结果的波动。
表格里我总结了一下我常用的记录字段,方便后面排查时回溯:
| 字段 | 描述 | 备注 |
|---|---|---|
| 工况编号 | 每组测试的唯一标识 | 方便关联工作点参数 |
| 有功功率/无功功率 | 稳态工作点 | 阻抗跟工作点是强相关的 |
| 电网电压/频率 | 背景环境 | 弱电网时重点记录短路比 |
| 扫频范围/扫频时长 | 激励参数 | 低频建议从5Hz开始 |
| 扰动幅值 | 激励强度 | 记录实际注入电流幅值 |
| 数据文件路径 | 原始波形存储位置 | 按“日期_工况_序号”命名 |
这中间最容易被忽略的是工作点记录。阻抗是工作点的函数,你用同一个控制器在10kW和20kW两个工作点下测阻抗,幅频曲线可能相差很大。所以每次扫频前先等系统完全进入稳态(我一般等10个工频周期以上),记录功率值,再启动扫频。这样做完的数据才具备可比性。
5.3 一次弱电网振荡的排查复盘
分享一个具体的案例。某个项目里,一台VSG在并网运行时出现了频率大约为28Hz的功率振荡,持续十几秒后保护动作。
当时我先做了理论分析,把VSG的输出阻抗波特图跟电网阻抗(短路比SCR=3)画在一起,发现电网阻抗曲线和VSG输出阻抗曲线的幅值交点落在28Hz左右。在那个频点,VSG输出阻抗的相位大约是-92度——也就是说,在28Hz这个频率上,VSG对外呈现的是一个负电阻特性,加上电网感性阻抗的90度正相移,两者叠加接近180度,系统不具备稳定裕度。
然后我用HIL平台做扫频验证,在SCR=3的工况下向PCC点注入扫频扰动,实测的VSG输出阻抗曲线在28Hz附近确实存在一个明显的相位跌落,最低到-105度左右,和理论计算结果位置接近,偏差在10%以内。问题定位非常清楚:VSG功率环在低频段形成了负电阻——等效的阻尼不足。
解决措施是把VSG的阻尼系数$D$从20提升到35,同时适当增大低通滤波器的截止频率(从10Hz调到20Hz),改变了功率环在28Hz附近的相频特性。改完之后重新做扫频验证,同一频点的相位从-105度抬升到了-65度,再配合加装一台有源阻尼器,振荡彻底消失了。
这个案例给我的最大启发是,阻抗扫描不只是实验室里的科研工具,它在你现场处理振荡问题时同样是最高效的诊断手段。你不需要盲目去调PID参数,先把阻抗曲线扫出来,哪个频段出了问题一目了然,调参也就变得有理有据。
6. 常见问题与排查技巧实录
6.1 扫频结果不重复:往往不是算法问题而是稳态问题
做阻抗扫描时最容易遇到的现象就是:同一工况下,两次扫频的结果肉眼可见地有偏差。第一次我怀疑是FFT处理的问题,折腾了数据采集窗口、加窗函数,结果还是对不齐。后来才发现,问题出在系统没有完全进入稳态就开始了扫频。
VSG有惯性,功率环的响应时间可能到几百毫秒。如果你刚把负载切进去就立刻开始扫频,系统还在过渡过程中,阻抗测量当然不可能准。解决办法很简单:扫频开始前等待足够长的时间,我用示波器观察功率波形完全平稳后再触发扫频,一般至少等20个工频周期。另外,每次扫频结束后,等待1到2秒再开始下一次,避免上一次扰动激发的暂态分量影响下一次测量。
还有一个容易被忽略的因素是:扫频扰动本身会改变工作点。扰动电流大了以后,VSG的功率环会响应这个扰动,让整个系统的运行点发生偏移,造成测量结果非线性。这种效应在低频尤其明显,因为功率环带宽内它对任何功率波动都“感觉得到”。所以我在设计扰动幅值时会做一个验证实验:把扰动幅值从1%逐步增加到5%,看阻抗曲线是否保持一致。如果曲线随扰动幅值明显变化,说明系统已经进入非线性区,需要调小扰动幅值。
6.2 高频段数据噪声大:提升信噪比的手段
高频段(比如1kHz以上)的扫频数据经常散得一塌糊涂,原因有两个:一是逆变器的开关纹波本身就集中在这个频段附近,二是采样通道的量化噪声和EMI干扰在高频段尤为突出。
我常用的对策有以下这些:
- 提高采样率,理论上至少要达到关注最高频率的10倍以上,我一般采样率开到200kHz;
- 对每个频点做多次测量并取平均,可以按50次平均来做,信噪比能提升约17dB;
- 检查电压电流探头或信号调理电路的带宽,确保信号链路的带宽高于关注频率,否则测量的幅值会系统性衰减;
- 在FFT分析时设置一个窄带滤波器,只提取扰动频率附近的能量,滤除开关纹波和谐波分量的影响。
这些手段综合用下来,高频段的数据质量通常可以从“惨不忍睹”提升到“能接受”。但也要有个预期:开关频率附近的阻抗数值本身受死区、调制策略影响很大,即便测准了,也只是反映了特定工况下的等效表现,跟理论模型的偏差会比较大。只要不影响稳定性判据在这个频段的结论,可以适度容忍。
6.3 扫频频率范围怎么定:从振荡裕度反推需求
很多人拿到扫频工具,第一反应是“扫得越宽越好”。但实际操作里,扫频范围太宽会带来几个问题:低频段需要的仿真时间长、高频段需要极高的采样率和数据处理量、而且很多频段你根本不关心。
我的习惯是从稳定性需求反推扫频范围:
- 如果关注的是次同步振荡(通常5Hz到50Hz),那扫频下限设到1Hz甚至更低,上限到100Hz就够;
- 如果关注的是控制带宽内的稳定性(50Hz到500Hz),扫到1kHz足够;
- 如果还关心高频谐振(LCL滤波器的谐振峰通常在上千赫兹),那要扫到开关频率的一半左右,我一般扫到5kHz,再高就没有太大工程意义了。
低频段的扫频时间要特别预留。在单频点扫频时,最低频点如果设为1Hz,为了获取足够多的周期数来算FFT,每个频点至少需要2秒的仿真时间,这还是全程不停歇的理想情况。所以低频点通常只取几个有代表性的点,比如1Hz、2Hz、5Hz、10Hz、20Hz、50Hz,后面直接对数间隔扫,控制总时长在可接受范围。
6.4 快速排查清单:扫频数据异常时先查这几处
根据我自己的踩坑经验,整理了下面这个速查清单。当扫频结果明显不对的时候,建议按这个顺序排查:
| 现象 | 可能原因 | 快速排查方法 |
|---|---|---|
| 全频段幅值都偏大 | 电压电流通道标定不一致 | 检查传感器变比和换算系数 |
| 低频段相位明显偏差 | 功率环未达稳态 | 延长扫频前等待时间 |
| 高频段曲线剧烈抖动 | 采样率不足或窗函数不合适 | 提高采样率、改用窄带滤波 |
| 谐振峰位置与理论偏差大 | 控制延时折算不对 | 检查等效延时是否设为1.5Ts |
| 正负序阻抗结果不对称 | 控制器中存在非对称逻辑 | 检查dq轴PI参数是否完全一致 |
| 扫频结果依赖扰动幅值 | 系统进入非线性区 | 降低扰动幅值至额定电流2%以内 |
这张表实际上是我每次做阻抗扫描测试之前的“启动检查单”,它能帮我快速排除掉八成以上的数据异常问题。如果你在复现过程中也遇到类似的现象,不妨先对着这张表过一遍。
7. 稳定性判据与结果解读:扫完阻抗之后怎么办
7.1 奈奎斯特判据与阻抗比判据的运用
扫完阻抗曲线,拿到了VSG输出阻抗$Z_{out}(s)$和电网阻抗$Z_g(s)$,接下来最关键的一步是判断系统稳不稳定。工程上最常用的判据是阻抗比判据:定义环路增益$T(s) = Z_g(s)/Z_{out}(s)$(电流源型系统)或者$T(s) = Z_{out}(s)/Z_g(s)$(电压源型系统),然后考察$T(s)$的奈奎斯特曲线是否包围(-1, 0)点。
具体到VSG这种电压源型控制,我习惯把VSG输出阻抗等效成戴维南电路,然后考察$Z_{out}(s)/Z_g(s)$的奈奎斯特曲线。如果曲线不绕过(-1,0)点,系统就是稳定的;如果绕过,就说明存在失稳风险。
但在实际工程项目里,直接做完整的奈奎斯特判断比较费劲,我更喜欢在波特图上做近似判断:
- 找$|Z_{out}|$和$|Z_g|$的幅值交点频率$f_c$;
- 看$f_c$处两者的相位差$\angle Z_{out} - \angle Z_g$;
- 如果相位差接近180度(准确说要大于180度),系统在$f_c$附近有振荡风险;
- 保留的相位裕度建议至少30到45度。
这个方法虽然没有完整的奈奎斯特判据严格,但在工程快速判断上非常实用,能帮你快速筛选出危险频段,再对可疑频段做更细致的分析。
7.2 弱电网适应性评估:短路比变化时的阻抗变化
VSG一个重要应用场景是弱电网,所以做阻抗扫描时一定要把电网短路比(SCR)作为变量扫一遍。我通常取SCR=2、3、5、10几组典型工况,看VSG输出阻抗不变时系统稳定裕度随电网阻抗的变化趋势。
弱电网下电网阻抗大,$Z_g$的幅值曲线整体上抬,与$Z_{out}$的幅值交点会向低频方向移动,这可能让交点落入VSG低频段负电阻区域。这正是弱电网下更易发生低频振荡的根本原因——不是VSG的参数变了,而是电网条件的改变让稳定性富余量被吃掉了。
我在做弱电网适应性评估时,会额外关注两个指标:一是相位裕度最低的那个频点是多少,二是该频点对应的功率环带宽关系如何。如果发现相位裕度低于30度,基本就要考虑修改VSG的控制参数,或者附加有源阻尼控制环。
7.3 阻抗扫描结果与控制参数整定的闭环迭代
阻抗扫描不仅能用来判断稳定性,还能直接指导控制参数整定,形成一个闭环迭代的过程。具体做法是这样:
- 先对初始参数做阻抗扫描,找出相位裕度最差的频点;
- 根据该频点所处的控制环节,针对性地调整对应参数。比如问题在低频段,就调整功率环的惯量、阻尼或下垂系数;问题在中频段,就调整电压环PI;问题在高频段,就调整电流环PI或滤波器参数;
- 改完参数后重新扫频,看目标频点的相位是否改善,同时留意其他频段有没有被“治标不治本”牵动;
- 反复迭代,直到全频段相位裕度满足要求。
这套方法看起来笨,实际上比瞎调PID快得多。我记得有一次调一个VSG的电压环参数,传统的时域阶跃响应法怎么调都觉得阻尼不足,后来用阻抗扫描一看,问题根本不在电压环带宽,而是功率环在30Hz频段贡献了过多的负阻尼。改完功率环参数后,电压环甚至不用动,问题就解决了。这个案例让我深刻体会到阻抗扫描在参数整定里的价值。
8. 总结与扩展思考
做了这么多VSG阻抗扫描的工作,一个很深的体会是:建模、仿真、扫频验证这三件事,必须合在一起做才真正有闭环效果。只做理论建模,你不知道模型忽略了多少实际因素;只做仿真扫频,你不确定控制器的数字实现细节是否都正确;只有把实测结果跟理论模型反复对照、反复修正,你才能对系统的稳定性底细建立起真正的把握。
后续扩展方向上,我认为有三个值得继续深入的点:
- 一是把阻抗扫描跟在线监测结合起来,做成一个能够在线的阻抗辨识工具,实时监测VSG的输出阻抗变化趋势,在系统稳定性裕度不足时提前预警;
- 二是将多台VSG并联系统的阻抗交互纳入分析。多机并联时,单机阻抗模型是基础,但还要考虑并联机组之间的交互阻抗,这个模型会更加庞大,但扫频方法本身可以沿用;
- 三是把阻抗分析扩展到不对称故障场景,正负序阻抗以及它们之间的耦合效应将更加复杂,这也是弱电网保护和控制研究的前沿方向。
如果你正在做VSG相关的项目,无论你是做理论研究的还是做产品开发的,我建议都尽早把阻抗扫描工具纳入你的工具箱。它可能不会让你的系统跑得“更快”,但它能让你在系统出问题之前就看到隐患在哪里——这恰恰是工程实践里最宝贵的能力。
最后再分享一个小技巧:每次做完一次扫频验证,记得把扫频数据、控制器参数、工况记录三者打成一个包存档。等到三个月后项目出问题再回头查数据时,你会感谢当时那个多花了五分钟做记录的自己。