做微电网仿真的人,十有八九都动过这样的念头:把柴油发电机直接拖一个理想电压源完事,反正母线电压频率是给定好的,省事又不容易报错。我第一次搭风光柴储微电网仿真时也这么干过,直到后来做离网模式下的负荷投切,光伏出力突然往下掉,系统频率哗啦一下就跌破49Hz,而理想电源模型里频率纹丝不动——那一刻我才意识到,柴油发电机在这个系统里不是配角,而是决定微电网能不能“撑住”的压舱石。
这篇文章想把我在 Matlab Simulink 里搭建柴油发电机仿真、以及整套风光柴储微电网模型的思路完整梳理一遍。从柴油机的调速器、励磁、同步电机建模,到储能双向变流器控制、并离网切换逻辑,再到仿真不收敛、跑得慢、结果不对时的排查方法,都会涉及。适合正在做微电网仿真课题的研究生,或者做分布式能源、柴储系统方案设计的工程师参考,内容偏实操,尽量把参数怎么定、为什么这样定讲清楚。
1. 为什么微电网仿真里不能把柴油发电机当成理想电源
先把结论放前面:在风光柴储这类含高比例可再生能源的微电网里,柴油发电机承担的核心角色是“电压和频率的支撑源”,而这个支撑能力来自它的物理动态过程——转子有转动惯量、调速器有响应延迟、励磁系统有电压调节时间。理想电压源把这些动态全部抹掉了,仿真结果自然就和真实现象对不上。
1.1 一个让人印象深刻的失败案例
我之前做一个离网型风柴储微电网仿真,结构很简单:一台柴油发电机、一组风机、一组储能,带一个可变负荷。开始时为了让模型跑得快,把柴油发电机用 Three-Phase Programmable Voltage Source 替代,母线频率固定在50Hz。结果无论怎么投切负荷,系统频率曲线都是一条直线,储能变流器的有功输出也几乎没什么波动。
后来把柴油发电机换成完整的同步电机加调速器模型,同一个工况下,负荷从30kW突增到80kW,频率立刻下探到49.2Hz左右,经过大约2秒才恢复到49.8Hz附近。这个动态过程才是真实微电网里会发生的事情——低频时可能要切负荷,频率恢复速度不够可能引发保护动作。如果你用理想电源做仿真,这些关键现象完全看不出来。
1.2 柴油发电机在微电网中的“旋转备用”作用
柴油发电机和光伏、储能有一个本质区别:它是旋转设备。转子本身储存着动能,当系统出现功率缺额时,这部分动能会暂时释放出来补充功率差额。用电力系统里常见的关系式来理解就是:
Δf/f ≈ -ΔP/(2H) 对时间的积分
其中 H 是机组的惯性时间常数,典型柴油发电机组在2~4秒左右。这个公式说明:功率缺额越大、机组惯性越小,频率跌落就越快、越深。在风光柴储微电网里,光伏和风电的输出都是波动的,比如一块云飘过来,光伏出力可能在几十秒内下降30%~50%。这时候如果储能功率指令还没跟上,系统频率能不能稳住,就完全取决于柴油发电机调速器的动作速度了。
用理想电源做仿真,等于默认柴油发电机拥有无限快的功率响应能力,这和高比例可再生能源场景下“柴油机慢、电力电子快”的现实完全相反。所以,只要你的研究涉及离网稳定性、负荷跟踪、黑启动、并离网切换这些内容,柴油发电机模型就不能省,至少要包含调速器和励磁的动态。
2. 柴油发电机模型的核心构成:从内燃机到同步发电机的完整链路
在 Simulink 里搭柴油发电机,第一步是选对建模路线。我用的是 Simscape Electrical 里的 Specialized Power Systems(SPS)库,它专门用于电网和电力电子暂态仿真,元件组网比较方便,求解器也更贴近电力系统场景。
2.1 同步电机选型与参数
柴油发电机最关键的部分是同步发电机。Simulink 的 SPS 库里有 Synchronous Machine 模型,常用的有两种:
Synchronous Machine SI Fundamental:基本模型,忽略定子暂态中的某些分量,适合机电暂态仿真,计算量小,微电网研究够用。Synchronous Machine SI Standard:电磁暂态细节更多,适合需要精确分析定子电流谐波、不对称故障的场景,但仿真速度慢不少。
微电网层面的研究,我一般用 SI Fundamental。参数上,你需要准备下面这些关键数据(以50Hz、400V、200kW机组为例):
| 参数 | 典型值 | 说明 |
|---|---|---|
| 额定视在功率 | 250 kVA | 发电机容量,一般比柴油机功率大10%~20% |
| 额定线电压 | 400 V | 低压微电网常用 |
| 额定频率 | 50 Hz | 国内标准 |
| 直轴同步电抗 Xd | 1.5~2.0 pu | 同步电抗,影响静态稳定 |
| 直轴暂态电抗 Xd' | 0.2~0.3 pu | 影响暂态短路电流 |
| 直轴次暂态电抗 Xd'' | 0.12~0.2 pu | 影响冲击电流 |
| 交轴同步电抗 Xq | 1.5~2.0 pu | 与Xd接近 |
| 惯性时间常数 H | 2~4 s | 决定频率动态 |
这些参数如果厂家资料里没有,可以从同类机型参考:凸极同步发电机的 Xd 一般在1.1~2.0 pu,汽轮发电机(隐极)则更高。做微电网仿真时参数精度要求没那么苛刻,偏差在20%以内对控制策略验证的影响不大,但 H 的取值要谨慎,它直接决定频率变化速度。
2.2 柴油机、调速器与油门执行器
同步电机只是“发电机部分”,要让它能响应频率变化,必须有原动机模型。柴油机的输入是油门位置,输出是机械转矩。Simulink 里可以画一个完整的内燃机模型,也可以用简化的传递函数:
油门的燃油喷射到产生机械转矩,存在一个滞后,工程上常用一阶惯性加一个小的纯延迟来近似:
G(s) = K / (1 + Td * s)其中 Td 是柴油机的响应时间常数,一台带涡轮增压的中速柴油机大约0.3~1秒,自然吸气的小机组可能0.5~1.5秒。油门执行器本身也有惯性,再加一个惯性环节:
Ga(s) = 1 / (1 + Ta * s)Ta 通常取0.1~0.3秒。
调速器就是控制油门的闭环控制器。它比较转速参考值与实际转速,输出油门指令。常用结构是 PI 控制器加一个频率死区,死区一般在±0.05Hz左右。如果你不想自己搭,Simulink 里也有 Diesel Engine Governor 的现成模型,但它的参数不太直观,我建议自己搭一个简单的传递函数结构,方便后面调 PI。
2.3 励磁系统与电压调节
发电机要维持母线电压,还需要励磁系统。SPS 库里有 IEEE 标准的励磁模型,比如 DC1A、AC1A,也可以直接用简化的 AVR(自动电压调节器)结构:一个 PI 控制器 + 一阶励磁机惯性环节。
励磁系统的作用是把发电机端电压与参考值比较,调节励磁电压。简单说,当负荷增大导致母线电压跌落时,AVR 迅速提高励磁,把电压拉回额定值。这个过程比调速器快得多,通常在几十到几百毫秒内完成。
这里要特别注意:电压调节和频率调节是耦合的。负荷增加时,有功功率缺额由调速器响应,无功功率缺额由励磁响应,但两者都影响发电机内电势和功角。搭建模型时最好把整条链路串起来:转速测量 -> 调速器 -> 油门执行器 -> 柴油机 -> 机械转矩 -> 同步电机;端电压测量 -> AVR -> 励磁机 -> 励磁电压 -> 同步电机。
3. 调速器与励磁参数的整定:先估算,再仿真,最后微调
参数整定是柴油发电机仿真里最磨人的部分。我见过很多人模型搭得没问题,就是参数乱写,结果一跑就发散。这里分享一套我常用的方法:先根据物理规律估算初值,然后通过阶跃仿真观察波形,再针对性调整。
3.1 调速器参数怎么定
调速器的目标是让频率在负荷变化后恢复到额定值(或按调差率落在新的稳态)。一次调频通常采用频率下垂控制,调差率 R 取4%~5%。也就是说,频率偏离额定值4%~5%时,有功出力从零变化到额定值。
在 Simulink 里实现时,调速器输入是转速偏差,输出是机械功率指令,结构写成:
P_ref = P_0 - (1/R) * (ω - ω_ref)其中 R 是无量纲下垂系数,0.04~0.05。然后再加上 PI 调节器来消除稳态误差。我调试时用的初值往往是:
- 下垂系数 R = 0.04
- PI 比例增益 Kp = 3~8
- PI 积分增益 Ki = 10~30
调整逻辑很直观:Kp 增大,频率响应变快,但太大容易引起功率震荡;Ki 消除稳态误差,但太大会让频率超调后反复抖动。先加 Kp 让系统稳定,再慢慢加 Ki。
3.2 励磁系统参数怎么定
励磁 AVR 的 PI 参数同样从带宽角度估算。励磁系统的闭环带宽一般比调速器高5~10倍,因为电压调节要快。以50Hz系统为例,调速器带宽可能在0.5~2Hz,AVR带宽可以取5~10Hz。用单位负反馈结构估算:对于一阶惯性对象,若对象时间常数为 Te(励磁机时间常数,一般0.05~0.3s),闭环带宽想达到 f_bw,比例增益大致在:
Kp ≈ 2π * f_bw * Te比如 Te=0.1s,f_bw=5Hz,Kp≈3.14,再通过仿真微调。Ki 则取 Kp 的3~10倍,让积分作用不过分滞后。
3.3 一个实用的整定流程
我建议你按下面的顺序操作:
- 空载启动仿真,让柴油发电机建立额定电压和频率。观察启动过程中频率是否超调、电压是否过冲。
- 在 t=5s 投入一个30%额定功率的纯有功负荷,观察频率动态。记录最大频率偏差和恢复时间。
- 在 t=10s 投入一个20%额定功率的纯无功负荷,观察端电压动态。
- 调整调速器参数,直到频率不超过±1Hz(实际微电网低频减载一般启动在49Hz/48.5Hz附近,频率下探不能越过保护阈值)。
- 调整 AVR 参数,直到电压偏差不超过±5%。
做这个验证时,利用 Simulink 的 Model Linearizer 可以在工作点附近得到系统的线性化模型,画 Bode 图观察相位裕度。很多人问“Simulink 怎么让传递函数显示出来”,其实就是用 Model Linearizer 打开 Linear System Analyzer,选择输入输出点后,它自动生成线性状态空间模型,你可以在界面里切换到 Bode 图、阶跃响应,也可以直接在命令行用ss或tf把它导出。这一步对理解参数变化的影响很有帮助。
4. 风光柴储微电网的整体架构与单元建模
柴油发电机模型能单独跑了,就开始搭完整的微电网。风光柴储微电网的常见拓扑是交流母线结构:光伏、风机、储能、柴油发电机各自通过变流器或直接并联在交流母线上,共同给负荷供电。
4.1 母线结构与电压等级选择
微电网仿真大部分场景在低压配电网层面,母线选 0.4kV(400V)比较常见。如果你后面要研究中压微电网,可以在变流器出口加 0.4/10kV 升压变压器。我建议初始模型就保持单母线、0.4kV,把控制逻辑跑通,再考虑更复杂的拓扑。
4.2 光伏发电单元建模
光伏阵列直接用 Simulink 里的 PV Array 模块,它基于单二极管五参数模型,你只要填组件参数(Vmp、Imp、Voc、Isc)和串并联数量。光伏单元一般要加Boost变换器,通过MPPT控制光伏工作点。MPPT算法我用过扰动观察法(P&O)和电导增量法(INC),两者差不多,P&O实现简单但稳态有轻微震荡,INC复杂一点但跟踪性能略好。
光伏部分最容易出的问题是什么?光照突变时,MPPT步长太大导致直流母线电压波动,进而影响逆变器控制。所以 PV 的直流侧最好单独有个电压环,比如Boost输出电容电压由后级逆变器的直流母线电压控制器维持。
4.3 风力发电单元建模
风机在微电网仿真里通常用永磁直驱风机(PMSG)+ 背靠背变流器,或者双馈风机(DFIG)。其中 PMSG 结构更简单,适合研究。风力机模型是空气动力学部分,主要算:
Pm = 0.5 * ρ * A * Cp(λ, β) * Vw^3Cp 是风能利用系数,它跟叶尖速比 λ 和桨距角 β 有关。Simulink 里画一个函数模块就能实现。因为这篇重点在柴油发电机,风机部分我不展开太多,记住一点:做微电网仿真时,风机可以用“风速输入 -> 机械功率 -> PMSG -> 整流器 -> 逆变器”的链路,也可以用简化模型只输出波动功率。如果研究重点不在风电本身,简化模型完全够用。
4.4 储能单元建模
储能电池采用等效电路模型:一个受控电压源串联内阻,SOC用安时积分法计算。双向DC/DC变换器在电网级仿真里不建议用开关模型,跑得太慢,用平均模型代替,通过调制信号直接控制输出。储能的双向变流器(PCS)是核心,后面单开一章讲。
电池容量参数根据你的场景定,比如一个200kW/400kWh的储能系统,意味着满功率可以连续放电2小时。SOC的工作范围我一般限制在10%~90%,避免过充过放影响寿命。
4.5 Simulink模型组织:别把所有东西堆在一个模型里
模型单元多了以后,你会发现一个问题:如果不做分层,一个仿真文件里几百个模块,改一个参数都很难找。我的习惯是:
- 每个发电单元封装成子系统,用
Simulink.Bus定义输入输出信号,比如把三相电压电流打包成一个bus。 - 涉及同一个单元多次使用时,用 Model Reference(模型引用)取代子系统复制,这样修改模型文件后所有引用自动更新。
- 命名规范统一,比如
PV_PowerRef、Battery_SOC、DG_Speed,别用Gain1、Gain2这种默认名。 - 把参数集中写到 MATLAB 脚本或数据字典里,模型里一律用变量名,不要填数字。这样调参只需要改一处,模型引用和初始化都方便。
“怎么整理 Simulink 模型”这个问题我问过很多人,结论都是:早期不花时间整理,后期调试成本会指数级上涨。模型引用和子系统封装这两件事,从第一天搭模型就应该做。
5. 储能双向变流器的控制策略与并离网切换
储能是整个微电网里控制最灵活的一环,因为它既能吸收功率又能放出功率,作用和“双向储能控制仿真模型”的热度是匹配的。在风光柴储微电网里,储能PCS的控制策略决定了系统能否在并网和离网两种模式下都稳定运行。
5.1 并网模式:PQ控制
并网模式下,微电网和大电网相连,电压和频率由大电网支撑,储能只要按指令输出指定的有功和无功就行。这就是PQ控制:外环功率环计算电流参考值,内环电流环在dq旋转坐标系下用PI调节器跟踪。
PCS的常见拓扑是三相两电平VSC,并网侧接LCL或L滤波器。控制结构是:
- 外环:有功功率参考值
P_ref和实际P比较,误差经PI得到Id_ref;无功功率同理得到Iq_ref。 - 内环:
Id跟踪Id_ref,Iq跟踪Iq_ref,输出调制电压,再通过PWM调制生成开关信号。 - 如果开关模型跑得慢,可以跳过PWM,直接把调制电压通过平均模型作用到交流侧。
内环电流PI的参数可以通过 L 滤波器电感和控制周期来估算。比如滤波器电感 L=1mH,直流侧电压750V,开关频率10kHz,电流环带宽取开关频率的1/10~1/5,就是1~2kHz左右。比例增益约等于(2π*f_bw)*L,大致在6~12之间。
5.2 离网模式:V/F控制与下垂控制
离网模式下,大电网不存在,必须有人来建立电压和频率。此时储能PCS可以切换为V/F控制,直接控制输出电压幅值和频率,让母线电压稳定在400V/50Hz。
但 V/F 控制有个问题:多台电源并联时,谁说了算?如果柴油发电机和储能都用 V/F 控制,两者会因为功率分配不均打架。解决方法是下垂控制:
- 有功-频率下垂:频率参考值
ω_ref = ω_0 - m_P * (P - P_0) - 无功-电压下垂:电压参考值
V_ref = V_0 - n_Q * (Q - Q_0)
这样柴油发电机和储能各自按照下垂特性分担负荷。下垂系数 m 的选取原则是:满负荷时频率偏差不超过系统的允许范围(比如±1Hz),于是m = Δf_max / P_rated。
5.3 并离网切换逻辑与模式管理
并离网切换是整个微电网仿真里最容易翻车的地方。我的做法是:在储能PCS里加一个模式选择信号ModeSelect,1表示并网PQ、0表示离网VF或下垂。这个信号用 Simulink 的 Stateflow 写一个状态机来管理:
- 并网模式下,检测到大电网失电信号后,控制模式切换到离网。
- 切换瞬间要保证PCS输出相位连续,避免冲击电流。实际操作中,预同步控制(锁相环实时跟踪母线相位)可以减少切换冲击。
模式切换时最容易出的问题是:PQ控制输出的电流指令还保留着切换前的值,突然切换到V/F控制后,输出电压相位突变,产生很大的暂态电流。所以切换逻辑里必须加一个“占空比限幅”处理,或者用模式切换缓冲器,把控制输出平滑过渡到新的参考值。这个细节不做,仿真结果通常就是电流冲上天、系统发散。
6. 仿真不收敛、跑得慢、结果不对:排查思路与工具技巧
最后这部分,我把这些年仿真中遇到频率最高的几个问题列出来,每个都给排查路径。这些问题如果你第一次做,几乎一定会遇到至少一个。
6.1 模型不收敛,第一步先检查求解器
微电网仿真默认的变步长求解器是 ode45,但它不适合含电力电子高频开关和刚性同步电机的模型。我推荐两个选择:
ode23t:适合中等刚性的电力电子+电机系统,比ode15s快,精度也能保障。- 如果你用了大量平均模型,系统刚性没那么强,可以用
ode23tb或ode15s兜底。
如果换了求解器还是不收敛,十有八九是初始条件问题。SPS 库里的元件支持Set initial electrical state,在 simulation 配置里打开Simscape Electrical Specialized Power Systems的“phasor initialization”选项,让它先做一次潮流/初始化计算,再进入时域仿真。这一步能解决80%的启动发散问题。
6.2 仿真跑得慢,问题多半在开关模型
我见过一个模型,里面全是IGBT开关级模型,仿真10秒要跑20多分钟。如果你做的不是波形级详细分析,建议做三件事:
- 把DC/DC和DC/AC变换器全部换成平均模型。
- 把同步电机从 Standard 换成 Fundamental。
- 把负载从三相动态负载换成恒阻抗或恒功率静态负载。
这样优化后,同样的仿真可能只需要一两分钟。等控制逻辑验证完,再对关键变流器换回开关模型专门分析谐波。
6.3 转速单位混乱:rad/s 和 rpm 的坑
柴油发电机仿真里,同步电机的转速单位在 Simulink 里默认是 rad/s,但很多人看继电器、转速表时习惯用 rpm。50Hz、4极电机的同步转速是1500rpm,换算成角速度约157 rad/s。如果你调调速器时把参考值设成1500而实际反馈是157,PI控制器会直接饱和,系统频率一塌糊涂。排查时可以用 Simulink 的 Scope 同时显示两个单位,加一个 Gain(乘 2*pi/60)转换,确认数值在一个数量级。
6.4 中文注释乱码问题
“Matlab 2023 的中文注释乱码”这个搜索词热度很高,我也踩过。新版 Simulink 在 Windows 下打开旧版带中文注释的模型,经常出现乱码。解决办法是:统一用英文注释配合中文笔记文档,或者把编码统一为 UTF-8 再保存。如果你的团队协作都是中文环境,建议在模型说明文档里写中文,模型内部用中文注释时,先确认大家的 MATLAB 版本一致。
6.5 结果不符合预期:先单独验证每个单元
最后一条很土但很实用:微电网系统出了问题,不要直接在总线上挂 Scope 到处看波形,而是把每个单元单独拿出来跑。柴油发电机单独带负荷验证电压频率、光伏单独验证MPPT、储能单独验证充放电指令跟踪。每个单元都能独立稳定运行后,再连成系统,问题范围就能缩小很多。连成系统之后如果还发散,重点看单元之间的功率/电流接口方向是否正确,尤其要检查储能PCS的Id/Iq符号定义——正负号反了,从控制器到主电路都是灾难。
做风光柴储微电网仿真,我认为最值钱的不是那些模型文件,而是把物理过程想清楚再建模的思路。柴油发电机为什么不能省、调速器为什么这么调、储能为什么要下垂控制,每一步背后都是真实的电力系统运行逻辑。先把这些搞明白,Simulink 操作层面的坑,都是小事。