用PYTHON工具对FAG INA CS 系列薄壁轴承进行初步选型筛选

INA等截面薄壁轴承 。目标寿命20000h,设定内径165.1 mm (6.5英寸),那选项上摆着六个等截面,脚本按 DIN ISO 281 和 ISO 76 逐个校核下来,只有 D 截面同时过了寿命和静载两道关:CSCD 065 算到 53759 h,静载安全系数 S0 4.55。差一档的 C 截面卡在 15384 h,离 20000 h 的目标差 4616 h,差的不多,但就是过不去。孔径从头到尾没动过,变的是截面高度------同一孔径下截面从 6.35 mm 加到 25.4 mm,额定动载荷 Cr 从 4.95 kN 涨到 44 kN。我们把这条换算写成了脚本,你把手上的载荷谱喂进去,它逐个截面校核完,直接吐出最小可用截面。

作者:Chans|杭州融奕科技有限公司 应用工程师

一、输入与门槛:一条载荷谱加一次静载峰值

选型的输入分成两块,一块喂给疲劳计算,一块喂给静载校核,两者不能混。疲劳那块是载荷谱,每工况给径向载荷、轴向载荷、转速和时间占比 qi,qi 的定义是 qi =(该工况持续时间 / 总时长)× 100,样本在变载荷那一节给的就是这个口径。静载那块只要一个数:整台设备寿命里出现过的最大载荷,急停、吊装偏心、碰撞都算在里面。

这台回转工作台的载荷谱是这样的,三工况加起来 100%:

工况 径向 Fr (N) 轴向 Fa (N) 转速 (min⁻¹) 时间占比 q (%)
重载 1100 550 280 55
轻载 600 240 900 35
空转 450 135 1200 10

静载峰值取 F0r = 3500 N、F0a = 1400 N,对应急停叠加吊装偏心。这两个数是设计输入,样本里没有,所以后面专门做了一次敏感性------它一动,S0 的排序跟着变。按我们的做法,静载峰值永远单独列一行,不并进疲劳谱里,因为这两个数的来源本来就分属两处:一个是工况统计,一个是极端事件的包络。

三道关的门槛也得先定死。寿命关取 L10h ≥ 20000 h,是这台设备的设计目标。静载关取 S0 ≥ 3,样本 P45 的表 1 把许用值按工况分成四档:运转平稳、要求不高取 0.5,正常取 1,有明显冲击取 2,对运转精度和运转平稳性要求高的支承取 3------工作台带分度定位,属于最后一档。转速关用尺寸表里的极限转速 nG,脂润滑按脚注取表列值的 70%,样本在转速那一节也说明 nG 只是经验参考值,超限要向厂家确认。〔来源:INA 样本 575 P45/P47/P53〕

二、把谱压成一个当量动载荷,kf 从图上读

寿命公式本身很短,按 DIN ISO 281 就是 L = (Cr/P)³,换成小时是 Lh = 16667/n ×(Cr/P)³,样本把它印在承载能力那一节。麻烦在于 P:这台设备三个工况的载荷和转速全不一样,公式要求 P 和 n 恒定,所以要先按样本 P47 的变载荷公式把谱压成一对当量值,转速取加权平均 n = Σ(qi·ni)/100,当量动载荷取立方加权 P = (Σ(qi·ni·Pi³)/Σ(qi·ni))^(1/3)。

每个工况的 Pi 还要再做一次折算,因为径向和轴向是同时作用的。样本 P48 给的做法是 P = kf · Fr,kf 是复合载荷的动态修正系数,从 P49 的 Bild 3 曲线上读:先算 Fa/C0r 选中对应那条曲线,再按 Fa/Fr 在横轴上找点,竖着读上去。

读图这一步没有捷径,样本只印曲线不印公式,你能做的就是把七条曲线按网格读下来存进脚本,读图误差压在 ±0.05 以内。以 CSCD 065 的重载工况代入:它的额定静载荷 C0r = 19000 N(P19 尺寸表),于是 Fa/C0r = 550/19000 = 0.029,Fa/Fr = 550/1100 = 0.50,横轴走到 0.50,再在 0.025 和 0.05 两条曲线之间插一下,读到 kf ≈ 1.53,当量动载荷 Pi = 1.53 × 1100 = 1681 N。轻载荷工况同法算出 847 N,空转工况 573 N。三个数代回立方加权,P = 1171 N,n = 0.55×280 + 0.35×900 + 0.10×1200 = 589 min⁻¹,L10 = (14500/1171)³ = 1900×10⁶ 转,折合 53759 h。

