☰
同步电机与构网型变流器频率稳定性仿真分析方法详解
2026/10/14 7:51:01 网站建设 项目流程

最近在实验室一直折腾同步电机与构网型变流器的频率稳定性问题,Simulink模型改了一版又一版,Matlab脚本从参数初始化写到了批量扫参。说实话,构网型变流器这个概念看着不复杂,就是让逆变器"装得像"一台同步电机,但真要把频率动态复现清楚,牵扯到的惯量、阻尼、控制带宽、扰动时序,一个都不能含糊。这篇文章把我这轮研究的完整思路整理出来,从同步电机摇摆方程到VSG虚拟惯量控制,再到仿真平台搭建和批量扫参脚本,最后是调参踩坑记录,适合正在做构网型控制、新能源并网稳定性仿真或者准备入手Simulink机电暂态方向的朋友参考。

1. 为什么要把同步电机和构网型变流器放在同一张频率动态图里

1.1 高比例新能源带来的频率支撑缺口

过去电力系统的频率靠同步发电机转子惯量撑着,汽轮机、水轮机的转动惯量就摆在那里,负荷突变时转子动能自动吸收或释放,频率变化率天然受限。新能源大规模接入后,直流输电线路和逆变器接口的电源不具备物理惯量,系统等效惯量逐年下降,扰动后的频率变化率RoCoF明显变快,低频减载甚至可能出现误动。这不是理论推演,我在多个仿真系统里都看到过同样的规律:同样一个10%负荷阶跃,同步机占比60%的系统频率最低点还能稳在49.8Hz附近,占比降到30%后直接跌破49.4Hz。

构网型变流器之所以成为研究热点,正是因为它能在逆变器控制算法里"合成"出惯量和阻尼,弥补同步电机容量减少留下的支撑空白。它和传统跟网型逆变器的本质区别在于:跟网型把自己当成电流源,时刻跟踪电网相位;构网型把自己当成电压源,主动建立相位和频率,电网跟着它走。这就决定了我们必须把同步电机物理特性和构网型控制特性放在同一个分析框架里,才能定量回答"构网型到底补了多少惯量""两台构网机并联会不会和同步机互相作用产生功率振荡"这类问题。

1.2 频率稳定性研究的三个量化指标

做仿真之前必须先明确评价标准。业内讨论频率稳定性,基本都围绕这三个指标:

  • 频率变化率RoCoF:扰动后最初的频率斜率,单位Hz/s,它最直接反映系统惯量水平。
  • 频率最低点Nadir:动态过程中频率跌到的最小值,对应系统承受扰动的极限能力。
  • 稳态频率偏差:扰动结束、调节过程完成后的频率残差,反映一次调频能力和阻尼。

这三个指标分别由不同参数主导:RoCoF主要取决于总惯量,Nadir同时受惯量与阻尼影响,稳态偏差则由下垂系数和阻尼大小决定。搭建仿真模型时,我通常会把这三个量作为后处理自动提取的目标,后面章节会给出具体脚本逻辑。

1.3 本次研究的对比路线

我在Simulink里搭建了一套可复用的研究框架:同一张电网拓扑图上,左侧是一台比例可调的同步电机(用Simscape Electrical的同步电机模块),右侧是一台构网型变流器(VSG控制,三相桥+LC滤波),中间接入可变负荷。通过同步改变同步机容量和构网机容量占比,对比不同惯量配置下的频率动态过程。这套框架的好处是扰动条件、步长、求解器完全一致,参数对比有说服力,后面所有结论都在这个平台上跑出来。

2. 先搞懂同步电机的频率响应:摇摆方程与关键参数

2.1 从物理转子到数学方程

同步电机的频率响应核心在转子运动方程,也叫摇摆方程。物理上,转子是一个旋转质量体,输入的机械功率和输出的电磁功率一旦不平衡,多余或欠缺的功率就会改变转子动能,转速随之变化。用标幺值写,方程长这样:

