26、AI 预测性维护 (燃气轮机轴承) - /安全与维护组件/ai-predictive-maintenance-turbine

发布于:2025-05-22 ⋅ 阅读:(15) ⋅ 点赞:(0)

76个工业组件库示例汇总

AI 预测性维护模拟组件 (燃气轮机轴承)

概述

这是一个交互式的 Web 组件,旨在模拟基于 AI 的预测性维护 (Predictive Maintenance, PdM) 概念,应用于工业燃气轮机的关键部件(例如轴承)。它通过模拟传感器数据、动态预测剩余使用寿命 (RUL),并根据预测结果提供相应的维护建议,展示 PdM 的基本工作流程和价值。

重要提示: 此组件是一个高度简化的概念演示,其传感器数据、RUL 计算和 AI 模型均为模拟,不代表真实的物理过程或复杂的机器学习模型。它的主要目的是教学和概念展示。

主要功能

  • 设备与部件选择: 用户可以选择模拟的燃气轮机型号和具体的监测部件(如主轴承、输出轴承)。
  • 实时传感器数据模拟: 模拟与所选部件相关的关键传感器(如振动、温度、声发射、负载、油液颗粒等)的实时读数,并根据模拟的健康状况显示状态(正常、警告、临界)。
  • 动态 RUL 预测: 模拟 AI 模型根据当前的传感器数据和运行时间,持续预测所选部件的剩余使用寿命 (RUL),单位通常为小时或运行周期。
  • 预测置信度: 显示模拟的 AI 模型对其当前 RUL 预测的置信度百分比。
  • 三级维护建议: 根据预测的 RUL 值,自动生成并显示不同级别的维护建议:
    • 监控 (Monitor): RUL 充足,状态良好,建议常规监控。
    • 建议检查 (Inspect): RUL 低于警告阈值,建议在下次维护窗口进行检查。
    • 紧急更换 (Replace): RUL 低于临界阈值,存在较高失效风险,建议立即安排更换。
  • AI 模型特征重要性 (模拟): 展示模拟的 AI 模型认为哪些传感器特征对当前的 RUL 预测影响最大,帮助理解判断依据。
  • 可视化界面:
    • 采用简洁的科技感风格(类苹果工业风)。
    • 响应式三栏布局(选择区 | 传感器与预测区 | 建议与特征区),适应不同屏幕尺寸。
    • 通过颜色变化(RUL 值、传感器状态、建议卡片)提供直观的状态反馈。

如何使用

  1. 打开页面: 在现代浏览器中打开 index.html 文件。
  2. 选择设备: 从左上角的"选择设备"下拉菜单中选择一个燃气轮机型号(例如 GT-101)。
  3. 选择部件: 在"选择部件"下拉菜单中选择要监控的具体部件(例如 主轴承 A1)。
  4. 观察模拟:
    • 中间面板会显示该部件相关的模拟传感器读数,并实时更新。
    • 同时,中间面板也会显示模拟的 RUL 预测值和置信度,RUL 会随模拟时间的推移而逐渐降低。
    • 右侧面板会根据当前的 RUL 显示相应的维护建议级别、描述和行动建议。
    • 右下角会显示对当前预测影响最大的模拟特征及其相对重要性。
    • 模拟会持续进行,直到 RUL 降至 0 或用户选择其他部件。

模拟逻辑简述

  • 时间: 模拟以固定的时间步长(例如,每隔几秒代表运行 8 小时)推进。
  • 传感器数据: 每个传感器有一个基础值和正常的波动范围(通过高斯噪声模拟)。当模拟的 RUL 降低时,部分传感器的读数会根据预设的退化模型(例如线性增加)逐渐偏离正常范围,模拟部件老化的过程。
  • RUL 计算: 每个部件有一个基础的初始 RUL。RUL 的减少速度受基础退化率和当前传感器异常程度(通过计算一个综合的"异常分数"模拟)的影响。传感器读数越异常,RUL 下降越快。
  • 置信度: 模拟的置信度会随着 RUL 降低或传感器异常增多而逐渐下降。
  • 特征重要性: 预设了不同部件下各传感器的相对重要性得分,并可能随 RUL 变化进行微小的模拟调整。

