베어링 수명 계산기, PySide6로 ISO 281 구현

베어링 수명 계산(Bearing Life Calculation)은 ISO 281의 기본 정격수명 $L_{10}$으로 하중·회전수·정격하중의 관계를 운전 시간으로 바꾸는 절차다. 하중이 작은 R2R 가이드롤에서는 수명이 아니라 최소하중 조건이 베어링 크기의 상한을 정한다. 이 글은 두 조건을 한 화면에서 검증하는 PySide6 계산기를 만든다.

R2R 가이드롤 하중 경로 — 웹 장력 합력, 롤 자중, 양단 베어링
가이드롤 하중 경로 개념도. 웹 장력 합력과 롤 자중이 합성되어 양단 베어링으로 나뉜다.

1. 문제 정의 — 수명은 넘치는데 검토가 끝나지 않는다

R2R 롤 베어링은 웹 장력의 합력과 롤 자중을 받는다. 가이드롤은 하중이 작아 계산 수명이 수천만 시간으로 나온다. 설계 검토는 흔히 여기서 멈춘다.

그러나 SKF 카탈로그는 일반 원칙으로 볼 베어링에 0.01C, 롤러 베어링에 0.02C의 최소하중을 걸어야 한다고 적었다. 하중이 매우 작으면 피로가 아니라 궤도면의 미끄럼(Skidding)·스미어링(Smearing)이나 케이지 손상이 흔히 주된 파손 기구가 되기 때문이다. 수명식만 보면 이 조건이 보이지 않는다. 하중이 작은 롤에서 먼저 확인할 조건은 무엇이며, 베어링을 크게 고르면 더 안전해지는가.

2. 기구학적 분석 — 장력 합력이 베어링에 도달하는 경로

웹이 롤을 감김각 $\theta$만큼 감싸면 입구·출구 장력의 벡터합이 롤에 작용한다.

$$F_r=2T\sin\frac{\theta}{2}$$

여기서 $F_r$은 장력 합력(N), $T$는 웹 장력(N), $\theta$는 감김각(°)이다. 롤 자중 $W$(N)와 합력 사이의 각을 $\gamma$라 하면 전체 하중은 코사인 법칙으로 합성한다.

$$F_t=\sqrt{F_r^{2}+W^{2}+2F_rW\cos\gamma}$$

양단 베어링이 하중을 같게 나눈다고 가정하면 베어링 1개의 반경하중은 $F_t/2$다. 축하중이 없으면 등가하중 $P$를 반경하중과 같게 둔다(순수 반경하중 가정).

$$L_{10}=\left(\frac{C}{P}\right)^{p},\qquad L_{10h}=\frac{10^{6}}{60n}L_{10}$$

$C$는 기본 동정격하중(kN), $P$는 등가 동하중(kN), $p$는 수명 지수(볼 3, 롤러 10/3), $n$은 회전수(rpm), $L_{10}$은 10⁶회전 단위 수명, $L_{10h}$는 시간 단위 수명(h)이다.

$$s_0=\frac{C_0}{P_0}$$

$C_0$는 기본 정정격하중(kN), $P_0$는 등가 정하중(kN)이다. 기준값은 아래 표로 정리한다.

항목값근거
수명 지수 $p$볼 3, 롤러 10/3SKF 카탈로그(ISO 281 기준)
요구수명 — 24시간 연속 사용 기계40,000~50,000 hSKF 카탈로그 Table 1
요구수명 — 하루 8시간 완전 가동 기계(인쇄 설비·컨베이어 포함)20,000~30,000 hSKF 카탈로그 Table 1
권장 $s_0$ — 볼, 연속 운전, 하중 확실성 높음영구 변형 허용 0.5 / 일부 허용 1 / 불허 2SKF 카탈로그 Table 7
권장 $s_0$ — 볼, 하중 확실성 낮음(피크 하중)1.5 이상 / 1.5 이상 / 2 이상SKF 카탈로그 Table 7
최소하중볼 0.01C, 롤러 0.02CSKF 카탈로그
SKF 6210(깊은 홈 볼)50×90×20 mm, C 37.1 kN, C₀ 23.2 kNSKF 제품 데이터
SKF 22220 E(자동조심 롤러)100×180×46 mm, C 433 kN, C₀ 490 kNSKF 제품 데이터