2H * (dω/dt) = Pm - Pe - D * (ω - 1)

其中H是惯性时间常数(秒),物理意义是转子在额定转矩下从静止加速到额定转速所需的时间,水电机组常见4~8s,火电机组常见3~6s,小容量发电机会更小。D是阻尼系数,包含机械阻尼和电气阻尼两部分,标幺值通常在0~10之间。ω是转子角速度的标幺值,Pm和Pe分别是机械功率和电磁功率。

这个方程解释了频率稳定的第一性原理:扰动瞬间Pm没变,Pe因为负荷突变或线路跳闸变化了,右边出现差额,ω开始积分,产生频率偏移。H越大,同样的功率差额引起的角速度变化越慢,这就是惯量支撑的本质。

2.2 惯量常数H和阻尼系数D的分工

很多人做频率仿真时把H和D混在一起调,实际上两个参数的角色完全不同;H决定频率变化速度,D决定频率恢复的剩余偏差。用一个简单静态平衡就能看出来:稳态时dω/dt等于0,Pm - Pe = D * Δω,同样的功率缺额下,D越大,稳定频率偏差越小。而在动态初期dω/dt还没被D拉回来之前,H才是主导。

这带来一个很实际的仿真观察技巧:当你不确定观测到的频率特征到底是惯量问题还是阻尼问题时,做两组仿真,一组固定D只变H,一组固定H只变D。前者明显改变RoCoF,后者明显改变稳态残余偏差和最低点深度,两者特性完全可分离。批量扫参脚本就是基于这个思想设计的。

2.3 Simulink中同步电机模型的选择与参数导入

Simscape Electrical的同步电机模块有几种版本,频率稳定性研究建议用pu Fundamental类型,不用显式转子d/q轴详细磁链模型,省去一堆电感参数标定工作。这个模块输入端口包括机械功率Pm,输出包括转速wm和电气端子。建模时只需要填额定容量、额定电压、频率、惯性常数和阻尼系数,非常合适做中长期动态。

我习惯把同步电机参数放在一个结构体里统一管理,然后在模型初始化回调中加载,避免每个模块对话框散落着一堆数字。典型参数如下:

  • 额定容量Sn:100MVA
  • 额定电压Un:13.8kV
  • 额定频率fn:50Hz
  • 惯性常数H:4.5s
  • 阻尼系数D:2.0
% 同步电机参数初始化示例 gen.Sn = 100e6; % 额定容量 gen.Un = 13.8e3; % 额定线电压 gen.fn = 50; gen.H = 4.5; % 惯性时间常数 gen.D = 2.0; % 阻尼系数 gen.p = 4; % 极对数 assignin('base', 'gen', gen);

3. 构网型变流器的虚拟同步机控制:怎么“装得像”一台同步电机

3.1 VSG控制框图与控制方程

构网型变流器实现对同步电机频率特性的模拟,核心是虚拟同步机算法(Virtual Synchronous Generator)。控制思路分为三环:有功-频率环模仿摇摆方程和调速器,无功-电压环模仿励磁调压,最内层是电流电压双闭环保证逆变器安全运行。

有功-频率环的控制方程和同步电机的转子运动方程形式上几乎一样:

J * (dω_vsg/dt) = Pref - Pmeas - Dp * (ω_vsg - ωref)

这里J是虚拟惯量(kg·m²),Dp是虚拟阻尼系数,Pref是有功功率参考值,Pmeas是变流器实测输出功率。频率控制环节计算出虚拟角速度ω_vsg,经过积分得到虚拟相位θ,直接作为电压指令的相位;在同步电机里,这个相位就是转子位置,两者逻辑一致。

无功-电压环则采用Q-V下垂,相当于同步电机的自动电压调节器AVR:

E_mag = E0 + Kq * (Qref - Qmeas)

E0为空载内电势幅值,Kq为无功下垂系数,输出作为电压指令的幅值。

