eis/eqpm/eqpm_readme.md
Huamonarch bd7e93ae68 Add READMEs for RICS, eqpm, dsm and update eqpalg README with corrections
- RICS_readme.md: Rule information centralized display service
- eqpm_readme.md: Equipment predictive maintenance & status monitoring
- dsm_readme.md: Data save manager for historical data archiving
- eqpalg_readme.md: Corrected architecture, data flow, variable system,
  thread model, and inter-process relationships
2026-05-09 11:46:17 +08:00

6.5 KiB
Raw Blame History

eqpm — 设备点检与状态管理

概述

eqpmEquipment Point-inspection Management / 设备点检管理)是 EIS 系统中的设备预测性维护和实时状态监控服务。它做两件事:

  1. 预测性维护 — 根据生产累计指标(处理重量、长度或经过天数),计算设备何时需要检修,预测下次检修日期
  2. 实时状态监控 — 解码遥测二进制数据,跟踪报警信息,将设备状态推送到 Memcached 供仪表盘使用

进程架构

eqpm 作为单个 PACE 平台组件运行,注册 ICE 端点 "baosight/eqpm"

                    ┌──────────────────────────┐
                    │        eqpm 进程          │
                    │                           │
  ICE TimeNotify ──→│  事件0 → update_repair()  │──→ DB2 T_EQP_REPAIR
  ICE SendData ────→│  事件1 → 状态写入         │──→ Memcached
  (1002/99999)     │  事件2 → update_alarm()   │──→ DB2
                    │  事件3 → update_coil()    │
                    │                           │
  共享内存 ────────→│  EqpmAlg::update_data()   │──→ 产量环形缓冲区
  (FV_PDI)         │                           │
                    └──────────────────────────┘

ICE 接口

方法 事件号 说明
SendDataShort 99999 触发 update_repair() 刷新检修计划
SendDataShort 1002 解码机组状态二进制遥测数据
SendDataLong 未实现
TimeNotify 0 更新检修计划
TimeNotify 1 获取状态 JSON 写入 Memcachedkey: "unit_status"
TimeNotify 2 更新报警信息
TimeNotify 3 更新钢卷信息

核心模块

1. EqpmAlg — 预测性维护引擎

负责设备点检计划的计算。核心数据结构:

EqpRule {
  int rule_type;           // 0=无 1=重量(吨) 2=长度(千米) 3=时间(天)
  double data;             // 自上次检修后的累计值
  TimePoint repair_date;   // 上次检修日期
  TimePoint repair_plan;   // 预测下次检修日期
}

三种检修规则类型

rule_type 名称 计算方式
1 基于重量 从 FV_PDI 累计每日重量(吨),超阈值触发检修,按日均重量外推未来日期
2 基于长度 从 FV_PDI 累计每日长度(千米),超阈值触发检修,按日均长度外推未来日期
3 基于时间 按日历天数计算,距上次检修超过 interval 天后预测在 interval 天满的那天

工作流程

  1. update_data() — 从 FV_PDI 视图读取每日钢卷产量长度、重量写入共享内存环形缓冲区10年3650天
  2. update_slope() — 计算 3 日滑动平均的日产量(length_slope_weight_slope_),用于外推预测
  3. update_repair() — 从 DB2 加载设备规则配置,针对每条有规则类型的设备计算累计值和下次检修日期
  4. update_db2() — 将计算结果写回 DB2 T_EQP_REPAIR

产量数据流

FV_PDI (钢卷视图) → EqpmAlg::update_data()
                         │
                         ▼
              EqpmRecord 共享内存 (环形缓冲区)
              /users/dsc/shm/EqpmRecord_boost.mmap
                         │
                         ▼
              update_slope() → 日均产量
                         │
                         ▼
              update_rule_data() → 预测检修日期

2. EqpStatus — 实时状态监控

解析来自 PLC 的二进制遥测数据,转换为结构化 JSON。

解码的数据组

数据组 内容
status_data 泵状态、液位、温度、速度等 25 个数值测点
tension 张力数据2组 × 12个值
cpc CPC 对中数据3组 × 10个值含位掩码处理
TR 运输辊道数据钢卷ID + 5个数值含时间格式转换
POR 卷取机数据(入口/出口共2组钢卷ID + 4个数值

报警跟踪update_alarm_info()

  • 查询 DB2 视图 FV_RESULT_JOIN_EQPID,统计最近 3 天的报警
  • isAlarm = 0: 无报警;isAlarm = 1: 有新报警(statuscode=100)isAlarm = 2: 仅跟踪报警(statuscode=200)

钢卷信息update_coil_info()

  • 从 DB2 FV_DSC_PDI_DATA 读取当前生产中的钢卷数据最多4条
  • 每条包含入口外径、出口外径、厚度、宽度、重量、长度、钢种等9个字段

3. 共享内存环形缓冲区EqpmRecord

  • 路径: /users/dsc/shm/EqpmRecord_boost.mmap500MB
  • 结构: Map<int, EqpmRecord>,天偏移量为 key存储每日重量和长度
  • 容量: 3650天10年
  • 元数据: TimeRecord 记录有效时间范围和日均产量

目录结构

eqpm/
├── eqpm.cc/h              # 进程入口
├── eqpm_icei.cc/h         # ICE 接口(处理事件和定时回调)
├── eqpm_alg.cc/h          # 预测性维护算法
├── eqp_status.cc/h        # 实时状态监控、遥测解码
├── EqpmRecord.h           # 共享内存环形缓冲区定义
├── utility.cc/h           # 时间工具时区感知、UTC+8
├── jsonReader.hpp         # JSON 文件读取工具
├── rule_info.h            # 规则信息结构体(暂未使用)
├── table_struct/          # DB2 表结构
│   ├── fv_pdi.h           # 卷材产量视图
│   ├── t_eqp_data.h       # 设备规则配置
│   ├── t_eqp_repair.h     # 检修记录(输出)
│   ├── FV_RESULT_JOIN_EQPID.h  # 报警信息视图
│   └── FV_DSC_PDI_DATA.h # 钢卷信息视图
├── json/                  # JSON 模板与配置
│   ├── eqp_status.json    # 输出模板
│   ├── eqp_status_config.json  # 遥测解码映射
│   └── eqpm.json          # 测试用 MQ 消息
└── CMakeLists.txt

与其它进程的关系

进程 关系
eqpalg eqpalg 产生设备报警 → eqpm 查询 FV_RESULT_JOIN_EQPID 获取报警统计
RICS 同系统内独立模块RICS 做规则配置展示
dsm 同系统内独立模块dsm 做规则数据归档
前端页面 eqpm 将实时状态和检修计划写入 Memcached 供前端读取

作者