当前位置: 首页 > news >正文

基于MATLAB GUI的轮轨接触几何特性分析系统开发与应用

1-148 matlab的带有gui的轮轨接触几何计算程序 基于matlab的带有gui的轮轨接触几何计算程序,根据不同的踏面和轨头,计算不同横移量下面的接触点位置。程序已调通,可直接运行

有没有人蹲过现成的、换文件就能换轮轨、不用啃半天赫兹接触前的几何方程、结果还能直观看曲线的MATLAB轮轨接触工具?最近扒到了一个编号1-148、调得通能用的带GUI版本,昨天玩了一下午,连论文里找不到的几个旧踏面残差点的拟合结果都能导出来简单拼,先碎碎念分享一波。

这个程序的核心逻辑其实是经典的“轮轨截面投影重叠求最小距离法”?不对,应该是先把踏面、轨头的左右截面数据(注意是工程上常用的纵向垂直轨距线的横移-垂向数据,txt/excel都能塞)读进去,然后设定横移范围和步长,把轮组踏面沿着横移轴(假设轮对横移量y,左踏面右轨头重叠区往左移y是正方向,或者反过来?程序里有注释说默认右移轮对靠近右轨是y正,其实不用纠结,反正结果可以对着图调逻辑)扫一遍,每个y下面找踏面每个点投影到轨头截面的法向最近点——对,就是那个切线垂直于两点连线的点,不是垂直于轨头底面的垂向最近哦!垂向的那种太粗糙了,过曲线或者脱轨前的几何全靠法向的这个。

给你们看扫轨距区扫重叠的时候,核心循环里我觉得写得最“懒但有用”的一段MATLAB代码,不是那种硬推二次微分找极值的,是先抓肉眼/先验逻辑里的“可能接触区”(轨头顶圆弧附近±某个y0的点,踏面踏面锥/顶圆弧附近的点),然后用欧几里得距离遍历这两个小区域,省了超多计算时间:

% 这里是找当前横移量y时,可能的接触候选点 % 先把轨头数据的x(横移)、y(垂向,这里程序里为了统一命名,把原来的轨头垂向换成了z?不管,看坐标图就懂,不影响核心) % 假设轮对左移当前y量(这里变量名和投影逻辑要对应程序注释),那么左踏面的原始x_right踏面点(假设原始踏面是从轮缘到轮心?也不管,程序会自动给轮缘侧标个负区还是正区)减去y,就是投影到轨头坐标系的位置 projected_x_left = tread_x_left - y; % 硬抓轨头顶圆弧:比如轨头数据里垂向z_top_max(轨头顶面最高点垂向值)减1mm以内的点,都是接触顶候选,过了1mm要么是轨距角要么轨底了 contact_candidate_rail = rail_data(abs(rail_z - z_top_max) < 1, :); % 硬抓左踏面的候选:投影x_left刚好落在轨头候选x的min和max之间的,省得算轮心那边完全碰不到的 contact_candidate_tread = left_tread_data( (projected_x_left >= min(contact_candidate_rail(:,1))) & ... (projected_x_left <= max(contact_candidate_rail(:,1))), : ); % 遍历欧几里得,找最小的 min_dist = inf; best_rail_point = []; best_tread_point = []; for i = 1:size(contact_candidate_tread,1) pt_t = [contact_candidate_tread(i,1)-y, contact_candidate_tread(i,2)]; % 再确认投影坐标 for j = 1:size(contact_candidate_rail,1) pt_r = contact_candidate_rail(j,:); dist = norm(pt_t - pt_r); if dist < min_dist min_dist = dist; best_rail_point = pt_r; best_tread_point = contact_candidate_tread(i,:); end end end

这段代码的“懒”真的拯救了我电脑跑1440个点(旧LM踏面残差点超多,我随便找了个同学拼的txt丢进去)的情况——原来如果遍历整个左右轮轨截面,每个横移量步长0.1mm(横移-15到+15mm对吧?脱轨预警大概是±12mm)的话,得跑30014401200次,我之前写过一次纯遍历,电脑卡成PPT,这个硬抓1mm垂向内的轨头,直接降到300200300,秒出结果。

然后是GUI界面,不是那种只有按钮的极简版,是分了三个标签页+坐标实时联动的,这点很贴心:

第一个标签页是“轮轨数据导入与预览”,有两个按钮分别读左/右踏面(默认1-148程序带的是一个旧LMA踏面的左右镜像txt,哦对了,要是对称轮对的话,直接读一个镜像就行,程序有自动镜像右踏面的复选框!我昨天才发现,之前还傻乎乎找同学要了两个一模一样的文件)和左右轨头(轨头不是默认镜像哦,要自己读左右不同的超高曲线下的轨头?不对,是左/右股道的单独轨头截面,比如曲线外侧可能磨耗得更厉害),导入之后会在同一个坐标系里显示原始数据,还能缩放、平移、用鼠标点原始数据的点看坐标——这点找残差点的时候太方便了,之前用Excel拼残差点,一个个翻数值快瞎了。

第二个标签页是“几何计算设置”,横移范围和步长可以自己输,还有个复选框要不要算“接触点的法向夹角、轨距、轮轨间隙(轨距角那边的或者顶的?哦程序注释说是接触点外侧轮缘和轨距角内侧的垂向最小间隙,如果接触在顶的话,间隙就是0对吧?反正结果标签页里会标清楚)”——这些论文里分析动力学的时候经常要用到,不用自己再写公式算。

第三个标签页是“结果显示与导出”,实时联动!改完横移步长之后,点“重新计算”,3秒内就能出四个子图