再次强调,以上均为简化模拟,用于演示概念。

文件结构

ai-predictive-maintenance-turbine/
├── index.html         # 组件的 HTML 结构
├── styles.css         # 定义视觉样式的 CSS 文件
├── script.js          # 实现交互逻辑和模拟功能的 JavaScript 文件
└── README.md          # 本说明文件

技术栈

  • HTML5
  • CSS3 (使用了 CSS 变量和 Flexbox/Grid 布局)
  • JavaScript (ES6+)
  • 无外部库依赖。

效果展示

在这里插入图片描述

源码

index.html

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AI预测性维护 - 燃气轮机轴承</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <div class="pdm-container">
        <header class="main-header">
            <h1>基于AI的预测性维护组件</h1>
            <div class="header-info">
                <span class="model-info">模型类型: LSTM</span>
                 <span class="time-display" id="currentTime">--:--:--</span>
            </div>
        </header>

        <main class="main-content">
            <!-- Column 1: Component Selection & Sensor Dashboard -->
            <section class="selection-sensors-panel panel">
                <div class="selection-section">
                    <h2><i class="icon icon-turbine"></i> 设备与部件</h2>
                    <select id="turbineSelector">
                        <option value="GT001">燃气轮机 GT-001</option>
                        <option value="GT002">燃气轮机 GT-002</option>
                    </select>
                    <select id="bearingSelector">
                        <option value="B01">主轴承 #1 (输入端)</option>
                        <option value="B02">主轴承 #2 (输出端)</option>
                    </select>
                    <button class="action-button" id="loadDataBtn">加载/刷新数据</button>
                </div>
                <div class="sensors-dashboard-section">
                    <h2><i class="icon icon-sensors"></i> 实时传感器数据</h2>
                    <div id="sensorDashboard" class="sensor-dashboard">
                        <div class="sensor-reading placeholder" id="sensorPlaceholder">请选择设备并加载数据</div>
                        <!-- Sensor readings populated by JS -->
                        <!-- Example Structure (repeated by JS): -->
                        <!-- 
                        <div class="sensor-reading" data-sensor-id="vibration_rms">
                            <span class="sensor-name">振动 RMS</span>
                            <span class="sensor-value">-- <span class="unit">mm/s</span></span>
                            <div class="status-indicator good"></div>
                        </div> 
                        -->
                    </div>
                </div>
            </section>

            <!-- Column 2: AI Prediction & History -->
            <section class="prediction-history-panel panel">
                <h2><i class="icon icon-ai"></i> AI 预测与历史趋势</h2>
                <div class="prediction-output">
                    <h3><i class="icon icon-rul"></i> 预测剩余使用寿命 (RUL)</h3>
                    <div class="rul-display">
                        <span class="rul-value" id="predictedRulValue">--</span>
                        <span class="rul-unit" id="predictedRulUnit">小时</span>
                    </div>
                    <div class="prediction-confidence">
                        置信度: <span id="predictionConfidence">--</span>%
                        <div class="confidence-bar-container">
                            <div class="confidence-bar" id="confidenceBar"></div>
                        </div>
                    </div>
                </div>
                <div class="history-chart-section">
                    <h3><i class="icon icon-chart"></i> 关键传感器与 RUL 历史趋势</h3>
                    <div class="chart-placeholder" id="historyChart">
                         <div class="fake-chart prediction-trend"></div>
                         <span class="chart-axis-label y-axis">数值 / RUL</span>
                         <span class="chart-axis-label x-axis">运行时间 / 周期</span>
                         <div class="chart-legend">
                             <span class="legend-item sensor">传感器值 (模拟)</span>
                             <span class="legend-item rul">预测 RUL (模拟)</span>
                         </div>
                    </div>
                </div>
            </section>

            <!-- Column 3: Maintenance Recommendation -->
            <section class="recommendation-panel panel">
                <h2><i class="icon icon-wrench"></i> 维护建议</h2>
                <div id="recommendationDetails" class="recommendation-details">
                    <div class="recommendation-card placeholder" id="recommendationPlaceholder">等待预测结果...</div>
                    <!-- Recommendation card populated by JS -->
                    <!-- Example Structure:
                    <div class="recommendation-card level-monitor">
                        <div class="card-header">
                            <i class="icon icon-monitor"></i>
                            <span class="level-text">继续监控</span>
                        </div>
                        <p class="card-description">当前状态正常,RUL 充足。按标准周期进行巡检。</p>
                         <div class="next-action">下次评估: <span id="nextEvalTime">--</span></div>
                    </div>
                    -->
                </div>
                 <div class="feature-importance-section">
                      <h4><i class="icon icon-features"></i> 模型特征重要性 (概念)</h4>
                      <ul id="featureImportanceList" class="feature-list">
                          <li class="placeholder">模型加载中...</li>
                           <!-- Features populated by JS -->
                      </ul>
                 </div>
            </section>
        </main>

        <footer class="main-footer">
            <p>&copy; 2024 AI预测性维护模拟系统. 概念演示.</p>
        </footer>
    </div>

    <script src="script.js"></script>
