ARTICLE DETAIL

资讯详情

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

Simpack中车轮不圆建模三种方法:谐波等效、实测数据与子程序

Simpack中车轮不圆建模三种方法:谐波等效、实测数据与子程序 做轨道车辆动力学仿真的对“车轮不圆”这个词应该都不陌生。Simpack里面默认的轮对是理想的圆截面但实际线路上跑久了踏面会出现偏心、椭圆甚至十几阶多边形磨耗这些不圆度会通过轮轨接触变成周期激励直接影响轮轨力、构架振动和疲劳寿命。问题是Simpack的图形界面里找不到“车轮不圆”这个设置项想表达它就得用别的路子。这篇文章把我常用的三种定义方法全盘托出——谐波不平顺等效、实测数据文件法、用户子程序法附带每一步的详细参数设置和踩坑记录适合刚入门Simpack轮轨建模、或正在做踏面磨耗和异常振动分析的工程师参考。1. 车轮不圆的数学描述与Simpack的建模空白1.1 一个老生常谈但必须说清的问题不圆到底“不”在哪车轮不圆在工程上可以抽象成一句话滚动半径随车轮转角发生周期变化。把它写成数学形式就是r(θ) r0 Σ Aₙ·sin(n·θ φₙ)其中 r0 是名义滚动半径θ 是车轮滚转角n 是不圆阶次Aₙ 是第 n 阶的幅值φₙ 是相位。这里 n1 对应偏心车轮几何中心与旋转中心不重合等效于一个“偏心圆”n2 是椭圆化n3 到 6 是常见的低频波浪磨耗高速列车上更常见的是 n18 到 25 阶的高阶多边形磨耗。为什么这件事在动力学仿真里这么重要因为不圆度每滚一圈就会产生 n 次轮轨激励。以直径 840mm 的动车组车轮为例滚动一圈走过的距离是 Lπ·D≈2.639m。如果列车以 300km/h83.3m/s运行车轮转动频率约 31.6Hz如果踏面存在 20 阶多边形磨耗激励频率就是 20×31.6≈631Hz。这个频段正好落在转向架构架弯曲模态、轴箱弹簧高频隔振段附近很容易激起异常振动。很多现场“查不出原因”的构架加速度超标最后都追溯到高阶车轮不圆。1.2 Simpack默认轮轨模型的盲区在哪里用过Simpack的人都知道它的轮轨接触建模核心是二维断面廓形。车轮路面廓形和轨头廓形在一个横向剖面内求接触点接触几何接触点位置、等效滚动半径、接触角只与轮对的横向位移 y 和摇头角 ψ 有关和车轮滚转角 θ 没有任何关系。换句话说在默认的刚体轮对模型里Simpack认为车轮是一个完美的旋转体——沿着圆周方向每个角度的半径都是一样的。你在SMP里修改路面廓形可以表达踏面磨耗后的横向形状变化比如磨耗后等效锥度变大但表达不了“同一半径处沿圆周方向的半径偏差”。这就是Simpack建模流程里一个很隐蔽的缺口不是软件做不了而是默认模型里没有这个维度。明白了这个缺口你就理解为什么后面三种方法都绕开了“直接改轮对几何”这条路——我们本质上都是在用不同的方式把“圆周方向的半径偏差”翻译成Simpack能理解的语言。1.3 三条路线怎么选先看一张总表在展开细节之前先把三条路线的本质区别说透路线核心思路数学本质对轮对旋转动力学的影响谐波不平顺等效把半径偏差折算成轨面垂向不平顺位移输入等效不体现实测数据文件法把实测不圆度展开成里程域不平顺位移输入等效不体现用户子程序法在轮轨接触计算中直接叠加径向偏差接触几何修正完整体现第一条和第二条本质上都是“等效激励”它们不改变轮对模型本身而是改变轮轨接触点的输入第三条是“物理建模”直接在接触几何层面把不圆写进去。选哪条路取决于你问的问题是什么。下面逐一展开。2. 路线一谐波不平顺等效——把“车轮问题”变成“轨道问题”2.1 等效公式推导从滚动半径偏差到轨面垂向偏差谐波等效法的原理非常直白。假设车轮存在第 n 阶不圆径向偏差为 Δr(θ)A·sin(n·θ)。当这个车轮在刚性轨面上滚动时轮对中心的垂向位置会随转角产生波动Δz(t) A·sin(n·ω·t)这里 ω 是车轮转动角速度。如果车轮以速度 v 沿轨道运行车轮滚动角度与运行里程 s 的关系是θ s / R其中 R 是车轮半径。代入之后等效轨面垂向不平顺就是关于里程 s 的正弦函数η(s) A·sin(2π·s/λ)等效波长 λ 为λ π·D / n激励频率 f 为f n·v / (π·D)为什么要除以 πD 而不是 2πR因为πD 就是车轮滚动一圈在轨道上走过的距离这是做轮轨激励频率估算时最容易算错的地方。很多人习惯性用 2πRπD其实是一样的但写公式时用 πD 更不容易搞混。这个等效关系成立的前提是轮轨始终接触、且钢轨近似刚性。对于垂向动力学响应分析这个近似足够好但要注意它忽略了两件事一是 1 阶偏心的质量不平衡效应质心偏离旋转中心产生的离心力二是轮轨接触几何随转角变化的细微波动力如接触点位置和接触角的改变。2.2 一个实际算例20阶多边形从阶次到不平顺文件全流程直接给一个可以抄作业的例子。假设车轮直径 D0.84m运行速度 v200km/h55.56m/s要模拟的阶次 n20不圆幅值 A0.05mm半径方向第一步算等效波长λ π·D/n 2.639/20 ≈ 0.132m第二步算激励频率f n·v/(π·D) 20×55.56/2.639 ≈ 421Hz第三步生成不平顺文件。在里程 0~100m 范围按采样间隔 0.001m1mm生成η_left(s) 0.05·sin(2π·s/0.132) 左轮 η_right(s) 0.05·sin(2π·s/0.132 φ) 右轮φ为左右轮相位差每个正弦周期约 132 个采样点足够还原波形。采样间隔的选择有一条经验规则每个等效波长至少 20~30 个点。如果采样点太少正弦波的峰值会被削平等效幅值变小仿真结果会系统性偏低。0.001m 的采样密度在 100m 里程下会产生 10 万行数据文件大小完全可接受Simpack加载也没有压力。2.3 SMP操作细节与参数填写的四个关键检查点有了数据文件接下来就是SMP里的操作。以Simpack的轨道不平顺设置模块为例流程如下在SMP中新建一条不平顺Rail Irregularity选择数据文件格式。常见格式是七列纯文本第一列里程m第二列左轨垂向不平顺mm第三列右轨垂向不平顺mm第四列左轨横向不平顺mm第五列右轨横向不平顺mm第六列左轨侧滚角mrad第七列右轨侧滚角mrad。用不上的列填0即可。加载文件后Simpack会显示不平顺的统计信息和频谱预览。这个时候检查四个关键参数检查点一单位。文件里默认是mm如果你的数据源是μm一定要先除1000否则相当于幅值放大了1000倍轮轨力会直接爆表。检查点二采样率和截止频率。SMP内部会对不平顺文件做重采样如果原始采样间隔太大高频成分会被截断。建议文件采样间隔不大于 λ/20。检查点三起始里程对齐。轮轨对绑定不平顺文件时要注意轨道起点与文件起点的对应关系。错位一个采样点相位就偏了而相位偏差直接改变轮轨力峰值位置。检查点四左右轮相位。在文件里左轨和右轨的垂向不平顺列是独立的。如果希望左右轮同相两列填一样的序列如果希望反相右列左移半个波长如果希望特定相位差按公式计算后填入。在轮轨对Rail/Wheel Pair属性里把这条不平顺分配给对应的轮对并确认左右轨方向正确。这一步完成后运行仿真即可。2.4 这条路线最容易翻车的地方我在实际项目里见过不少人在谐波等效法上栽跟头归纳起来有三类相位方向反了。车轮不圆有凸起也有凹陷凸起对应轮对中心向上位移凹陷对应向下位移。等效到轨面不平顺上凸起相当于轨面“上抬”凹陷相当于“下塌”。如果你在文件里把正负号搞反轮轨力的相位会完全颠倒。最稳妥的办法是先跑一个极小幅值比如0.005mm的工况看轮对垂向位移方向是否符合物理直觉确认后再放大到目标幅值。叠加方式错了。一个常见误区是原来模型已经加了一条轨道不平顺文件于是再新建一条不圆文件在轮轨对里同时绑定两条。Simpack的轮轨对默认只能绑定一条不平顺文件你这样操作要么报错要么后加载的覆盖先加载的。正确做法是把不圆谐波直接叠加到已有的不平顺文件列里生成一个新的文件再替换原文件。频率超出采样能力。Simpack仿真结果的最大有效频率取决于求解器步长。如果你把 600Hz 的高阶不圆定义进去了但积分步长太大比如 1e-4s对应的奈奎斯特频率只有 5kHz虽然 600Hz 没有混叠但高频段幅值响应可能被数值阻尼衰减得很厉害导致仿真结果偏小。跑高频不圆工况步长建议不大于 1/(50×f_max)。3. 路线二实测不圆度文件法——从测试台上搬到仿真模型里3.1 测试数据整理三步走角度域展开、左右轮对齐、单位换算实测路线比谐波法多了一步“真实数据”。轮对不圆度测量一般用激光轮廓仪或专用轮对测量台输出的是车轮圆周方向一圈的半径偏差采样密度可以达到每圈 4096 点甚至更高。把这些数据变成Simpack能用的不平顺文件需要按三步整理第一步角度域展开成里程域。原始数据是按角度 θ 采样的而轨道不平顺是按里程 s 采样的。利用 sR·θ 做坐标变换把半径偏差序列映射到里程轴上η(s_i) Δr(θ_i), s_i R·θ_i如果一圈是 360 个点那么等效到里程域后相邻点的间距就是 πD/360≈7.3mm。这个间距对于高阶不圆如 25 阶波长约106mm来说偏大每波长只有约14个点勉强够用但不理想。因此建议在角度域先做插值加密到 1024 点以上再展开成里程域。第二步左右轮对齐。实测数据里左轮和右轮是分开测量的它们之间没有天然的相位参考。如果轮对上有安装相位标记装配时留下的刻线或键槽一定要利用标记把左右轮对齐到同一里程基准如果没有标记只能用“左右轮同相”“左右轮反相”两种极端工况做包络分析。这一步直接决定后续仿真左右轮相位差是否可信是实测法里最容易被忽略的环节。第三步单位换算。测量台输出的半径偏差通常是 μm 或 0.1mm 精度而Simpack不平顺文件要求 mm。我见过不止一次把 μm 数据直接粘贴进文件的情况结果仿真出来的轮轨力比预期大了上千倍整个时域曲线跟地震记录似的。3.2 数据滤波和重采样直接决定仿真成败实测数据不是拿来就能用的。轮对测量台的分辨率很高但同时会混入踏面粗糙度、表面划痕、测量噪声等高频成分。这些信号虽然幅值很小几μm但在 600Hz 以上的频段会被数值求解放大导致轮轨力出现大量虚假高频振荡。我的处理流程是粗大误差剔除删掉明显跳变的坏点如踏面擦伤起始处的异常尖峰用相邻点插值填补。带通滤波根据研究目标选择保留的阶次范围。如果关注 2~25 阶多边形磨耗就用带通滤波器滤掉低于 1 阶的趋势项和高于 40 阶的噪声。这里用零相位滤波避免引入相位偏移。重采样将角度域数据重采样为等里程间隔间隔取最小等效波长的 1/30 左右。比如你关心的最高阶次是 30 阶对应波长 λ_minπD/30≈88mm采样间隔取 2mm 足够。平滑如果重采样后波形仍然粗糙可以对相邻 3~5 个点做滑动平均。平滑会略微削减峰值幅值但减小数值振荡的效果非常明显。3.3 用FFT验证数据质量哪些阶次是真实的哪些是噪声把实测数据生成文件之前我强烈建议先对数据本身做一次FFT分析。这一步能帮你确认“这个不圆度数据到底包含了哪些阶次”避免把测量噪声当磨耗特征输入仿真。操作很简单把角域数据 Δr(θ) 做离散傅里叶变换横轴转为阶次 n。正常的磨耗数据谱线应该集中在少数几个阶次上比如 3 阶、12 阶、23 阶如果FFT结果是一片均匀的宽带噪声说明测量精度不够或者数据处理有问题这个数据不适合直接用作动力学输入。做完FFT你还能得到每个主导阶次的幅值和相位。把相位信息保留下来后续做左右轮相位差分析就有依据了。3.4 相位差建模同相、反相与包络仿真的操作方法实测数据文件法最常见的项目应用是排查“某一速度区间构架横向加速度异常”的问题。这时候只跑一组仿真是远远不够的因为现场检测往往无法确定左右轮不圆的准确相位关系。我的做法是生成三组文件同相文件左右轮不圆在同一里程位置幅值相同、相位相同反相文件右轮序列左移半个等效波长实测相位文件按左右轮实测FFT相位差填入三组分别跑完取轮轨力、构架加速度响应的包络线。如果实测异常振动幅值落在包络内说明不圆是主因如果比包络最大值还大很多那就要另外查转向架悬挂参数或轨道不平顺的作用。4. 路线三用户子程序法——把不圆写进轮轨接触几何4.1 为什么等效法解决不了1阶偏心和接触冲击前两条路线都是把不圆“搬到轨道上”优点是快代价是丢了一些物理信息。最典型的就是 1 阶偏心。车轮偏心意味着质心不在旋转中心上当轮对高速旋转时会产生一个与转速平方成正比的离心力F_c m_e·e·ω²其中 m_e 是轮对等效质量e 是质心偏心距。这个力会直接通过轴箱传递给构架是轮对动平衡问题的核心。等效不平顺法只是让轮对中心做了个周期垂向位移完全体现不了这个离心力。另外车轮扁疤、踏面剥离等局部缺陷会在滚过接触区时产生强烈的瞬时冲击。等效不平顺法用一条正弦波去近似这种冲击相位和幅值都对不上。这类问题必须回到接触几何层面在每一帧计算中实时修改滚动半径和接触点位置——这就是用户子程序法存在的意义。4.2 子程序的核心逻辑与接口伪代码Simpack支持通过用户子程序自定义轮轨接触行为具体实现方式不同版本略有差异但核心逻辑是一致的在每一时间步程序会调用用户函数来获取轮轨接触几何参数我们在函数里根据当前滚转角修正这些参数。伪代码如下! 输入轮对滚转角 THETA ! 输出径向偏差 DR FUNCTION DELTA_R(THETA, N, A, PHI) DELTA_R A * SIN(N * THETA PHI) END ! 轮轨接触子程序主体 SUBROUTINE RW_OOR(...) ! 1. 读取轮对marker的滚转角注意是绕轮对自身轴线的角度 THETA SYS(...) ! 2. 计算当前转角下的径向偏差 DR DELTA_R(THETA, N, A, PHI) ! 3. 修正等效滚动半径 R_ROLL R_NOMINAL DR ! 4. 修正轮轨法向间隙 GAP GAP_NOMINAL - DR ! 5. 返回修正后的几何参数给接触求解器 END这里有两个容易出错的地方。首先是滚转角的读取Simpack轮对marker的滚转角是绕本地坐标系的 x 轴或者你建模时约定的转轴定义的旋转方向的正负号必须和你的不圆相位定义一致。其次只修滚动半径、不修法向间隙是常见错误。滚动半径影响蠕滑率和切向力法向间隙影响法向力和接触位置两个都要改否则接触几何解出来是自相矛盾的仿真结果会出现奇怪的振动。4.3 编译、加载和跑通的完整验证流程用户子程序写成之后编译加载本身也是一个容易卡住的环节。我的建议流程是确认Simpack版本对应的编译器版本用官方支持的编译器不要用最新版编译器去编旧版Simpack的子程序否则会出现莫名其妙的符号链接错误。先用一个最小例子比如固定返回 0 的子程序编译加载跑通空转确认接口调用正常。再加入径向偏差逻辑先用 1 阶、0.01mm 的小幅值验证。跑一个 20m 直线工况检查轮对垂向位移是否为幅值等于 0.01mm、频率等于 n·v/(πD) 的正弦波。验证通过后切换到目标阶次和幅值检查轮轨力频谱峰值是否出现在 n·f_rot 处。第 3 步的“小步验证”特别重要。我第一次写的时候直接上了 20 阶幅值 0.05mm 的工况结果时域曲线乱成一团根本看不出是相位设反了还是幅值太大了。退回 1 阶 0.01mm一眼就发现垂向位移方向反了半天就解决了问题。4.4 子程序法提高精度背后的代价用户子程序法的计算代价比前两种高不少。因为每一帧都要额外调用用户函数做接触几何修正而且修正后的接触几何往往更“粗糙”接触求解迭代次数增加。实测下来同样的模型和工况子程序法比不平顺等效法慢约 20%~50%。如果只是做参数扫频不建议全程使用子程序法。更合理的策略是先用等效不平顺法扫出敏感工况再用子程序法对敏感工况做精细确认。两个方法的差异如果小于 5%说明问题本身对建模细节不敏感如果差异很大反而说明这个工况对接触几何细节很敏感值得深入研究。5. 三条路线的横向对比与组合打法5.1 一张表说清精度、成本和适用边界比较维度谐波不平顺等效实测数据文件法用户子程序法实现方式数学公式生成文件实测数据转文件编写子程序建模精度中中偏高高1阶偏心力矩无法体现无法体现完整体现左右轮相位控制自由控制可控制但需对齐自由控制所需时间半天内1~2天1周左右计算成本最低低中高典型应用参数扫频、阶次研究复现实测异常振动磨耗演化、接触机理研究5.2 我推荐的工作流先扫频、后复现、再精算在实际项目中我几乎不会只用一种方法。标准流程是第一轮用谐波等效法快速扫频。改变阶次 n比如 1~30 阶改变幅值 A0.02mm~0.1mm改变车速 v80~350km/h计算每个工况下的最大轮轨力、构架振动加速度得到一张敏感度云图。这一轮跑得快能迅速圈出危险频段和危险车速。第二轮用实测数据文件法复现现场问题。把实测不圆度数据转换后代入模型对比仿真响应和现场实测响应。如果量级和频率都吻合说明模型可信如果不吻合检查数据整理环节相位对齐、滤波或悬挂参数。第三轮对最危险的少数工况用子程序法精算。重点看轮轨冲击、接触几何变化对结果的影响有多大必要时结合柔性轮对模型进一步分析车轮结构应力。5.3 结果校验的硬指标时域周期、FFT峰值与基线对比不管用哪种方法定义跑完之后一定要做三步校验时域周期校验轮轨垂向力的峰值间隔应该等于一个车轮滚动周期 TπD/v。如果间隔对不上说明里程长度或采样设置有问题。FFT峰值校验对轮轨力做FFT主峰应该在对应阶次的激励频率处。如果主峰出现在 2 倍频率上多半是数据文件波形有半波整流现象比如凹陷处轮轨力被削零需要检查不平顺幅值是否太大导致轮轨脱离。基线对比校验同一模型跑一遍不加不圆的基线工况加入不圆后的响应增量应该只在激励频率附近出现。如果低频成分也大幅变化可能是等效公式或子程序逻辑引入了额外的不必要激励。6. 从踩坑里总结出的六条实操经验6.1 单位、符号与列数最容易犯的低级错误先把最容易翻车的三条列出来单位没换算实测数据常用μmSimpack要求mm差1000倍。正负号搞反不圆凸起和凹陷的激励方向相反直接导致轮轨力相位完全颠倒。文件列数不齐全有的Simpack版本要求不平顺文件必须七列齐全缺列会报错或静默读取为0。我习惯统一生成七列哪怕后面的横向和侧滚列全填0这样换版本、换机器都不会出问题。6.2 采样密度与截止频率的平衡不平顺文件不是越密越好。每波长 20~30 个点足够还原正弦激励再密只是增加文件体积和加载时间。但要注意数据文件的采样密度必须和求解步长匹配如果文件采样间隔远小于求解步长Simpack在重采样时反而可能产生高频假信号。我的经验组合对 20 阶不圆波长约132mm文件采样间隔 1mm、求解步长最大 2e-4s。这样每波长约132个点500Hz 以内的激励都能准确表达。6.3 用基线工况定位问题比盲目调参数更高效遇到仿真结果不合理不要直接怀疑模型先加一条纯谐波小幅值不圆比如 1 阶 0.01mm跑一遍。如果这个简单工况都不对那就是定义逻辑或数据文件的问题如果对再逐阶增加复杂度。用这个方法我排查过好几次子程序振源方向、不平顺文件单位错误的问题比盯着参数盲找效率高得多。6.4 长距离仿真如何控制计算成本做磨耗演化或疲劳分析时往往需要仿真几百公里。这时候如果全程跑高阶不圆用户子程序计算量会非常可观。我的做法是分两阶段先用谐波等效法跑完后处理统计如等效锥度变化、临界速度只在磨耗累积的关键里程段引入子程序法精算避免全程重计算。6.5 版本差异与接触算法选择不同Simpack版本对用户子程序的接口定义、不平顺文件格式的兼容性是有差异的。老版本可能只支持固定长度的数组接口新版本改成了开放接口。从我接触过的项目看升级版本后最容易出问题的就是用户子程序其次是老的不平顺文件在某些版本里会自动补零处理。另外定义高阶不圆后轮轨法向力会出现高频冲击默认接触算法有可能出现数值振荡。遇到这种情况优先检查求解步长是否足够小再考虑调整接触刚度参数或切换到更稳定的接触求解器。调整接触算法会显著增加计算时间但换来的是轮轨力时域曲线的真实性值得做。6.6 左右轮相位差不是可有可无的参数最后说一个最容易被忽略的参数左右轮不圆的相位差。很多初学者的第一直觉是“左右轮不圆肯定是同相的”但实际现场测量发现多边形磨耗的左右轮相位差往往落在 0° 到 180° 之间而且不同阶次的相位差不一样。相位差直接影响轮对的摇头耦合。同相激励主要激起轮对垂向振动和浮沉模态反相激励会激起侧滚和摇头运动进而影响轮轨横向力和脱轨系数。所以不要偷懒只跑同相工况至少要做同相、反相两组最好按实测相位差精确建模。在我做过的几个项目里最典型的一个案例是谐波法扫频显示 19 阶不圆在 250km/h 下轮轨力峰值并不高但现场实测构架振动很大。后来实测了车轮不圆度发现主导阶次是 18 阶和 20 阶同时存在且左右轮相位差约 90°这种组合产生了一个低频拍频包络恰好撞上了构架的一阶弯曲模态。谐波法只模拟单一阶次、默认同相自然捕捉不到这个现象。从那以后我做高阶不圆分析时至少会考虑两个相邻阶次的叠加和左右轮相位差的影响不再只看单一阶次的结果。这算是我从实践里得到的一条重要体会分享出来供大家参考。
返回列表