十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

地铁牵引供电系统Simulink建模与24脉波整流故障仿真

地铁牵引供电系统Simulink建模与24脉波整流故障仿真 简介围绕地铁牵引供电系统的建模与仿真这份面向轨道交通供电设计运维人员及电力系统仿真方向师生的技术文档基于Matlab/Simulink搭建了涵盖外部电源、24脉波整流变电站、直流母线、接触网与钢轨大地的完整直流牵引供电模型并延伸至含逆变电路与牵引负荷的牵引传动系统。压缩包内仅1个docx文件约49KB篇幅紧凑却内容集中涵盖24脉波整流桥的移相变压器配置、接触网PI分布参数模型、SVPWM空间矢量逆变控制以及系统级仿真主脚本每段代码均附中文注释与原理说明。文档以成都地铁实际参数为算例对空载、负载及故障工况展开仿真并与现场故障录波对比验证模型有效性读者可据此理解供电系统工作机理、掌握故障特性分析方法、复用建模脚本开展自主仿真与科研复现。目前已有183人学习。1. 从一列地铁的启动电流说起牵引供电系统为什么值得用 Simulink 建模早高峰时段两列车先后从相邻车站牵引启动直流母线从 1650 V 一路跌到 1400 V 以下整流机组过流告警。稳态潮流算不出这一两秒里发生了什么也只有时域模型能回答 di/dt 保护会不会误动。轨道交通地铁牵引供电系统建模与仿真做的正是这件事用 Matlab/Simulink 把整流变压器、24 脉波整流机组、直流馈线、接触轨与走行轨、列车牵引负荷搭成可反复运行的模型再注入短路与机组退出等故障检验保护动作时序。它的价值落在三处供电方案的关键参数机组容量、平波电抗、馈线截面、保护整定能在同一个模型里横向比较故障工况可以复现不必等现场跳闸再翻录波模型本身是可复用资产延伸线或改造时改参数就能用。读者对象是牵引变电所设计人员、车辆牵引传动方向的技术人员以及做轨道交通电气仿真的研究生。下面按元件建模、负荷接入、故障复现、工程交付四段展开代码都是能直接在 Matlab 脚本里跑的。2. 牵引变电所到接触网24 脉波整流机组的 Simulink 元件级搭建2.1 先切模块边界再打开 Simulink 拖模块典型的直流 1500 V 牵引供电系统路径是 33 kV 中压进线经两台整流变压器降压移相进整流阀组输出的直流经平波电抗器、正母线、馈线断路器送到接触轨再由列车受电弓经走行轨回流到变电所负极柜。模块边界切在哪儿取决于你要回答什么问题。关心机组外特性和母线跌落整流机组可以当带内阻的等效源关心谐波和纹波就必须保留变压器漏抗和阀组的换相过程。系统部件推荐 Simulink 模块精度取舍33 kV 进线电源Three-Phase Source要按进线短路容量设等效阻抗否则母线跌不下去整流变压器Three-Phase Transformer (Two Windings)必须设置漏抗、连接组别和移相角整流阀组Universal Bridge (Diode)只看外特性用二极管桥看关断过程换 IGBT平波电抗器Series RLC Branch 的 L 分量直接决定短路电流上升率接触轨与走行轨Distributed Parameters Line 或 π 型集中参数站间距小于 1.5 km 用集中参数超过 2 km 用分布参数列车负荷Controlled Current Source不能用恒功率源低压时会拉出非物理的大电流有两个边界决定值得单独说。其一接触轨与走行轨的参数模型选错远端短路电流峰值会偏低两成以上仿真得出的保护灵敏度就是假的。其二列车负荷千万不能接成恒功率源恒功率源在母线电压趋零时会要出无穷大电流仿真要么发散要么给出物理上不存在的数正确做法是受控电流源取流由牵引特性决定。2.2 24 脉波机组的移相角与空载电压怎么定24 脉波不是靠一个变压器变出来的。常见做法是两台 12 脉波整流机组并联其中一组变压器一次侧做 ±7.5° 移相两组二次侧各带一套三相桥经平衡电抗器并联输出。两组桥的换相缺口在时间轴上错开 7.5°对应 0.4167 ms合成后的直流纹波频率变成 24×50 1200 Hz比单组 12 脉波干净一倍。空载直流电压用一个工程上够用的式子估算12 脉波桥的 Ud0 约为 2.7 倍阀侧线电压有效值。要覆盖 1500 V 标称网压并留出十分之一裕量Ud0 取 1650 V 附近反推阀侧线电压约 610 V。% 整流机组参数集中定义全部写进 base 工作区避免散落在各模块里 Sn 4e6; % 单台整流变压器容量 VA U2LL 610; % 阀侧线电压有效值 V uk 0.08; % 变压器短路阻抗标幺值决定换相压降与外特性斜率 shift 7.5; % 一组变压器的移相角单位度 Rdc 8e-3; % 整流机组内阻归算到直流侧 Ω Ldc 1.2e-3; % 平波电抗器电感 H Ud0 2.7 * U2LL; % 理论空载直流电压约 1647 V fprintf(Ud0 %.1f V, 短路阻抗 uk %.2f\n, Ud0, uk);参数说明uk 和出厂试验值对齐最稳妥取小了模型电压偏高、母线跌落不足取大了又会把压降放大保护整定跟着失真Ldc 是后面 di/dt 保护整定的核心变量改变它等于改变短路电流上升的斜率。验证方法很直接空载跑一次看直流电压是否落在 1640~1660 V看纹波频率是不是 1200 Hz纹波峰峰值按 24 脉波理论值应在 0.3% 量级。如果纹波只有 600 Hz说明移相没生效回头检查变压器连接组别和移相角设置。2.3 求解器设置与 simulink 模型整理让 24 脉波模型跑得又快又稳电力电子模型的求解器设不好轻则跑一整夜重则中途报错。带整流阀组的模型用 ode23tb 或 powergui 的离散模式离散采样步长取 20 μs对应 50 kHz足以覆盖 1200 Hz 纹波和换相过程。mdl traction_substation; set_param(mdl, Solver, ode23tb); set_param(mdl, MaxStep, 1e-5); % 最大步长 10 μs小于开关周期的 1/20 set_param(mdl, RelTol, 1e-4); % 供电系统量级下足够再紧只会拖慢 set_param(mdl, AbsTol, 1e-6); save_system(mdl);MaxStep 是这里最关键的参数它决定仿真会不会直接跨过换相尖峰RelTol 收得比 1e-4 更紧得到的信息量几乎不增加只是白等。simulink 模型整理这件事要趁早做。我一般把整流机组、单位长度接触轨、列车负荷各做成一个带 Mask 的子系统参数一律从 base 工作区取模块内部不放任何硬编码数字。这样一台机组改两台并联只要改 Mask 里的数量和移相角。配合 Simulink 外部模式或 Project 做版本管理比把「v1」「v2」「最终版」散在桌面强得多。网上能找到的 Simulink 教程大多从积分器讲起真正省时间的是这类工程约定。3. 列车牵引负荷的接入牵引特性、多车叠加与脚本化批量仿真3.1 用三段折线描述牵引特性做成查表数据列车取流不是常数。低速段是恒转矩牵引力拉满中速段进入恒功率牵引力随速度反比下降高速段进入自然特性牵引力按速度平方衰减。把这个三段特性折算到直流侧就是一条速度—取流曲线用 1-D Lookup Table 挂到受控电流源上比每次写解析式快得多。% 生成列车直流侧取流特性查表数据 v 0:2:80; % 速度向量 km/h cfg.F_max 220e3; % 最大轮周牵引力 N cfg.P_rated 3.2e6; % 额定牵引功率 W cfg.v_base cfg.P_rated / cfg.F_max * 3.6; % 恒转矩转恒功率的拐点 cfg.v_power 65; % 恒功率转自然特性的拐点 cfg.Udc 1500; % 直流网压标称值 V cfg.eta 0.90; % 逆变器加电机综合效率 I_table zeros(size(v)); for k 1:numel(v) if v(k) cfg.v_base F cfg.F_max; % 恒转矩区 elseif v(k) cfg.v_power F cfg.P_rated / (v(k)/3.6); % 恒功率区 else F cfg.F_max * (cfg.v_power / v(k))^2; % 自然特性区 end I_table(k) F * v(k) / 3.6 / (cfg.Udc * cfg.eta); end save(traction_lut.mat, v, I_table);参数说明v_base 由额定功率除以最大牵引力再换算单位得到约 52 km/h这个拐点位置直接决定列车在中低速段的取流峰值v_power 取 65 km/h 是常见城轨车辆的恒功率结束点效率项等于把机械功率折算成直流侧电功率取 0.90 偏保守可以让仿真得到的母线跌落略大于实测整定余量更安全。查表数据存成 mat 文件后Simulink 里用 From File 模块读入换车型只换这一个文件。3.2 多车运行图怎么变成多个受控电流源运行图给的是每列车在每一时刻的位置和速度。做法是用 From Workspace 模块把时间—位置数据喂进去先微分求速度再查上一节的取流表得到每列车每个时刻的直流侧电流指令。多列车就是多个同样的子系统分别挂在直流母线不同位置的馈线段上位置决定它到变电所的电气距离。发车间隔同时取流列车数母线最低电压是否触发低压保护90 s31320 V否距 1000 V 阈值仍有裕量120 s21455 V否150 s21502 V否180 s11588 V否240 s11612 V否表里真正值得看的是 90 s 与 120 s 之间的落差从两车同时取流变成三车最低电压多掉 135 V这就是发车间隔压缩时最需要复核的工况。再生制动也要接上制动列车回馈的电流要么被邻近牵引列车吸收要么经制动电阻消耗模型中用受控电流源方向取负即可表达回馈。3.3 用脚本扫参数而不是手改模型仿真最有价值的部分是批量跑参数手动改一次参数跑一次模型的做法基本不可持续。用 set_param 配合 sim 命令在循环里扫把关心指标记录下来。headway_list [90 120 150 180 240]; % 发车间隔 s result table(); for h headway_list assignin(base, headway, h); % 注入工作区供运行图脚本读取 out sim(traction_network, ReturnWorkspaceOutputs, on); Udc_min min(out.logsout.get(Udc).Values.Data); result [result; table(h, Udc_min)]; %#okAGROW end disp(result); writetable(result, headway_sweep.csv);逻辑说明把发车间隔当作唯一自变量其它参数保持默认逐次重建运行图并跑完整区间最后写出 csv 便于和设计文件对照。如果要做多目标整定比如同时最小化母线跌落和机组容量可以用 matlab 优化工具箱里的 fmincon把上面的仿真封装成目标函数即可代价是单次仿真必须压到秒级以内那就得先把 MaxStep 和仿真时长调优。4. 故障分析直流侧短路、机组退出与保护动作时序的复现4.1 直流侧短路怎么注入才接近真实直流侧短路是牵引供电系统最恶劣的工况短路点从变电所出口到邻站进站端都有可能。Simulink 里做故障注入用一个理想开关串一个可调电阻跨接在接触轨和走行轨之间在指定时刻闭合。金属性短路取 1 mΩ 量级经电弧电阻的短路取 20~100 mΩ 并串一个时变电阻模拟电弧拉长。% 故障支路t 20 s 闭合持续到保护切除 function [Rf, state] fault_branch(t) t_fault 20.0; % 故障发生时刻 s t_clear 20.15; % 保护动作切除时刻 s if t t_fault Rf 1e6; state 0; % 断开状态用大电阻近似开路 elseif t t_clear Rf 1e-3; state 1; % 金属性短路 else Rf 1e6; state 0; % 已被断路器切除 end end参数说明断开状态不要用理想开路那会让节点孤立导致求解失败用 1e6 Ω 近似既稳定又不影响结果。t_clear 要和保护整定配合设置先按预期动作时间给跑完再对比实际仿真中保护是否在这个时刻之前启动不一致就说明整定有问题。4.2 短路电流上升率与 di/dt 保护的仿真判据直流牵引系统的主保护之一是电流上升率保护靠 di/dt 越限启动再配合电流定值确认。仿真跑完以后把直流电流录波拿出来做后向差分复现这个判据。t out.logsout.get(Idc).Values.Time; idc out.logsout.get(Idc).Values.Data; dt mean(diff(t)); didt [0; diff(idc)] / dt; % 后向差分避免引入未来时刻的数据 thr_didt 50e3; % A/s工程上常整定在 40 ~ 60 kA/s thr_I 8e3; % A电流确认定值 idx find(didt thr_didt abs(idc) thr_I, 1, first); if ~isempty(idx) fprintf(保护启动 %.4f s此时电流 %.1f Adi/dt %.1f A/s\n, ... t(idx), idc(idx), didt(idx)); end逻辑说明di/dt 与电流定值必须同时满足才认保护启动单独用 di/dt 会在列车正常启动时误判单独用电流定值又太慢切不断上升极快的近端短路。dt 取平均步长是因为变步长求解器输出的时间点不均匀直接用 diff(t) 逐点相除更精确但要注意首点补零。若仿真算出的启动时间比设计整定值晚优先怀疑平波电抗器的电感取值和馈线参数模型。4.3 机组退出与邻站支援的典型结果机组退出比短路更容易被忽略。一台整流机组因内部故障跳闸后本站只剩另一半容量远端列车要么靠邻站经直流馈线越区供电要么直接掉压。仿真里把一台机组的阀组输出断开其余不变就能看到邻站支援电流的流向和幅值。故障位置稳态短路电流母线最低电压di/dt 是否越限保护动作情况本站出口 0.2 km约 42 kA约 620 V是本站 di/dt 保护先动站间中部 1.5 km约 18 kA约 940 V是上升沿较缓本站 di/dt 保护动作邻站进站端 3.0 km约 7 kA约 1280 V否由邻站过流保护切除表格里的趋势解释起来很直白故障点越远线路阻抗越大短路电流越小母线跌落越浅di/dt 越不容易越限这时如果只依赖本站的 di/dt 保护就会出现拒动必须靠邻站过流保护兜底。这正是仿真要回答的问题——保护配置有没有盲区。4.4 用 matlab 画图自动生成故障报告故障分析往往要看几十个工况的波形逐个人工翻不现实。把电流、di/dt、母线电压三联图画在一起导出成图片归档是 matlab 画图在这里最实用的用法。fig figure(Visible, off); tiledlayout(3, 1); nexttile; plot(t, idc/1000); ylabel(Idc / kA); grid on; nexttile; plot(t, didt/1000); ylabel(di/dt / kA·s^{-1}); grid on; nexttile; plot(t, out.logsout.get(Udc).Values.Data); ylabel(Udc / V); xlabel(t / s); grid on; exportgraphics(fig, fault_report.png, Resolution, 150);逻辑说明Visible 设为 off 是为了在无图形界面的批处理里也能出图exportgraphics 输出的 png 分辨率固定便于几十个工况横向比对。把这三条曲线放在同一时间轴上电流峰值、上升率拐点、母线最低点三个特征时刻一眼就能对齐和现场录波对照时找差异也快。5. 交付前的三个校验阶跃响应、代码生成与模型复用模型跑通不等于能交付。我一般先做母线时间常数校验在额定负载上叠加一个 200 A 的小阶跃看母线电压的响应形态。set_param(traction_network/Step_Load, After, 200); % 阶跃幅值 A out sim(traction_network, ReturnWorkspaceOutputs, on); u out.logsout.get(Udc).Values; s stepinfo(u.Data, u.Time); fprintf(稳态 %.1f V上升时间 %.4f s超调 %.2f%%\n, ... u.Data(end), s.RiseTime, s.Overshoot);因为平波电抗器在回路里这条响应通常不是单调上升而是先跌一小口再回升超调为负。这个形态和实测录波的吻合程度是判断模型参数是否可信最省事的指标。第二个校验是代码生成。把整流机组的控制与保护逻辑做成子系统用 Simulink 的 C 代码生成功能导出跑一遍等价性测试对比仿真结果与生成代码结果差异应在数值误差量级。如果必须交给别的团队做硬件在环把供电网络部分导出成 FMU 模型对方用哪个仿真器都能挂上去。第三个是模型复用。把整流机组、接触轨、列车负荷拆成独立库参数全部走 Mask接口只留三个母线电压、取流指令、故障触发。这样换一条线、换一种车型改的是参数文件而不是模型结构。三条校验都过了模型才算从「能跑」变成「敢用」。最后一次改动之后记得把 base 工作区的参数快照连同模型一起归档否则半年后没人说得清当时跑的是哪一组数。本文还有配套的精品资源点击获取
返回列表