R2R 설비는 SKF 요구수명 표에 없다. 전극 라인이 24시간 연속 운전한다는 가정으로 40,000~50,000 h 행을 준용하고, 상한 50,000 h를 요구수명으로 쓴다(가정).

3. 계산/수식 검증 — SKF 6210 가이드롤 예제

예제 조건은 모두 가정값이며 현장 계측 후 재확인 요망이다. 웹 장력 300 N, 감김각 180°, 롤 자중 200 N, 합력과 자중이 같은 방향($\gamma$=0°, 최악 조건), 라인 속도 60 m/min, 롤 외경 100 mm다.

$$F_r=2\times 300\times\sin 90^{\circ}=600\ \mathrm{N},\qquad F_t=600+200=800\ \mathrm{N},\qquad P=400\ \mathrm{N}$$

$$n=\frac{v}{\pi D}=\frac{60}{\pi\times 0.100}=191\ \mathrm{rpm}$$

베어링 1개 하중은 400 N이다. 이 롤에서는 장력 합력이 자중의 3배라는 뜻이다.

$$L_{10h}=\frac{10^{6}}{60\times 191}\left(\frac{37.1}{0.400}\right)^{3}=6.96\times 10^{7}\ \mathrm{h}$$

$$SF_{1}=\frac{L_{10h}}{L_{req}}=\frac{6.96\times 10^{7}}{50000}=1392,\qquad SF_{2}=s_0=\frac{23.2}{0.400}=58$$

$SF_{1}$은 피로수명 여유, $SF_{2}$는 정적 안전율이다. 두 값 모두 권장값을 크게 넘는다. 피로와 정적 강도는 이 롤의 지배 조건이 아니라는 뜻이다.

하한 조건을 확인한다.

$$P_{min}=0.01C=0.01\times 37.1=0.371\ \mathrm{kN},\qquad \frac{P}{P_{min}}=\frac{0.400}{0.371}=1.08$$

정상 장력에서는 최소하중을 8% 넘긴다. 통판·대기처럼 장력을 150 N으로 낮추면 베어링 하중은 250 N이 되고 비는 0.67로 떨어진다. 저장력 운전에서 최소하중 조건을 벗어난다는 뜻이다.

베어링을 키우면 결과가 더 나빠진다. 자동조심 롤러 베어링 SKF 22220 E로 바꾸면 최소하중은 $0.02\times 433=8.66$ kN이다. 정상 장력의 베어링 하중 0.400 kN은 그 4.6%에 그친다. 가이드롤 베어링을 크게 고를수록 수명 계산은 좋아지지만 최소하중 조건은 멀어진다.

4. 실무적용(Shop-notes) — PySide6 계산기

아래 코드는 장력 합력, ISO 281 수명, 정적 안전율, 최소하중을 한 화면에서 계산한다. Python 3.11과 PySide6 6.11 환경에서 오프스크린 실행과 손계산 대조 테스트를 통과했다. 설치 순서는 다음과 같다.

  • ☐ Python 3.11 이상 설치(설치 화면에서 PATH 추가 옵션 선택)
  • ☐ 작업 폴더에서 python -m venv venv로 가상환경 생성
  • ☐ 가상환경 활성화 — Windows venv\Scripts\activate, macOS source venv/bin/activate
  • ☐ pip install PySide6 실행
  • ☐ 아래 코드를 bearing_calc.py로 저장하고 python bearing_calc.py 실행
