25kV交流牵引供电系统驱动JR EH800列车载荷研究,这是我在做电力牵引系统仿真时接触到的比较典型的项目。整件事说起来并不复杂:把牵引变电所、接触网、机车传动链、列车运行阻力放到同一个仿真环境里,用Simulink跑起来,看不同载荷工况下各点电压、电流、功率怎么变化。EH800是JR Freight在北海道运用的8轴交直交流货运电力机车,整备功率6MW级,要拉着上千吨货翻山越岭。对这个车做供电侧-车辆侧耦合仿真,能回答很多实打实的问题:比如25kV网压跌落多少、坡道起动电流有多大、再生制动时能量能不能安全回馈。我在搭这套模型的时候踩了不少坑,也整理出一套可以复用的建模套路。下面把这些思路、模型细节、参数计算和排错经验全部摊开讲,给做电力牵引、机车传动和Simulink仿真的人一个参考。
1. 项目整体设计与思路拆解
1.1 为什么要研究25kV供电系统与EH800的载荷互动
先把研究对象说清楚。25kV交流牵引供电制式是重载铁路和高速铁路的主流方案,牵引变电所从公共电网取电,降压后以单相工频交流电压25kV馈入接触网,机车通过受电弓取流。这个制式的突出优点是输电功率大、变电所间距可以拉得很长,适合大运量干线。而EH800是JR Freight为了北海道地区货运专门开发的交流电力机车,最大特点是为了应对大雪、长坡道和干线直通用大功率牵引,采用双节固定重联的Bo-Bo+Bo-Bo轴式,也就是8根动轴。
把这两者放在一起做载荷研究,本质上是回答一个问题:在不同列车载荷下,供电系统能不能把电压和电流维持在安全范围。载荷并不是简单指列车重量,而是列车运行过程中从接触网取用的有功、无功、谐波电流,以及再生制动时反向馈入电网的电流。列车重载爬坡时,牵引电流可能超过1000A,网压会明显跌落;再生制动时,能量反向流动,又可能导致接触网电压抬升。这些现象在单一车辆模型或者单一供电模型里看不出来,必须做供电-机车-载荷的耦合仿真。
我在实际建模时把载荷研究拆成了三个层面:一是稳态载荷,比如恒速平直道巡航;二是瞬态载荷,比如重载启动、坡道加速;三是再生制动工况,研究能量回馈对网压的影响。每个工况都要能定量给出列车受力、电机转矩、整流器输入功率和接触网电流,仿真结果才能支撑工程判断。
1.2 为什么选择Simulink做整套仿真
这个项目可以用很多工具做,比如PSCAD/EMTPC专门做电磁暂态,MATLAB脚本可以做纯数学计算,但我最后还是选了Simulink。原因有三。
第一,Simulink加上Simscape Electrical(早期叫SimPowerSystems)把电力电子、电机、控制、机械载荷放到了同一个图形化环境里。四象限整流器、VVVF逆变器、异步电机、接触网阻抗这些物理仿真需要的库都是现成的,不用自己在脚本里写电路方程,可以更集中精力处理控制策略和载荷逻辑。
第二,Simulink的控制系统搭建能力和物理模型天然衔接。牵引传动系统的控制核心是整流器电流环、电压环和电机矢量控制,这些在Simulink里用标准模块就能搭,不需要跨工具传递数据。这在联合仿真中是非常大的优势,至少省掉了接口调试的大量时间。
第三,模型的可扩展性好。后续如果想把单台机车扩展成多车追踪、或者把供电系统扩展成牵引网多区间模型,只需要把模块封装成子系统,再往总线里拖就行。另外Simulink模型可以生成C代码,能直接给硬件在环或者控制器原型用。项目后期如果想做控制器固化,不用推倒重来。
当然,Simulink在纯电磁暂态细节上不如PSCAD精确,五公里长的接触网分布参数效应也要靠近似处理。但这些对于研究载荷和供电系统之间的宏观关系来说,足够用了。
1.3 模型整体架构与数据流
我搭的模型整体分三块:供电侧、机车侧、载荷侧。供电侧包括牵引变电所等效电源、接触网线路阻抗、钢轨回流阻抗;机车侧包括受电弓、车载主变压器、四象限PWM整流器、直流母线电容、三相逆变器、异步牵引电机;载荷侧是列车纵向动力学模型,负责计算当前速度下的阻力、坡道附加力、加速度和所需牵引力。
数据流是这样的:载荷模型根据线路坡道和速度计算需求牵引力,把转矩指令发给逆变器的矢量控制模块;逆变器从直流母线取电,驱动电机;直流母线电压由四象限整流器维持;整流器从接触网取电,受电弓电流经过接触网阻抗产生压降,反过来影响牵引变电所的出口电压。换句话说,载荷通过电气量一级一级往前传递,形成一个完整的闭环。这个闭环在Simulink里非常直观,示波器上能看到从载荷变化到网压波动的完整链路。
2. 核心建模细节与参数选择
2.1 牵引变电所与接触网模型
牵引变电所这部分,我采用最简单的戴维南等效电路:一个理想电压源串一个等效阻抗。由于是单相供电系统,Simscape Electrical里用交流电压源,电压幅值按空载电压27.5kV设置,频率按50Hz设置。为什么要取27.5kV?因为25kV是接触网上机车受电弓处的标称电压,实际变电所出口需要比标称值高10%,用来补偿线路压降。等效阻抗的取值取决于变电所短路容量,如果短路容量是500MVA,那么等效阻抗大约是27.5kV平方除以500MVA再折算到一次侧,但我们是做简化模型,直接折算到27.5kV侧,取阻抗约1.5欧姆左右。这个值可以按实际变电所参数修改。
接触网模型采用集中参数的R-L串联电路。真正工程上接触网是链形悬挂,单位长度阻抗大约是0.15到0.25欧姆每公里,感抗和电阻量级差不多。我做的是单区间供电仿真,选了一个典型供电臂长度约20公里,那么总阻抗就是20乘以单位阻抗,大约3到5欧姆,放在电源和机车之间。这里要注意,接触网模型必须包含电感,否则电流突变时电压跌落的动态过程根本模拟不出来,整个仿真的暂态响应会失真。
钢轨回流路径我也做了等效,钢轨阻抗通常比接触网小,大约0.03到0.08欧姆每公里。为了简化,我没有单独建钢轨模型,而是把钢轨阻抗合并到接触网阻抗中一起算,接触网和钢轨形成回路,等效总阻抗取两者之和。这个处理方式在工程上是合理的,因为钢轨电流和接触网电流方向相反,两者阻抗串联的等效效果就是叠加。
2.2 EH800交直交传动链建模
EH800采用的是典型的交直交传动架构。受电弓从接触网取得25kV单相交流电,经过车载主变压器降压,给四象限PWM整流器供电。整流器把单相交流电整成稳定的直流电,中间直流母线电压由支撑电容维持。然后三相逆变器把直流电逆变成频率电压可调的三相交流电,驱动异步牵引电机。
因为我要研究载荷,所以主变压器和整流器必须建模。主变压器原边25kV,副边我按典型机车牵引绕组电压设为1.5kV。整流器采用单相PWM整流器,控制目标是维持直流母线电压恒定,同时让输入电流接近正弦且功率因数接近1。直流母线电压我设定为3000V,这个数值和机车实际系统的电压等级比较接近,也方便后续逆变器调制。中间直流支撑电容的取值非常关键。电容太小,直流电压波动大;电容太大,成本高且响应慢。我用工程经验值:按整流器额定功率6MW、直流电压3000V计算,等效负载电阻是1.5欧姆。根据电压纹波要求5%,取电容约20mF到40mF,仿真中我取了30mF。
三相逆变器采用SVPWM调制,开关频率取1000Hz,这在实际大功率牵引中是比较常见的范围。电机模型直接用Simscape Electrical里的异步电机模型,额定功率按EH800的8台电机总功率6MW折算,如果按单台电机等效仿真,就设为一台6MW交流异步电机。电机的定子电阻、转子电阻、漏感和励磁电感我参照典型大功率牵引电机参数设置,这些参数直接影响矢量控制的性能,所以需要仔细核对。
四象限整流器的控制是整个仿真里最需要耐心的地方。我采用的是电压外环和电流内环的双闭环结构。直流电压外环的输出作为交流电流幅值指令,电流内环让实际电流跟踪指令电流。由于是单相系统,需要构造一个虚拟正交电流,才能实现旋转坐标变换。简单一点的办法是用瞬时电流控制,直接让实际电流与正弦参考电流比较,再用PI调节器输出PWM波。实测下来,瞬时电流控制在Simulink里更容易收敛,也更容易理解。
2.3 列车载荷模型与阻力计算
载荷模型是整套仿真的灵魂。列车运行过程中,牵引电机输出的牵引力要克服基本阻力、坡道附加阻力和加速阻力,剩余部分才是让列车加速的力。基本阻力我用戴维斯方程,形式是R = A + Bv + Cv²,其中v是列车速度。对于货运列车,A取0.65kN,B取0.0025kN/(km/h),C取0.00028kN/(km/h)²,对应到整车1200吨列车,每吨阻力约为0.65N。这些系数在文献里很常见,参数来源可靠。
坡道附加阻力是线性化的。如果坡度千分数是i,坡道阻力大约是列车重量乘以9.8再乘以i/1000。比如25‰的大坡道,一辆1200吨的列车,坡道阻力就是1200×1000×9.8×0.025,算下来约294kN,这个力相当大,基本决定了爬坡时的牵引电流需求。曲线附加阻力我用的经验公式是等效坡度 = 600/R,R是曲线半径,比如半径300m的曲线等效增加2‰坡度,在小半径山区线路是必须考虑的因素。
加速阻力则是回转质量系数乘以质量再乘以加速度。我把回转质量系数取1.06,也就是多算6%的等效质量。整个载荷模型的输出是总阻力,把它换算成负载转矩加载到电机转轴上。换算公式是负载转矩 = 总阻力乘以车轮半径,再除以齿轮箱传动比和机械效率。EH800这类机车动轮直径约1.1m,齿轮传动比大约在5左右,机械效率取0.95。
3. 仿真模型的搭建步骤与实操要点
3.1 建立供电系统主电路
打开Simulink,新建一个模型,先把Simscape Electrical的元件库拖出来。我习惯在模型里把供电系统主电路和机车主电路分开,中间用受电弓节点连接。供电这部分放交流电压源、等效阻抗、接触网R-L串联阻抗,机车主电路放主变压器、整流器、直流母线、逆变器、异步电机。这些元件在Simscape Electrical的SimPowerSystems库里都能找到,不需要自己搭微分方程。
搭建时最容易犯的错是Simscape物理建模域和Simulink控制信号域搞混。供电系统主电路属于Physical信号,控制系统的误差信号属于Simulink的Regular信号,两者之间必须用电压电流测量模块加Signal Conversion或PS-Simulink Converter转换。我在搭模型时遇到过一次"Simulink输入数组位操作"类似的坑,测量模块输出的是一维数组,直接接PI控制器会报维度不匹配。解决办法是用Selector选中需要的量,或者用Bus Selector。
还需要特别注意,Simscape Electrical模型里必须有Solver Configuration模块,不然后仿真会直接报错误。这个模块我通常放在模型最外层,配置自动求解器选择,如果模型不收敛再手动改。
3.2 实现四象限整流器与逆变器控制
整流器控制我放在一个子系统里。用电压测量元件采集直流母线电压,与3000V参考值求差,经过PI调节器输出电流幅值指令。电流指令再乘以单位正弦波,形成交流电流参考。正弦波相位由锁相环从主变压器二次侧电压提取,确保电流和电压同相位。实际电流由电流传感器测量,和参考值比较后,经过PI调节器生成调制波,再和三角载波比较生成PWM脉冲。在Simulink里,我直接用的PWM Generator模块来避免自己搭三角波比较逻辑。
逆变器控制我采用转子磁场定向矢量控制。速度给定来自载荷模型的设定车速,实际速度反馈来自电机测量模块。速度PI输出转矩指令,转矩指令经过磁链计算得到d轴电流和q轴电流指令,电流内环再输出dq轴电压指令,最后通过SVPWM模块生成逆变器开关脉冲。SVPWM在这些模块库里有现成的,如果要用更底层的实现,也可以自己搭坐标变换和占空比计算,但没必要。
PI参数整定我是按典型工程方法来的。电流内环带宽设置在开关频率的十分之一左右,整流器开关频率1000Hz所以电流环带宽100Hz,对应PI参数可以先从零极点对消计算初值,再在仿真里微调。电压外环带宽取电流环的五分之一,约20Hz。速度环带宽再低一些,约5Hz。这个阶层关系能保证系统稳定性,避免各环路互相耦合。
3.3 接入机械载荷与运行工况设定
机械载荷模型我用MATLAB Function实现,因为阻力公式里有个速度二次项,用标准模块搭会显得凌乱。在MATLAB Function里输入当前速度、当前坡度,输出负载转矩,然后接到异步电机的机械输入端。需要注意的是Simscape Electrical的电机机械端口和Simulink信号不一样,负载转矩如果是Simulink信号,要通过Simulink-PS Converter再接入电机端口。
工况设定我做了三种典型场景。第一种是平直道恒速运行,速度设为90km/h,坡度0,主要观察稳态载荷下的网压和电流。第二种是25‰大坡道启动,速度从0开始加速,这个工况牵引电流最大,网压跌落也最明显,是考核供电系统能力的关键场景。第三种是减速再生制动,速度从100km/h降到30km/h,负载转矩为负值,电机变成发电状态,能量通过逆变器回馈到直流母线,再由四象限整流器逆变成单相交流送回电网,这时候要密切关注接触网电压有没有超过允许上限。
工况切换我用Step模块配合Signal Switch或者使能子系统来做。例如坡道工况,给载荷模型的坡度信号在0秒时为0,在5秒时阶跃到25。用Step模块加一个参数就够。如果要更真实的线路数据,可以从CSV文件读入坡度里程序列,那就要用Lookup Table或From Spreadsheet模块了。
3.4 仿真求解设置与典型结果
因为模型包含电力电子开关和异步电机,这个系统刚性比较强。我采用的求解器是ode23tb,最大步长设置为1e-4秒,仿真时间20秒。如果开关频率很高,可能还需要更小步长或者用离散模型。用变步长跑完后,再切换到固定步长做波形对比,确认结果一致性。
仿真结果我重点看几路波形。第一路是受电弓处接触网电压,正常情况下电压有效值在25kV上下波动,重载坡道启动瞬间可能跌到22kV以下。第二路是整流器输入电流,正常时接近正弦,和电压同相位,谐波畸变率要在5%以内。第三路是直流母线电压,启动过程中允许有短时波动,但稳态要稳定在3000V附近。第四路是电机转速和转矩,坡道加速时转矩输出要跟得上指令。第五路是列车速度,和设定工况对比。
以25‰坡道启动为例,1200吨列车在坡道上从零加速,牵引电机短时需要输出约300kN牵引力,折算到电机转矩大约是37kN·m。这时候受电弓电流峰值能到1300A左右,供电系统网压确实会掉,直观数据比纯理论计算更有说服力。再生制动工况时,直流母线电压会有抬升趋势,整流器会把能量回馈,接触网电压可能升到28kV以上,如果不做控制限制,这一段很容易触发过压保护。
4. 常见问题与排错经验
4.1 Simscape模型必踩的Solver Configuration坑
新人在搭建Simscape Electrical模型时第一个报错基本都出在Solver Configuration上。Simulink普通模型不需要这个模块,但Simscape物理网络是连续物理系统,必须有Solver Configuration来提供求解信息。建完供电系统主电路后我第一时间把Solver Configuration拖到模型空白处,就不会出现"找不到求解器配置"的低级报错。如果模型里有多个物理网络,可能需要多个Solver Configuration分别配置。比如供电主电路和机车主电路如果电气上不直接相连,各自都要一个。
这个模块虽然在拖入后默认配置就能跑,但在仿真不收敛时,优先检查Solver Configuration里的一致性容差和局部求解器步长。我的实际经验是,当整流器PWM开关切换导致物理变量跳变时,把局部求解器步长改小,或者把"Use fixed-cost consistent initialization"打开,收敛概率会明显提升。
4.2 代数环问题导致仿真速度奇慢
仿真跑不动、速度奇慢的原因很多时候是代数环。代数环一般出现在控制信号直连物理信号,比如电压测量值直接参与PI计算,PI输出又立即通过受控电压源作用于同一个物理网络,中间没有任何动态环节。我在搭整流器控制时就遇到过:直流母线电压测量值送入PI后,调制波直接控制整流桥,结果Simulink先做代数环迭代,每步迭代都很慢。
解决代数环的办法是在测量信号和控制器之间加一个Memory延迟,或者用Transfer Fcn加一个小惯性环节,比如1/(0.001s+1)。这个做法会引入微小延迟,但对100Hz以下的控制环路影响可以忽略。也可以把控制器的采样时间用零阶保持器固定,让它变成离散环节,从根上切断代数环。
4.3 整流器谐波过大与开关信号方向问题
第一次跑整流器模型,我检查输入电流波形,谐波含量非常高,电流波形明显畸变。排查之后发现是PWM发生器参考信号和三角载波的比较方向反了,导致开关动作总在错误时刻切换。虽然方向不影响闭环稳定性,但谐波会差一个量级。之后我对每个PWM发生器都做了一次空载测试,确保PWM波形占空比随参考信号单调变化,再接入主电路。
另一个常见的谐波问题来自变压器漏感取值。如果漏感太大会导致电流纹波大,太小则开关频率纹波滤不掉。我的主变压器漏感折算到二次侧为0.5mH左右,仿真波形比较干净。如果你发现整流器电流纹波过大,优先检查变压器漏感,再检查PWM载波频率,最后才怀疑PI参数。
4.4 载荷方向搞反导致列车无法加速
连接机械载荷时,最容易忽略的是负载转矩的方向符号。我有一版模型把负载转矩写成了阻碍旋转的方向,结果在牵引工况下电机输出正转矩,负载转矩也是正方向,直接把列车往反方向拉,速度一路掉到零,和物理实际完全不符。后来我把负载转矩定义固定为"与速度方向相反",表达式里乘以sign函数,并且加上一个保护逻辑,当速度小于零且在制动工况时,反向转矩避免过度反向加速。
加载载荷时还容易忽略一个细节:传动系统的转动惯量。电机模型默认转动惯量是电机自身的,但列车质量折算到电机轴的惯量非常大。1200吨列车质量,经传动比5折算,转动惯量大约是原列车质量乘以车轮半径平方再除以传动比平方再乘以回转质量系数。计算下来电机轴等效惯量约1000kg·m²,这个如果不设进去,仿真中的加速过程会远远快于实际,速度和电流完全失真。我最后把等效惯量直接写在电机的转动惯量参数里,一步到位。
4.5 S-Function使用经验与扩展方向
做电机矢量控制的时候,我试过用S-Function写完整的控制算法,而不是用标准模块连线。好处是算法逻辑可以复用,和C代码的对应关系很清晰。S-Function的格式实际上也不难,mdlStart里做参数初始化,mdlOutputs里写控制算法,mdlUpdate里做离散状态更新。需要注意S-Function的输出必须直接间接都没有代数环,否则同样会遇到收敛问题。
后续想把模型往硬件在环扩展,可以在Simulink里把控制算法部分配置成外部模式,真正把控制代码跑在目标机上,供电和机械部分继续在模型里实时仿真。这一步需要Simulink Real-Time或者Speedgoat之类的硬件,但对做嵌入式控制器验证来说是个非常自然的延伸。另一个方向是代码生成,如果希望把矢量控制算法部署到主控制器上,用Simulink Coder生成C代码,再移植到开发板。我在移植过程中才理解为什么一开始要把S-Function的结构写规范,因为生成的代码和S-Function里的输入输出接口完全对应。
回到载荷研究本身,这个项目做完之后我自己的体会是,仿真模型的价值不只在精确复现,更在于把看不见的电气量流动变成直观的波形。你能清楚看到每次坡道载荷增加的时候,电流是如何从接触网一路传递到电机转轴上的,也能看到再生制动时能量是如何反向流动的。如果后续要深入研究多车供电能力或者牵引网电压波动,这个模型完全可以扩展成多机车版本,把每台机车封装成子系统,通过接触网模型连接起来,做集群载荷分析。模型重构出来的那一天,你会发现前面花在模块封装和参数标定上的功夫,都会在这里回报回来。