</body>
</html> 

styles.css

:root {
   
    --bg-color-light: #f9f9f9;
    --bg-color-container: #ffffff;
    --header-bg: #f5f5f7;
    --panel-bg: #ffffff;
    --border-color: #d1d1d6;
    --border-color-subtle: #e5e5ea;
    --text-primary: #1d1d1f;
    --text-secondary: #515154;
    --text-label: #6e6e73;
    --accent-blue: #007aff;
    --accent-green: #34c759;
    --accent-orange: #ff9500;
    --accent-red: #ff3b30;
    --accent-purple: #af52de; /* AI/Prediction related */
    --accent-teal: #5ac8fa;   /* Sensor/Data related */
    --accent-grey: #8e8e93;
    --status-good: var(--accent-green);
    --status-warning: var(--accent-orange);
    --status-critical: var(--accent-red);
    --level-monitor-bg: rgba(52, 199, 89, 0.08);
    --level-monitor-border: var(--status-good);
    --level-inspect-bg: rgba(255, 149, 0, 0.08);
    --level-inspect-border: var(--status-warning);
    --level-replace-bg: rgba(255, 59, 48, 0.08);
    --level-replace-border: var(--status-critical);
    --list-item-hover-bg: #f0f0f0;
    --input-bg: #f0f2f5;
    --input-border: transparent;
    --input-focus-border: var(--accent-blue);
    --placeholder-text: #aaaaaa;
    --chart-placeholder-bg: #f8f8f8;
    --chart-axis-color: #b0b0b0;
    --chart-sensor-color: var(--accent-teal);
    --chart-rul-color: var(--accent-purple);
    --shadow-color: rgba(0, 0, 0, 0.05);
    --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    --font-monospace: "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
    --border-radius: 8px;
    --border-radius-small: 4px;
    --transition-speed: 0.3s; /* Slightly slower for smoother transitions */
}

* {
   
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

body {
   
    font-family: var(--font-family);
    background-color: var(--bg-color-light);
    color: var(--text-primary);
    line-height: 1.4;
    overflow-x: hidden;
}

.pdm-container {
   
    max-width: 1600px;
    margin: 1rem auto;
    background-color: var(--bg-color-container);
    border-radius: var(--border-radius);
    box-shadow: 0 4px 12px var(--shadow-color);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    height: calc(100vh - 2rem); /* Limit height */
    min-height: 650px;
}

/* Header */
.main-header {
   
    background-color: var(--header-bg);
    padding: 0.75rem 1.5rem;
    border-bottom: 1px solid var(--border-color);
    flex-shrink: 0;
    display: flex;
    justify-content: space-between;
    align-items: center;
}


网站公告

今日签到

点亮在社区的每一天
去签到