这里有个坑,你先别急着动转速:立方加权里转速同时出现在分子和分母,所以各工况转速整体放大 1.5 倍,P 一个牛都不变,寿命却按 1/n 掉下来。真正能压低 P 的是砍掉重载工况的载荷本身,降转速只会让 L10h 越算越难看。

三、静载那一路:k0f 与 S0

静载走的是另一条线。样本 P45 定义 S0 = C0r/P0,P0 是当量静载荷;P48 又给了一次折算 P0 = k0f · F0r,k0f 从 P49 的 Bild 6 读,读法和 kf 完全一样,只是把动载荷换成静载荷。

CSCD 065 这一路代进去:F0a/C0r = 1400/19000 = 0.074,F0a/F0r = 1400/3500 = 0.40,在 0.075 那条曲线上读 k0f ≈ 1.19,P0 = 1.19 × 3500 = 4179 N,S0 = 19000/4179 = 4.55,过了 3 这一档。同样的峰值放到 C 截面上,C0r 只有 13200 N,S0 掉到 3.13,余量只剩 4%;再往下 B 截面 2.66、A 截面 2.03,两个都直接不过关。〔来源:INA 样本 575 P45/P48/P49〕

还有一层前提,我们每次用这两张图都会先确认一遍:轴承不带外部倾覆力矩、轴向力居中作用、游隙取标准值。样本在 P48 明说外部倾覆力矩没有计入 kf 和 k0f,套圈一旦被倾覆力矩压歪,系数就得重新问厂家要,图上读出来的数不能直接用。

四、脚本跑一遍,六个截面里筛出 D

同一孔径 165.1 mm 下,CS 系列的深沟球有六个截面可选,尺寸和额定载荷全部照抄样本尺寸表:

型号 截面代号 截面高度 (mm) 外径 D (mm) Cr (N) C0r (N) nG 油 (min⁻¹) 样本页
CSCA 065 A 6.35 177.8 4950 8300 2900 P15
CSCB 065 B 7.938 180.975 7100 11100 2900 P16
CSCC 065 C 9.525 184.15 9200 13200 2900 P17
CSCD 065 D 12.7 190.5 14500 19000 2900 P19
CSCF 065 F 19.05 203.2 27500 31500 2900 P20
CSCG 065 G 25.4 215.9 44000 46000 2900 P21

截面高度和球径在样本里是绑死的,P10、P11 的「系列---截面尺寸---球径」表里,A 到 G 的球径依次是 3.175、3.969、4.763、6.35、9.525、12.7 mm,正好是截面高度的一半。所以 Cr 从 4.95 kN 涨到 44 kN,靠的并不是把套圈壁厚堆起来,而是球径翻了两番之后接触区承载能力跟着上去,内径一动没动。代价也很实在:座孔从 177.8 mm 涨到 215.9 mm,套圈重量从 0.14 kg 涨到 2.45 kg。〔来源:INA 样本 575 P10/P11/P15/P21〕

把上面两节的公式和这两张曲线的读数值写成脚本,中间那张 kf/k0f 网格(7 条曲线 × 8 个横坐标,读图误差约 ±0.05)就直接落进字典里:

python 复制代码
import math

# (型号, d, D, 截面代号, 截面高度 mm, Cr N, C0r N, nG 油 min-1, 样本页)
DB = [
    ("CSCA 065", 165.1, 177.8,   "A",  6.35,  4950,  8300, 2900, "P15"),
    ("CSCB 065", 165.1, 180.975, "B",  7.938, 7100, 11100, 2900, "P16"),
    ("CSCC 065", 165.1, 184.15,  "C",  9.525, 9200, 13200, 2900, "P17"),
    ("CSCD 065", 165.1, 190.5,   "D", 12.7,  14500, 19000, 2900, "P19"),
    ("CSCF 065", 165.1, 203.2,   "F", 19.05, 27500, 31500, 2900, "P20"),
    ("CSCG 065", 165.1, 215.9,   "G", 25.4,  44000, 46000, 2900, "P21"),
]
# (工况, Fr N, Fa N, 转速 min-1, 时间占比 %)
DUTY = [("重载", 1100.0, 550.0,  280.0, 55.0),
        ("轻载",  600.0, 240.0,  900.0, 35.0),
        ("空转",  450.0, 135.0, 1200.0, 10.0)]
F0R, F0A = 3500.0, 1400.0        # 静载峰值(设计输入)
L10H_REQ, S0_REQ, GREASE = 20000.0, 3.0, 0.7

