ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

基于Simulink的25kV交流牵引供电系统与EH800机车载荷耦合仿真研究

基于Simulink的25kV交流牵引供电系统与EH800机车载荷耦合仿真研究 25kV交流牵引供电系统驱动JR EH800列车载荷研究这是我在做电力牵引系统仿真时接触到的比较典型的项目。整件事说起来并不复杂把牵引变电所、接触网、机车传动链、列车运行阻力放到同一个仿真环境里用Simulink跑起来看不同载荷工况下各点电压、电流、功率怎么变化。EH800是JR Freight在北海道运用的8轴交直交流货运电力机车整备功率6MW级要拉着上千吨货翻山越岭。对这个车做供电侧-车辆侧耦合仿真能回答很多实打实的问题比如25kV网压跌落多少、坡道起动电流有多大、再生制动时能量能不能安全回馈。我在搭这套模型的时候踩了不少坑也整理出一套可以复用的建模套路。下面把这些思路、模型细节、参数计算和排错经验全部摊开讲给做电力牵引、机车传动和Simulink仿真的人一个参考。1. 项目整体设计与思路拆解1.1 为什么要研究25kV供电系统与EH800的载荷互动先把研究对象说清楚。25kV交流牵引供电制式是重载铁路和高速铁路的主流方案牵引变电所从公共电网取电降压后以单相工频交流电压25kV馈入接触网机车通过受电弓取流。这个制式的突出优点是输电功率大、变电所间距可以拉得很长适合大运量干线。而EH800是JR Freight为了北海道地区货运专门开发的交流电力机车最大特点是为了应对大雪、长坡道和干线直通用大功率牵引采用双节固定重联的Bo-BoBo-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.65kNB取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/RR是曲线半径比如半径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.001s1)。这个做法会引入微小延迟但对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里的输入输出接口完全对应。回到载荷研究本身这个项目做完之后我自己的体会是仿真模型的价值不只在精确复现更在于把看不见的电气量流动变成直观的波形。你能清楚看到每次坡道载荷增加的时候电流是如何从接触网一路传递到电机转轴上的也能看到再生制动时能量是如何反向流动的。如果后续要深入研究多车供电能力或者牵引网电压波动这个模型完全可以扩展成多机车版本把每台机车封装成子系统通过接触网模型连接起来做集群载荷分析。模型重构出来的那一天你会发现前面花在模块封装和参数标定上的功夫都会在这里回报回来。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进