最近帮人看一套新能源并网仿真时,遇到了一个很有意思的现象:同样的负荷阶跃扰动,同步电机主导的系统频率先跌后爬,跌得不算深,但恢复过程要拖好几秒;而换成构网型变流器提供支撑时,只要虚拟惯量参数给得合适,频率曲线反而能压得更平。这个对比让我想把这套“同步电机与构网型变流器频率稳定性”的仿真研究完整整理出来。文章会顺着物理机理、Simulink建模、参数设计、指标提取和结果判读这条线展开,所有结论都来自我实际操作过的仿真验证,也包含Matlab脚本的具体写法,适合正在做新能源并网稳定性研究、或者准备做虚拟同步机仿真项目的同学参考。
1. 为什么非要把同步电机和构网型变流器放到同一张仿真台上
1.1 新能源占比升高后的频率稳定问题,本质上是什么问题
电网频率稳定的物理根源只有一个:系统中的有功功率是否时刻平衡。负荷增加或者发电功率减少的瞬间,发电机转子上的机械功率和电磁功率不相等,差额功率只能从转子的旋转动能里临时借出来,表现为转子减速、频率下降。传统同步发电机因为转子很重、转动惯量大,频率变化被明显缓冲,这就是“惯性支撑”。
新能源发电机组的情况完全不同。光伏和大部分风机通过电力电子变流器并网,变流器的直流侧和交流侧并没有物理转子直接耦合。如果变流器采用传统的跟网型控制,它只负责把直流侧能量“注入”到电网,本身不能建立电压和频率,系统频率对它来说只是一个“被跟踪”的量。当新能源渗透率提高、同步电机逐步退出后,系统的等效惯量会显著下降,同样大小的功率扰动会造成更快、更深的频率偏移。
我做这套研究时的出发点也在这里:当系统中既保留同步电机、又并入构网型变流器时,两者的物理机制和控制机制必须放在同一个仿真里对比。同步电机的频率响应是天然基准,构网型变流器的频率响应是控制算法创造出来的“仿制品”。把它们放在同一张图上,才能看出仿制得到底像不像、哪里过渡不自然、哪些参数会导致系统失稳。
1.2 构网型变流器和跟网型变流器的本质差别:从跟随者到支撑者
跟网型变流器的核心特征是把自身等效为一个受控电流源。它通过锁相环追踪电网电压相位,再依据功率指令输出相应的电流。这种控制的好处是简单可靠,但问题在于:当系统频率波动时,跟网型变流器本身感知这个过程需要经过锁相环的动态,而且它并不主动承担“功率差额”。换句话说,如果有大量跟网型变流器在线,它们对系统频率变化几乎没有任何结构性响应,系统频率只能指望剩余的同步电机来维持。
构网型变流器则把自己等效成一个受控电压源,主动建立输出电压的幅值和频率。最常见的实现方式是下垂控制或虚拟同步机控制:有功与频率之间存在明确的下垂关联,相位通过角频率积分而生成,变流器不再依赖锁相环去获取电网相位。当系统有功盈余时,构网型变流器会像同步电机一样减速;当有功不足时,它会通过释放直流侧能量来阻止频率快速下跌。
这种差别决定了我们在仿真建模时不能只是把控制模块换一下,更深层的问题是:跟网型系统的频率稳定问题需要靠外部“强制”加入的虚拟惯量控制来解决,而构网型系统天然具备类似的响应结构。所以将两种变流器与同步电机的动态放在同一个模型中比较,得到的结论才具有工程意义。
1.3 同步电机在这个研究里的定位:校准用的“参照系”
我常说,同步电机是频率稳定性研究的“标准答案”。它的转子运动方程、调速器响应、励磁系统动态经过了上百年工程实践的检验,任何一个参数都有明确的物理意义,不存在“调试玄学”。因此,当我们研究构网型变流器时,最稳妥的路线就是先把同步电机的频率响应曲线跑出来,再逐步调整构网型变流器的虚拟惯量、阻尼系数、下垂系数,去复现或者改进这条曲线。
在具体仿真项目里,我一般把同步电机作为系统的“锚点”机组,构网型变流器作为研究对象接入同一个母线。扰动前后对比频率最低点、频率变化率、稳态偏差三个指标,就能清楚看到构网型变流器在惯性支撑上究竟贡献了多少。这样做还有一个额外好处:如果不小心把构网型变流器的参数设错了,系统频率曲线往往会出现高频振荡或单调发散,此时回到同步电机基准模型去排查问题,比直接看变流器内部波形要直观得多。
2. 频率稳定性的底层物理规律:从摆动方程到惯性支撑
2.1 转子运动方程:频率稳定分析的“牛顿第二定律”
所有频率稳定性分析都会回到同步电机的转子运动方程,在标幺制下通常写成:
2H · d(ω_pu) / dt = P_m_pu - P_e_pu - D · (ω_pu - 1)
其中 H 是惯性时间常数,单位是秒,物理含义是“在额定功率下,转子从静止加速到额定转速所需的时间”。D 是阻尼系数,P_m 是机械功率,P_e 是电磁功率。
这个方程可以解释频率稳定分析中最重要的一个现象:扰动发生后瞬间,因为没有来得及调节,P_m 基本不变,而 P_e 因负荷增加而突增,所以 dω/dt 是一个负值。频率变化率的初值可以近似写作:
RoCoF_0 ≈ -ΔP / (2H · S_base)
用具体数值做一次计算会非常直观。假设单机容量 100MVA,惯性时间常数 H = 4s,负荷突增 20MW,那么 RoCoF_0 = 20MW / (2 × 4 × 100MVA) = 0.025 pu/s。换算到 50Hz 系统就是每秒下降 1.25Hz。这个值已经非常危险,现实中电网保护一般要求频率变化率不超过每秒 1Hz 甚至更严格。所以惯量并不是一个抽象概念,它直接决定了频率能否在扰动瞬间“刹住车”。
搞懂这个方程之后,再看构网型变流器的“虚拟惯量”就非常好理解了。控制算法里也引入一个形如 2H_vsg · dω/dt = P_ref - P_e 的方程,让变流器输出功率和频率变化率之间建立同样的数学关系,系统就“感觉到了”一股额外的惯量。仿真中检验构网型变流器到底有没有贡献惯量,方法也很简单:看扰动瞬间的 RoCoF 是否因为并入这台变流器而明显变小。
2.2 惯性响应、一次调频和二次调频:三层角色不能搞混
频率稳定是一个多时间尺度问题。扰动发生后几十到几百毫秒内,起作用的是惯性响应——转子释放动能阻止频率骤变,这个阶段完全是物理过程,没有任何调节器参与。接下来几秒到十几秒,一次调频投入工作,同步电机的调速器根据频率偏差调整原动机输入功率,构网型变流器则通过有功-频率下垂关系快速调整输出,目标是让频率在一个可以接受的准稳态水平重新平衡。更长时间尺度上,二次调频(自动发电控制)才会把频率偏差完全消除,一般这个过程要几十秒到分钟级。
三层之间有一个关键区别:惯性响应只影响频率变化率,不影响频率最低点;一次调频的响应速度和限幅特性才是决定频率最低点的重要因素。在仿真里经常看到有人把惯量常数调得很大,以为这样频率就不会跌了,其实如果不配合足够快的一次调频,频率只是慢慢跌得深而已,最终仍然会达到同样甚至更低的低谷。
构网型变流器在一次调频上有一个天然优势:它的功率输出由电力电子控制器决定,响应速度可以达到几十毫秒,远快于汽轮机或水轮机的调速机构。但需要警惕的是,快速的一次调频响应会把功率缺额瞬间转移到变流器直流侧,如果直流侧储能容量不足,限幅器就会启动,所谓“快调频”也会变成慢响应。所以不能只看控制器结构,还要看功率源侧的物理约束。
2.3 虚拟同步机控制:用控制方程“伪造”一个虚拟转子
我在仿真中最常用的构网型变流器控制策略是虚拟同步机控制,它本质上就是把同步电机的转子运动方程直接复制到变流器的控制环中。核心计算包括:
2H_vsg · d(ω_vsg) / dt = P_ref_pu - P_e_pu - D_vsg · (ω_vsg - 1)
这个方程的物理含义是:当变流器实际输出功率 P_e 小于参考功率 P_ref 时,虚拟角频率 ω_vsg 会加快,相位 θ_vsg = ∫ω_vsg dt 前移,输出更多有功;当 P_e 大于 P_ref 时则相反。这个行为很像一台同步电机在调节功角,只是“转子”存在于控制器算法里,而不是真实的物理惯性。
电压幅值部分通常由无功-电压下垂控制给出:E_ref = E0 + n_q · (Q_ref - Q_e),模拟同步电机的励磁调节。得到电压参考幅值和相位后,通过电压外环、电流内环的 PI 调节器生成调制信号去控制变流器桥臂。
用 Simulink 搭建时,我一般先把虚拟同步机方程用简单的积分器和增益模块搭出来,作为“有功-频率控制环”,再接一个经典的电压电流双闭环。这里有一个很多人容易犯的错误:在构网型变流器控制环里仍然加入了锁相环来测量电网频率,再去生成功率指令。这样做的话,构网型变流器本质上又变成了跟网型行为,虚拟同步机的“自同步”优势就完全丧失了。构网型系统的内部频率参考应当来自本地积分,而不是锁相环输出。
2.4 为什么“等效惯量”不是越大越好
设置虚拟惯量时,新手最容易犯的错误就是把它尽可能调大。理论上,H_vsg 越大,同样的功率差额造成的频率变化率越小,似乎一切都在变好。但同步电机的运行经验告诉我们,惯性过大会在扰动后产生明显的功率振荡,而且阻尼不足时衰减得很慢。虚拟同步机也会有同样的现象:H_vsg 太大,变流器输出功率在扰动后可能来回过冲,频率曲线呈现明显的低频振荡。
原因出在能量守恒上。增加惯量意味着扰动瞬间变流器要提供更多功率来支撑频率,但功率不是凭空变出来的,它从直流侧电容或者储能系统释放出来。如果直流侧能量有限,或者储能系统输出限幅,那么当虚拟惯量要求功率超过限幅值时,频率支撑效果会大打折扣,甚至引发直流母线电压崩溃。
所以实际参数整定要分成两步。第一步,根据系统频率变化率目标值确定所需等效惯量,比如要求扰动后 RoCoF 不超过每秒 0.5Hz,反推需要多少秒的惯量时间常数;第二步,做小扰动扫参,比较不同 H_vsg 和阻尼系数 D_vsg 组合下的频率最低点和功率振荡衰减速度,找到兼顾二者的参数区间。下面要讲到的仿真模型就专门用来做这件事。
3. 在Simulink里把两台“机器”搭出来:模型分层与参数设计
3.1 同步电机模型的选型:从机电暂态视角出发
Simulink 中同步电机模型有很多种,研究频率稳定性时我建议使用基于标幺值的机电暂态模型,而不是过于详细的电磁暂态模型。原因是频率稳定性关心的是几十秒尺度的动态,电磁暂态中的三相瞬时值细节、谐波特征、磁链动态对结论影响不大,反而会拖慢仿真速度。
在模型选型上,默认构建一个“同步发电机 + 原动机调速器 + 励磁系统”的结构。同步机本体使用模块库的标准同步电机模块,设置额定功率、额定电压、额定频率、极对数、惯性常数 H 和阻尼系数。原动机和调速器部分要特别注意:汽轮机或水轮机模型包含了机械环节的时间常数,这个时间常数决定了一次调频的出力爬坡速度,直接影响频率最低点。如果只是用简单的比例环节代替调速器,会得到过于乐观的频率恢复曲线。
励磁系统对频率稳定性的影响相对间接,但也不能完全省略。如果只关心有功-频率动态,可以暂时用恒定电压近似,并通过无功环保持机端电压基本稳定;如果研究的场景包含电压支撑对频率的影响,则需要加入标准的励磁系统模型。我在频率稳定性研究的主场景里通常保留一个简化励磁模型,避免机端电压波动造成额外的输出功率变化,干扰频率指标的判断。
3.2 构网型变流器的平均值模型和控制环结构
构网型变流器的仿真建模有两条路线:开关模型和平均值模型。开关模型包含功率器件和 PWM 调制细节,波形真实,但仿真步长必须取得非常小,几秒甚至几十秒的机电暂态仿真用开关模型会让人等到怀疑人生。平均值模型则用受控电压源替代桥臂和调制过程,只保留控制系统对输出电压的“基波”控制关系,在频段上覆盖到数百赫兹以内,完全满足频率稳定性研究需要。
平均值模型的搭建思路是这样的:虚拟同步机控制环输出角频率和电压幅值,经过积分得到相位角,与幅值一起生成三相正弦电压参考;电压参考进入电压外环,与实测电压比较后生成电流参考;电流参考进入电流内环,与实测电流比较后通过 PI 调节器生成电压补偿量,最终得到调制波电压并施加在受控电压源上。
这里最容易被忽略的是直流侧建模。最偷懒的做法是直接接一个理想直流电压源,但这样做会遮蔽掉一个关键约束:构网型变流器的惯性支撑功率全部要从直流侧能量里拿。我建议在直流侧用一个储能等效模型,至少加一个输出功率限幅模块,这样才能在仿真中真实复现储能出力受限对频率支撑的影响。如果研究重心在控制器参数对频率稳定性的影响,则可以先在理想直流源下完成控制参数整定,再逐步加入能量约束,观察限幅下的动态差异。
3.3 参数初始化脚本:先统一基准值,再来谈参数
Simulink 仿真里最让人头疼的问题不是模块不会搭,而是参数单位混乱。尤其是同步电机模型采用标幺值、变流器控制环采用实际值、频率指标又需要换算到 Hz,三套单位混在一起,非常容易出错。我的经验是写一个统一的参数初始化脚本,在仿真前把基准值、机组参数、控制参数全部算好、赋值到工作区,Simulink 模型中的参数全部引用这些工作区变量。
%% 系统基准值 f0 = 50; % 额定频率 Hz w0 = 2*pi*f0; % 额定角频率 rad/s S_base = 100e6; % 系统容量基准值 VA V_base = 10e3; % 交流母线线电压有效值 V %% 同步电机参数 H_sg = 4.0; % 惯性时间常数 s R_droop_sg = 0.05; % 调速器下垂系数(标幺) D_sg = 10; % 阻尼系数(标幺) %% 构网型变流器(VSG)参数 H_vsg = 4.0; % 虚拟惯量时间常数 s D_vsg = 20; % 虚拟阻尼系数(标幺) tau_p = 0.01; % 功率外环滤波时间常数 s n_q = 0.03; % 无功-电压下垂系数(标幺) %% 换算到控制器中使用的实际单位 K_p_droop = 1 / R_droop_sg; % 同步机一次调频增益(标幺) j_vsg = 2 * H_vsg * S_base / w0^2; % 等效转动惯量(kg.m^2) d_vsg = D_vsg * S_base / w0; % 等效阻尼(kg.m^2/s)这段脚本里有两个换算最容易出错。一个是标幺频率偏差乘以额定角频率才是控制环中使用的实际角频率偏差,另一个是功率单位在变流器控制中通常直接用标幺值,最终由功率环输出经过比例系数换算成内环的实际值。写成脚本后,可以用一句plot(f)验证频率信号是否在扰动后出现预期的变化趋势,一旦参数设置有明显错误,波形会立刻暴露出来。
更进阶的做法是用Simulink.SimulationInput对象批量修改参数,配合并行仿真工具批量扫参。我后面做虚拟惯量扫参时就是用这种方法,一次性跑几十个工况,然后统一提取指标、做对比表。这种自动化能力在参数整定阶段能节省大量时间,也是这套仿真方法相对纯手调的优势所在。
4. 频率稳定性评估框架:扰动工况与指标提取
4.1 标准扰动实验怎么设计:负荷阶跃是最实用的“体检”
仿真模型搭好之后,剩下的核心问题就是如何设计一个公平、可重复、能说明问题的扰动实验。我用的标准做法是在模型某条母线上挂一个受控负荷,通过阶跃信号控制负荷投入容量,在 t 时刻突增负荷,模拟系统有功缺额事件。
选择扰动幅度很有讲究。太小了,比如只有额定容量的 1%,频率变化可能被控制器的死区掩盖,无法清晰分辨不同控制参数之间的差异;太大了,比如超过 20%,频率可能跌到低频减载动作线以下,仿真结果失去意义。我一般从 5% 基准容量的负荷阶跃开始,逐步加大到 10%、15%,生成一组对比曲线。这个范围的缺额能明显激发惯性响应、一次调频的全过程,又不会让系统在仿真时间内崩溃。
负载阶跃之外,还可以设计两个变体工况。一是切除一台发电单元,模拟机组跳闸,这种方式产生的功率缺额与纯负荷阶跃的区别在于切除瞬间同步电机本身也退出系统,系统等效惯量会突变,频率动态更复杂;二是给构网型变流器的有功参考值叠加上连续波动的扰动信号,模拟新能源功率随机波动,观察频率是否始终被控制在合理范围内。三个工况配合使用,基本就把频率稳定性的各种触发场景都覆盖到了。
4.2 频率指标三件套:初始变化率、最低点、稳态偏差
仿真完成后,对频率波形进行定量分析时,我固定看三个指标。
第一个是频率变化率 RoCoF,反映扰动初期系统惯量水平。它的计算区间不能选得太短,否则噪声对结果影响很大;也不宜太长,否则会混入一次调频的作用。我用扰动发生后 0.5 秒到 1 秒的窗口来估算,这个时间窗口在工程上也与继电保护中频率变化率保护的动作时限相匹配。
第二个是频率最低点 Nadir,即扰动后频率下降到的最小值。它反映的是在惯量支撑释放动能、一次调频尚未完全建立功率时的动态平衡最差时刻,是低频减载保护最关心的量。Nadir 出现时间越早,说明系统惯量越小或一次调频响应越慢。
第三个是准稳态频率偏差,即波动衰减后频率相对于额定值的长期偏移。在没有二次调频的情况下,这个值由所有参与一次调频机组的调差系数共同决定。
我用一个函数统一计算这三个指标,输入频率波形的时间向量和频率向量,以及扰动发生的时刻,输出一个包含指标的表格。这样批量扫参后的结果可以用同样的标准相互比较,得出的结论才稳定。
function metrics = calcFreqMetrics(t, f, t_disturb) % 输入: 时间向量t、频率向量f、扰动时刻t_disturb % 输出: 结构体, 包含降VolRoCoF_Nadir等指标 f = f(:); t = t(:); idx_start = find(t >= t_disturb, 1); % RoCoF: 扰动后0.5s窗口内的最大变化率 win = (t >= t_disturb) & (t <= t_disturb + 0.5); df_f = diff(f(win)); dt_f = diff(t(win)); rocof = max(abs(df_f ./ dt_f)) * 50; % 换算为 Hz/s % Nadir: 扰动后5s内的最小频率 win2 = (t >= t_disturb) & (t <= t_disturb + 5); nadir = min(f(win2)); % 稳态偏差: 取最后1s的平均值 win3 = (t >= t(end) - 1); steady = mean(f(win3)) - 50; metrics = table(round(rocof,3), round(nadir,4), round(steady,4), ... 'VariableNames', {'RoCoF_Hz_s','Nadir_Hz','SteadyDev_Hz'}); end这段脚本里有一点要提醒:如果频率信号来自同步电机的机械角速度输出,直接乘以额定频率即可得到电气频率;如果来自构网型变流器内部,建议取虚拟同步机输出的角频率再按标幺换算,不要用锁相环的测量结果,否则相位突跳会让 RoCoF 计算出现很大的尖峰噪声。提取指标前加一个轻度的平滑滤波也是可接受的,但不能过度滤波,否则会把真实的暂态特征抹掉。
4.3 批量跑仿真和自动统计:省下几个小时的手动操作
当需要做多组参数对比时,逐个人工修改参数再点“运行”按钮完全没有效率。我强烈建议使用Simulink.SimulationInput来做批量仿真。它的基本思路是:先加载模型,然后为每个参数组合创建一个独立的 SimulationInput 对象,设置好模型参数和工作区变量,再用parsim并行执行。
%% 批量仿真 VSG 参数扫参 clear; load_system('freq_stability_model'); H_list = [2 4 6 8]; % 虚拟惯量候选值 D_list = [10 20 40]; % 虚拟阻尼候选值 simIn(1:length(H_list)*length(D_list)) = Simulink.SimulationInput('freq_stability_model'); k = 0; for i = 1:length(H_list) for j = 1:length(D_list) k = k + 1; simIn(k) = simIn(k).setVariable('H_vsg', H_list(i)); simIn(k) = simIn(k).setVariable('D_vsg', D_list(j)); end end simOut = parsim(simIn, 'ShowProgress', 'on'); save('vsg_sweep_results.mat', 'simOut', 'H_list', 'D_list');关键点在于:Simulink 模型中所有涉及扫参的参数必须写成工作区变量名,不要在模块参数框里手填一个常数。另外模型内部的时间跨度、求解器步长需要保持完全一致,否则不同参数组的指标不具备可比性。我通常把仿真时间设为 30 秒,固定最大步长和相对容差,这样既能覆盖惯性响应和一次调频全过程,又不至于因为求解器自适应步长的差异引入噪声。
仿真结束后,遍历simOut数组提取每个工况的指标,汇总成一张大表,再画一张频率最低点随 H_vsg、D_vsg 变化的对比图,参数整定的规律立刻一目了然。这也是整套仿真方法最具说服力的输出方式:不是“我调了参数所以频率变好了”,而是用一批标准化实验数据告诉你为什么这个参数区间更优。
5. 仿真结果要怎么读:同步机响应与虚拟惯量响应的差异
5.1 同一扰动下,两台“机器”的频率曲线为什么长得不一样
在一个包含同步电机和构网型变流器的模型中,如果分别只让其中一方承担频率支撑任务,你会看到两条形态截然不同的频率曲线。
同步电机主导时,扰动瞬间频率下降的斜率主要由转子惯性决定,所以开始的 RoCoF 比较稳定,不会出现特别突兀的变化。之后调速器在机械惯性的约束下逐渐增加进汽量或进水量,出力爬坡比较慢,所以频率最低点出现得比较晚,通常在扰动后 2 到 5 秒。由于调差系数本质上是比例控制,频率最后稳定在一个低于额定的准稳态值,不会自动归零。
构网型变流器主导则完全不同。虚拟同步机的功率环在数字控制器里计算,没有机械时间常数,只要给定足够的虚拟惯量和下垂增益,它可以在几百毫秒内把功率差补上一大截。所以频率最低点出现得更早、深度也更浅。但这不代表它可以随便“开挂”,我在仿真里多次观察到:当 H_vsg 调得很大而没有同步增大阻尼时,频率曲线下降是平缓了,但随后会出现明显的低频功率振荡,频率在准稳态附近来回摆动,衰减极慢。这是仿真中最容易出现的“失真好结果”——看起来惯量支撑很强,实际并网运行时极可能对相邻机组产生不利影响。
混合系统的情况则更贴近工程实际:扰动时同步电机提供物理惯性,构网型变流器提供快速功率支援,两者在频率最低点附近的贡献可以互补。观察混合系统频率曲线时,应重点看突变的那个拐点——构网型变流器的快速调频动作会在频率曲线上留下一个明显的“拐弯”,这个拐弯越平缓,说明控制参数越协调。
5.2 虚拟惯量和阻尼系数的整定:先算需求,再扫参确认
参数整定我有自己的一套顺序,避免一开始就跑所有参数组合浪费时间。第一步,根据工程允许的 RoCoF 上限反推系统所需的最小惯量。比如系统要求在 10% 负荷阶跃下 RoCoF 不超过 0.5Hz/s,那么由 RoCoF = ΔP / (2H_total · S_base) 可以算出整个系统需要的标幺惯量时间常数 H_total,同步电机贡献一部分,剩下的就是构网型变流器需要提供的 H_vsg。这个计算给参数初值提供了物理依据,比随手填一个数可靠得多。
第二步,将 H_vsg 初值固定,进行 D_vsg 扫参。我要找的是能让频率最低点足够浅、同时功率响应快速衰减的最小阻尼值。阻尼太小,虚拟同步机会出现低频振荡;阻尼太大,又会把虚拟同步机的相位同步能力削弱,使变流器变成近似固定的电压源,反而失去构网特性。我通常观察输出功率曲线的振荡次数来判断:扰动后 5 秒内振荡衰减到峰值的 10% 以下,这个阻尼水平基本就是可接受的。
第三步,在阻尼确定后对 H_vsg 做一个从 2 到 8 秒的扫参,选择频率最低点和 RoCoF 的折中区间,并将结果与同步电机基准曲线叠加对比。如果构网型参数下得到的频率最低点已经优于同步电机曲线,而功率振荡特性仍能接受,那么参数就基本到位了。整个过程在批量仿真脚本辅助下一般只需要跑两轮,每种工况 20 到 30 秒仿真,十几分钟就能完成。
5.3 仿真里容易踩的几个坑:这些错误会让结论直接失真
频率稳定性仿真看起来只有几个模块,实际上坑非常多。先讲同步电机侧的坑:标幺模型中的惯性常数是按机组额定容量给定的,多机并联时不能简单相加,需要按系统基准容量折算。比如一台 10MVA 机组 H=4 和另一台 100MVA 机组 H=4,在 100MVA 系统基准下,小机组的等效惯量只有 0.4 秒,而不是 4 秒。如果不做折算,系统的频率支撑能力会被高估 25% 以上。
再讲构网型变流器侧的坑:平均值模型刚启动时非常容易产生一种假性暂态。因为虚拟同步机的积分器初始相位如果和电网相位不一致,启动瞬间会输出一个大功率冲击,频率曲线陡降一下然后慢慢恢复,这个“启动假波”和真实扰动无关。解决办法是让模型先空载运行一段时间再施加负荷阶跃,并且在扰动前记录一段基线波形,指标计算时以扰动时刻为基准,而不是以仿真启动时刻为基准。
还有一个坑出现在信号测量环节。仿真模型中如果从并网点直接测量三相电压来反推频率,电压相位突变时测出的频率会出现毛刺尖峰,RoCoF 指标会严重偏大。所以我在提取构网型系统的频率信号时,一律从虚拟同步机内部取角频率,而不是用 PLL 从并网点测频。这在真实系统中没有对应的“内部频率”可直接引用,但在仿真中取内部变量是标准做法,它能反映构网型变流器“想要”维持的频率,比外部测量值干净得多。
最后提醒一句:所有控制器都要加限幅。调速器的出力、无功环的电压参考、电流内环的输出幅值都要设置饱和限幅。很多仿真结果“看起来完美”是因为控制器在无限能力的假设下工作,实际硬件在受到限幅后的动态往往完全不一样。我在直流侧储能限幅的工况里就见过好几次:构网型变流器正常工况下能把频率最低点压得很好,但一旦储能出力受限,频率反而会呈现二次快速跌落,直接触发低频减载。这种结论只有在包含限幅的模型里才能暴露出来,不加限幅的研究结果很难直接迁移到工程中。
建模和仿真做到这里,基本已经形成闭环:先用物理方程确定参数范围,再在 Simulink 中搭建同步电机与构网型变流器的对比模型,用标准扰动实验提取频率指标,最后批量扫参验证控制参数对稳定性的影响。这套方法不复杂,但每一步做扎实之后,输送给别人看的就不仅仅是几条波形,而是一套可复现、可解释、能指导参数设计的完整证据链。我自己后来做并网系统评估时,依然沿用这套框架,只是会额外增加储能限幅环节和弱网下线路阻抗的灵敏度分析。频率稳定性研究的魅力就在于:物理机制非常清晰,但每换一个场景、每加一个约束条件,结论都会发生微妙变化。如果你刚起步,建议先用 5% 负荷阶跃把同步电机模型的频率曲线跑顺,再加入构网型变流器逐步增加虚拟惯量,很快你就能从波形里读出“物理”和“控制”各自扮演的角色了。