3.2 有功-频率环路的参数设计逻辑

虚拟惯量J不是随便拍的,它和同步电机的H之间存在一套等价比对关系。把虚拟转动动能换算成以变流器额定容量为基准的惯性时间常数:

H_vsg = 0.5 * J * ω0² / Sbase

ω0是额定角速度2π·50,Sbase是变流器额定容量。比如一个100MW的构网型变流器,想等效成H=4s的同步发电机,反推出来的J大约就是4倍关系。设计时要特别注意:虚拟惯量背后是需要真实能量的,转子靠物理动能支撑功率差额,构网型变流器只能靠直流侧电容或储能单元放电来支撑。J设得过大,直流侧电压会在扰动瞬间大幅跌落,限幅器触发后反而恶化频率响应。我的经验是虚拟惯量对应的等效H,取值在2~6s之间比较稳妥,超过8s就要认真校核直流侧能量裕度。

虚拟阻尼Dp则直接影响稳态频率偏差,它的标幺化形式和同步电机D类似。Dp过小时频率振荡衰减很慢,有振铃;Dp过大时稳态偏差被压得很小,但会使变流器在扰动后长时间输出大功率,系统需要留有备用容量。一般取值在额定功率对额定频率比值的5%~10%区间。

3.3 构网型和同步电机的关键差异

参数上能模拟,物理上还是有本质区别,做仿真时必须心里有数:

对比项同步电机构网型变流器(VSG)
惯量来源转子转动动能直流侧电容/储能能量
过载能力短时可达1.2~1.5倍额定通常1.1~1.2倍,受IGBT限制
故障电流很高,可触发保护有限流环节,一般不超过1.2倍
响应速度机械转子决定,较慢控制决定,可以很快
阻尼来源转子阻尼绕组+系统阻尼虚拟阻尼Dp,纯算法

这些差异直接决定了仿真模型中必须给构网型变流器配置限幅环节和直流侧动态模型,否则频率稳定仿真结果会过于乐观,实测根本达不到。

4. Simulink仿真平台搭建要点:从单机模型到联合仿真

4.1 系统架构与元件选型

仿真平台的主体结构是一条单线图:公共交流母线(110kV或35kV)上并联接入同步电机支路、构网型变流器支路和负荷支路。同步电机经变压器升压接入母线,构网型变流器用直流电压源模拟背靠背直流侧或储能单元,经LC滤波器和升压变压器接入母线。中间用一个三相断路器做负荷投切扰动,再用一个三相故障模块模拟短路工况。

Simulink中元件选型建议:

  • 同步电机用Simscape Electrical的Synchronous Machine pu Fundamental;
  • 构网型变流器用Three-Phase Bridge和平均值模型两套方案,研究中期频率动态时平均值模型更稳,研究暂态电流时用详细开关模型;
  • 滤波器用Three-Phase Series RLC Branch,LC参数按截止频率100~200Hz设计;
  • 变压器用Three-Phase Transformer(Two Windings);
  • 负荷用Three-Phase Parallel RLC Load或可控三相有功负荷。

4.2 求解器与步长配置

构网型变流器和同步电机动态时间尺度差很多,同步电机的摇摆周期在秒级别,但电力电子开关在微秒级别。如果只研究中长期频率动态,我强烈建议用平均值模型,把逆变器等效成一个受控电压源,内部高频开关细节用低频等效替代。这样仿真步长可以直接放到50微秒甚至100微秒,用固定步长离散求解器跑20秒动态也不至于卡死。

如果必须保留PWM开关细节,那就用可变步长,以ode23t或ode15s为主,最大步长限制在1e-5秒量级,仿真10秒物理时间基本要跑十几分钟。还有一个折中方案:前半段(扰动前后0.2秒)用详细模型看清楚电流冲击,后半段切到平均值模型看惯量支撑,这个在Simulink里可以通过模型变体和开关逻辑实现,我后面会单独写一篇,这里不展开。

