多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

5MW海上永磁直驱风电并网Simulink仿真建模与调试

5MW海上永磁直驱风电并网Simulink仿真建模与调试 搞风电仿真的这两年我在Matlab/Simulink里搭过不少机组模型但要说最能折腾人的还是这套5MW海上永磁直驱并网系统。从最初的风速输入到最后并网波形稳定输出前前后后改了三轮控制结构。这篇文章就把这段探索过程完整记录下来包括5MW海上永磁风电直驱的核心设计思路、1200V并网电压等级的选择逻辑、Simulink模型的搭建步骤以及调试中踩过的坑。无论你是刚接触风电仿真的学生还是正在做并网控制验证的工程师都能从这里拿到一套可以直接照搬的实践路径。1. 项目背景与整体设计思路1.1 为什么选5MW海上永磁直驱海上风电和陆上风电最大的区别在于运维成本。齿轮箱是传统双馈机组里故障率最高的部件之一在海上换一台齿轮箱的费用和停机损失非常高。永磁直驱方案把发电机直接和风轮连接省掉齿轮箱从源头减少了机械故障点这也是现在海上大兆瓦机组普遍走直驱技术路线的原因。5MW这个容量在海上有很强的代表性。它不像10MW以上机组那样对叶片长度、塔筒载荷和变流器容量要求苛刻仿真模型的计算量还在单机可接受范围同时5MW已经具备中大型商用机组的基本特征控制链路完整结果分析能直接联系到实际工程。在Matlab/Simulink里5MW机组的响应时间常数、惯量大小、并网冲击能量都处在比较典型的区间模型做出来之后参数稍微缩放就能迁移到更大容量机组上。我选择永磁同步发电机PMSG还有一个原因它的励磁由永磁体提供不需要额外的转子励磁电流电机模型在dq坐标系下干净控制起来比电励磁同步机少一套励磁控制回路。对仿真调试来说少一个变量就少一份排查工作量。1.2 1200V并网电压等级的选择逻辑标题里的“1200V风电并网”可能让人疑惑这里先明确一下这套系统的直流母线电压设计为1200V。也就是说永磁发电机发出的变频交流电经过机侧变流器整流后在直流母线侧稳定到1200V网侧变流器再把1200V直流逆变成交流经过升压变压器接入中压电网。为什么偏偏是1200V这是多重约束折中的结果。如果按常见的690V交流并网来算交流侧线电压峰值约976V那么直流母线电压至少要高于这个值才能保证SVPWM在低调制比区域不进入过调制。1200V比976V留出了约23%的裕量既能让调制策略工作在安全区域又给IGBT开关过程中的电压尖峰留了空间。如果把直流母线提到1500V器件耐压等级就要从1200V等级升到1700V等级成本和损耗都会明显增加1200V正好卡在常用IGBT模块的耐受范围内也符合目前主流风电变流器的设计习惯。在并网接口侧逆变器输出可以选择690V或者1200V交流再通过干式升压变压器接入35kV集电线路。我在模型里把变压器高压侧设为35kV低压侧按照1200V交流等级选型这样既能验证变流器的控制又能直接分析并网点的功率波动和谐波情况。1.3 Simulink平台选型与整体方案框架Matlab/Simulink做风电并网仿真的优势在于控制逻辑搭建非常直观不需要从头写矩阵运算代码。Simulink自带的Simscape Electrical库提供了PMSG、IGBT桥臂、LCL滤波器、变压器和电网模块控制系统可以用离散PI控制器、PLL、SVPWM脉冲生成器快速组装从模型到C代码还能通过Embedded Coder直接生成为后续半实物仿真留了接口。整个模型的顶层逻辑是风速输入进入风轮机模块风轮机根据叶尖速比和桨距角计算出机械转矩带动PMSG旋转发电PMSG输出的可变频三相电经过机侧变流器整流到直流母线网侧变流器负责把直流母线电压稳定在1200V同时按照电网调度的功率指令向电网输出有功和无功。围绕这条主链路还需要传动链模型、直流母线电容、LCL滤波器和升压变压器、PLL、各类PI调节器。我在搭建时把模型分了两层第一层是“功能验证层”全部用平均值模型用来快速验证控制结构和参数第二层是“波形细化层”把机侧和网侧变流器换成开关模型用于观察电压电流谐波和开关纹波。分层的好处是调试前期跑得飞快后期又能看到足够真实的波形细节两不耽误。2. 系统建模与核心参数设计2.1 风轮机模型Cp曲线与最大功率跟踪风轮机是整条链路的功率来源。风轮捕获的机械功率公式是Pm0.5ρAV^3Cp(λ,β)。这里ρ是空气密度A是风轮扫风面积V是风速Cp是风能利用系数它是由叶尖速比λ和桨距角β决定的非线性函数。5MW机组的风轮直径我按126米左右设计扫风面积约12500平方米。在额定风速12m/s附近理论风功率超过9MW但由于贝兹极限和叶片气动效率的限制Cp最大只能到0.48左右所以实际额定机械功率控制在5MW上下。这个“削峰”过程靠的就是变桨系统风速超过额定值后控制系统会逐步增大桨距角把Cp压下来防止发电机超速。在Simulink中风轮机模块可以直接用Simscape Electrical里的Wind Turbine模块也可以自己用MATLAB Function写Cp(λ,β)查找表函数。我倾向于自己写函数因为可以在里面嵌入海上阵风模型和塔影效应研究功率波动时更灵活。下表是我在初始化脚本中用到的一组典型参数参数数值说明额定功率5 MW发电机额定电磁功率风轮直径126 m海上机组典型尺寸额定风速12 m/s进入额定功率区切入风速3 m/s低于此风速不并网切出风速25 m/s高于此风速停机最佳叶尖速比8.5Cp取最大值的λ最大Cp0.48含空气动力学损耗最大功率跟踪MPPT策略我采用的是“转速外环电流内环”。风速变化时风轮转速会改变控制系统根据当前转速查表或者用爬山算法搜索最佳叶尖速比给出发电机转速指令。转速外环比较实际转速和指令转速输出q轴电流指令电流内环再控制PMSG的q轴电流进而控制电磁转矩。这个方法实现简单在稳态工况下能保证风机运行在最佳功率系数点附近这也是直驱型永磁风机最常用的控制方式之一。2.2 永磁同步发电机数学模型PMSG在dq旋转坐标系下的电压方程是ud Rsid Lddid/dt - ωeLqiq uq Rsiq Lqdiq/dt ωeLdid ωe*ψf其中Rs是定子电阻Ld和Lq是d轴和q轴电感ωe是电角速度ψf是永磁体磁链。电磁转矩方程是Te 1.5p[ψf*iq (Ld - Lq)idiq]。对于表面式永磁同步电机Ld和Lq基本相等所以转矩方程简化为Te 1.5pψf*iq。这意味着可以直接用id0控制策略让所有电流都用来产生转矩控制逻辑非常简洁。我在模型里选用的是表面式PMSG极对数取40额定转速约15转每分钟对应的电角频率在仿真步长要求上比较友好不至于让离散控制器出现步长过大的问题。发电机参数需要和5MW容量匹配。我用一台典型的海上直驱永磁发电机参数做参考定子电阻0.008ΩLd/Lq约0.9mH永磁磁链约10Wb磁极对数40额定相电压约690V等级。这些参数在Simulink的PMSG模块里直接填入即可。有一点要注意Simscape Electrical里的PMSG模块有SI和国际单位两种选项填参数前先确认单位制不然后面的电流环PI参数会差好几个数量级。2.3 机侧变流器控制id0与SVPWM的配合机侧采用背靠背变流器的整流侧。PMSG输出的三相交流经过高频开关的IGBT桥臂整流到直流母线。既然选择了id0控制那么控制系统里只需要两个电流环d轴电流环把id钳到0q轴电流环跟踪MPPT转矩指令。在Simulink里机侧控制通常包含转速测量、MPPT运算、Park变换、PI调节器、反Park变换和SVPWM发生器。我建议把转速外环的输出直接作为iq的指令值同时加一个限幅器限幅值根据PMSG额定电流计算防止启动或者风速突变时电流冲击过大。d轴电流指令直接设为0动态过程中如果出现负的id它会自动被PI调回来。电流环PI参数需要按照电机电感和电阻来整定。一个实用的经验公式是电流环带宽取开关频率的1/10左右比如开关频率5kHz带宽就按500Hz设计。同样转速外环带宽取电流环带宽的1/10到1/5也就是50到100Hz。用这个带宽值反推PI参数用MATLAB的pidTuner可以快速得到一组可用Kp和Ki。调试时如果还出现转矩振荡我通常先把Ki适当调大再把Kp降低而不是反过来。2.4 网侧变流器控制稳定1200V直流母线网侧变流器是整个并网系统的“出口”。它一方面要把直流母线电压稳定在1200V另一方面要按电网调度给定有功和无功指令。标准做法是电网电压定向矢量控制VOC用PLL锁定电网电压相位建立dq坐标系d轴与电网电压矢量重合。网侧外环是直流电压环输入为直流母线电压参考值1200V和实际值的偏差输出为d轴电流指令相当于控制有功功率的交直流交换q轴电流直接由无功指令决定普通工况下设为0。内环是d/q轴电流环输出经过反Park变换送到SVPWM控制器控制在变流器的IGBT桥臂。这里面有一个关键点直流母线电压环的响应速度要比网侧电流环慢很多。如果电压环带宽太宽负载突变时它会把电流指令推得飞快导致并网电流过冲。我一般把电压环带宽限制在20Hz左右电流环仍在300到500Hz。直流母线电容的大小也直接影响电压环的稳定性我采用经验公式电容容量μF约为系统功率W除以直流母线电压V的10倍左右5MW/1200V算下来约41000μF实际取4组10000μF并联留出冗余。2.5 升压变压器与并网接口的匹配1200V直流经过逆变以后交流侧电压等级我设置为1200V然后通过额定变比1200V/35kV的干式变压器并入中压电网。变压器模型用三相双绕组短路阻抗取6%绕组连接采用D1/y11接线这样能滤掉部分谐波并为电网提供中性点。在Simulink里设置变压器时要特别注意容量单位。Simscape Electrical中的变压器参数是VA、Vrms不是KW、KV填5MW即5e6 VA和1200V/35kV线电压有效值的时候先换算成合适的单位再输入否则并网电流幅值会完全对不上。我踩过的坑是直接把“5MW”当成“5MVA”填进去结果变压器磁饱和严重波形全部畸形。接线方式我推荐使用Yg/D11也就是高压侧星型接地低压侧三角形连接。低压侧三角形连接可以给零序电流提供通路对并网系统稳定性有帮助。同时变压器阻抗匹配要满足电网短路容量要求一般要求在额定容量下阻抗电压4%到8%之间模型里取6%是比较折中的值。3. Simulink模型搭建实操记录3.1 模型顶层结构与库模块选型打开Simulink后我先建一个空白的模型然后在画布里按照功率流方向从左到右排列模块。Simscape Electrical库里的常用模块如下端口/功能推荐库模块备注风速输入Simulink-Sources / From Workspace可用阶跃、阵风、湍流风速序列风轮机Simscape Electrical-Wind Turbine参数正对可自定义Cp函数PMSGSimscape Electrical-Synchronous Machine选永磁类型填入电机参数IGBT桥臂Simscape Electrical-Three-Level Bridge机侧和网侧各一套直流母线Simscape Electrical-Capacitor并联预充电电阻LCL滤波器Simscape Electrical-LCL Filter或者用RLC元件搭建变压器Simscape Electrical-Three-Phase Transformer注意单位换算电网Simscape Electrical-Three-Phase Source设短路容量和频率我一般不用全英文界面命名每个模块都重命名为“Wind_Turbine”、“PMSG_Gen”这类可读名称。这样不仅方便自己找也避免后期连线多的时候混淆。所有模块连好以后用CtrlD检查系统是否有一个物理网络孤岛否则仿真会报“unconnected terminals”错误。3.2 初始化脚本与参数批量配置模型里参数很多直接在每个模块对话框里敲数字容易出错也不好调整。我的习惯是写一个MATLAB初始化脚本在模型运行前一次性设置所有参数Simulink模块对话框里的参数名直接引用工作区变量。脚本大概如下% 5MW海上永磁直驱风电并网系统初始化 % 基本参数 P_nom 5e6; % 额定功率 W V_dc 1200; % 直流母线电压 V f_grid 50; % 电网频率 Hz % 风轮参数 R_blade 63; % 叶片半径 m rho_air 1.225; % 空气密度 kg/m^3 cp_max 0.48; lambda_opt 8.5; % 发电机参数 p_poles 40; Rs 0.008; % 定子电阻 Ohm Ld 0.9e-3; % d轴电感 H Lq 0.9e-3; % q轴电感 H flux_pm 10; % 永磁磁链 Wb rated_speed 15; % 额定转速 rpm % 直流母线电容 C_dc 4 * 10000e-6; % 总电容 F % 滤波器参数先按经验值 L1 0.2e-3; L2 0.1e-3; Cf 40e-6; % PI参数经过pidTuner初步整定 Kp_idc 2.0; Ki_idc 100; Kp_iq 2.0; Ki_iq 100; Kp_dc 0.5; Ki_dc 20; Kp_speed 500; Ki_speed 100; % 变压器变比 V_lv 1200; V_hv 35e3;脚本写完后每次改参数只需要改一个地方然后运行脚本再点仿真。在Simulink模块参数里引用这些变量的时候建议使用绝对路径比如PMSG_Gen.Rs这种结构体方式而不是直接Rs避免和基础工作区的其他变量重名。3.3 分步搭建与调试顺序先平均值模型后开关模型我搭建时的顺序很固定先搭开关模型但先不接入自写控制用开环测试确认功率流方向然后把开关桥臂换成带调制波控制的平均值模型这样调试PI参数时不需要极小步长仿真速度很快可以在几分钟内跑完30秒海上随机风速工况。平均值模型调试通过后我再把平均值桥臂替换回IGBT开关模型重新用小步长跑一遍。这一步经常会暴露谐波问题和数值振荡问题因为平均值模型里面没有开关频率的离散谐波。替换之后观察网侧电流的THD、直流母线电压纹波再微调LCL参数和死区补偿。整个过程说起来简单实操中我最常犯的错误是忘记把初始状态清零导致从平均值模型切换到开关模型时电容初始电压和当前工作点不匹配一启动就报“Singularity in system”。3.4 仿真参数与观测点设置Simulink的仿真参数设置也直接影响结果的可靠性。由于系统包含IGBT开关模型我使用离散求解器固定步长设置为1e-5秒这样在5kHz开关频率下每个开关周期能采样200个点波形细节足够准确。如果只想看宏观响应可以把步长放宽到1e-4秒但此时开关谐波会被明显混叠不建议做THD分析。观测波形方面我在模型里挂了四个Scope第一个看发电机转速和电磁转矩判断MPPT是否跟上风速变化第二个看机侧d/q轴电流确认id接近0第三个看直流母线电压判断稳定性和纹波第四个看并网点三相电压电流以及有功无功功率。在实际调试中我认为最核心的是第三个示波器因为直流母线电压一旦波动要么是网侧控制的问题要么是两侧功率交换瞬间失衡其他波形问题都能从这条线上找到线索。4. 常见问题与排查技巧实录4.1 启动瞬间冲击电流过大怎么处理第一个让我反复崩溃的问题是启动瞬间的冲击电流。模型设定好后一上电直流母线电容两端电压接近0在网侧变流器开始工作前母线电容相当于短路瞬间电流可以超过额定电流5倍以上。如果不处理仿真直接报过流甚至会把IGBT模块烧毁在实物中。我采用的解决方案是在直流母线上并联预充电电阻和接触器启动时先让电流流过电阻给电容充电等母线电压达到1200V的90%左右再把接触器合上短接电阻。这个逻辑用Simulink里的延时模块加一个比较器就能实现。也可以用更简单的办法在网侧变流器启动之前先用一个恒压源给母线预充到1200V仿真主开环直接开始等于是人为构造了一个初始工况。实测下来用恒压源预充是最容易复现的方案但要注意把恒压源设置为“仿真外部输入”或良好切换不能和后面直流母线电容形成电压源并联。如果不用预充电也可以在控制器里加入软启动斜坡直流电压参考值从0开始在2秒内斜坡上升到1200V。这个方法对电流冲击的抑制作用也很明显只是在斜坡期间不能满载并网不然会从电网抽很重的电流。4.2 直流母线电压出现低频振荡第二个高频出现的问题是直流母线电压在700V到1400V之间来回振荡看上去很不稳定。排查后有两个典型原因一是电压环PI参数过强二是机侧和网侧功率指令不匹配。我拿一组实际调试数据举例电压环Kp2、Ki100的时候母线电压在风速突变后出现持续振荡。把Kp降低到0.5、Ki降低到20之后振荡立刻消失。这里面的原理是电压环带宽太高时它会放大电网电压的微小扰动而直流母线电容本身就是低通环节过强的比例增益会让电压控制环路产生相角裕度不足导致谐振。功率指令不匹配的典型场景是风速突然升高机侧MPPT立刻输出更多有功但网侧电压环反应较慢无法在同一个控制周期内把直流母线上多出来的能量送出去母线电压就会暂时抬升。解决这个问题最有效的方法是加功率前馈把机侧测量的有功功率值直接作为网侧d轴电流指令的前馈分量让网侧跟随机侧功率变化电压环只用补偿损耗和偏差。我用这个方案之后母线电压波动幅度从正负100V降到了正负15V以内。4.3 并网电流波形畸变与LCL谐振并网电流畸变是风电变流器调试的老大难。我在模型里采用LCL滤波器本意是抑制IGBT开关谐波但LCL是三阶系统存在谐振峰如果阻尼不足在谐振频率附近会有很大的电流放大波形看起来就像锯齿上叠加了高频振荡。排查共振频率的方法是做扫频在网侧电流指令上叠加一个从1kHz到10kHz的小幅正弦扰动观察并网电流的幅值增益找到增益最大的那个频率点。实测下来我的LCL参数L10.2mH、L20.1mH、Cf40μF时谐振点大约在2.8kHz附近而开关频率5kHz的边带谐波正好落在这个区域附近所以谐波被放大了。解决手段有两个无源阻尼和有源阻尼。无源阻尼最简单在滤波电容支路串一个几欧姆的电阻谐振峰值立刻被压住但代价是电阻持续发热损耗大概在输出功率的0.5%到1%在5MW系统里也是不小的热量。有源阻尼则是通过电容电流反馈或电网电流反馈改造控制器在算法上实现虚拟电阻不加实际电阻更接近真实工程方案。我在仿真里选择的是电容电流比例反馈把反馈系数作为可调参数效果和无源阻尼基本一致但不会增加损耗。4.4 仿真速度慢到无法接受怎么办5MW海上风电机组如果直接跑全开关模型风速序列用30秒随机风仿真时间可能要一两个小时这在实际调试中很难接受。我后来总结出三个降负载手段。第一个是用平均值模型替换开关模型。平均值模型不模拟IGBT的每一次开关而是把三相桥看成理想的可控电压源直接输出基波电压。这样仿真速度能提高10到20倍适合做控制参数整体验证。第二是减小不必要的电气网络规模比如在电网侧不接入复杂的35kV集电线路多馈线模型只用等效三相电压源和短路阻抗代替能省掉大量状态变量。第三是合理设置仿真步长只要不做谐波频段分析把步长从1e-5放宽到2e-4甚至可以到5e-4只要控制系统时间常数远大于步长结果依然可信。另外我在跑参数扫描的时候会直接用MATLAB的parsim并联仿真把不同风速序列或不同PI参数分发到多个worker并行跑。这个方法在有并行计算Toolbox的机器上非常高效我可以同时跑六组参数半小时把六个工况全部跑完比单线程省了两个小时的等待。4.5 常见问题速查表为了方便后面复现我把调试中遇到的高频问题整理成一张速查表现象可能原因处理办法启动过流直流母线预充电不足加预充电阻或软启动斜坡母线电压高频振荡电压环Kp过大Kp降到1以下Kp/Ki比值重新整定母线电压低频波动功率前馈缺失加入机侧功率前馈并网电流高频毛刺LCL谐振点接近开关边带增大阻尼系数或调整滤波电容仿真报Singularity初始化状态不一致清空所有积分器和电容初始状态仿真速度慢开关模型小步长换平均值模型或缩短风速序列变压器磁饱和畸形容量单位填错确认VA和Vrms单位并网功率刀锋突变PLL动态响应差降低PLL带宽或加入电压前馈这张表不是万能的但它覆盖了我这轮探索中90%的坑对后来者应该能省不少时间。这轮探索做完我个人最深的体会是在Matlab/Simulink里搭风电并网系统真正难的往往不是Simulink操作而是你对电机、变流器和电网的三层理解有没有落到参数上。每一个PI参数、每一个电容值、每一个滤波器截止频率背后都是物理规律在约束。仿真报错不可怕可怕的是不知道为什么错。如果你正打算按这个方向做我建议先从平均值模型入手把MPPT、直流母线控制和并网逻辑全部跑通再把开关细节一层层加回来遇到波形不对劲就回头看功率流向别一上来就调PI参数。反正我后面再搭类似模型会直接从这套框架开始改这套5MW海上永磁直驱与1200V并网的探索过程后续还可以继续往低电压穿越、电网故障、机群聚合等方向扩展但前提是基础模型要足够稳希望这篇文章能让你少走我走过的那些弯路。
返回列表