# bearing_calc.py — R2R 가이드롤 베어링 수명 계산기 (ISO 281 기본 정격수명)
# 검증 환경: Python 3.11, PySide6 6.11 / 실행: python bearing_calc.py
import math
import sys

from PySide6.QtWidgets import (QApplication, QComboBox, QDoubleSpinBox,
                               QFormLayout, QLabel, QPushButton, QWidget)


def roll_load(T, theta_deg, W, gamma_deg):
    """장력 합력과 롤 자중을 합성해 베어링 1개 반경하중[N]을 구한다."""
    # 장력 합력: Fr = 2·T·sin(θ/2)  (θ = 감김각)
    Fr = 2.0 * T * math.sin(math.radians(theta_deg) / 2.0)
    # 자중 합성(코사인 법칙): Ft = √(Fr² + W² + 2·Fr·W·cosγ)
    Ft = math.sqrt(Fr**2 + W**2 + 2.0 * Fr * W * math.cos(math.radians(gamma_deg)))
    # 양단 베어링 2개가 하중을 같게 나눈다고 가정
    return Fr, Ft, Ft / 2.0


def bearing_check(kind, C_kN, C0_kN, P_N, n_rpm, L_req_h):
    """ISO 281 수명, 정적 안전율, 최소하중을 한 번에 계산한다."""
    P = P_N / 1000.0                         # N → kN (C와 단위 일치)
    p = 3.0 if kind == "ball" else 10.0 / 3.0  # 수명 지수: 볼 3, 롤러 10/3
    L10 = (C_kN / P) ** p                    # 기본 정격수명 [10^6 rev]
    L10h = 1e6 / (60.0 * n_rpm) * L10        # 시간 환산 [h]
    SF1 = L10h / L_req_h                     # 1차: 피로수명 여유
    s0 = C0_kN / P                           # 2차: 정적 안전율 s0 = C0/P0 (P0 = Fr 가정)
    k_min = 0.01 if kind == "ball" else 0.02   # 최소하중 계수(SKF 일반 권장)
    P_min = k_min * C_kN
    return {"L10h": L10h, "SF1": SF1, "s0": s0,
            "P_min_kN": P_min, "min_ratio": P / P_min}