4.3 扰动场景设计

频率稳定性研究至少需要覆盖三类扰动:

  • 负荷阶跃:最简单也最常用,模拟负荷突变10%~20%,观察频率跌落和恢复;
  • 发电机/逆变器脱网:模拟一台机组跳闸,功率缺额等于该机组出力,对系统频率冲击最大;
  • 三相短路:最严重的暂态,通常持续100ms后切除故障线路,关心低电压期间同步机的加速减载问题,以及构网型变流器的故障电流处置。

我习惯在仿真模型里用Step模块加切换时间控制断路器动作,Simulink里双击Breaker模块可以设置Open/Close transition time,扰动时刻统一设成t=5s,这样所有对比仿真仪从同一个基准点出发,后续画图对齐时间轴时省很多麻烦。

4.4 频率测量与记录

频率测量是分析的基础。同步电机可以直接取转子转速wm乘以额定频率得到频率;构网型变流器的交流母线频率则要有一个频率测量环节,通常用Three-Phase PLL模块,输出角频率经转换后得到频率。这里有一个坑:PLL带宽如果设得太低,测出来的频率曲线变化非常钝,会掩盖真实的RoCoF特征;带宽设太高又容易引入谐波和噪声。我一般把PLL的控制器带宽设在20~30Hz左右,既能跟上机电暂态动态,又不会被谐波搞乱。

记录数据时用To Workspace模块将频率、功率、电压等关键信号存成结构体变量,命名规则用signalName_时间戳,方便批量仿真后按条件筛选。

5. Matlab脚本驱动批量仿真:扫参实验怎么设计

5.1 参数初始化的脚本结构

单次仿真在Simulink模型里手动改参数也能跑,但频率稳定性研究需要扫参,一定要用脚本驱动。我把模型参数全部放在工作区,Simulink模型中通过变量名引用。初始化脚本负责生成一个参数结构体并赋到工作区,仿真启动时回调函数自动读取。结构体组织建议按子系统分块:gen_xxx(同步电机)、vsg_xxx(构网型)、line_xxx(网络)、load_xxx(负荷)。

% 初始化脚本 set_params.m clear; clc; % 同步电机参数 prm.gen.Sn = 100e6; prm.gen.Un = 13.8e3; prm.gen.H = 4.5; prm.gen.D = 2.0; % 构网型变流器参数 prm.vsg.Sn = 50e6; prm.vsg.Un = 35e3; prm.vsg.J = 2.0; % 虚拟惯量 prm.vsg.Dp = 0.2; % 虚拟阻尼 prm.vsg.Kq = 0.05; % 无功下垂 prm.vsg.Kp = 0.1; % 有功下垂 % 负荷参数 prm.load.P0 = 80e6; % 初始有功 prm.load.Q0 = 20e6; % 初始无功 assignin('base', 'prm', prm);

模型里所有用到参数的地方都写prm.gen.H、prm.vsg.J这种路径形式,这样脚本改动任何一个字段都能同步更新整个仿真。

5.2 批量扫参的仿真循环

批量仿真我用的方式是Simulink.SimulationInput对象,它比sim()加set_param的写法灵活得多,支持在循环里以极小开销反复修改模型参数。核心写法如下:

% 批量扫参脚本:变化惯量H和阻尼D H_list = [2, 4, 6, 8]; D_list = [0.5, 1.0, 2.0, 4.0]; results = []; for i = 1:length(H_list) for j = 1:length(D_list) simIn = Simulink.SimulationInput('freq_stability_model'); simIn = simIn.setVariable('prm.gen.H', H_list(i)); simIn = simIn.setVariable('prm.gen.D', D_list(j)); simIn = simIn.setVariable('prm.load.P_step', 0.15); % 15%负荷阶跃 simOut = sim(simIn); % 提取结果 t = simOut.tout; f = simOut.f_meas; % 母线频率 p = simOut.p_vsg; % 构网变流器有功 % 计算频率指标 rocof = compute_rocof(t, f, 5.05); % 扰动后0.05~0.2s斜率 nadir = min(f(t > 5.0 & t < 8.0)); f_ss = f(end - round(1/(t(2)-t(1))) : end); f_ss = mean(f_ss); % 稳态频率 results = [results; H_list(i), D_list(j), rocof, nadir, f_ss]; end end save('scan_results.mat', 'results');