RATIO  = [0.0, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75]     # Fa/Fr
C0GRID = [0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 1.0]        # Fa/C0r
KF = {  # 575 P49 Bild 3 读图值
    0.025: [1.000, 1.203, 1.551, 1.993, 2.440, 2.900, 3.360, 3.820],
    0.05:  [1.000, 1.145, 1.405, 1.752, 2.128, 2.525, 2.940, 3.355],
    0.075: [1.000, 1.144, 1.376, 1.673, 2.003, 2.342, 2.704, 3.066],
    0.1:   [1.000, 1.119, 1.321, 1.602, 1.898, 2.222, 2.570, 2.918],
    0.25:  [1.000, 1.086, 1.211, 1.415, 1.653, 1.912, 2.180, 2.448],
    0.5:   [1.000, 1.092, 1.194, 1.320, 1.502, 1.710, 1.927, 2.144],
    1.0:   [1.000, 1.028, 1.094, 1.214, 1.367, 1.543, 1.722, 1.901],
}
K0F = { # 575 P49 Bild 6 读图值
    0.025: [1.000, 1.166, 1.394, 1.648, 1.908, 2.168, 2.428, 2.688],
    0.05:  [1.000, 1.136, 1.295, 1.503, 1.729, 1.955, 2.181, 2.407],
    0.075: [1.000, 1.114, 1.244, 1.427, 1.632, 1.833, 2.034, 2.235],
    0.1:   [1.000, 1.131, 1.264, 1.403, 1.575, 1.752, 1.945, 2.138],
    0.25:  [1.000, 1.059, 1.149, 1.271, 1.417, 1.563, 1.709, 1.855],
    0.5:   [1.000, 1.063, 1.127, 1.205, 1.314, 1.423, 1.532, 1.641],
    1.0:   [1.000, 1.047, 1.093, 1.145, 1.227, 1.320, 1.417, 1.514],
}

def factor(table, fa_c0, ratio):
    """在 (Fa/C0r, Fa/Fr) 网格上双线性插值,超出网格按边界斜率外推。"""
    def interp1(row, x):
        if x <= RATIO[0]:
            return row[0]
        for i in range(len(RATIO) - 1):
            if RATIO[i] <= x <= RATIO[i + 1]:
                t = (x - RATIO[i]) / (RATIO[i + 1] - RATIO[i])
                return row[i] + t * (row[i + 1] - row[i])
        t = (x - RATIO[-2]) / (RATIO[-1] - RATIO[-2])
        return row[-2] + t * (row[-1] - row[-2])
    if fa_c0 <= C0GRID[0]:
        return interp1(table[C0GRID[0]], ratio)
    for i in range(len(C0GRID) - 1):
        if C0GRID[i] <= fa_c0 <= C0GRID[i + 1]:
            lo = interp1(table[C0GRID[i]], ratio)
            hi = interp1(table[C0GRID[i + 1]], ratio)
            t = (fa_c0 - C0GRID[i]) / (C0GRID[i + 1] - C0GRID[i])
            return lo + t * (hi - lo)
    return interp1(table[C0GRID[-1]], ratio)

def screen(b, duty=DUTY, f0r=F0R, f0a=F0A, grease=True):
    name, _d, _D, code, sec, cr, c0r, ng, page = b
    num = den = n_avg = 0.0
    for _step, fr, fa, n, q in duty:
        p = factor(KF, fa / c0r, fa / fr) * fr        # P = kf * Fr
        num += q * n * p ** 3
        den += q * n
        n_avg += q * n / 100.0
    p_eq = (num / den) ** (1.0 / 3.0)
    l10 = (cr / p_eq) ** 3                            # 百万转
    l10h = 16667.0 / n_avg * l10
    p0 = factor(K0F, f0a / c0r, f0a / f0r) * f0r      # P0 = k0f * F0r
    s0 = c0r / p0
    n_max = max(n for _, _, _, n, _ in duty)
    return dict(name=name, code=code, sec=sec, P=p_eq, L10h=l10h,
                S0=s0, n_max=n_max, n_lim=ng * (GREASE if grease else 1.0),
                ok=(l10h >= L10H_REQ and s0 >= S0_REQ
                    and n_max <= ng * (GREASE if grease else 1.0)))

for b in DB:
    r = screen(b)
    print("%-10s %-2s %6.1f %7.0f %9.0f %6.2f %6.0f %6.0f %s" % (
        r["name"], r["code"], b[5] / 1000.0, r["P"], r["L10h"], r["S0"],
        r["n_max"], r["n_lim"], "PASS" if r["ok"] else "FAIL"))

容器里跑出来的结果是这样:

