ARTICLE DETAIL

资讯详情

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

角接触球轴承热力耦合分析:从赫兹接触到预紧力-温度反馈闭环

角接触球轴承热力耦合分析:从赫兹接触到预紧力-温度反馈闭环 简介针对数控机床进给系统成对角接触球轴承的热力耦合性能分析这份论文复现资料给出从理论推导到代码实现的一体化解法。资源面向机械工程背景的科研人员、精密装备工程师及高校师生聚焦赫兹接触理论、热网络模型与动态热力耦合算法的工程落地可帮助读者理解转速和外部载荷对轴承摩擦接触特性及热力学行为的时变影响进而掌握非线性热行为下接触状态的预测方法。资源包内共1个文件为PDF格式大小约732KB文档不仅梳理了模型建立与数值计算流程还提供了完整的Python代码实现覆盖赫兹接触参数求解、热网络节点生热与温度响应计算、以及热力耦合迭代分析三个模块并附试验验证和可视化结果说明便于教学演示和实际参数调整。目前已有108人学习浏览读者可对照代码逐段理解求解过程依据具体轴承规格改写输入参数评估不同工况下的热负荷与接触特征为轴承选型、结构优化和可靠性提升提供量化参考。1. 角接触球轴承热力耦合分析为什么进给系统必须先算接触再算热在数控机床进给系统里角接触球轴承同时承担两件互不相让的事既要靠预紧力把刚度顶起来又要长期忍受丝杠高速旋转产生的摩擦热。温度一旦上来内圈膨胀、预紧力改变、刚度跟着漂移发热量又随载荷变化——这个闭环比大多数刚接触复现工作的人预想得更敏感。这篇笔记会把“热力耦合性能分析”拆成三步走先用赫兹接触理论把接触变形、轴向刚度和摩擦发热量算对再建一个可手算的热网络模型承接温度场最后用动态迭代把“温度→热位移→预紧力→发热量”这条反馈回路跑起来。适合正在复现轴承热特性相关论文、或想把进给系统定位误差从温度侧找原因的从业者代码可以直接改参数后重跑。2. 用赫兹接触理论先拿下接触变形与刚度进给轴承的静力学前置2.1 角接触球轴承的曲率和与接触变形公式选择赫兹接触理论在这里的角色不是“给你应力云图”而是提供两个可量化结果球与滚道在某个径向/轴向载荷下的接触变形量δ以及由δ随载荷变化的斜率所定义的接触刚度。对轴承进给系统复现来说最常用的是Palmgren弹性接近量公式它是一种把赫兹点接触结论工程化的表达式[ \delta c \cdot \frac{Q^{2/3}}{D_w^{1/3}} ]其中 (Q) 是单个滚动体上的法向接触载荷N(D_w) 是球直径mm(c) 是综合弹性接近系数钢质球与钢质滚道时取 (4.4\times10^{-4}) 左右。这个式子避免了直接求解赫兹椭圆积分精度在工程复现范围内完全够用也比一轮轮调材料弹性模量省时间。为什么刻意用“接触变形”而不是“接触应力”来切入因为后面对热力耦合起作用的是刚度——预紧力变化会直接改变QQ改变又引起δ和刚度改变。而接触应力大不大对热网络里摩擦生热的影响是间接的对预紧漂移的影响更远。做赫兹理论计算时优先保证变形-载荷曲线的斜率合理再谈最大应力是否超限。角接触球轴承的几何准备首先是把曲率和 (\sum \rho) 算出来这部分直接影响球滚道接触椭圆尺寸但在Palmgren近似公式里已经不显式出现隐没在了系数c里。那么真正需要设定的是球数Z、接触角α、节圆直径 (D_{pm})、球径 (D_w) 和滚道沟曲率半径。这些参数在轴承型号表里都能查到复现时不要凭手感填否则后面所有的Q和发热量都是空中楼阁。2.2 用赫兹理论算单球载荷、轴向刚度和摩擦力矩一段演示代码先看一段最小的代码把“轴向预紧力F → 单球法向载荷Q → 接触变形δ → 轴向刚度 k_a → 摩擦力矩M → 发热功率W”这条链路一次走通import numpy as np # 进给系统丝杠支撑轴承近似参数常以60°或25°接触角为主这里用25°示例 D_w 9.0 # 滚动体直径mm Z 14 # 滚动体数量 alpha 25.0 # 接触角度 D_pm 42.0 # 节圆直径mm n 1500 # 转速rpm F0 800.0 # 初始预紧力(轴向)N mu 0.0025 # 摩擦系数跑合后经验值 alpha_rad np.deg2rad(alpha) # 1) 单球法向载荷轴向力由Z个球按sin(alpha)方向分担 Q F0 / (Z * np.sin(alpha_rad)) # 2) Palmgren 弹性接近量δ 单位 mm c 4.4e-4 delta c * Q**(2/3) / D_w**(1/3) # 3) 轴向刚度用数值微分求 dF/d(轴向变形)轴向变形 delta / sin(alpha) F_up F0 * 1.01 Q_up F_up / (Z * np.sin(alpha_rad)) delta_up c * Q_up**(2/3) / D_w**(1/3) delta_ax_up delta_up / np.sin(alpha_rad) delta_ax_0 delta / np.sin(alpha_rad) k_a (F_up - F0) / (delta_ax_up - delta_ax_0) # N/mm # 4) 摩擦力矩简化模型M 0.5 * mu * F_a * D_pm注意单位换算 M_n_mm 0.5 * mu * F0 * D_pm # N*mm M_n_m M_n_mm / 1000.0 # N*m # 5) 发热功率 W 0.105 * n * M(单位N*m) W_total 0.105 * n * M_n_m print(fQ{Q:.1f} N, delta{delta*1000:.2f} um) print(f轴向刚度 k_a{k_a:.1f} N/mm) print(f摩擦转矩 M{M_n_m*1000:.1f} mN*m, 发热量 W{W_total:.2f} W)这段代码里最关键的是两个换算一是单球载荷与轴向预紧力之间的 (1/(Z\sin\alpha)) 换算它决定Q的大小二是轴向变形与接触变形之间的 (1/\sin\alpha) 换算它决定轴向刚度是否被正确放大。原本 (Z14) 只分担轴向力的一部分如果直接把F0当Q用δ会偏大近一个数量级后续发热量也跟着错。摩擦力矩这里用的简化模型只能用来复现趋势代替不了SKF力矩模型或Palmer模型。进给系统轴承常用“低摩擦、高预紧”工况两个模型的差异主要出现在混合润滑区和贫油状态。做论文复现时应该把μ当校准量而不是固定常数后面避坑章会专门讲跑合前后μ怎么取。2.3 为什么刚度要选“当前预紧点”的斜率而不是出厂刚度不少论文把轴承刚度直接取成一个恒定值这在热力耦合里是硬伤。因为进给系统丝杠运转后温升带来轴向热伸长预紧力发生变化轴承工作点沿着赫兹接触的“载荷-变形”曲线上下滑动。刚度是曲线切线的斜率工作点移动斜率就必须跟着变。你回看上一节代码轴向刚度我是用 (F_0) 附近1%载荷增量做数值微分求出来的没有用解析公式。原因很简单解析式里的系数在不同接触角、不同预紧力等级下适用范围差别很大每个复现项目都去推一遍不现实数值微分的代价只是两行代码精度却永远贴着当前载荷。后续做动态耦合时每个时间步都要重新算一次这个斜率你不可能用手算公式去维护它。从工程角度看进给系统的轴向刚度直接影响反向间隙和位置环增益。预紧力往上涨刚度上升发热增大预紧力往下掉刚度疲软反向间隙变大。这两条路都不健康所以复现目标通常是找到“预紧力随温升漂移的曲线”这才是热力耦合分析最核心的输出之一。3. 把轴承拆成热网络前支承节点的热阻表与热平衡方程3.1 热网络节点划分球、内圈、外圈、丝杠与壳体热网络模型的本质是把连续温度场离散成若干个集总参数节点每个节点有温度、热容、发热量与相邻节点之间用热阻连接。对进给系统前支承里的角接触球轴承最小可用节点可以分为五类丝杠轴节点 (T_s)与内圈直接接触沿轴向导热到整个丝杠内圈节点 (T_i)内圈质量小、热容低温度变化快是热变形的主要源头滚动体节点 (T_b)球既受摩擦热又把内圈热量搬运到外圈但它本身热容小、时间常数短外圈节点 (T_o)承接滚动体传来的热向轴承座/壳体散热壳体节点 (T_h)外圈到机床大件之间的过渡热阻所在。发热源放在哪里争论最多。常见做法是把摩擦热分成两块约2/3发生在内圈-球接触区1/3发生在外圈-球接触区。简单起见也可以等效成一个热源放在滚动体节点上再把热流按接触热阻比例分流到内外圈。我这里选后者来实现因为它最容易复用也最容易对照试验数据。3.2 三档热阻取值范围固体传导、接触热阻、对流换热热阻参数决定温度分布是否可信。复现论文时最容易卡住的就是这里。按我的经验进给轴承热网络有三种热阻要分别对待热阻类型所在位置典型量级说明固体导热阻内圈/外圈/轴0.5~5 K/W与材料导热率和径向长度有关变化小球-滚道接触热阻球与滚道之间20~200 K/W与接触面积、润滑状态强相关最难准确设定对流散热阻轴伸端/壳体表面50~500 K/W低转速下自然对流为主转速高时需引入强迫对流系数接触热阻最要命的点是它会随载荷变化。载荷大接触面积大热阻变小散热变好载荷小热阻变大。在动态耦合里预紧力变化连带着接触热阻也在变如果把它固定温度响应的斜率就会失真。实现上可以把接触热阻写成 (R_c k_c / Q^{1/3})Q由上一章的赫兹计算得到这样两个物理过程就咬合起来了。3.3 把热平衡方程写成矩阵用numpy一次解出稳态温度为了不把复杂度推到后面热网络用一阶微分方程组表达[ C_i \frac{dT_i}{dt} \sum_j \frac{T_j - T_i}{R_{ij}} W_i ]化简成矩阵形式就是 (C \dot{T} K T W)其中K矩阵的对角线是节点对外的热导负和非对角线是节点之间的互热导。代码实现里常见做法是直接组装K和W再用隐式差分推进。下面给一个四节点版本轴、内圈球、外圈、壳体环境温度作为边界量。import numpy as np from numpy.linalg import solve # 节点编号0轴, 1内圈球, 2外圈, 3壳体, 4环境(固定边界) R_shaft_inner 2.0 # 轴→内圈 热阻 K/W R_inner_ball 45.0 # 内圈球→球滚道 等效接触热阻 R_ball_outer 60.0 # 球→外圈 等效接触热阻 R_outer_case 8.0 # 外圈→壳体 热阻 R_case_amb 30.0 # 壳体→环境 热阻 C np.array([500.0, 300.0, 320.0, 800.0]) # 热容 J/K按质量与比热估算 W np.array([0.0, W_total, 0.0, 0.0]) # W_total 由上一章赫兹发热得到 R np.array([ [1e12, R_shaft_inner, 1e12, 1e12], [R_shaft_inner, R_inner_ball, 1e12, 1e12], [1e12, R_inner_ball, R_ball_outer, 1e12], [1e12, 1e12, R_ball_outer, R_outer_case] ]) # 组装K矩阵k_ij 1/R_ijk_ii 为负和 K np.zeros((4, 4)) for i in range(4): for j in range(4): if i ! j and R[i, j] 1e10: K[i, j] 1.0 / R[i, j] K[i, i] - K[i, j] T_amb 25.0 b W.copy() # 环境节点温度作为常数边界收紧到壳体节点 b[3] (T_amb - 0) / 0.0 # 改为下面这种方式更直观 b W.copy() # 壳体到环境用集总形式放进矩阵环境被消去 K[3, 3] - 1.0 / R_case_amb b[3] T_amb / R_case_amb # 稳态K T b 0注意符号约定K T b T_steady solve(-K, b) # 移项后直接解 print(稳态温度℃, T_steady T_amb)这里的R矩阵非对角元素我故意留了两对 (1e12)表示轴、内圈、球、外圈这四个节点只保留相邻导热路径。矩阵组装逻辑很容易写错的是符号约定(K T b) 还是 (-K T b)要统一好不然求解出来温度比环境还低。numpy.linalg.solve吃的是线性方程组组装完建议先打印K矩阵看对称性对不对再相信温度结果。需要说明的是W_total在前面代码里是标量这里放进了节点1的位置等于把发热量全算在“内圈球”节点上。更严格的分摊应把一部分热源放到节点2按滚动体发热比例调整即可。先跑通这个版本再讨论分细。4. 动态热力耦合的Python实现预紧力-刚度-发热-温度往复迭代4.1 耦合循环的结构从热位移到新预紧力到新发热量动态热力耦合和分开算“温度场”加“应力场”最本质的区别在于每走一个时间步都必须让热结果反过来改边界条件。对进给系统轴承来说这条反馈链是[ T_i \uparrow \Rightarrow \delta_{th} \uparrow \Rightarrow F_a \uparrow \Rightarrow Q \uparrow \Rightarrow M \uparrow \Rightarrow W \uparrow \Rightarrow T_i \uparrow\uparrow ]如果不闭合这个环你只会得到一条温度随时间平滑上升的单调曲线。但真实机床上的温升曲线往往在初始阶段有一个斜率变化原因是预紧力上升导致发热加剧系统出现了正反馈等到外圈和壳体散热端温度也上来、温差收窄后曲线再次走平。这个“拐点”只有耦合计算能捕捉到。实现上每个时间步要做四件事用当前内圈温度算热变形 (\delta_{th}\alpha_L\cdot D_{pm}\cdot\Delta T)用赫兹刚度把热变形折算成预紧力增量用新预紧力重算摩擦力矩和发热功率把新发热功率送进热网络推进一个时间步。刚度、发热量、热阻都要随载荷刷新这是和“顺序耦合”最关键的差别。4.2 完整的耦合求解代码与关键参数下面给一段可以直接跑的耦合结算代码包含了上一章的热网络矩阵推进和本章的耦合逻辑。时间步长dt取0.5秒总时长1800秒对应机床开机后半小时的温升过程。import numpy as np from numpy.linalg import solve # ---------- 轴承与工况 ---------- D_w, Z, alpha, D_pm, n 9.0, 14, 25.0, 42.0, 1500 F0, mu0 800.0, 0.0025 alpha_rad np.deg2rad(alpha) # 材料与热膨胀 alpha_L 11.5e-6 # 钢的线膨胀系数 /℃ E_mod 206e3 # 弹性模量 MPa备用 # ---------- 热网络固定参数 ---------- C np.array([500.0, 300.0, 320.0, 800.0]) T_amb 25.0 T np.array([25.0, 25.0, 25.0, 30.0]) # 初始温度轴/内圈/外圈/壳体 R_shaft_inner, R_inner_ball 2.0, 45.0 R_ball_outer, R_outer_case 60.0, 8.0 R_case_amb 30.0 def assemble_K(): K np.zeros((4, 4)) res [(0,1,R_shaft_inner), (1,2,R_inner_ball), (2,3,R_ball_outer)] # 注R_inner_ball和R_ball_outer随载荷变化这里先固定后面可扩展 for i,j,r in res: g 1.0/r K[i,j] g; K[j,i] g K[i,i] - g; K[j,j] - g K[3,3] - 1.0/R_case_amb return K K assemble_K() def heat_generation(F_a, mu): Q F_a / (Z*np.sin(alpha_rad)) M 0.5 * mu * F_a * D_pm / 1000.0 # N*m W 0.105 * n * M return Q, W def axial_stiffness(F_a): # 用数值微分求当前预紧力下的轴向刚度 dF F_a * 0.01 F2 F_a dF Q1 F_a / (Z*np.sin(alpha_rad)) Q2 F2 / (Z*np.sin(alpha_rad)) c 4.4e-4 d1 c * Q1**(2/3) / D_w**(1/3) / np.sin(alpha_rad) d2 c * Q2**(2/3) / D_w**(1/3) / np.sin(alpha_rad) return dF / (d2 - d1) # N/mm # ---------- 时间推进 ---------- dt, t_max 0.5, 1800.0 steps int(t_max/dt) F F0 hist [] for t_idx in range(steps): # 1) 热位移内圈温度驱动轴向膨胀 delta_th alpha_L * D_pm * (T[1]-T_amb) # mm # 2) 预紧力随热位移变化 k_ax axial_stiffness(F) F F0 k_ax * delta_th # 3) 用新预紧力算发热量 Q_now, W_now heat_generation(F, mu0) # 4) 热网络推进隐式欧拉 b np.zeros(4) b[3] T_amb / R_case_amb W_vec np.array([0.0, W_now, 0.0, 0.0]) A C/dt - K # 注意K符号K T b 形式 rhs C/dt*T W_vec b T solve(A, rhs) hist.append([T[0], T[1], T[2], F, W_now]) # 转为数组并打印几个关键时刻 hist np.array(hist) for i in [0, 300, 600, 1800]: print(ft{i*dt:.0f}s 轴温{hist[i,0]:.2f}℃ 内圈温{hist[i,1]:.2f}℃ 外圈温{hist[i,2]:.2f}℃ 预紧力{hist[i,3]:.0f}N 发热量{hist[i,4]:.2f}W)这段代码的数值稳定性由 (A C/dt - K) 保证当dt远小于系统最小时间常数时稳定。30秒内可以看到预紧力随温度上升而增大发热量从启动时的5.3W慢慢抬升内圈温升最快外圈次之轴因为靠近内圈也升温。跑完请确认预紧力变化幅度是否在几十N到一两千N范围内如果偏离太多先查 (k_{ax}) 和 (\delta_{th}) 的传播方向——常见错误是热位移符号取反预紧力算成下降曲线形态完全反转。4.3 结果判读温升、预紧力与刚度的曲线该长什么样合格的耦合结果应该有三个可被物理校验的特征一是内圈温度比外圈高2~5℃且温差随转速和预紧力增大而扩大。如果你仿真出内外圈温度几乎一致首先怀疑球-滚道接触热阻取太小热量从球体外圈分流的比例不对。二是预紧力曲线从初始值出发先快速上升后逐渐走平。如果预紧力持续线性暴涨说明热网络里外圈到壳体的散热路径是断的系统没有平衡能力。实际轴承座的散热能力只要不是绝热半个小时后温升都会收敛。三是发热量曲线与温度曲线同相位上升但幅度收敛更快。发热量最终应稳定在一个比初始值高10%~20%的水平。如果发热量翻倍增长说明预紧力已超出轴承设计范围程序里的人为假设已经不成立需要回到参数表检查预紧力等级上限。我做过几个不同机型的复现最常用到的验证数据是主轴或丝杠支撑轴承外圈的温度实测点。把仿真外圈温度与红外测温枪或贴片热电偶的数据叠在一起看温差在3℃以内就算模型可用。超过3℃优先怀疑接触热阻 (R_{inner/outer}) 和摩擦系数 (\mu)而不是调整热容热容只影响响应时间不影响最终稳态温度。5. 复现这类热力耦合论文的5个常见坑与排查办法5.1 接触角方向用错轴向力成径向力刚度偏了一倍现象算出的单球载荷Q比预想大很多轴向刚度对标论文值差了将近50%。原因角接触球轴承的法向载荷是轴向力除以 (Z\sin\alpha)不是直接除以 (Z)。接触角 (\alpha) 选25°还是60°正弦值相差近一倍直接把Q放大或缩小。有些复现项目还把 (\alpha) 写成了弧度制却按角度算数值错得更隐蔽。解决把 (Q F_a/(Z\sin\alpha)) 单独打印出来与轴承样本里的额定载荷做对比。单球载荷应远小于轴承额定动载荷的1/10出一眼就能发现是否量级离谱。另外确认 (\alpha) 用的是赫兹接触角而不是沟道标称接触角两者在预紧后有几度的偏差严复现时可以查GB/T 27556里的接触角定义。5.2 热网络时间常数太小温度曲线出现高频震荡现象时间步长减小后温度曲线反而出现锯齿甚至局部负值。原因隐式欧拉理论上无条件稳定但组装K时如果对角元素重复累加、非对角元素符号搞反矩阵特征值出现正值数值解立刻发散或振荡。另一个常见来源是热容值取得过小比如球的真实热容可能只有几十J/K节点合并后还在用这个值导致时间常数小于dt分辨率不足。解决控制台输出K矩阵和A矩阵的对角线确保对角线为负、非对角为正且对称。热容低于200J/K的节点建议合并进相邻大热容节点宁可用粗粒度网络也不要让局部假振荡带崩全局求解。5.3 滚动体发热被均匀分摊低估了内圈侧温升现象仿真温度内外圈几乎一样但实测是内圈比外圈高很多。原因摩擦热产生在球与内外圈的接触区不是均匀发生在球体中心。内圈接触区曲率半径小、接触应力大发热强度高于外圈接触区。把总发热量一分为二却按50%:50%分配内圈温升就会被压平。解决按经验比例改为60%~70%发热量进内圈-球接触节点剩余进外圈-球接触节点。这个比例不需要特别精确进给系统轴承的实测经验是内圈侧发热占优。把分配比例做成参数用一次稳态温度对比就能标定出来。5.4 摩擦系数取跑合前还是跑合后的值发热量差3倍现象发热功率算出来只有2W实测同工况下轴承座热平衡温度高了10℃。原因新轴承和跑合200小时后的轴承摩擦系数差距很大。跑合前的 (\mu) 可能在0.005~0.008跑合后降到0.002左右。如果没有说明是跑合后状态直接用新轴承数据复现发热功率明显偏低。解决先问清楚论文或手册对应的润滑状态和跑合状态。若现场有条件用测功机或电流法反算摩擦力矩再标定 (\mu)。没有实测数据时取0.002~0.004区间做参数扫描看温度输出落在合理范围即可。5.5 只看稳态温度不检查预紧力是否超出轴承允许范围现象温度曲线收敛漂亮但预紧力已经涨到初始值3倍仿真还在继续算。原因热力耦合里正反馈会把预紧力推高到一个并不物理的值。角接触球轴承允许的预紧等级一般分轻/中/重初始预紧力800N热位移折算后超过1800N很可能已超出该型号建议值。但代码不会自动报错温度看起来也正常。解决在迭代循环里加入预紧力上限判断超过额定值的110%就打印告警并停止。这个做法不是为了仿真好看是提醒你实际机床到这一步可能已经出现轴承过热或精度波动模型需要把预紧等级变化也纳入后续刚度计算而不是闭着眼睛继续积分。6. 把耦合结果接到进给定位精度上从温升推算螺距误差并做验证耦合温度计算结束后最容易落到实用价值上的转化就是把结果接到进给定位精度上。丝杠热伸长直接导致工作台定位偏移这是数控机床最常见的精度漂移来源之一。用刚才算出的内圈和轴的温升可以估出丝杠的热伸长量[ \Delta L \alpha_L \cdot L \cdot \Delta T ]其中 (L) 是丝杠有效行程长度(\Delta T) 取轴节点温度与T_amb的差值。比如行程600mm温升15℃线膨胀系数11.5e-6伸长量约0.1mm也就是100μm。对精密进给系统来说这个量足以让定位精度显著下降也是热力耦合结果最直接的工程验证目标。# 用第4章的历史数据把滚珠丝杠热伸长算出来 L_screw 600.0 # 丝杠有效行程 mm alpha_L 11.5e-6 DeltaT_shaft hist[:,0] - T_amb # 轴节点温升 screw_growth alpha_L * L_screw * DeltaT_shaft print(开机30分钟轴承温升驱动丝杠伸长量) for t_idx in [300, 600, 1200, 1800]: print(f t{t_idx*0.5:.0f}s ΔL{screw_growth[t_idx]:.2f}mm)这段代码跑出来就是一张温升-热伸长时间表。在实际机床验证时把它和球栅尺或激光干涉仪测量的定位漂移做对比误差方向应该一致数值上通常还会有丝杠预拉伸量和螺母摩擦热的贡献所以实测值一般比单纯轴承温升计算值略大。我的习惯是先把仿真温度曲线和轴承座实测温度对上再把热伸长预测值与定位精度漂移量对上两个对得上这套热力耦合模型才算真正完成了闭环。如果第二步对不上就要回头查丝杠两端的角接触球轴承是否都建模了以及轴段温度是否被低估。做进给系统热误差补偿的同行可以把这套耦合计算做成开机后的在线预判机床没有实测温度传感器时用启动时间、转速、负载来预测温升和热伸长再叠加到螺距补偿表上效果会好过单纯按经验打折。这也是我把方向往实践带的原因——理论复现只是起点把热力耦合结果接进补偿逻辑才是这类分析真正值回时间的地方。希望这套思路帮你在复现和落地时少走几步弯路。本文还有配套的精品资源点击获取
返回列表