跑大量仿真时建议开启快速重启模式,避免每次重新编译模型:

simIn = simIn.setModelParameter('FastRestart', 'on');

这样能节约至少一半时间,特别是模型里同步电机加构网型这种非线性环节比较重的场景。

5.3 指标提取的几个坑

compute_rocof这个函数名字是我自己写的,它的逻辑是取扰动后一小段频率线性区做最小二乘拟合斜率。实际处理时要注意:扰动后的前几十毫秒经常有明显跳变,直接用差分求最大值很容易算出一个离谱的数值,因为数字仿真中步长切换会产生毛刺。我的做法是取扰动后0.05~0.2秒区间的数据做线性回归,把斜率当作RoCoF,并把R方输出检查拟合质量。

提取频率最低点Nadir也要小心:curve中可能存在短暂的小凹点,不一定就是真正的振荡最低点。我一般取一个大窗口的最小值,再验证这个最小点是否持续至少一个周期,防止把数值抖动当成了物理现象。Simulink里History buffer如果设置不当,最大步长带来的粗粒度也会让Nadir偏浅,所以记录频率信号时采样率最好不低于每周期20个点。

6. 频率稳定性仿真结果该怎么解读

6.1 扰动后频率动态的三个阶段

读频率曲线时,我有一个固定的分解习惯,把整个动态过程分成三段去看。

第一段是惯性响应段,大约是扰动发生后0~0.5秒。这个阶段的频率斜率近似恒定,只取决于总惯量和扰动功率,几乎不受调频环节影响。画图时直接把曲线前段拟合成一条直线,斜率就是系统等效惯量的直观体现。

第二段是调节响应段,持续几秒到十几秒。同步电机的调速器、构网型变流器的下垂环节逐步改变有功出力,频率曲线出现拐点,Nadir出现在这一段,随后回升。这一段的形状与阻尼、调节器速度常数密切相关。

第三段是稳态段,所有调节动作结束,频率稳定在一个残差上。同步电机调差系数和构网型下垂系数共同决定这个偏差的大小。

6.2 惯量不足与阻尼不足的区分方法

我拿两组仿真做个对比。第一组,把同步电机H从4.5降到2,构网型参数不变,频率曲线前段斜率明显变陡,Nadir更低,但稳态频率几乎一样。第二组,把D从2降到0.5,RoCoF几乎不变,但Nadir更深、振荡幅度更大、稳态残差更大。这就是开始说的H和D的角色分工,在具体数据上是完全不同的痕迹。

实操中判断系统是"缺惯量"还是"缺阻尼",根本不需要参数辨识之类的复杂手段,直接看这两处特征,就可以决定应该优先增加同步惯量/虚拟惯量,还是优先改善阻尼控制。

6.3 构网型变流器对频率支撑的贡献边界

在我跑的系列仿真里,构网型变流器对频率稳定确实有明确帮助:把惯量等效H从3提升到6时,相同负荷阶跃下频率最低点可以提升0.3Hz左右。但也要注意到它的贡献有一个边界——当变流器输出功率接近限幅值时,控制环实际上被切到了限流模式,虚拟惯量和阻尼都失去作用,频率曲线会出现一个平台甚至二次跌落。这就是我前面反复强调直流侧容量和限幅环节建模必须保留的原因。

