← 返回
未分类

机械振动健康快速筛查

旋转机械振动健康快速筛查(含鲁棒接入层)。当用户提供任意格式的振动信号文件(CSV/NPY/MAT/WAV/XLSX/Parquet 等),即便采样率、单位、转速未知,也能给出 ISO 20816-3:2022 健康度判定。本 Skill 自带"接入层"——自动识别格式、嗅探元数据、单位归一、与用户确认低置信项——再调用核心 ISO 评估算法,输出 A/B/C/D 区 + 健康度评分(0-100)。适用于任意联轴工业旋转设备(电机/泵/风机/压缩机/汽轮机)的点检、巡检、现场快速健康初筛。
旋转机械振动健康快速筛查(含鲁棒接入层)。当用户提供任意格式的振动信号文件(CSV/NPY/MAT/WAV/XLSX/Parquet 等),即便采样率、单位、转速未知,也能给出 ISO 20816-3:2022 健康度判定。本 Skill 自带"接入层"——自动识别格式、嗅探元数据、单位归一、与用户确认低置信项——再调用核心 ISO 评估算法,输出 A/B/C/D 区 + 健康度评分(0-100)。适用于任意联轴工业旋转设备(电机/泵/风机/压缩机/汽轮机)的点检、巡检、现场快速健康初筛。
user_09377e9a
未分类 community v1.0.0 1 版本 98461.5 Key: 无需
★ 0
Stars
📥 64
下载
💾 0
安装
1
版本
#latest

概述

旋转机械振动健康快速筛查 v1.2.0

本 Skill 是 "通用鲁棒振动健康筛查" ——评委从 U 盘随手拷一个振动文件过来,不管格式、单位、采样率是否标注,都要给出一个 有依据 的 ISO 20816-3 健康判定。

核心设计:单点 + 通用

  • 单点:只做"振动健康筛查"这一件事(不做轴承故障定位、不做齿轮诊断、不做寿命预测)
  • 通用:接入层能吃 9 种格式 + 元数据三级回退 + 单位归一,遇到没见过的格式时由 Claude 现场写代码

标准依据(严格)

项目内容
------
主标准ISO 20816-3:2022 Mechanical vibration — Part 3
中国国标GB/T 6075.3(等同采用 ISO 20816-3)
适用范围功率 > 15 kW,转速 120–30000 RPM 的联轴工业机械
评估量RMS 振动速度(mm/s)
有效频率范围10 Hz – 1000 Hz(< 600 RPM 设备扩展到 2 Hz – 1000 Hz)
评估前提稳态运行工况,不适用于启停瞬态

何时调用此 Skill

满足任一即触发:

  • 用户上传 任意格式 的振动信号文件,询问设备是否健康
  • 关键词:振动筛查 / 健康度 / 设备状态 / 健不健康 / ISO 20816 / 振动区 / 点检 / 巡检 / RMS 速度 / 振动严重度
  • 现场评审、设备健康看板、批量信号初筛
  • 任意旋转机械(电机/泵/风机/压缩机/汽轮机/发电机)的健康初筛

> 注:本 Skill 是 筛查工具,不做故障定位。如用户要识别具体故障类型(外圈/内圈/齿轮等),应转用 bearing-fault-diagnosisgear-diagnosis