class Calc(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("R2R Roll Bearing Life (ISO 281)")
        form = QFormLayout(self)
        self.kind = QComboBox()
        self.kind.addItems(["ball", "roller"])
        form.addRow("베어링 종류", self.kind)
        # (라벨, 초기값, 최소, 최대) — 초기값은 본문 예제(SKF 6210, 가정 조건)
        spec = [("C [kN]", 37.1, 0.01, 5000), ("C0 [kN]", 23.2, 0.01, 5000),
                ("장력 T [N]", 300, 0, 1e5), ("감김각 θ [deg]", 180, 0, 360),
                ("롤 자중 W [N]", 200, 0, 1e5), ("방향각 γ [deg]", 0, 0, 180),
                ("회전수 n [rpm]", 191, 0.01, 1e5), ("요구수명 [h]", 50000, 1, 1e7),
                ("요구 s0", 1.5, 0.01, 100)]
        self.box = {}
        for label, val, vmin, vmax in spec:
            sb = QDoubleSpinBox()
            sb.setDecimals(2)
            sb.setRange(vmin, vmax)
            sb.setValue(val)
            form.addRow(label, sb)
            self.box[label] = sb
        btn = QPushButton("계산")
        btn.clicked.connect(self.run)
        form.addRow(btn)
        self.out = QLabel()
        self.out.setStyleSheet("font-family: monospace;")
        form.addRow(self.out)
        self.run()

    def v(self, key):
        return self.box[key].value()

    def run(self):
        Fr, Ft, P_N = roll_load(self.v("장력 T [N]"), self.v("감김각 θ [deg]"),
                                self.v("롤 자중 W [N]"), self.v("방향각 γ [deg]"))
        if P_N <= 0:  # 하중 0이면 수명식이 발산하므로 계산하지 않는다
            self.out.setText("P = 0 N: 장력·자중 입력을 확인하십시오.")
            return
        r = bearing_check(self.kind.currentText(), self.v("C [kN]"),
                          self.v("C0 [kN]"), P_N, self.v("회전수 n [rpm]"),
                          self.v("요구수명 [h]"))
        ok = (r["SF1"] >= 1.0 and r["s0"] >= self.v("요구 s0")
              and r["min_ratio"] >= 1.0)
        self.out.setText(
            f"Fr = {Fr:,.1f} N / Ft = {Ft:,.1f} N / P = {P_N:,.1f} N\n"
            f"L10h = {r['L10h']:,.0f} h / SF1 = {r['SF1']:,.1f}\n"
            f"s0 = {r['s0']:,.1f} / 최소하중 {r['P_min_kN']:.3f} kN "
            f"(비 {r['min_ratio']:.2f})\n판정: {'적합' if ok else '재검토'}")


if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = Calc()
    w.show()
    sys.exit(app.exec())
  • 대안 기구 — 자동조심 롤러 베어링(22220 E급): 자동조심형이라 축 경사를 받아낸다. 미채택 사유: 정격하중이 커서 최소하중 0.02C(8.66 kN)가 가이드롤 하중(0.400 kN)의 약 22배다.
  • 입력값 관리: 계산기의 C·C₀는 제조사 최신 데이터로 갱신한다. SKF 카탈로그도 최신 제품 데이터는 skf.com에서 확인하라고 적었다.
  • 저장력 모드 입력: 통판·대기 모드의 최저 장력을 반드시 넣어 최소하중 비를 확인한다. 비가 1 미만이면 베어링 크기와 하중 조건을 재검토한다.
  • 가공성(Machinability): 가이드롤 축의 베어링 자리는 연삭으로 마무리하고, 끼워맞춤 공차는 베어링 제조사 권장값을 도면에 명기한다.

5. 설계 반영 체크리스트

  • 장력 합력 계산에 최대·최저 장력(통판·대기 포함)을 모두 넣었는가
  • 합력과 자중의 방향각 γ를 실제 롤 배치로 확인했는가
  • SF1(수명 여유)과 SF2(정적 안전율)를 제조사 권장값과 대조했는가
  • 최저 장력 조건에서 최소하중 비가 1 이상인가
  • C·C₀를 제조사 최신 데이터로 갱신했는가

확인 필요 항목

  • R2R 설비 요구수명: SKF 표에 항목이 없어 24시간 연속 사용 기계 행을 준용했다(가정).
  • 예제의 장력·자중·속도·롤 외경: 모두 가정값이다.
  • 순수 반경하중 처리: 축하중을 무시한 가정이다. 축하중이 있으면 제조사 등가하중 식을 적용한다.
  • 최소하중 0.01C·0.02C: SKF의 일반 원칙이다. 제품별 정밀 요구값은 카탈로그 제품 섹션의 산식으로 재확인한다.
  • ISO 281:2007 개정: ISO 웹 페이지는 이 판이 2021년 재확인됐으며 ISO/DIS 281로 대체될 예정이라고 표시한다. 개정판 발행 시 수명식 적용 범위를 재확인한다.

한줄요약: 하중이 작은 R2R 가이드롤은 수명 L10h가 아니라 최소하중 0.01C가 베어링 크기의 상한을 정한다.

관련 기록: 전고체 전극코팅 R2R 장력관리 설계 · 레이저 노칭 드럼지그, 축처짐이 공차를 삼킨다

출처: SKF, Rolling bearings PUB BU/P1 17000/1 EN(2018) · SKF 6210 제품 데이터 · SKF 22220 E 제품 데이터 · ISO 281:2007 · ISO 76:2006 · BLH Nobel, Web Tension Design · Machine Design, Controlling web tension with load cells(2007-10-01)

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