正确做法是把构网型变流器的研究放入一个能量约束框架里:虚拟惯量起作用的前提是直流侧有足够的能量支撑。仿真中我看到过一个很有代表性的案例:虚拟惯量从4调到8,看起来频率最低点改善了,但直流电容电压跌到限幅触发点,构网型在最低点附近转为限流,反而让Nadir来得更深。这个反直觉的结果提醒我们,参数优化不能脱离物理约束单独看。

7. 踩坑记录与调参经验

7.1 步长太大导致RoCoF失真

第一次跑扫参时,我把固定步长设成了1e-4秒,算出来的RoCoF曲线抖得非常厉害,甚至出现了负的RoCoF,明显是数值噪声而不是物理现象。后来把步长压到2e-5,抖动才消失;但步长变小后仿真时间成倍增加。折中的解决办法是:用中等步长(5e-5)跑动态,提取指标前对频率信号做一阶低通滤波,滤波时间常数设成0.01秒,既保留机电动态特征又滤掉数值毛刺。这样批量扫参速度快,指标也更稳定。

7.2 同步电机初始化失败的处理

Simulink里同步电机模型跑前必须做潮流初始化,特别是接入复杂网络时经常报Machine initialization error。很多新手直接点仿真运行,报错了还找不到原因。正确流程是先在Powergui中点击Load Flow,设置好求解类型,指定同步电机为PV节点并给出机端电压幅值,其余节点设为PQ节点,让潮流收敛后再回模型运行。初始化不成功的典型表现是第一个步长就发散或者转速飞掉,解决完潮流初始化基本都好。

7.3 构网型变流器并网相位初值问题

构网型变流器启动时,控制环路给出的相位必须和电网相位对齐,否则并网瞬间会出现巨大的冲击功率,频率测量也会有系统性偏差。我的做法是在VSG控制器的积分器初始值上,直接预置电网电压初始相角,这个相角值可以从Powergui的潮流结果中得到,也可以用三相电压过零检测计算。很多情况下大家觉得构网型控制"看起来对",结果并网就跳,大概率就是这里没设好。

7.4 虚拟惯量过大的连锁反应

上面提到过虚拟惯量J从4提升到8,频率最低点反而变差的案例,我把整个连锁反应梳理一下,方便你对照排查自己的模型。J增大到一定程度后,扰动瞬间变流器会按转子方程积分出一个很大的虚拟频率变化速率,有功指令猛增,直流电容放电深度超过预期,电压限幅饱和,变流器电流到顶。此时控制系统为了让电流回到限幅之内,实际输出的功率反而被压住,构网特性名存实亡。要解决这个问题,要么增大直流侧电容或接入储能,要么把虚拟惯量限制在直流侧能量支撑能力范围内。我个人建议在设计阶段就先估算一下等效储能需求,而不是扫参扫出一个离谱的坏点后再去找原因。

7.5 对比仿真务必控制变量

最后提醒一点扫参纪律。批量仿真最怕的是多个变量一起变,跑完一堆结果却说不清是谁引起的。我的做法是给每次仿真生成一个日志结构,把模型版本、求解器类型、步长、扰动时间、所有关键参数全部记录在内。分析结果时先按步长和扰动时间筛掉不该纳入对比的数据,再确认只动一个物理量。这样得出的趋势图,无论是写报告还是发论文,审稿人和导师问起来都能快速回答。

写在最后

同步电机与构网型变流器的频率稳定性研究,现阶段仿真工具的定位是帮我们把机理看清、把参数边界摸透。它不能替代现场实测,但能大幅降低试错成本。我自己的操作系统化之后,最大的收获不是哪个参数最好,而是终于能讲清楚每个参数在频率动态上留下的"指纹"是什么形状。沿着这个思路,后面还可以继续拓展:构网型和跟网型的混联比例优化、故障穿越后的频率恢复策略、多机并联时VSG之间振荡模态分析,这套模型框架都能直接复用。希望这篇文章能帮你少踩几个我已经踩过的坑,也欢迎同行交流我在某些边界条件下还没完全想透的细节。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询