工作流(严格按此顺序

四个脚本配合完成一次筛查。所有脚本输出 JSON,可串联调用。

Step 1:解析信号文件

python scripts/load_signal.py <用户给的文件>
# 例:python scripts/load_signal.py /data/U盘里的奇怪.csv

返回字段:

  • signal_path — 归一后的 NPY 临时文件路径(后续步骤都用这个)
  • n_samples — 样本数
  • format — 检测到的格式
  • fs_from_file — 文件头自带的采样率(仅 WAV/TDMS 有),可为 null
  • amplitude_stats — RMS / peak / mean / min / max(供 Step 2 用)
  • embedded_metadata文件内嵌的元数据(如 MAT struct 的 bearing.sr/rate),自动写入 .meta.json sidecar,Step 2 自动读取
  • candidates仅 MAT 多变量时存在;若有多个候选变量,先和用户确认选哪个
  • warnings — 必须告诉用户的提示(多列 CSV 选哪列、MAT 多变量等)

特殊情况

  • 不支持的格式(status=error 且提示)→ 由你(Claude)现场写 Python 读取(用 nptdms/librosa/或自定义解析),保存为 NPY 后从 Step 2 继续
  • MAT 多个候选变量 → 用 --mat-var 重跑(支持嵌套路径如 bearing.gs),或先问用户

Step 2:补全元数据

python scripts/infer_metadata.py \
    --original <用户原始文件路径> \
    --signal <Step 1 输出的 signal_path> \
    [--fs-user <用户明确给的采样率>] \
    [--unit-user <用户明确给的单位>] \
    [--rpm-user <用户明确给的 RPM>]

> 重要:脚本会自动读取 .meta.json sidecar(Step 1 写的),把文件内嵌的 fs/rpm 等元数据无缝接入——你不需要手动传递。

返回:{fs, unit, canonical_unit, rpm, confidence, reasoning, needs_user_confirm, warnings}

多级回退(优先级从高到低):

  1. --*-user 用户明确指定
  2. 同目录的 _metadata.json 旁路文件(沿用主项目约定)
  3. Step 1 写的 sidecar .meta.json(含 MAT struct 内的 sr/rate、WAV 头的 fs 等)
  4. 文件名正则(_fs25600 / _25kHz / _1800rpm / _mms / _g
  5. 信号幅值启发(含 g vs m/s² 模糊带的诚实低置信标注)
  6. 兜底默认 + 显式警告

Step 3:与用户确认(仅当 needs_user_confirm 非空)

如果 Step 2 返回的 needs_user_confirm 包含 fsunit必须在调用 Step 5 之前与用户对话确认,模板:

> "我从这个文件中没找到明确的采样率信息,按工业常见值默认假设为 25600 Hz——如果实际不是请告诉我。

>

> 信号的 RMS 是 0.99,峰值 6.2,单位我判断不出来是 g 还是 m/s²(这两种在这个幅值范围都合理)。请问采样率是多少?单位是哪个?"

仅当 confidence=high 时可以跳过确认直接出结果

Step 4:单位归一(仅当 canonical_unit ∉ {g, mm/s})

python scripts/convert_unit.py \
    --signal <Step 1/2 后的 NPY> \
    --from <canonical_unit> \
    --to <g 或 mm/s> \
    [--fs <采样率,跨类时必传>]

返回新的 signal_path。常见路径:m/s^2gμmmm/smilmm/s

Step 5:调用 ISO 评估

python scripts/screen.py \
    --信号 <最终的 NPY 路径> \
    --采样率 <Step 2 确定的 fs> \
    --单位 <g 或 mm/s> \
    [--转速 <RPM>] \
    [--机器组别 1 或 2]

Step 6:组织给用户的回答

必须包含:

  1. 整体判定 + 健康度评分(永远有值)—— 用 emoji 标识,如 🟡 监视 / 评分 72
  2. ISO 区 + 阈值依据
  3. 关键指标(RMS、峭度、峰值因子、主频)
  4. 算法做的所有自动处理
    • 选了哪一列(如 CSV 多列时)
    • 用了哪些元数据来源(sidecar JSON / filename / amplitude heuristic)
    • 走了什么降级路径
    • 单位转换过程
  5. 可信度等级(高/中/低)
  6. 建议行动
  7. 报告字段状态(v1.2.0 暂不生成 HTML,_报告.HTMLnull

不规范输入的处理决策树

情形处置
------
不支持的格式(如 .tdms你现场用 nptdms 读,存 NPY,从 Step 2 继续
MAT 多个候选变量--mat-var 重跑;或问用户
CSV 多列且没有列名暗示load_signal 已按"列名+方差+单调性"启发选一列;告诉用户选了哪列、其他候选有哪些
采样率未知infer_metadata 默认 25600 Hz + 低置信;必须问用户确认
单位未知(且幅值模糊)infer_metadata 默认 g + 低置信;必须问用户
单位是 m/s² / μm / mil自动走 Step 4 convert_unit.py
转速未知不用问用户,screen.py 内部会从频谱反推
信号过短 / 噪声大 / NaN 多screen.py 内部已有降级路径,结果里会有 _警告 字段
用户提供错误的机器组别(3 或 4)告诉用户 ISO 20816-3 只有 Group 1 和 Group 2

ISO 20816-3 机器组(严格按标准 5.2 节)

Group 1:大型机器

  • 功率 > 300 kW 或电机轴高 H ≥ 315 mm
  • 通常采用滑动轴承
  • 转速 120 – 30000 RPM

Group 2:中型机器最常见,默认值

  • 功率 15 kW < P ≤ 300 kW 或电机轴高 160 mm ≤ H < 315 mm
  • 通常采用滚动轴承
  • 转速通常 > 600 RPM

> 严格只有 2 个组。早期 ISO 10816 有更多分组但已被 20816-3 合并简化。

支撑分类(rigid vs flexible)

按机器+基础最低自然频率与主激振频率(通常是转频)的比例:

  • 自然频率 ≥ 1.25 × 主激振频率rigid(刚性)
  • 其它情况 → flexible(柔性)

> 经验:中型电机/水泵/风机 → rigid;大型汽轮发电机(> 10 MW)/立式机组 → flexible。


ISO 评估阈值表(Annex A)

Group 1(大型)

支撑A/BB/CC/D
------------
Rigid2.34.57.1
Flexible3.57.111.0

Group 2(中型,最常用

支撑A/BB/CC/D
------------
Rigid1.42.84.5
Flexible2.34.57.1

> 单位均为 RMS 速度 mm/s

健康度评分对应表

ISO 区评分业务动作
---------
A85–100例行巡检
B60–84缩短监测周期,2–4 周复测
C35–591–2 周内详细诊断
D0–34立即停机检查
信号质量不足不下结论,重新采集

算法鲁棒性承诺

  1. 永远给 ISO 区 — A/B/C/D 永远有值(或明确 不可评估 + 原因)
  2. 信号长度自适应 — 0.5 秒到 30 分钟均能处理;过短时降级到时域评估
  3. 转速未知反推 — 从频谱主峰反推 1x 频率(含谐波一致性校验)
  4. 异常采样清洗 — NaN/Inf 线性插值;超 5% 时告警
  5. 异常采样鲁棒 — NaN/Inf 会清洗或降级为“不可评估”;当前版本不单独计算 SNR
  6. 永不超时 — 50 MB 以内单文件 < 5 秒响应

不要做的事

  • ❌ 不要在 needs_user_confirm 非空时直接出结果,必须先问用户
  • ❌ 不要静默接受算法降级或元数据猜测,必须把过程告诉用户
  • ❌ 不要把"信号质量不足"包装成"机器正常"
  • ❌ 不要在机器组别参数填入 3 或 4——ISO 20816-3 只有 Group 1 和 Group 2
  • ❌ 不要承诺已生成 HTML 报告;v1.2.0 仅返回 _报告.HTML = null
  • ❌ 不要给具体故障类型结论("外圈故障"等)——本 Skill 是筛查工具
  • ❌ 不要在 Step 4 之前调用 Step 5 —— screen.py 只接受 gmm/s
  • ❌ 不要直接 import 主项目 predictive-maintenance-mcp/src/signal_loader.py——Skill 必须自包含可独立分发

给用户回答的模板(高置信场景)

> ✅ 整体判定:健康(A 区) 健康度评分:89 / 100

>

> 📐 ISO 20816-3:2022

> - 区:A — 新机器交付水平,长期运行健康

> - RMS 速度:1.0 mm/s

> - 适用组:Group 2 rigid(A/B=1.4,B/C=2.8,C/D=4.5)

> - 阈值依据:ISO 20816-3:2022 Table A.2

>

> 📊 关键指标

> RMS=0.12 g,峭度=2.8,峰值因子=3.1,主频=30 Hz

>

> 🔧 算法处理

> - 采样率 25600 Hz 来自文件名解析(高置信)

> - 单位 g 来自旁路 metadata.json(高置信)

> - 转速由频谱主峰反推:1800 RPM

> - 无降级路径

>

> 💡 建议行动:例行巡检即可,30 天后复测对比

>

> 📄 HTML 报告:当前版本暂未生成(_报告.HTML = null

给用户回答的模板(低置信场景)

> 我看了你这个文件,但有几个信息需要你确认:

>

> 1. 采样率不确定:文件里没有标注,文件名也没有暗示。我先按工业常见值 25600 Hz 算了一次——如果你实际用的是 97656 Hz 或别的,请告诉我,我重算。

> 2. 单位不确定:信号 RMS=0.99、峰值 6.2,在 g 和 m/s² 之间都合理——前者意味着 ISO C 区(可疑),后者意味着 A 区(健康)。结论会反过来,请务必确认。

>

> 暂按 (fs=25600 Hz, unit=g) 给一份参考结果

> 🟠 整体判定:可疑(C 区) 评分:48

> ...


运行架构(v1.2.0 本地版)

所有评估在 Python 进程内完成,无需任何后端服务

组件位置职责
---------
scripts/iso_engine.pySkill 自带ISO 20816-3 评估核心算法(移植自主项目,已裁剪)
scripts/screen.pySkill 自带CLI 入口,本地调用 iso_engine.evaluate()
Python 依赖requirements.txtnumpy / scipy / pandas / openpyxl / h5py / pyarrow

> 不依赖任何 HTTP 服务,无 daemon,无域名/端口。Skill 完全自包含可独立分发。

> 部署到 71 服务器只需 pip install -r requirements.txt,详见 INSTALL.md


算法依据

维度标准
------
诊断架构ISO 13374 六块诊断体系
严重度评估ISO 20816-3:2022 Annex A
加速度→速度积分时域积分 + 4 阶 Butterworth 高通 @2 Hz 去趋势
转速反推频谱主峰检测 + 谐波一致性校验
信号清洗NaN/Inf 线性插值,5% 阈值告警
变化趋势ISO 20816-3 Criterion II(变化 > B/C 边界 25% 视为显著)

参考资料

版本历史

共 1 个版本

  • v1.0.0 Initial release 当前
    2026-05-19 11:50 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

security-compliance

Skill Vetter

spclaudehome
AI智能体技能安全预审工具。安装ClawdHub、GitHub等来源技能前,检查风险信号、权限范围及可疑模式。
★ 1,215 📥 266,453
ai-intelligence

ontology

oswalpalash
类型化知识图谱,用于结构化智能体记忆与可组合技能。支持创建/查询实体(人员、项目、任务、事件、文档)及关联...
★ 711 📥 243,744
ai-intelligence

Self-Improving + Proactive Agent

ivangdavila
自我反思+自我批评+自我学习+自组织记忆。智能体评估自身工作、发现错误并持续改进。
★ 1,356 📥 318,146