<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>베어링수명 &#8211; MyEngNote</title>
	<atom:link href="https://myengnote.com/tag/%eb%b2%a0%ec%96%b4%eb%a7%81%ec%88%98%eb%aa%85/feed/" rel="self" type="application/rss+xml" />
	<link>https://myengnote.com</link>
	<description></description>
	<lastBuildDate>Wed, 08 Jul 2026 04:42:52 +0000</lastBuildDate>
	<language>ko-KR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>
	<item>
		<title>베어링 수명 계산기 &#038; 시뮬레이터</title>
		<link>https://myengnote.com/bearing-life-calculator-simulator/</link>
					<comments>https://myengnote.com/bearing-life-calculator-simulator/#respond</comments>
		
		<dc:creator><![CDATA[동동]]></dc:creator>
		<pubDate>Thu, 28 May 2026 14:24:13 +0000</pubDate>
				<category><![CDATA[공학계산기]]></category>
		<category><![CDATA[ISO281]]></category>
		<category><![CDATA[L10수명]]></category>
		<category><![CDATA[기계설계]]></category>
		<category><![CDATA[동당량하중]]></category>
		<category><![CDATA[베어링수명]]></category>
		<guid isPermaLink="false">https://myengnote.com/bearing-life-calculator-simulator/</guid>

					<description><![CDATA[ISO 281 규격에 의거하여 볼/롤러 베어링의 동당량 하중과 정격 수명(L10h)을 계산하고, 부하 벡터에 따른 궤도면 접촉 응력 분포와 윤활 유동을 시각화하는 초정밀 2D 시뮬레이터입니다.]]></description>
										<content:encoded><![CDATA[
<h2 style="font-size: 1.6em; font-weight: 800; color: #0c0e25; border-bottom: 2px solid #00f2fe; padding-bottom: 8px; margin-bottom: 20px;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 베어링 수명 계산기 &#038; 시뮬레이터</h2>


<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&#038;family=Outfit:wght@400;500;600;700;800&#038;display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
/* Scoped & Isolated Styles for bearinglife-calculator-wrapper */
        /* Modern Reset and Design Tokens */
        .bearinglife-calculator-wrapper *, .bearinglife-calculator-wrapper *::before, .bearinglife-calculator-wrapper *::after {
            box-sizing: border-box;
            margin: 0;
            padding: 0;
        }
        .bearinglife-calculator-wrapper {
            --color-bg-dark: #f8f9fd;
            --color-bg-deep: #ffffff;
            --color-panel-bg: rgba(255, 255, 255, 0.85);
            --color-border: rgba(0, 0, 0, 0.06);
            --color-border-hover: rgba(0, 0, 0, 0.12);
            --color-text-main: #1e293b;
            --color-text-muted: #475569;
            --color-text-dark: #94a3b8;
            --color-cyan: #0284c7;
            --color-cyan-glow: rgba(2, 132, 199, 0.15);
            --color-magenta: #db2777;
            --color-magenta-glow: rgba(219, 39, 119, 0.15);
            --color-purple: #7c3aed;
            --color-purple-glow: rgba(124, 58, 237, 0.12);
            --color-success: #10b981;
            --color-warning: #f59e0b;
            --gradient-primary: linear-gradient(135deg, var(--color-cyan) 0%, var(--color-purple) 100%);
            --gradient-accent: linear-gradient(135deg, var(--color-magenta) 0%, var(--color-purple) 100%);
            --gradient-panel: linear-gradient(180deg, rgba(255, 255, 255, 0.9) 0%, rgba(248, 250, 252, 0.95) 100%);
            --font-heading: 'Outfit', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
            --font-body: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
            --shadow-neon-cyan: 0 0 15px var(--color-cyan-glow);
            --shadow-neon-magenta: 0 0 15px var(--color-magenta-glow);
            --shadow-card: 0 8px 32px 0 rgba(15, 23, 42, 0.05);
            --blur-glass: blur(16px);
        }
        .bearinglife-calculator-wrapper {
            background-color: var(--color-bg-dark);
            color: var(--color-text-main);
            font-family: var(--font-body);
            min-height: 100vh;
            display: flex;
            justify-content: center;
            overflow-x: hidden;
            position: relative;
        }
        .app-background-glow {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            z-index: -1;
            overflow: hidden;
            pointer-events: none;
        }
        .app-background-glow::before, 
        .app-background-glow::after {
            content: '';
            position: absolute;
            width: 600px;
            height: 600px;
            border-radius: 50%;
            filter: blur(140px);
            opacity: 0.12;
        }
        .app-background-glow::before {
            background: var(--color-cyan);
            top: -10%;
            right: -5%;
            animation: pulse-slow 15s infinite alternate;
        }
        .app-background-glow::after {
            background: var(--color-purple);
            bottom: -10%;
            left: -5%;
            animation: pulse-slow 20s infinite alternate-reverse;
        }
        @keyframes pulse-slow {
            0% { transform: scale(1) translate(0, 0); opacity: 0.08; }
            100% { transform: scale(1.2) translate(50px, 50px); opacity: 0.15; }
        }
        .app-container {
            width: 100%;
            max-width: 1440px;
            padding: 24px;
            display: flex;
            flex-direction: column;
            gap: 24px;
        }
        .app-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 20px 24px;
            background: var(--color-panel-bg);
            backdrop-filter: var(--blur-glass);
            border: 1px solid var(--color-border);
            border-radius: 16px;
            box-shadow: var(--shadow-card);
        }
        .logo-area {
            display: flex;
            align-items: center;
            gap: 16px;
        }
        .logo-icon {
            font-size: 32px;
            background: linear-gradient(135deg, var(--color-cyan), var(--color-magenta));
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        .logo-area h1 {
            font-family: var(--font-heading);
            font-weight: 800;
            font-size: 24px;
            letter-spacing: 1.5px;
            background: linear-gradient(90deg, var(--color-text-main), var(--color-text-dark));
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
        }
        .logo-area .subtitle {
            font-size: 12px;
            color: var(--color-text-muted);
            font-weight: 500;
            letter-spacing: 0.5px;
        }
        .header-badge {
            display: flex;
            align-items: center;
            gap: 10px;
            background: rgba(2, 132, 199, 0.1);
            border: 1px solid rgba(2, 132, 199, 0.2);
            padding: 6px 14px;
            border-radius: 20px;
        }
        .pulse-dot {
            width: 8px;
            height: 8px;
            background-color: var(--color-cyan);
            border-radius: 50%;
            box-shadow: 0 0 10px var(--color-cyan);
            animation: pulse-dot-anim 1.5s infinite;
        }
        @keyframes pulse-dot-anim {
            0% { transform: scale(0.9); opacity: 0.6; }
            50% { transform: scale(1.2); opacity: 1; }
            100% { transform: scale(0.9); opacity: 0.6; }
        }
        .badge-text {
            font-size: 11px;
            font-weight: 600;
            color: var(--color-cyan);
            letter-spacing: 0.5px;
        }
        .app-main-grid {
            display: grid;
            grid-template-columns: 340px 1fr 340px;
            gap: 24px;
            align-items: start;
        }
        .right-column {
            display: flex;
            flex-direction: column;
            gap: 24px;
            min-width: 0;
        }
        .panel {
            background: var(--gradient-panel);
            backdrop-filter: var(--blur-glass);
            border: 1px solid var(--color-border);
            border-radius: 20px;
            padding: 24px;
            box-shadow: var(--shadow-card);
            display: flex;
            flex-direction: column;
            gap: 20px;
            transition: border-color 0.3s ease, box-shadow 0.3s ease;
        }
        .panel:hover {
            border-color: var(--color-border-hover);
        }
        .panel-header {
            display: flex;
            align-items: center;
            gap: 12px;
            border-bottom: 1px solid var(--color-border);
            padding-bottom: 14px;
        }
        .panel-header i {
            font-size: 18px;
        }
        .panel-header h2 {
            font-family: var(--font-heading);
            font-size: 18px;
            font-weight: 600;
            letter-spacing: 0.5px;
        }
        .text-cyan { color: var(--color-cyan); }
        .text-magenta { color: var(--color-magenta); }
        .text-purple { color: var(--color-purple); }
        .control-panel {
            grid-column: 1;
        }
        .mode-select-container {
            display: flex;
            flex-direction: column;
            gap: 8px;
        }
        .mode-label {
            font-size: 12px;
            font-weight: 700;
            color: var(--color-text-muted);
            letter-spacing: 0.5px;
        }
        .segmented-control {
            display: grid;
            grid-template-columns: repeat(2, 1fr);
            background: rgba(0, 0, 0, 0.03);
            border: 1px solid var(--color-border);
            padding: 4px;
            border-radius: 12px;
            gap: 4px;
        }
        .segmented-btn {
            background: transparent;
            border: none;
            color: var(--color-text-muted);
            padding: 8px 4px;
            border-radius: 8px;
            font-size: 11px;
            font-weight: 700;
            cursor: pointer;
            transition: all 0.2s ease;
            text-align: center;
        }
        .segmented-btn:hover {
            color: var(--color-text-main);
            background: rgba(0, 0, 0, 0.015);
        }
        .segmented-btn.active {
            background: #ffffff;
            color: var(--color-cyan);
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
        }
        .input-group {
            display: flex;
            flex-direction: column;
            gap: 10px;
        }
        .input-label-row {
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        .input-label-row label {
            font-size: 13px;
            font-weight: 600;
            color: var(--color-text-main);
            display: flex;
            align-items: center;
            gap: 8px;
        }
        .helper-text {
            font-size: 10px;
            color: var(--color-text-muted);
            font-weight: 500;
        }
                .number-input-wrapper {
            display: flex;
            position: relative;
            border-radius: 8px;
            overflow: hidden;
            border: 1px solid var(--color-border);
            background: #ffffff;
            transition: all 0.2s ease;
        }
        .number-input-wrapper:focus-within {
            border-color: var(--color-cyan);
            box-shadow: 0 0 10px var(--color-cyan-glow);
        }
        .number-input-wrapper:focus-within {
            border-color: var(--color-cyan);
            box-shadow: 0 0 10px var(--color-cyan-glow);
        }
                .custom-number-input {
            flex: 1;
            width: 0;
            min-width: 0;
            background: #f8fafc !important;
            border: none !important;
            outline: none !important;
            color: #0f172a !important;
            padding: 10px 14px !important;
            font-family: var(--font-body) !important;
            font-size: 15px !important;
            font-weight: 700 !important;
            text-align: right !important;
            box-shadow: none !important;
            -webkit-appearance: none !important;
            -moz-appearance: textfield !important;
        }
        .custom-number-input::-webkit-outer-spin-button,
        .custom-number-input::-webkit-inner-spin-button {
            -webkit-appearance: none;
            margin: 0;
        }
        .custom-number-input::-webkit-outer-spin-button,
        .custom-number-input::-webkit-inner-spin-button {
            -webkit-appearance: none;
            margin: 0;
        }
                .unit-badge {
            background: rgba(0, 0, 0, 0.03);
            color: var(--color-text-muted);
            font-size: 11px;
            font-weight: 700;
            padding: 0 14px;
            display: flex;
            align-items: center;
            justify-content: center;
            border-left: 1px solid var(--color-border);
            pointer-events: none;
            flex-shrink: 0;
        }
        .custom-slider {
            -webkit-appearance: none;
            width: 100%;
            height: 6px;
            border-radius: 3px;
            background: rgba(0, 0, 0, 0.05);
            outline: none;
            margin: 6px 0;
            transition: background 0.2s ease;
        }
        .custom-slider::-webkit-slider-thumb {
            -webkit-appearance: none;
            appearance: none;
            width: 18px;
            height: 18px;
            border-radius: 50%;
            cursor: pointer;
            transition: transform 0.1s ease, box-shadow 0.2s ease;
        }
        /* Thumbs Styling */
        .slider-cyan::-webkit-slider-thumb { background: var(--color-cyan); box-shadow: 0 0 8px var(--color-cyan); }
        .slider-cyan::-webkit-slider-thumb:hover { transform: scale(1.2); }
        .slider-magenta::-webkit-slider-thumb { background: var(--color-magenta); box-shadow: 0 0 8px var(--color-magenta); }
        .slider-magenta::-webkit-slider-thumb:hover { transform: scale(1.2); }
        .slider-purple::-webkit-slider-thumb { background: var(--color-purple); box-shadow: 0 0 8px var(--color-purple); }
        .slider-purple::-webkit-slider-thumb:hover { transform: scale(1.2); }
        .slider-cyan::-moz-range-thumb { width: 18px; height: 18px; border: none; border-radius: 50%; background: var(--color-cyan); }
        .slider-magenta::-moz-range-thumb { width: 18px; height: 18px; border: none; border-radius: 50%; background: var(--color-magenta); }
        .slider-purple::-moz-range-thumb { width: 18px; height: 18px; border: none; border-radius: 50%; background: var(--color-purple); }
        .select-wrapper {
            position: relative;
            display: flex;
            border-radius: 8px;
            overflow: hidden;
            border: 1px solid var(--color-border);
            background: #ffffff;
        }
        .custom-select {
            width: 100%;
            background: #f8fafc;
            border: none;
            outline: none;
            color: #0f172a;
            padding: 10px 14px;
            font-family: var(--font-body);
            font-size: 14px;
            font-weight: 600;
            appearance: none;
            cursor: pointer;
        }
        .select-arrow {
            position: absolute;
            right: 14px;
            top: 50%;
            transform: translateY(-50%);
            pointer-events: none;
            color: var(--color-text-muted);
            font-size: 12px;
        }
        .presets-section {
            display: flex;
            flex-direction: column;
            gap: 10px;
            border-top: 1px solid var(--color-border);
            padding-top: 16px;
        }
        .presets-section h3 {
            font-size: 13px;
            font-weight: 700;
            color: var(--color-text-main);
            display: flex;
            align-items: center;
            gap: 8px;
        }
        .presets-grid {
            display: flex;
            flex-direction: column;
            gap: 8px;
        }
        .preset-btn {
            background: rgba(0, 0, 0, 0.015);
            border: 1px solid var(--color-border);
            border-radius: 10px;
            padding: 8px 12px;
            cursor: pointer;
            color: var(--color-text-main);
            display: flex;
            align-items: center;
            gap: 12px;
            text-align: left;
            transition: all 0.2s ease;
        }
        .preset-btn:hover {
            background: rgba(0, 0, 0, 0.04);
            transform: translateX(4px);
        }
        .preset-btn.active {
            background: linear-gradient(90deg, var(--color-cyan-glow), var(--color-magenta-glow));
            border-color: var(--color-cyan);
            box-shadow: 0 0 10px var(--color-cyan-glow);
        }
        .preset-icon {
            width: 28px;
            height: 28px;
            background: rgba(0, 0, 0, 0.02);
            border-radius: 8px;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 12px;
            color: var(--color-cyan);
        }
        .preset-btn:hover .preset-icon, .preset-btn.active .preset-icon {
            background: var(--gradient-primary);
            color: #fff;
        }
        .preset-name {
            font-size: 12px;
            font-weight: 600;
        }
        .simulation-panel {
            grid-column: 2;
            align-self: start;
        }
        .canvas-wrapper {
            position: relative;
            width: 100%;
            background: radial-gradient(circle at center, #ffffff 0%, #f1f5f9 100%);
            border: 1px solid rgba(0, 0, 0, 0.06);
            border-radius: 16px;
            overflow: hidden;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        #physics-canvas {
            display: block;
            width: 100%;
            height: auto;
            aspect-ratio: 16 / 11;
        }
        .canvas-overlay-data {
            position: absolute;
            top: 16px;
            left: 16px;
            pointer-events: none;
            display: flex;
            flex-direction: column;
            gap: 6px;
        }
        .overlay-item {
            background: rgba(255, 255, 255, 0.9);
            color: var(--color-text-main);
            backdrop-filter: blur(4px);
            border: 1px solid var(--color-border);
            padding: 6px 12px;
            border-radius: 8px;
            display: flex;
            align-items: center;
            gap: 8px;
            font-size: 11px;
        }
        .overlay-item .label {
            color: var(--color-text-muted);
            font-weight: 500;
        }
        .overlay-item .value {
            font-weight: 700;
        }
        .simulation-metrics-strip {
            display: flex;
            background: rgba(0, 0, 0, 0.01);
            border: 1px solid var(--color-border);
            border-radius: 12px;
            padding: 12px 20px;
            justify-content: space-around;
            align-items: center;
            gap: 10px;
            margin-top: 10px;
        }
        .mini-metric {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 4px;
            text-align: center;
        }
        .mini-metric .label {
            font-size: 10px;
            font-weight: 600;
            color: var(--color-text-muted);
            text-transform: uppercase;
            letter-spacing: 0.5px;
        }
        .mini-metric .value {
            font-size: 14px;
            font-weight: 700;
            color: var(--color-text-main);
            font-family: var(--font-heading);
        }
        .mini-divider {
            width: 1px;
            height: 24px;
            background: var(--color-border);
        }
        .results-panel {
            /* flex column inside right-column flow */
        }
        .ratio-readout-box {
            background: linear-gradient(135deg, var(--color-cyan-glow) 0%, var(--color-purple-glow) 100%);
            border: 1px solid rgba(2, 132, 199, 0.15);
            border-radius: 16px;
            padding: 20px;
            text-align: center;
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 6px;
            box-shadow: 0 4px 20px rgba(0, 0, 0, 0.02);
        }
        .ratio-title {
            font-size: 11px;
            font-weight: 700;
            color: var(--color-cyan);
            letter-spacing: 1px;
            text-transform: uppercase;
        }
        .ratio-value {
            font-family: var(--font-heading);
            font-weight: 800;
            font-size: 24px;
            background: linear-gradient(90deg, var(--color-text-main), var(--color-cyan));
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
        }
        .ratio-type {
            font-size: 11px;
            font-weight: 600;
            color: var(--color-text-muted);
        }
        .results-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
            gap: 12px;
        }
        .result-card {
            background: rgba(255, 255, 255, 0.85);
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.03);
            border: 1px solid var(--color-border);
            border-radius: 12px;
            padding: 12px 16px;
            display: flex;
            align-items: center;
            gap: 16px;
            transition: all 0.2s ease;
        }
        .result-card:hover {
            transform: translateY(-2px);
            border-color: var(--color-cyan);
            background: var(--color-cyan-glow);
        }
        .card-icon {
            width: 38px;
            height: 38px;
            background: rgba(0, 0, 0, 0.015);
            border: 1px solid var(--color-border);
            border-radius: 10px;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 14px;
            color: var(--color-text-muted);
            transition: all 0.2s ease;
        }
        .result-card:hover .card-icon {
            color: var(--color-cyan);
            border-color: var(--color-cyan);
            background: var(--color-cyan-glow);
        }
        .card-content {
            display: flex;
            flex-direction: column;
            gap: 2px;
        }
        .card-unit {
            font-size: 11px;
            font-weight: 600;
            color: var(--color-text-muted);
        }
        .card-value {
            font-family: var(--font-heading);
            font-weight: 700;
            font-size: 17px;
            color: var(--color-text-main);
        }
        .formula-card {
            background: #ffffff;
            border: 1px solid var(--color-border);
            border-radius: 12px;
            padding: 16px;
            display: flex;
            flex-direction: column;
            gap: 8px;
            font-size: 12px;
        }
        .formula-card h4 {
            font-weight: 700;
            color: var(--color-text-main);
        }
        .formula-equation {
            font-family: 'Outfit', 'Cambria Math', 'Times New Roman', monospace;
            color: #0284c7;
            font-size: 13px;
            background: #f8fafc;
            border-color: var(--color-border);
            padding: 8px 10px;
            border-radius: 6px;
        }
        /* Container Query for Responsiveness inside WP */
        @container bearinglife-container (max-width: 1024px) {
            .app-main-grid {
                grid-template-columns: 1fr;
            }
            .control-panel, .simulation-panel, .results-panel {
                grid-column: 1;
            }
            .simulation-panel {
                order: -1;
            }
            .app-header {
                flex-direction: column;
                gap: 16px;
                text-align: center;
            }
            .logo-area {
                flex-direction: column;
                gap: 8px;
            }
        }
        .preset-details {
            display: flex;
            flex-direction: column;
            gap: 2px;
            align-items: flex-start;
            text-align: left;
        }
        .preset-spec {
            font-size: 11px;
            color: var(--color-text-muted);
            font-weight: 500;
        }
        .preset-name {
            font-size: 13px !important;
        }
/* ━━ WordPress 레이아웃 Override: 디자인 1 (2열 컴팩트 대칭 레이아웃) ━━ */
.bearinglife-calculator-wrapper .app-main-grid,
.bearinglife-calculator-wrapper .main-grid,
.bearinglife-calculator-wrapper .sim-grid {
    display: grid !important;
    grid-template-columns: 340px 1fr !important;
    gap: 24px !important;
    align-items: start !important;
}
/* 3열 레이아웃을 2열 레이아웃으로 변경하는 특화 스타일 */
.bearinglife-calculator-wrapper .right-column {
    display: flex !important;
    flex-direction: column !important;
    gap: 24px !important;
    min-width: 0 !important;
    grid-column: 2 !important;
}
.bearinglife-calculator-wrapper .simulation-panel,
.bearinglife-calculator-wrapper .canvas-panel,
.bearinglife-calculator-wrapper .sim-panel {
    grid-column: auto !important;
    order: 1 !important;
    align-self: stretch !important;
}
.bearinglife-calculator-wrapper .control-panel {
    grid-column: 1 !important;
}
/* 2열 통합 결과 분석 영역 레이아웃 */
.bearinglife-calculator-wrapper .simulation-results-section {
    display: grid !important;
    grid-template-columns: 1.1fr 1.3fr !important;
    gap: 20px !important;
    border-top: 1px solid var(--color-border) !important;
    padding-top: 20px !important;
    margin-top: 10px !important;
    align-items: stretch !important;
}
/* Readout Box 스타일 */
.bearinglife-calculator-wrapper .simulation-results-section .ratio-readout-box,
.bearinglife-calculator-wrapper .simulation-results-section .re-readout-box,
.bearinglife-calculator-wrapper .simulation-results-section .status-readout-box,
.bearinglife-calculator-wrapper .simulation-results-section .gauge-container {
    grid-column: 1 !important;
    grid-row: 1 !important;
    margin: 0 !important;
    height: auto !important;
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
}
.bearinglife-calculator-wrapper .simulation-results-section .results-grid {
    grid-column: 2 !important;
    grid-row: 1 / span 2 !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 12px !important;
    justify-content: flex-start !important;
}
.bearinglife-calculator-wrapper .simulation-results-section .results-grid .result-card {
    flex: none !important;
    display: flex !important;
    align-items: center !important;
    min-height: 72px !important;
    height: auto !important;
    padding: 12px 16px !important;
}
.bearinglife-calculator-wrapper .simulation-results-section .formula-card {
    grid-column: 1 !important;
    grid-row: 2 !important;
}
/* 모바일/반응형 (800px 이하) ── 항상 세로형(1열) 정렬 및 시뮬레이터 캔버스 최상단 배치 */
@media (max-width: 800px) {
    .bearinglife-calculator-wrapper .app-main-grid,
    .bearinglife-calculator-wrapper .main-grid,
    .bearinglife-calculator-wrapper .sim-grid {
        grid-template-columns: 1fr !important;
        display: flex !important;
        flex-direction: column !important;
    }
    .bearinglife-calculator-wrapper .control-panel {
        order: 2 !important;
        width: 100% !important;
    }
    .bearinglife-calculator-wrapper .right-column {
        order: 1 !important;
        width: 100% !important;
        display: flex !important;
        flex-direction: column !important;
    }
    .bearinglife-calculator-wrapper .simulation-panel,
    .bearinglife-calculator-wrapper .canvas-panel,
    .bearinglife-calculator-wrapper .sim-panel,
    .bearinglife-calculator-wrapper .canvas-section {
        order: -1 !important;
    }
    .bearinglife-calculator-wrapper .simulation-results-section {
        grid-template-columns: 1fr !important;
    }
    .bearinglife-calculator-wrapper .simulation-results-section .ratio-readout-box,
    .bearinglife-calculator-wrapper .simulation-results-section .re-readout-box,
    .bearinglife-calculator-wrapper .simulation-results-section .status-readout-box,
    .bearinglife-calculator-wrapper .simulation-results-section .gauge-container {
        grid-column: 1 !important;
        grid-row: auto !important;
        height: auto !important;
    }
    .bearinglife-calculator-wrapper .simulation-results-section .results-grid {
        grid-column: 1 !important;
        grid-row: auto !important;
    }
    .bearinglife-calculator-wrapper .simulation-results-section .formula-card {
        grid-column: 1 !important;
        grid-row: auto !important;
    }
}
.bearinglife-calculator-wrapper .app-container,
.bearinglife-calculator-wrapper .main-container {
    max-width: 100% !important;
    padding: 12px !important;
}
/* Premium Advice/Formula Card & Typography Overrides */
.bearinglife-calculator-wrapper .simulation-results-section .formula-card,
.bearinglife-calculator-wrapper .results-panel .formula-card {
    background: #ffffff !important;
    border: 1px solid var(--color-border) !important;
    border-radius: 12px !important;
    padding: 16px !important;
    box-shadow: var(--shadow-card) !important;
    transition: all 0.2s ease !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 8px !important;
}
.bearinglife-calculator-wrapper .simulation-results-section .formula-card h4,
.bearinglife-calculator-wrapper .results-panel .formula-card h4 {
    font-weight: 700 !important;
    color: var(--color-text-main) !important;
}
.bearinglife-calculator-wrapper #text-judgment {
    font-size: 12px !important;
    font-weight: 500 !important;
    color: var(--color-text-muted) !important;
    line-height: 1.6 !important;
    word-break: keep-all !important;
}
</style>
<div class="bearinglife-calculator-wrapper" style="position: relative; width: 100%; box-sizing: border-box; overflow: hidden; margin: 30px auto; border-radius: 20px;">
    <div class="app-background-glow" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 1; pointer-events: none; overflow: hidden;"></div>
    <div style="position: relative; z-index: 2; width: 100%;">
    <div class="app-container">
        <!-- Header -->
        <header class="app-header">
            <div class="logo-area">
                <div class="logo-icon"><i class="fa-solid fa-compact-disc"></i></div>
                <div>
                    <h1>BEARING LIFE</h1>
                    <div class="subtitle">베어링 정격 수명 계산기 및 2D 회전 시뮬레이터</div>
                </div>
            </div>
            <div class="header-badge">
                <div class="pulse-dot"></div>
                <div class="badge-text">ISO 281 ENGINE ACTIVE</div>
            </div>
        </header>
        <!-- Main Layout Grid -->
        <main class="app-main-grid">
            <!-- Left Panel: Controls -->
            <section class="panel control-panel">
                <div class="panel-header">
                    <i class="fa-solid fa-sliders text-cyan"></i>
                    <h2>베어링 설계 변수</h2>
                </div>
                <!-- Bearing Type -->
                <div class="mode-select-container">
                    <span class="mode-label">베어링 전동체 형식</span>
                    <div class="segmented-control">
                        <button class="segmented-btn active" id="btn-type-ball" title="볼 베어링">볼 베어링 (p=3)</button>
                        <button class="segmented-btn" id="btn-type-roller" title="롤러 베어링">롤러 베어링 (p=3.33)</button>
                    </div>
                </div>
                <!-- Dynamic Load Rating C -->
                <div class="input-group">
                    <div class="input-label-row">
                        <label for="input-c"><i class="fa-solid fa-shield-halved text-cyan"></i> 동 정격 하중 (C)</label>
                        <span class="helper-text">(10.0 ~ 500.0 kN)</span>
                    </div>
                    <div class="number-input-wrapper">
                        <input type="number" id="input-c" class="custom-number-input" min="10" max="500" value="45" step="any">
                        <div class="unit-badge">kN</div>
                    </div>
                    <input type="range" id="slider-c" class="custom-slider slider-cyan" min="10" max="500" value="45">
                </div>
                <!-- Radial Load Fr -->
                <div class="input-group">
                    <div class="input-label-row">
                        <label for="input-fr"><i class="fa-solid fa-arrow-down text-magenta"></i> 반경방향 하중 (Fr)</label>
                        <span class="helper-text">(1.0 ~ 200.0 kN)</span>
                    </div>
                    <div class="number-input-wrapper">
                        <input type="number" id="input-fr" class="custom-number-input" min="1" max="200" value="12" step="any">
                        <div class="unit-badge">kN</div>
                    </div>
                    <input type="range" id="slider-fr" class="custom-slider slider-magenta" min="1" max="200" value="12">
                </div>
                <!-- Axial Load Fa -->
                <div class="input-group">
                    <div class="input-label-row">
                        <label for="input-fa"><i class="fa-solid fa-arrow-right-long text-magenta"></i> 축방향 하중 (Fa)</label>
                        <span class="helper-text">(0.0 ~ 200.0 kN)</span>
                    </div>
                    <div class="number-input-wrapper">
                        <input type="number" id="input-fa" class="custom-number-input" min="0" max="200" value="3.5" step="any">
                        <div class="unit-badge">kN</div>
                    </div>
                    <input type="range" id="slider-fa" class="custom-slider slider-magenta" min="0" max="200" value="3.5">
                </div>
                <!-- Speed N -->
                <div class="input-group">
                    <div class="input-label-row">
                        <label for="input-rpm"><i class="fa-solid fa-gauge-high text-purple"></i> 샤프트 회전수 (N)</label>
                        <span class="helper-text">(10 ~ 10000 RPM)</span>
                    </div>
                    <div class="number-input-wrapper">
                        <input type="number" id="input-rpm" class="custom-number-input" min="10" max="10000" value="1750" step="any">
                        <div class="unit-badge">RPM</div>
                    </div>
                    <input type="range" id="slider-rpm" class="custom-slider slider-purple" min="10" max="10000" value="1750">
                </div>
                <!-- Shock factor selection -->
                <div class="input-group">
                    <div class="input-label-row">
                        <label for="select-fd"><i class="fa-solid fa-circle-exclamation text-purple"></i> 운전 하중 계수 (fd)</label>
                    </div>
                    <div class="select-wrapper">
                        <select id="select-fd" class="custom-select">
                            <option value="1.0">1.0 (정밀 가동, 무충격)</option>
                            <option value="1.2" selected>1.2 (일반 가동, 미세 충격)</option>
                            <option value="1.5">1.5 (고진동 장치, 강한 충격)</option>
                            <option value="2.0">2.0 (극심한 반복 충격 운전)</option>
                        </select>
                        <i class="fa-solid fa-chevron-down select-arrow"></i>
                    </div>
                </div>
                <!-- Presets -->
                <div class="presets-section">
                    <h3><i class="fa-solid fa-tags text-cyan"></i> 베어링 적용 프리셋</h3>
                    <div class="presets-grid">
                        <button class="preset-btn active" id="preset-motor">
                            <div class="preset-icon"><i class="fa-solid fa-bolt"></i></div>
                            <div class="preset-details"><span class="preset-name">고속 산업 모터</span><span class="preset-spec">깊은홈볼, 경하중</span></div>
                        </button>
                        <button class="preset-btn" id="preset-turbine">
                            <div class="preset-icon"><i class="fa-solid fa-wind"></i></div>
                            <div class="preset-details"><span class="preset-name">풍력 메인 축</span><span class="preset-spec">롤러, 초고하중 저속</span></div>
                        </button>
                        <button class="preset-btn" id="preset-wheel">
                            <div class="preset-icon"><i class="fa-solid fa-car"></i></div>
                            <div class="preset-details"><span class="preset-name">자동차 휠 허브</span><span class="preset-spec">볼, 축-반경 혼합부하</span></div>
                        </button>
                    </div>
                </div>
            </section>
            <!-- Auto Injected Right Column wrapper for Design 1 -->
            <div class="right-column">
                <section class="panel simulation-panel">
                                <div class="panel-header">
                                    <i class="fa-solid fa-dharmachakra text-magenta"></i>
                                    <h2>실시간 베어링 거동 및 접촉 응력 해석</h2>
                                </div>
                                <div class="canvas-wrapper">
                                    <canvas id="physics-canvas" width="640" height="400"></canvas>
                                    <div class="canvas-overlay-data">
                                        <div class="overlay-item">
                                            <span class="label">베어링 형식:</span>
                                            <span class="value" id="overlay-bearing-type">Ball Bearing</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="simulation-metrics-strip">
                                    <div class="mini-metric">
                                        <span class="label">반경/축 하중비 (Fa/Fr)</span>
                                        <span class="value" id="val-load-ratio">0.29</span>
                                    </div>
                                    <div class="mini-divider"></div>
                                    <div class="mini-metric">
                                        <span class="label">동당량 하중 (P)</span>
                                        <span class="value" id="val-equiv-load">16.68 kN</span>
                                    </div>
                                    <div class="mini-divider"></div>
                                    <div class="mini-metric">
                                        <span class="label">전동체 궤도 회전 속도</span>
                                        <span class="value" id="val-cage-speed">700 RPM</span>
                                    </div>
                                </div>
                                <!-- Integrated Results Analysis Section -->
                            <div class="simulation-results-section">
                                <div class="ratio-readout-box">
                                    <div class="ratio-title">계산된 정격 수명 (L10h)</div>
                                    <div class="ratio-value" id="txt-l10h">18,630 시간</div>
                                    <div class="ratio-type" id="txt-l10">1,956 백만회 회전</div>
                                </div>
                                <div class="results-grid">
                                        <div class="result-card">
                                        <div class="card-icon"><i class="fa-solid fa-weight-hanging text-success"></i></div>
                                        <div class="card-content">
                                            <span class="card-unit">설계 기본동적하중 (C)</span>
                                            <span class="card-value" id="res-c">45.00 kN</span>
                                        </div>
                                    </div>
                                        <div class="result-card">
                                        <div class="card-icon"><i class="fa-solid fa-arrows-spin text-purple"></i></div>
                                        <div class="card-content">
                                            <span class="card-unit">정적 동당량 하중 (P)</span>
                                            <span class="card-value" id="res-p">16.68 kN</span>
                                        </div>
                                    </div>
                                        <div class="result-card">
                                        <div class="card-icon"><i class="fa-solid fa-hourglass-half"></i></div>
                                        <div class="card-content">
                                            <span class="card-unit">수명 적합성 판정</span>
                                            <span class="card-value" id="res-status">적합 (일반 산업용)</span>
                                        </div>
                                    </div>
                                    </div>
                                <div class="formula-card">
                                    <h4><i class="fa-solid fa-info-circle text-cyan"></i> 정격수명 공식 (ISO 281)</h4>
                                    <div class="formula-equation">
                                        L10 = (C / P)^p &nbsp;&nbsp;[p=3 or 3.33]
                                    </div>
                                    <div class="formula-equation">
                                        L10h = (10^6 × L10) / (60 × N)
                                    </div>
                                </div>
                            </div>
                </section>
            </div>
        </main>
        <!-- Disclaimer Footer -->
        <footer class="app-disclaimer" style="margin-top: 20px; padding: 12px 16px; background: rgba(0, 0, 0, 0.015); border: 1px solid var(--color-border); border-radius: 12px; font-size: 11px; color: var(--color-text-muted); line-height: 1.5; text-align: left; display: flex; gap: 10px; align-items: flex-start; clear: both;">
            <i class="fa-solid fa-circle-info" style="color: var(--color-cyan); font-size: 14px; margin-top: 2px; flex-shrink: 0;"></i>
            <span><strong>면책 조항 (Disclaimer):</strong> 본 시뮬레이터의 계산 결과는 교육 및 참고용으로만 제공되며, 실제 제품 설계나 제작 시에는 반드시 최신 공학 규격 및 공식 표준 설계 기준을 재확인하시기 바랍니다. 계산 값의 무결성을 보장하지 않으며, 이로 인해 발생하는 직접적/간접적 손해에 대해 제작자 및 본 블로그는 어떠한 책임을 지지 않습니다.</span>
        </footer>
</div>
    <!-- CORE INTERACTIVE ENGINE -->
    </div>
</div>
<script>
    // Polyfill for CanvasRenderingContext2D.roundRect for backward compatibility
    if (typeof CanvasRenderingContext2D !== 'undefined') {
        if (!CanvasRenderingContext2D.prototype.roundRect) {
        CanvasRenderingContext2D.prototype.roundRect = function(x, y, w, h, r) {
            if (typeof r === 'number') r = [r];
            if (!Array.isArray(r)) r = [0];
            const rad = r[0] || 0;
            this.beginPath();
            this.moveTo(x + rad, y);
            this.lineTo(x + w - rad, y);
            this.quadraticCurveTo(x + w, y, x + w, y + rad);
            this.lineTo(x + w, y + h - rad);
            this.quadraticCurveTo(x + w, y + h, x + w - rad, y + h);
            this.lineTo(x + rad, y + h);
            this.quadraticCurveTo(x, y + h, x, y + h - rad);
            this.lineTo(x, y + rad);
            this.quadraticCurveTo(x, y, x + rad, y);
            this.closePath();
            return this;
        };
      }
    }
        (function() {
            if (window.__bearinglife_initialized) return;
            window.__bearinglife_initialized = true;
            const btnTypeBall = document.getElementById('btn-type-ball');
            const btnTypeRoller = document.getElementById('btn-type-roller');
            const inputC = document.getElementById('input-c');
            const sliderC = document.getElementById('slider-c');
            const inputFr = document.getElementById('input-fr');
            const sliderFr = document.getElementById('slider-fr');
            const inputFa = document.getElementById('input-fa');
            const sliderFa = document.getElementById('slider-fa');
            const inputRpm = document.getElementById('input-rpm');
            const sliderRpm = document.getElementById('slider-rpm');
            const selectFd = document.getElementById('select-fd');
            const txtL10h = document.getElementById('txt-l10h');
            const txtL10 = document.getElementById('txt-l10');
            const valLoadRatio = document.getElementById('val-load-ratio');
            const valEquivLoad = document.getElementById('val-equiv-load');
            const valCageSpeed = document.getElementById('val-cage-speed');
            const resC = document.getElementById('res-c');
            const resP = document.getElementById('res-p');
            const resStatus = document.getElementById('res-status');
            const overlayBearingType = document.getElementById('overlay-bearing-type');
            const state = {
                type: 'ball', // 'ball' or 'roller'
                c: 45.0,
                fr: 12.0,
                fa: 3.5,
                rpm: 1750,
                fd: 1.2,
                angle: 0.0,
                lubricants: []
            };
            const ranges = {
                c: { min: 10.0, max: 500.0 },
                fr: { min: 1.0, max: 200.0 },
                fa: { min: 0.0, max: 200.0 },
                rpm: { min: 10.0, max: 10000.0 }
            };
            function calculateBearingLife() {
                let p_exponent = 3.0;
                if (state.type === 'roller') {
                    p_exponent = 3.333333;
                }
                let ratio = 0.0;
                if (state.fr > 0) {
                    ratio = state.fa / state.fr;
                } else {
                    ratio = 9999.0;
                }
                let X = 1.0;
                let Y = 0.0;
                if (state.type === 'ball') {
                    if (ratio > 0.25) {
                        X = 0.56;
                        Y = 1.4;
                    }
                } else {
                    if (ratio > 0.3) {
                        X = 0.4;
                        Y = 1.6;
                    }
                }
                const P_raw = X * state.fr + Y * state.fa;
                const P = state.fd * P_raw;
                let L10_rev = 0.0;
                if (P > 0) {
                    L10_rev = Math.pow(state.c / P, p_exponent);
                }
                const L10h_hours = (1000000.0 * L10_rev) / (60.0 * state.rpm);
                state.equivLoad = P;
                state.l10 = L10_rev;
                state.l10h = L10h_hours;
                state.loadRatio = ratio;
                updateUIValues();
            }
            function syncCFromInput() {
                let val = parseFloat(inputC.value);
                if (isNaN(val)) { val = ranges.c.min; }
                if (val < ranges.c.min) { val = ranges.c.min; }
                if (val > ranges.c.max) { val = ranges.c.max; }
                state.c = val;
                inputC.value = val.toFixed(1);
                sliderC.value = Math.round(val);
                calculateBearingLife();
            }
            function syncCFromSlider() {
                state.c = parseFloat(sliderC.value);
                inputC.value = state.c.toFixed(1);
                calculateBearingLife();
            }
            function syncFrFromInput() {
                let val = parseFloat(inputFr.value);
                if (isNaN(val)) { val = ranges.fr.min; }
                if (val < ranges.fr.min) { val = ranges.fr.min; }
                if (val > ranges.fr.max) { val = ranges.fr.max; }
                state.fr = val;
                inputFr.value = val.toFixed(1);
                sliderFr.value = Math.round(val);
                calculateBearingLife();
            }
            function syncFrFromSlider() {
                state.fr = parseFloat(sliderFr.value);
                inputFr.value = state.fr.toFixed(1);
                calculateBearingLife();
            }
            function syncFaFromInput() {
                let val = parseFloat(inputFa.value);
                if (isNaN(val)) { val = ranges.fa.min; }
                if (val < ranges.fa.min) { val = ranges.fa.min; }
                if (val > ranges.fa.max) { val = ranges.fa.max; }
                state.fa = val;
                inputFa.value = val.toFixed(1);
                sliderFa.value = Math.round(val);
                calculateBearingLife();
            }
            function syncFaFromSlider() {
                state.fa = parseFloat(sliderFa.value);
                inputFa.value = state.fa.toFixed(1);
                calculateBearingLife();
            }
            function syncRpmFromInput() {
                let val = parseFloat(inputRpm.value);
                if (isNaN(val)) { val = ranges.rpm.min; }
                if (val < ranges.rpm.min) { val = ranges.rpm.min; }
                if (val > ranges.rpm.max) { val = ranges.rpm.max; }
                state.rpm = val;
                inputRpm.value = val.toFixed(0);
                sliderRpm.value = Math.round(val);
                calculateBearingLife();
            }
            function syncRpmFromSlider() {
                state.rpm = parseFloat(sliderRpm.value);
                inputRpm.value = state.rpm.toFixed(0);
                calculateBearingLife();
            }
            function updateUIValues() {
                txtL10h.innerText = state.l10h.toLocaleString('ko-KR', { maximumFractionDigits: 0 }) + ' 시간';
                txtL10.innerText = state.l10.toLocaleString('ko-KR', { maximumFractionDigits: 1 }) + ' 백만회 회전';
                valLoadRatio.innerText = state.loadRatio.toFixed(2);
                valEquivLoad.innerText = state.equivLoad.toFixed(2) + ' kN';
                const cageRPM = state.rpm * 0.4;
                valCageSpeed.innerText = cageRPM.toFixed(0) + ' RPM';
                resC.innerText = state.c.toFixed(2) + ' kN';
                resP.innerText = state.equivLoad.toFixed(2) + ' kN';
                if (state.l10h < 2000.0) {
                    resStatus.innerText = '위험 (단기 피로 파손 우려)';
                    resStatus.style.color = '#db2777';
                } else {
                    if (state.l10h < 10000.0) {
                        resStatus.innerText = '보통 (경부하 간헐 가동)';
                        resStatus.style.color = '#f59e0b';
                    } else {
                        resStatus.innerText = '적합 (안정적 설계 수명)';
                        resStatus.style.color = '#10b981';
                    }
                }
                if (state.type === 'ball') {
                    overlayBearingType.innerText = '깊은 홈 볼 베어링 (Ball Bearing)';
                } else {
                    overlayBearingType.innerText = '원통형 롤러 베어링 (Roller Bearing)';
                }
            }
            function setBearingType(newType) {
                state.type = newType;
                if (newType === 'ball') {
                    btnTypeBall.classList.add('active');
                    btnTypeRoller.classList.remove('active');
                } else {
                    btnTypeRoller.classList.add('active');
                    btnTypeBall.classList.remove('active');
                }
                calculateBearingLife();
            }
            // Presets
            document.getElementById('preset-motor').addEventListener('click', function() {
                setActivePreset('preset-motor');
                state.c = 32.0;
                state.fr = 5.0;
                state.fa = 1.0;
                state.rpm = 3000;
                state.fd = 1.0;
                syncInputsToState();
                setBearingType('ball');
            });
            document.getElementById('preset-turbine').addEventListener('click', function() {
                setActivePreset('preset-turbine');
                state.c = 380.0;
                state.fr = 140.0;
                state.fa = 45.0;
                state.rpm = 25;
                state.fd = 1.5;
                syncInputsToState();
                setBearingType('roller');
            });
            document.getElementById('preset-wheel').addEventListener('click', function() {
                setActivePreset('preset-wheel');
                state.c = 68.0;
                state.fr = 18.0;
                state.fa = 15.0;
                state.rpm = 950;
                state.fd = 1.2;
                syncInputsToState();
                setBearingType('ball');
            });
            function setActivePreset(id) {
                document.getElementById('preset-motor').classList.remove('active');
                document.getElementById('preset-turbine').classList.remove('active');
                document.getElementById('preset-wheel').classList.remove('active');
                document.getElementById(id).classList.add('active');
            }
            function syncInputsToState() {
                inputC.value = state.c.toFixed(1);
                sliderC.value = Math.round(state.c);
                inputFr.value = state.fr.toFixed(1);
                sliderFr.value = Math.round(state.fr);
                inputFa.value = state.fa.toFixed(1);
                sliderFa.value = Math.round(state.fa);
                inputRpm.value = state.rpm;
                sliderRpm.value = state.rpm;
                selectFd.value = state.fd.toFixed(1);
            }
            // Canvas Drawing
            const canvas = document.getElementById('physics-canvas');
            const ctx = canvas.getContext('2d');
            function getDPR() {
                return window.devicePixelRatio || 1;
            }
            function initCanvas() {
                const dpr = getDPR();
                const rect = canvas.getBoundingClientRect();
                canvas.width = rect.width * dpr;
                canvas.height = rect.height * dpr;
                ctx.scale(dpr, dpr);
            }
            window.addEventListener('resize', initCanvas);
            initCanvas();
            // Setup initial lubricants
            for (let i = 0; i < 40; i++) {
                state.lubricants.push({
                    r: Math.random() * 25 + 50,
                    angle: Math.random() * Math.PI * 2,
                    speed: Math.random() * 0.02 + 0.01,
                    size: Math.random() * 2 + 1
                });
            }
            let lastTime = 0;
            function animate(currentTime) {
                if (lastTime === 0) { lastTime = currentTime; }
                const dt = (currentTime - lastTime) / 1000;
                lastTime = currentTime;
                const dpr = getDPR();
                const width = canvas.width / dpr;
                const height = canvas.height / dpr;
                // Speed calculations
                const cageSpeed = (2.0 * Math.PI * state.rpm * 0.4) / 60.0;
                const shaftSpeed = (2.0 * Math.PI * state.rpm) / 60.0;
                state.angle += cageSpeed * dt;
                ctx.clearRect(0, 0, width, height);
                // 1. Grid
                ctx.strokeStyle = 'rgba(2, 132, 199, 0.05)';
                ctx.lineWidth = 1;
                const gridSize = 25;
                for (let x = 0; x < width; x += gridSize) {
                    ctx.beginPath();
                    ctx.moveTo(x, 0);
                    ctx.lineTo(x, height);
                    ctx.stroke();
                }
                for (let y = 0; y < height; y += gridSize) {
                    ctx.beginPath();
                    ctx.moveTo(0, y);
                    ctx.lineTo(width, y);
                    ctx.stroke();
                }
                // Center position &#038; Dynamic Scale
                const cx = width / 2;
                const cy = height / 2;
                const baseSize = Math.min(width, height);
                const scale = (baseSize / 400) * 0.92;
                // 2. Outer Ring
                ctx.save();
                ctx.strokeStyle = '#475569';
                ctx.lineWidth = 14 * scale;
                ctx.beginPath();
                ctx.arc(cx, cy, 95 * scale, 0, Math.PI * 2);
                ctx.stroke();
                ctx.restore();
                // 3. Inner Ring
                ctx.save();
                ctx.strokeStyle = '#94a3b8';
                ctx.lineWidth = 14 * scale;
                ctx.beginPath();
                ctx.arc(cx, cy, 48 * scale, 0, Math.PI * 2);
                ctx.stroke();
                // Draw shaft rotation indicators
                ctx.translate(cx, cy);
                ctx.rotate(state.angle * 2.5); // rotates faster than cage
                ctx.fillStyle = '#1e293b';
                ctx.beginPath();
                ctx.arc(0, 0, 41 * scale, 0, Math.PI * 2);
                ctx.fill();
                ctx.strokeStyle = 'rgba(255,255,255,0.15)';
                ctx.lineWidth = 4 * scale;
                ctx.beginPath();
                ctx.moveTo(-35 * scale, 0);
                ctx.lineTo(35 * scale, 0);
                ctx.moveTo(0, -35 * scale);
                ctx.lineTo(0, 35 * scale);
                ctx.stroke();
                ctx.restore();
                // 4. Draw Lubricants
                ctx.fillStyle = 'rgba(2, 132, 199, 0.35)';
                for (let i = 0; i < state.lubricants.length; i++) {
                    const l = state.lubricants[i];
                    l.angle += l.speed * Math.max(state.rpm / 200, 1.0) * dt * 10;
                    const lx = cx + Math.cos(l.angle) * l.r * scale;
                    const ly = cy + Math.sin(l.angle) * l.r * scale;
                    ctx.beginPath();
                    ctx.arc(lx, ly, l.size * scale, 0, Math.PI * 2);
                    ctx.fill();
                }
                // 5. Draw Stress Glow zone (Radial load pushes down on bottom)
                if (state.fr > 0) {
                    ctx.save();
                    const stressIntensity = Math.min(state.fr / 100.0, 1.0);
                    const grad = ctx.createRadialGradient(cx, cy + 30 * scale, 20 * scale, cx, cy + 85 * scale, 95 * scale);
                    grad.addColorStop(0, 'rgba(219, 39, 119, 0.0)');
                    grad.addColorStop(1, 'rgba(219, 39, 119, ' + (0.45 * stressIntensity) + ')');
                    ctx.fillStyle = grad;
                    ctx.beginPath();
                    ctx.arc(cx, cy, 95 * scale, 0, Math.PI);
                    ctx.lineTo(cx, cy);
                    ctx.closePath();
                    ctx.fill();
                    ctx.restore();
                }
                // 6. Draw Rolling Elements (Balls or Rollers)
                const count = state.type === 'ball' ? 9 : 12;
                ctx.save();
                for (let i = 0; i < count; i++) {
                    const a = state.angle + (i * Math.PI * 2) / count;
                    const rx = cx + Math.cos(a) * 71.5 * scale;
                    const ry = cy + Math.sin(a) * 71.5 * scale;
                    // Compute individual stress load
                    const angleOffset = Math.abs((a % (Math.PI * 2)) - Math.PI / 2);
                    let elementStress = 0.0;
                    if (angleOffset < Math.PI / 2) {
                        elementStress = Math.cos(angleOffset) * (state.fr / 150.0);
                    }
                    elementStress += state.fa / 200.0;
                    if (elementStress > 1.0) { elementStress = 1.0; }
                    if (state.type === 'ball') {
                        // Ball drawing
                        ctx.save();
                        ctx.beginPath();
                        ctx.arc(rx, ry, 11.5 * scale, 0, Math.PI * 2);
                        ctx.fillStyle = '#cbd5e1';
                        ctx.fill();
                        ctx.lineWidth = 1.5 * scale;
                        ctx.strokeStyle = '#475569';
                        ctx.stroke();
                        if (elementStress > 0.05) {
                            ctx.beginPath();
                            ctx.arc(rx, ry, 11.5 * scale, 0, Math.PI * 2);
                            ctx.fillStyle = 'rgba(219, 39, 119, ' + (elementStress * 0.6) + ')';
                            ctx.fill();
                        }
                        ctx.restore();
                    } else {
                        // Roller drawing (rectangles)
                        ctx.save();
                        ctx.translate(rx, ry);
                        ctx.rotate(a);
                        ctx.fillStyle = '#cbd5e1';
                        ctx.beginPath();
                        ctx.roundRect(-10 * scale, -11.5 * scale, 20 * scale, 23 * scale, 3 * scale);
                        ctx.fill();
                        ctx.lineWidth = 1.5 * scale;
                        ctx.strokeStyle = '#475569';
                        ctx.stroke();
                        if (elementStress > 0.05) {
                            ctx.beginPath();
                            ctx.roundRect(-10 * scale, -11.5 * scale, 20 * scale, 23 * scale, 3 * scale);
                            ctx.fillStyle = 'rgba(219, 39, 119, ' + (elementStress * 0.6) + ')';
                            ctx.fill();
                        }
                        ctx.restore();
                    }
                }
                ctx.restore();
                // 7. Load Vector Arrows
                if (state.fr > 0) {
                    ctx.save();
                    ctx.strokeStyle = '#db2777';
                    ctx.fillStyle = '#db2777';
                    ctx.lineWidth = Math.min(state.fr * 0.04 + 2, 7) * scale;
                    ctx.shadowBlur = 8 * scale;
                    ctx.shadowColor = '#db2777';
                    // Vertical arrow
                    const arrowTop = Math.max(cy - 120 * scale, 22 * scale);
                    ctx.beginPath();
                    ctx.moveTo(cx, arrowTop);
                    ctx.lineTo(cx, cy - 55 * scale);
                    ctx.stroke();
                    // Arrowhead
                    ctx.beginPath();
                    ctx.moveTo(cx, cy - 52 * scale);
                    ctx.lineTo(cx - 8 * scale, cy - 65 * scale);
                    ctx.lineTo(cx + 8 * scale, cy - 65 * scale);
                    ctx.closePath();
                    ctx.fill();
                    // Text
                    ctx.fillStyle = '#db2777';
                    ctx.font = 'bold ' + Math.max(9, Math.round(11 * scale)) + 'px Inter';
                    ctx.fillText('Radial Load Fr = ' + state.fr.toFixed(1) + ' kN', cx + 12 * scale, arrowTop + 14 * scale);
                    ctx.restore();
                }
                // Axial Arrow (Fa) pushing side-on to shaft center
                if (state.fa > 0) {
                    ctx.save();
                    ctx.strokeStyle = '#0284c7';
                    ctx.fillStyle = '#0284c7';
                    ctx.lineWidth = Math.min(state.fa * 0.04 + 2, 7) * scale;
                    ctx.shadowBlur = 8 * scale;
                    ctx.shadowColor = '#0284c7';
                    // Horizontal arrow
                    ctx.beginPath();
                    ctx.moveTo(cx - 215 * scale, cy);
                    ctx.lineTo(cx - 115 * scale, cy);
                    ctx.stroke();
                    // Arrowhead
                    ctx.beginPath();
                    ctx.moveTo(cx - 112 * scale, cy);
                    ctx.lineTo(cx - 125 * scale, cy - 8 * scale);
                    ctx.lineTo(cx - 125 * scale, cy + 8 * scale);
                    ctx.closePath();
                    ctx.fill();
                    // Text
                    ctx.fillStyle = '#0284c7';
                    ctx.font = 'bold ' + Math.max(9, Math.round(11 * scale)) + 'px Inter';
                    ctx.fillText('Axial Fa = ' + state.fa.toFixed(1) + ' kN', cx - 205 * scale, cy - 12 * scale);
                    ctx.restore();
                }
                requestAnimationFrame(animate);
            }
            requestAnimationFrame(animate);
            // Bind Event Listeners
            btnTypeBall.addEventListener('click', function() { setBearingType('ball'); });
            btnTypeRoller.addEventListener('click', function() { setBearingType('roller'); });
            inputC.addEventListener('change', syncCFromInput);
            sliderC.addEventListener('input', syncCFromSlider);
            inputFr.addEventListener('change', syncFrFromInput);
            sliderFr.addEventListener('input', syncFrFromSlider);
            inputFa.addEventListener('change', syncFaFromInput);
            sliderFa.addEventListener('input', syncFaFromSlider);
            inputRpm.addEventListener('change', syncRpmFromInput);
            sliderRpm.addEventListener('input', syncRpmFromSlider);
            selectFd.addEventListener('change', function() {
                state.fd = parseFloat(selectFd.value);
                calculateBearingLife();
            });
            // Initial Calculations
            calculateBearingLife();
            // Right click / Copy Protection
            (function() {
                function blockEvents() {
                    document.addEventListener('contextmenu', function(e) {
                        e.preventDefault();
                        alert("이 콘텐츠는 저작권법의 보호를 받습니다. 무단 복제 및 우클릭을 금지합니다.");
                        return false;
                    }, { capture: true });
                    document.addEventListener('selectstart', function(e) {
                        e.preventDefault();
                        return false;
                    }, { capture: true });
                    document.addEventListener('keydown', function(e) {
                        if (e.key === 'F12') {
                            e.preventDefault();
                            alert("이 콘텐츠는 저작권법의 보호를 받습니다. 무단 복제 및 우클릭을 금지합니다.");
                            return false;
                        }
                        if (e.ctrlKey) {
                            if (e.key === 'u' || e.key === 'c' || e.key === 's') {
                                e.preventDefault();
                                alert("이 콘텐츠는 저작권법의 보호를 받습니다. 무단 복제 및 우클릭을 금지합니다.");
                                return false;
                            }
                        }
                    }, { capture: true });
                }
                if (document.readyState === 'complete' || document.readyState === 'interactive') {
                    blockEvents();
                } else {
                    document.addEventListener('DOMContentLoaded', blockEvents);
                }
            })();
        })();
</script>


<div style="background: linear-gradient(135deg, rgba(0,242,254,0.03), rgba(138,43,226,0.03)); border: 1px solid rgba(0,242,254,0.15); border-radius: 12px; padding: 18px 24px; margin: 25px auto 35px auto; font-size: 0.95em; color: #4b5563; line-height: 1.7; font-family: sans-serif;">
    <strong style="color: #1f2937; font-size: 1.05em; display: flex; align-items: center; gap: 8px;">
        <span style="font-size: 1.2em;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span> 간편 사용 설명서
    </strong>
    <ol style="margin: 10px 0 0 0; padding-left: 20px;">
        <li style="margin-bottom: 6px;"><strong>베어링 형식 선택: 깊은 홈 볼 베어링(지수 p=3) 또는 롤러 베어링(지수 p=3.33)을 설정합니다.</strong></li>
<li style="margin-bottom: 6px;">설계 제어 변수 조절: 기본 동적 부하 용량(C), 반경방향 하중(Fr), 축방향 하중(Fa), 회전 속도(RPM) 슬라이더를 조절합니다.</li>
<li style="margin-bottom: 6px;">충격 계수 선택: 기계의 진동 및 충격 조건에 따라 하중 계수(fd)를 지정합니다.</li>
<li style="margin-bottom: 6px;">실시간 응력 가시화 확인: 2D 베어링 시뮬레이터 내부에서 전동체(Ball/Roller)와 와이어프레임 궤도 접촉 부위에 작용하는 응력 집중도(Magenta/Red Glow)를 확인합니다.</li>
<li style="margin-bottom: 6px;">수명 판정 및 출력값 분석: 계산서에서 회전수 기준 수명(L10)과 시간 기준 정격수명(L10h)이 장비 권장 수명 범위를 충족하는지 실시간 판정합니다.</li>
    </ol>
</div>


<details class="premium-seo-accordion" style="border: 1px solid rgba(0,0,0,0.08); border-radius: 12px; background: #fbfbfc; padding: 0; margin: 30px auto; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.01); font-family: sans-serif;">
    <summary style="display: flex; justify-content: space-between; align-items: center; padding: 20px 24px; font-size: 1.1em; font-weight: 700; color: #1f2937; cursor: pointer; user-select: none; outline: none; list-style: none;">
        <span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4da.png" alt="📚" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 상세 기계공학 해설 및 설계 규격 (ISO 281) 확인하기</span>
        <span class="accordion-arrow" style="font-size: 0.9em; color: #9ca3af; transition: transform 0.2s ease;">▼</span>
    </summary>
    <div style="padding: 0 24px 24px 24px; border-top: 1px solid rgba(0,0,0,0.04); background: #ffffff; border-radius: 0 0 12px 12px; font-size: 0.98em; color: #374151; line-height: 1.8;">
        <div style="margin-top: 20px;">
            <h3>1. 베어링의 피로 수명 및 L10 수명의 물리학적 정의</h3>
<p>회전 기계 요소 설계에서 <strong>구름 베어링(Rolling Bearing)</strong>의 수명은 궤도륜(Ring) 또는 전동체(Rolling Element)의 재료에 최초로 반복 피로에 의한 박리(Flaking / Spalling) 현상이 나타날 때까지의 총 회전수 또는 운전 시간으로 정의됩니다. 동일한 규격의 베어링들을 동일한 조건에서 운전하더라도 재료 피로의 통계적 특성으로 인해 개별 수명은 넓은 분포를 보입니다.</p><p>이에 따라 ISO 281 규격은 <strong>정격 수명 L<sub>10</sub> (Nominal Fatigue Life)</strong>을 표준으로 삼고 있습니다. 이는 <em>동일한 군의 베어링들 중 90%가 피로 손상 없이 도달할 수 있는 신뢰도 90%의 통계적 수명</em>을 의미합니다. 만약 신뢰도를 95%나 99%로 올리고자 한다면, 신뢰도 보정 계수(a<sub>1</sub>)를 곱하는 수정 정격 수명(L<sub>10m</sub>) 공식을 사용해야 합니다.</p>
<h3>2. ISO 281 정격 수명 기본 계산식 및 인자 분석</h3>
<p>베어링의 기본 피로 수명 공식은 다음과 같습니다:</p><p style="text-align: center; font-weight: bold; background: #f3f4f6; padding: 12px; border-radius: 8px;">L<sub>10</sub> = (C / P)<sup>p</sup> &nbsp;[10<sup>6</sup> 회전]</p><p>여기서 인자들은 다음과 같이 정의됩니다:</p><ul><li><strong>C: 기본 동정격 하중 (Basic Dynamic Load Rating, kN)</strong> &#8211; 100만 회전의 정격 수명을 가질 때 베어링이 견딜 수 있는 일정한 크기와 방향의 순수 하중을 뜻하며 베어링 규격표(Catalog)에 명시됩니다.</li><li><strong>P: 동당량 하중 (Equivalent Dynamic Load, kN)</strong> &#8211; 실제 베어링에 가해지는 반경방향 하중(F<sub>r</sub>)과 축방향 하중(F<sub>a</sub>)의 합성치이며, 운전 중 충격 진동을 고려하기 위해 충격 계수(f<sub>d</sub>)를 반영하여 다음과 같이 산정합니다: <code>P = f<sub>d</sub> &times; (X &middot; F<sub>r</sub> + Y &middot; F<sub>a</sub>)</code>.</li><li><strong>p: 수명 지수 (Life Exponent)</strong> &#8211; 접촉 형상에 따라 다르며 <strong>볼 베어링은 p = 3</strong>, <strong>롤러 베어링은 p = 10/3 (3.333)</strong>을 적용합니다.</li></ul><p>시간 기준 수명(L<sub>10h</sub>)은 회전 속도 <code>N [RPM]</code>을 적용하여 시간 단위(Hours)로 변환해 유도합니다:</p><p style="text-align: center; font-weight: bold; background: #e0f2fe; padding: 16px; border-radius: 8px; font-size: 1.1em; color: #0369a1;">L<sub>10h</sub> = (10<sup>6</sup> &times; L<sub>10</sub>) / (60 &times; N) &nbsp;[시간, Hours]</p>
<h3>3. 산업 분야별 권장 베어링 목표 수명 가이드</h3>
<p>기계설계 시 사용 수명이 설계 목표를 만족하는지 검토해야 하며, 일반적으로 널리 쓰이는 가이드라인은 다음과 같습니다:</p><ul><li><strong>단시간 또는 단속 운전 기계 (가전제품, 수동 전동공구 등):</strong> 500 ~ 2,000 시간</li><li><strong>단시간 가동되나 신뢰성이 중요한 장비 (비상용 펌프, 단기 운전 크레인):</strong> 2,000 ~ 8,000 시간</li><li><strong>일반 산업 기계 및 주간 가동 공장 설비 (컨베이어, 일반 송풍기):</strong> 10,000 ~ 20,000 시간</li><li><strong>24시간 연속 운전 기계 및 고신뢰성 필수 설비 (발전소 펌프, 대형 압축기, 선박 추진계):</strong> 40,000 ~ 100,000 시간 이상</li></ul>
        </div>
    </div>
</details>
<style>
details.premium-seo-accordion[open] summary .accordion-arrow { transform: rotate(180deg); color: #00f2fe; }
details.premium-seo-accordion summary::-webkit-details-marker { display: none; }
details.premium-seo-accordion:hover { border-color: rgba(0,242,254,0.3); }
</style>

]]></content:encoded>
					
					<wfw:commentRss>https://myengnote.com/bearing-life-calculator-simulator/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>베어링 정격하중 및 수명 실무 (Bearing Dynamic Load Rating and Life Prediction Practice)</title>
		<link>https://myengnote.com/deep-groove-ball-bearing-dynamic-load-rating-c-calculation-life-prediction/</link>
					<comments>https://myengnote.com/deep-groove-ball-bearing-dynamic-load-rating-c-calculation-life-prediction/#respond</comments>
		
		<dc:creator><![CDATA[동동]]></dc:creator>
		<pubDate>Mon, 05 Jan 2026 22:47:35 +0000</pubDate>
				<category><![CDATA[KS규격/기계요소]]></category>
		<category><![CDATA[KS규격]]></category>
		<category><![CDATA[L10]]></category>
		<category><![CDATA[기계설계]]></category>
		<category><![CDATA[동정격하중]]></category>
		<category><![CDATA[베어링]]></category>
		<category><![CDATA[베어링수명]]></category>
		<guid isPermaLink="false">https://myengnote.com/deep-groove-ball-bearing-dynamic-load-rating-c-calculation-life-prediction/</guid>

					<description><![CDATA[베어링 고장 원인 분석부터 수명 연장 전략까지, 깊은 홈 볼 베어링의 기본 동정격 하중 C 계산법과 L10 수명 예측 실무를 상세히 알아봅니다. 설비 유지보수 비용을 절감하는 핵심 설계 기준을 제시합니다.... <a href="https://myengnote.com/deep-groove-ball-bearing-dynamic-load-rating-c-calculation-life-prediction/" style="text-decoration:none; color:#0073aa; font-weight:bold;">[본문 전체보기 >]</a>]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">“베어링 수명 계산 시 ‘적당히 오버 스펙’으로 선정하고 안심하는 습관, 정말 괜찮을까요?”</p>
<p class="wp-block-paragraph">물론 안전 마진을 높이는 것은 중요합니다. 하지만 무작정 큰 규격의 베어링을 사용하면 재료비 상승은 물론, 외경이 커져 하우징 설계가 복잡해지며, 장착 시 적절한 예압 설정이 어려워지는 문제가 발생합니다. 신입 시절, 불필요한 불안감 때문에 고하중 영역이 아님에도 규격이 큰 베어링을 사용했다가, 초기 진동 파손으로 생산 라인이 멈추는 실수를 저지른 적이 있습니다. 이로 인해 선배 엔지니어로부터 가혹한 질책을 받았던 기억이 생생합니다.</p>
<p class="wp-block-paragraph">베어링이 갑자기 고장 나면 교체 비용뿐만 아니라 생산 손실 비용까지 발생하여 설비 전체가 ‘돈 먹는 하마’로 변합니다. 핵심은 정확한 동정격 하중(C) 분석을 통해 베어링의 피로 수명을 정밀하게 예측하고, 과도한 설계나 불안한 설계 사이의 아슬아슬한 ‘줄타기’에서 중심을 잡는 것입니다.</p>
<p class="wp-block-paragraph">지금부터 깊은 홈 볼 베어링의 기본 동정격 하중 C를 계산하고, 실제 운전 조건에서의 수명(L<sub>10</sub>)을 예측하는 실무 지침을 상세히 살펴보겠습니다.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="559" src="https://myengnote.com/wp-content/uploads/2026/01/Gemini_Generated_Image_l5vzigl5vzigl5vz-1024x559.png" alt="베어링 예압 예시" class="wp-image-452" srcset="https://myengnote.com/wp-content/uploads/2026/01/Gemini_Generated_Image_l5vzigl5vzigl5vz-1024x559.png 1024w, https://myengnote.com/wp-content/uploads/2026/01/Gemini_Generated_Image_l5vzigl5vzigl5vz-300x164.png 300w, https://myengnote.com/wp-content/uploads/2026/01/Gemini_Generated_Image_l5vzigl5vzigl5vz-768x419.png 768w, https://myengnote.com/wp-content/uploads/2026/01/Gemini_Generated_Image_l5vzigl5vzigl5vz-1536x838.png 1536w, https://myengnote.com/wp-content/uploads/2026/01/Gemini_Generated_Image_l5vzigl5vzigl5vz-2048x1117.png 2048w, https://myengnote.com/wp-content/uploads/2026/01/Gemini_Generated_Image_l5vzigl5vzigl5vz-scaled.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
<ul class="wp-block-list">
<li>잠깐! 계산을 하려면 베어링 번호(6004, 6205 등)부터 읽을 줄 알아야 합니다. 제조사별 암호 같은 기호가 헷갈린다면 <strong><a href="https://myengnote.com/rolling-bearing-designation-guide/">구름 베어링 호칭 번호 완전 해독 가이드</a></strong>를 먼저 보고 오세요.</li>
</ul>
<h2 class="wp-block-heading">1. 기본 동정격 하중 (C)의 정의와 중요성</h2>
<p class="wp-block-paragraph">베어링의 기본 동정격 하중(Basic Dynamic Load Rating, C)은 베어링 수명을 계산하는 데 사용되는 가장 핵심적인 기준값입니다. 이는 KS B ISO 281에 의거하여 구름 베어링의 설계 피로 수명과 관련된 하중 능력치를 나타냅니다.</p>
<ul class="wp-block-list">
<li><strong>정의:</strong> 동일한 베어링 그룹 중 90%가 최소한 100만 회전(10<sup>6</sup> 회전)을 견딜 수 있는 최대 하중을 의미합니다. (즉, 기본 정격 수명 L<sub>10</sub> = 10<sup>6</sup> 회전일 때의 정격 하중)</li>
<li><strong>단위:</strong> 뉴턴(N) 또는 킬로뉴턴(kN)을 사용합니다.</li>
<li><strong>실제 활용:</strong> 제조사 카탈로그에 제시된 C 값을 사용하여 설비의 실제 운전 하중(P)과 비교하여 베어링의 예상 수명을 계산합니다.</li>
</ul>
<h2 class="wp-block-heading">2. 깊은 홈 볼 베어링의 치수 및 정격 하중 (KS/ISO 기준)</h2>
<p class="wp-block-paragraph">깊은 홈 볼 베어링은 가장 일반적인 베어링 유형으로, 레이디얼 하중과 일정 수준의 축 방향 하중을 동시에 지지할 수 있습니다. 다음 표는 KS B 2052 (구름 베어링) 및 ISO 15에 따른 일반적인 치수 계열의 사양 일부를 발췌한 것입니다.</p>
<h3 class="wp-block-heading">사용 기호 설명</h3>
<ul class="wp-block-list">
<li>d: 안지름</li>
<li>D: 바깥지름</li>
<li>B: 폭</li>
<li>C: 기본 동정격 하중</li>
<li>C<sub>0</sub>: 기본 정정격 하중</li>
</ul>
<div style="overflow-x: auto; white-space: nowrap;">
<table style="width:100%; border-collapse:collapse; min-width:600px;">
<thead>
<tr>
<th style="background:#f8f9fa; border:1px solid #ddd; padding:8px;">호칭 번호</th>
<th style="background:#f8f9fa; border:1px solid #ddd; padding:8px;">d (안지름, mm)</th>
<th style="background:#f8f9fa; border:1px solid #ddd; padding:8px;">D (바깥지름, mm)</th>
<th style="background:#f8f9fa; border:1px solid #ddd; padding:8px;">B (폭, mm)</th>
<th style="background:#f8f9fa; border:1px solid #ddd; padding:8px;">C (기본 동정격 하중, kN)</th>
<th style="background:#f8f9fa; border:1px solid #ddd; padding:8px;">C<sub>0</sub> (기본 정정격 하중, kN)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="border:1px solid #ddd; padding:8px; vertical-align:middle;">6004</td>
<td style="border:1px solid #ddd; padding:8px; vertical-align:middle;">20</td>
<td style="border:1px solid #ddd; padding:8px; vertical-align:middle;">42</td>
<td style="border:1px solid #ddd; padding:8px; vertical-align:middle;">12</td>
<td style="border:1px solid #ddd; padding:8px; vertical-align:middle;">9.3</td>
<td style="border:1px solid #ddd; padding:8px; vertical-align:middle;">4.8</td>
</tr>
<tr>
<td style="border:1px solid #ddd; padding:8px; vertical-align:middle;">6205</td>
<td style="border:1px solid #ddd; padding:8px; vertical-align:middle;">25</td>
<td style="border:1px solid #ddd; padding:8px; vertical-align:middle;">52</td>
<td style="border:1px solid #ddd; padding:8px; vertical-align:middle;">15</td>
<td style="border:1px solid #ddd; padding:8px; vertical-align:middle;">14.0</td>
<td style="border:1px solid #ddd; padding:8px; vertical-align:middle;">7.8</td>
</tr>
<tr>
<td style="border:1px solid #ddd; padding:8px; vertical-align:middle;">6308</td>
<td style="border:1px solid #ddd; padding:8px; vertical-align:middle;">40</td>
<td style="border:1px solid #ddd; padding:8px; vertical-align:middle;">90</td>
<td style="border:1px solid #ddd; padding:8px; vertical-align:middle;">23</td>
<td style="border:1px solid #ddd; padding:8px; vertical-align:middle;">46.2</td>
<td style="border:1px solid #ddd; padding:8px; vertical-align:middle;">30.0</td>
</tr>
</tbody>
</table>
</div>
<h2 class="wp-block-heading">3. 등가 동정격 하중 (P) 계산 실무</h2>
<p class="wp-block-paragraph">베어링에는 일반적으로 레이디얼 하중(F<sub>r</sub>)과 축 방향 하중(F<sub>a</sub>)이 동시에 작용합니다. 베어링 수명을 계산하기 위해서는 이 두 하중을 하나의 가상적인 등가 동정격 하중(Equivalent Dynamic Load, P)으로 변환해야 합니다. 이 계산은 ISO 281 및 제조사의 지침을 따릅니다.</p>
<p class="wp-block-paragraph"><strong>등가 동정격 하중 (P) 공식:</strong></p>
<p class="wp-block-paragraph">P = X · F<sub>r</sub> + Y · F<sub>a</sub></p>
<ul class="wp-block-list">
<li>F<sub>r</sub>: 베어링에 작용하는 실제 레이디얼 하중 (N)</li>
<li>F<sub>a</sub>: 베어링에 작용하는 실제 축 방향 하중 (N)</li>
<li>X: 레이디얼 하중 계수</li>
<li>Y: 축 방향 하중 계수</li>
</ul>
<h3 class="wp-block-heading">하중 계수 (X, Y) 결정</h3>
<p class="wp-block-paragraph">X와 Y 값은 베어링 종류, 하중 조건, 특히 F<sub>a</sub> / C<sub>0</sub> 비율(C<sub>0</sub>: 기본 정정격 하중)과 e(판별 계수)에 따라 달라집니다. 깊은 홈 볼 베어링의 경우, 통상적으로 다음 기준에 따라 X와 Y를 결정합니다.</p>
<ol class="wp-block-list">
<li>먼저 축 하중 비율(F<sub>a</sub> / C<sub>0</sub>)을 계산하여 판별 계수(e)를 기준으로 합니다.</li>
<li><strong>만약 F<sub>a</sub> / F<sub>r</sub> ≤ e 인 경우 (상대적으로 축 하중 영향이 적을 때):</strong>
<ul class="wp-block-list">
<li>X = 1.0</li>
<li>Y = 0</li>
<li><em>→ 이 경우 P = F<sub>r</sub>이 됩니다.</em></li>
</ul>
</li>
<li><strong>만약 F<sub>a</sub> / F<sub>r</sub> &gt; e 인 경우 (상당한 축 하중 존재):</strong>
<ul class="wp-block-list">
<li>X = 0.56</li>
<li>Y = Y<sub>1</sub> (카탈로그에서 주어진 값, 통상 1.5 ~ 2.0 사이)</li>
</ul>
</li>
</ol>
<p class="wp-block-paragraph"><em>주의: 정확한 X, Y, e 값은 베어링의 설계 접촉각과 내부 구조에 따라 제조사 카탈로그를 반드시 참조해야 합니다.</em></p>
<h2 class="wp-block-heading">4. 베어링 수명 (L<sub>10</sub>) 예측</h2>
<p class="wp-block-paragraph">베어링의 수명은 피로 파손이 발생하기 전까지 회전한 총 회전수 또는 운전 시간으로 나타냅니다. 표준 피로 수명(L<sub>10</sub>)은 90%의 베어링이 고장나지 않고 달성할 수 있는 회전수를 의미하며, 다음과 같은 기본 공식으로 계산됩니다.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="559" src="https://myengnote.com/wp-content/uploads/2026/01/Gemini_Generated_Image_c6tfqoc6tfqoc6tf-1024x559.png" alt="베어링 수명계산 공식" class="wp-image-451" srcset="https://myengnote.com/wp-content/uploads/2026/01/Gemini_Generated_Image_c6tfqoc6tfqoc6tf-1024x559.png 1024w, https://myengnote.com/wp-content/uploads/2026/01/Gemini_Generated_Image_c6tfqoc6tfqoc6tf-300x164.png 300w, https://myengnote.com/wp-content/uploads/2026/01/Gemini_Generated_Image_c6tfqoc6tfqoc6tf-768x419.png 768w, https://myengnote.com/wp-content/uploads/2026/01/Gemini_Generated_Image_c6tfqoc6tfqoc6tf-1536x838.png 1536w, https://myengnote.com/wp-content/uploads/2026/01/Gemini_Generated_Image_c6tfqoc6tfqoc6tf-2048x1117.png 2048w, https://myengnote.com/wp-content/uploads/2026/01/Gemini_Generated_Image_c6tfqoc6tfqoc6tf-scaled.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
<h3 class="wp-block-heading">수명 계산 공식 (회전수 기준)</h3>
<p class="wp-block-paragraph">L<sub>10</sub> = ((C / P))<sup>p</sup></p>
<ul class="wp-block-list">
<li>L<sub>10</sub>: 기본 정격 수명 (10<sup>6</sup> 회전 단위)</li>
<li>C: 기본 동정격 하중</li>
<li>P: 등가 동정격 하중</li>
<li>p: 수명 지수 (볼 베어링은 p = 3, 롤러 베어링은 p = 10/3)</li>
</ul>
<h3 class="wp-block-heading">수명 계산 공식 (시간 기준)</h3>
<p class="wp-block-paragraph">현장에서는 회전수보다 운전 시간을 기준으로 수명을 예측하는 것이 일반적입니다.</p>
<p class="wp-block-paragraph">L<sub>10h</sub> = (L<sub>10</sub> × 10<sup>6</sup> / 60 × n)</p>
<ul class="wp-block-list">
<li>L<sub>10h</sub>: 기본 정격 수명 (시간 단위)</li>
<li>n: 베어링의 분당 회전 속도 (rpm)</li>
</ul>
<h3 class="wp-block-heading">실무 적용 예시</h3>
<p class="wp-block-paragraph">만약 설계자가 50,000시간의 수명을 목표로 한다면 (예: 6년 연속 운전), 요구되는 동정격 하중(C)을 역으로 계산하여 적절한 베어링 규격을 선정할 수 있습니다. 수명 계산은 단순 하중뿐만 아니라 온도 계수(f<sub>T</sub>), 회전 속도 계수(f<sub>n</sub>), 신뢰도 계수(a<sub>1</sub>), 재료 특성 계수(a<sub>2</sub>), 운전 조건 계수(a<sub>3</sub>) 등이 포함된 수정 수명 공식(L<sub>na</sub>)으로 확장됩니다. (L<sub>na</sub> = a<sub>1</sub> a<sub>2</sub> a<sub>3</sub> L<sub>10</sub>).</p>
<p class="wp-block-paragraph">설계 단계에서 P 값을 최소화하고 C 값을 최적으로 선택하는 것이 비용 절감과 설비 신뢰성 확보의 핵심입니다.</p>
<h2 class="wp-block-heading">0. 연관글</h2>
<ul class="wp-block-list">
<li>베어링은 주로 축에 장착되며, 키를 통해 동력을 전달하는 경우가 많습니다. 샤프트에 베어링을 설치하거나 키를 설계할 때 필요한 상세 치수 정보는 <a href="https://myengnote.com/parallel-key-standard-dimensions-ks-b-1311/">평행키 표준 규격 및 키홈 설계 기준 (KS B 1311)</a> 글에서 찾아볼 수 있습니다.</li>
</ul>
<hr style="border: 0; border-top: 1px solid #eee; margin: 40px 0 20px 0;">
<p style="text-align: center; font-size: 0.85em; color: #888; margin-bottom: 20px;">
    본 콘텐츠는 저작권법의 보호를 받으며, 무단 전재 및 재배포를 금지합니다.<br />
    Copyright 2026. 동동 All rights reserved.
</p>
<div id="no-js-overlay" style="position:fixed;top:0;left:0;width:100%;height:100%;background:#ffffff;z-index:999999;display:flex;justify-content:center;align-items:center;font-size:18px;color:#333;text-align:center;line-height:1.6;">
<p><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 콘텐츠 보안 안내</strong><br />저작권 보호를 위해 자바스크립트(JavaScript) 활성화가 필요합니다.<br />브라우저 설정에서 자바스크립트를 켜고 새로고침 해주세요.</p>
</div>
<p><script>
// JS is enabled, remove the blocker immediately
document.getElementById('no-js-overlay').style.display = 'none';</p>
<p>document.addEventListener('contextmenu', function(e) {
    e.preventDefault();
    alert('이 콘텐츠는 저작권법의 보호를 받습니다. 무단 복제 및 우클릭을 금지합니다.');
});
document.addEventListener('keydown', function(e) {
    if (e.ctrlKey && (e.key === 'c' || e.key === 'u' || e.key === 'a')) {
        e.preventDefault();
        alert('무단 복제를 금지합니다.');
    }
});
</script></p>
<style>
body {
    -webkit-user-select: none !important;
    -moz-user-select: none !important;
    -ms-user-select: none !important;
    user-select: none !important;
}
</style>
<p><!-- START_SIMULATOR_LINK_CARD_bearing_life --><a href="https://myengnote.com/bearing-life-calculator-simulator/" target="_blank" rel="noopener noreferrer" class="eng-simulator-card" style="text-decoration: none; background-color: #ffffff; border: 1px solid #e5e7eb; border-radius: 8px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); padding: 15px; margin: 10px 0; transition: box-shadow 0.2s; display: table; width: 100%; box-sizing: border-box;"><span style="display: table-cell; vertical-align: middle;"><span style="font-size: 30px; margin-right: 15px; float: left;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9ee.png" alt="🧮" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span><span style="display: block; overflow: hidden;"><span style="display: block; font-size: 0.9em; color: #10b981; font-weight: bold; margin-bottom: 4px;">실시간 공학 시뮬레이터 추천</span><span style="display: block; font-size: 1.1em; font-weight: bold; color: #111827;">베어링 수명 계산기 &#038; 실시간 2D 피로 해석 시뮬레이터</span></span></span><span style="display: table-cell; vertical-align: middle; width: 40px; text-align: right; color: #10b981; font-size: 24px; font-weight: bold;">→</span></a><!-- END_SIMULATOR_LINK_CARD_bearing_life --></p>
]]></content:encoded>
					
					<wfw:commentRss>https://myengnote.com/deep-groove-ball-bearing-dynamic-load-rating-c-calculation-life-prediction/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