yaml 复制代码
型号         截面  Cr[kN]    P[N]   L10h[h]     S0   nmax    nG脂 判定
CSCA 065   A      5.0    1085      2685   2.03   1200   2030 FAIL
CSCB 065   B      7.1    1101      7592   2.66   1200   2030 FAIL
CSCC 065   C      9.2    1127     15384   3.13   1200   2030 FAIL
CSCD 065   D     14.5    1171     53759   4.55   1200   2030 PASS
CSCF 065   F     27.5    1184    354138   7.22   1200   2030 PASS
CSCG 065   G     44.0    1184   1450549  10.21   1200   2030 PASS

最小可用截面是 CSCD 065,D 系列,截面高度 12.7 mm,外径 190.5 mm。它下面的三个截面全挂在寿命关和静载关上:A 和 B 两关都不过,C 只差寿命那 4616 h。F 和 G 也过了关,但它们的代价是座孔再让出 12.7 mm 和 25.4 mm,我们一般不会选到这一档去,除非结构里还有别的东西要塞进同一个孔径。转速关六个都过,脂润滑限 2030 min⁻¹,实际最高 1200 min⁻¹------这一关真正会咬人的是脂润滑那 70%,我们遇到过直接拿表列 2900 去核的,一超限就是温升问题。

静载峰值这个假设最值得回头看。把它从 3500 N 降到 2000 N,C 截面的 S0 从 3.13 升到 4.82,静载关就松了;抬到 5000 N,S0 掉到 2.31,D 截面也只剩 3.6 左右。所以急停和吊装那一下到底多大,得找机械设计的人要数,不能按"差不多"填。转速那边反过来不敏感:各工况转速整体 ×1.5,C 截面的 P 一动不动还是 1127 N,L10h 从 15384 h 掉到 10256 h,纯粹是 16667/n 那一项在起作用。

还有两条边界别忘了。工作温度超过 120 °C 时,样本要求给额定动载荷乘温度系数 fT,Cr 换成有效值 CTr = fT·Cr 再进公式,这时算出来的寿命要往下修。摆动工况则是另一回事:摆动角小于滚动体角节距两倍时,这套当量转速公式根本不成立,样本明确写了不要用,那种工况得换摆动角的算法。〔来源:INA 样本 575 P46/P47〕

结论给可直接执行的:座孔能放到 190.5 mm 就上 CSCD 065,寿命 53759 h、S0 4.55,两关都有余量。座孔被结构卡死在 184.15 mm(C 截面)时,15384 h 只比 15000 h 高 2.6%,余量薄到没有意义,宁可改结构让出一圈截面,也不要靠压低目标寿命过关。

数据来源:INA 样本 575《INA_系列等截面轴承》P10 系列与截面尺寸、P15~P21 各系列尺寸表与额定载荷及极限转速、P44 寿命公式、P45 静载安全系数 S0 与许用值表、P46 温度系数 fT、P47 变载荷当量转速与当量载荷、P48 复合载荷修正系数定义、P49 Bild 3 与 Bild 6 曲线、P53 极限转速说明;DIN ISO 281;ISO 76。

参考链接:FAG INA轴承样本

AI 声明:本文由 AI 协助整理,数据经人工核对,仅供参考

相关推荐
老孟说禅2 小时前
自动化测试入门(一)
开发语言·python
miofly2 小时前
GitHub 今日推荐|Snapintosh:用 ARM EL2 监控器骗过内核,让骁龙芯片笔记本跑 macOS
python·开源·github
打工仔折腾 AI2 小时前
Linux 网络编程:从零掌握 TCP Socket 编程与 C++ 实战落地
linux·网络·人工智能·后端·python·tcp/ip·性能优化
我命由我123452 小时前
Python 开发 - Python 项目部署(Windows 与 Linux)
java·linux·windows·后端·python·java-ee·python3.11
Zella折耳根3 小时前
实验2进阶版数据看板的设计与实现
python
databook3 小时前
让 LLM 输出不再失控:用 Pydantic 校验大模型输出
人工智能·python·llm
jingcairensheng3 小时前
vscode 配置Python虚拟环境基于扩展和原生miniconda的区别
ide·vscode·python
“AI国潮设计-小江”3 小时前
《【AIGC实战】Python+SDXL批量生成“英歌舞草莓抱抱卷蛋糕”IP插牌立牌方案,锁定角色一致性,甜品插件化落地》
开发语言·人工智能·python·prompt·aigc
LMT流氓兔3 小时前
第五单元——第7课:工具读取用户身份,而不是让模型填写身份
python·langchain