1-148 matlab的带有gui的轮轨接触几何计算程序 基于matlab的带有gui的轮轨接触几何计算程序,根据不同的踏面和轨头,计算不同横移量下面的接触点位置。程序已调通,可直接运行

第一个子图是“轮对当前横移量(默认中间的y=0)下的接触放大图”,能看到刚才那段代码抓的最小距离点,还标了欧几里得距离(理论上正常接触的时候应该是0,要是带磨耗的残差点,可能会有0.01mm左右的误差,正常的,因为是离散点拟合的);

第二个子图是“接触点横移量(相对于轮对中心和轨距中心?哦轨距中心标了个红竖线,轮对中心标了个蓝竖线,很清楚)随轮对横移量变化的曲线”——可以看踏面锥的斜率变化、轨距角接触的拐点;

第三个子图是“接触点法向夹角随轮对横移量变化的曲线”;

第四个子图是“轮轨间隙随轮对横移量变化的曲线”;

还有个“数据导出”按钮,能把所有计算结果(轮对横移量y,左右接触点的投影x、垂向z、法向夹角,轮轨间隙,轨距,哦还有算出来的等效踏面锥度?对!等效踏面锥度标签页底部直接显示了y在0到±2mm之间的等效锥度,这点太省事了,之前写课程作业的时候,我对着第二个子图的横移范围0-2mm算了好久斜率,还差点算错正负)导出成Excel或者MATLAB的.mat文件,直接插论文里就行。

昨天我用这个程序,把我自己做课程作业拼的磨耗LMA踏面,和1-148程序自带的CN60轨头,还有我在知网找的旧资料里的磨耗CN60轨头,分别算了一遍横移-10到+10mm的等效锥度,旧资料里的磨耗等效锥度居然是0.3!课程作业要求的踏面锥度范围是0.1-0.4,刚好符合,省了我重新拟合磨耗踏面的时间,拟合残差点真的是个苦差事。

不过这个程序也有个小缺点,就是硬抓的“接触候选区”是1mm垂向内的轨头,要是碰上个磨耗特别严重的轨头,轨头顶圆弧已经凹下去1mm以上了,那接触候选区就抓不到了,不过这点可以自己改那段核心循环里的“abs(railz - ztopmax) < 1”改成“abs(railz - ztopmax) < 2”或者更大的数,改完之后程序运行速度会稍微慢一点,但也不会卡成PPT,毕竟还是抓了候选区,不是纯遍历。

总体来说,这个1-148的带GUI的MATLAB轮轨接触几何计算程序,真的是入门铁路工程/车辆工程学生的福音,不用啃复杂的几何方程,不用自己写代码拟合残差点(哦不对残差点还是要自己拼,但是程序能实时看拼的好不好,这点也很重要),结果还能直接导出插论文里,调得通能用,昨天玩了一下午,真的太香了。

http://www.jsqmd.com/news/592174/

相关文章:

  • AI开发-python-langchain框架(3-1-向量化 )
  • 3大维度解析Snap Hutao:如何让原神游戏管理效率提升10倍?
  • 智能票务抢购系统:基于Python自动化的全流程解决方案
  • 新手入门:在快马平台动手学习修复synaptics.exe损坏映像错误
  • 霜儿-汉服-造相Z-Turbo效果可视化:CLIPScore与HumanEval双维度古风评分
  • m4s-converter:B站缓存视频本地化处理工具全攻略
  • 利用快马ai快速构建stm32点灯与串口打印原型,十分钟验证硬件
  • 不平衡电网电压下虚拟同步发电机模型预测控制Simulink仿真模型:具有功功率恒定、无功功率恒...
  • 【病变检测】基于matlab CNN视网膜影像检测糖尿病视网膜病变【含Matlab源码 15297期】含报告
  • SEER‘S EYE 模型部署入门:Anaconda环境管理与Python包依赖解决
  • CTF比赛必备:3步掌握无SQL版XSS数据接收平台实战技巧
  • 提升爬虫开发效率:用快马AI智能生成基于claw hub的电商数据采集方案
  • STM32F4的CAN升级方案:包含Bootloader源代码、测试用App源代码及上位机可执行文件
  • 如何在Linux上完美配置DisplayLink多显示器:displaylink-debian终极指南
  • Jasminum插件:3大核心功能如何彻底改变您的中文文献管理体验
  • YimMenu:GTA5游戏防护与体验增强解决方案
  • Pixel Language Portal 玩转 C 语言:数据结构与算法实现代码生成
  • 开源可二次开发的物联网云平台,支持工业设备远程控制与数据采集
  • 如何用NBTExplorer解决Minecraft数据编辑难题?可视化工具提升游戏创作效率
  • 告别繁琐手动配置,用快马一键生成ubuntu开发环境自动化安装脚本
  • 如何在Apex Legends中实现智能压枪辅助:自动武器检测与精准射击终极指南
  • 3大技术突破!智能预约系统革新抢购体验:从原理到实战的自动化工具全解析
  • Blender 3MF插件:3步颠覆传统3D打印工作流
  • YimMenu:GTA V安全防护与体验增强工具深度指南
  • Windows苹果设备驱动深度解决方案:从问题诊断到未来适配
  • 终极指南:如何用ComfyUI-MimicMotionWrapper实现AI动作迁移
  • 智能修复键盘连击问题:KeyboardChatterBlocker全场景应用指南
  • 基于改进粒子群算法的DG储能选址定容模型优化解决电力系统问题
  • 音频格式解密:QMCDecode打破音乐文件跨平台播放壁垒
  • 【地震】基于matlab GUI 2维声波变密度地震波数值模拟(采用10阶及以上空间精度和2阶时间精度的有限差分,结合PML吸收边界)【含Matlab源码 15293期】