eis/EIS_README.md
Huamonarch 09b48b07e5 Add READMEs for all infrastructure services and overall project
- EIS_README.md: Overall project architecture, data flow, service inventory
- zmqp/zmqc_readme: ActiveMQ producer/consumer bridging ICE
- zcache_readme: Data cache hub with address mapping and type conversion
- zhd_readme: Real-time snapshot persistence to iHyperDB
- zinit_readme: DB2-to-shared-memory initialization service
- zsub/zudp/zdsf/rcv_readme: Data receiver layer for different on-site protocols
2026-05-09 12:13:00 +08:00

15 KiB
Raw Blame History

EIS — 设备智能监控系统

概述

EISEquipment Intelligence System / 设备智能系统)是一个面向冷轧机组的工业设备状态监控与预测性维护平台。系统基于宝信 PACE 分布式框架构建,通过 ZeroC ICE 中间件实现进程间通信,以 ActiveMQ 连接外部系统使用共享内存内存映射文件作为实时数据总线iHyperDB 作为历史数据存储DB2 作为配置与结果数据库。

系统架构

                            ┌──────────────────────┐
                            │    外部系统 / Web UI   │
                            └──────┬───────┬───────┘
                                   │       │
                            ActiveMQ     Memcached
                                   │       │
    ┌──────────────────────────────┼───────┼──────────────────────────┐
    │                         ICE 消息总线                              │
    │                              │                                   │
    │  ┌───────────────────────────┴───────────────────────────────┐  │
    │  │                     数据接收层                              │  │
    │  │  zsub (TCP订阅)  zudp (UDP)  zdsf (DSF)  rcv (L1电文)     │  │
    │  └───────────────────────────┬───────────────────────────────┘  │
    │                              │                                   │
    │                    共享内存 (GlobMem)                            │
    │                              │                                   │
    │  ┌───────────────────────────┴───────────────────────────────┐  │
    │  │                    数据处理与缓存层                         │  │
    │  │         zcache (缓存转换)  zinit (DB→内存初始化)             │  │
    │  └───────────────────────────┬───────────────────────────────┘  │
    │                              │                                   │
    │  ┌───────────────┬───────────┴───────────┬───────────────────┐  │
    │  │               │                       │                    │  │
    │  ▼               ▼                       ▼                    │  │
    │  ┌─────────┐ ┌─────────┐          ┌──────────┐               │  │
    │  │ eqpalg  │ │   zhd   │          │  eqpm    │               │  │
    │  │ 设备算法 │ │ 实时历史 │          │ 设备点检  │               │  │
    │  │ 监控引擎 │ │ 数据存储 │          │ 状态管理  │               │  │
    │  └────┬────┘ └────┬────┘          └────┬─────┘               │  │
    │       │           │                    │                      │  │
    │       ├─────┬─────┘                    │                      │  │
    │       │     │                          │                      │  │
    │       ▼     ▼                          │                      │  │
    │  ┌────────┐ ┌────────┐                │                      │  │
    │  │  dsm   │ │  RICS  │                │                      │  │
    │  │数据归档│ │规则展示│                 │                      │  │
    │  └────────┘ └────────┘                │                      │  │
    │                                       │                      │  │
    │  ┌────────────────────────────────────┴───────────────────┐  │
    │  │                     消息中间件层                         │  │
    │  │    zmqp (生产者) ←── ICE ──→ zmqc (消费者)               │  │
    │  │              ↓                        ↑                  │  │
    │  │         ActiveMQ ──── 外部系统 ──── ActiveMQ             │  │
    │  └─────────────────────────────────────────────────────────┘  │
    │                                                               │
    └───────────────────────────────────────────────────────────────┘

数据流全景

  PLC/传感器 (L1)
       │
       ├──→ FDA 服务器 ──TCP──→ zsub ──→ 共享内存 FDA_DATA
       ├──→ UDP 广播 ──UDP──→ zudp ──→ 共享内存 PLC_DATA
       ├──→ DSF 服务器 ──SDK──→ zdsf ──→ ICE 转发
       └──→ L1 电文 ──ICE──→ rcv ──→ zcache / ztrk / zmtr
                                          │
                                          ▼
                                     zcache (缓存)
                                  地址映射 + 类型转换
                                          │
                                    共享内存 PLC_DATA
                                          │
                    ┌─────────────────────┼─────────────────────┐
                    ▼                     ▼                     ▼
              eqpalg (mon)           zhd (快照)           ztrk/zmtr
              实时报警监控          iHyperDB 持久化        物料跟踪
                    │
                    ├──→ 报警 → AlarmPoster
                    │         ├──→ DB2 T_RULE_RESULT
                    │         ├──→ zmqp → ActiveMQ Topic
                    │         └──→ CMemQueue
                    │
                    ├──→ 统计累积 → RuleStatShm
                    │         └──→ eqpalg (cron) → DAA::STA → DB2
                    │
                    └──→ 页面数据 → Memcached (RICS 读 DB2 配置)

  eqpalg (task): 按需从 iHyperDB 拉取历史数据 → 拟合/统计 → DB2
  dsm: ZONE10 → iHyperDB 查询 → JSON 文件归档
  eqpm: 产量累积 → 预测检修日期 → Memcached 设备状态

服务清单

设备监控层eqpalg 体系)

服务 目录 职责
eqpalg-mon eqpalg/ 实时监控引擎:从共享内存读 PLC 数据,每 20ms 执行规则表达式,产出报警
eqpalg-cron eqpalg/ 定时学习引擎:从 RuleStatShm 读取统计累积,计算置信区间并写回 DB2
eqpalg-task eqpalg/ 单次执行引擎:按需从 iHyperDB 拉历史数据,做拟合/统计/回测
RICS RICS/ 规则信息展示服务:读 DB2 规则配置,格式化为 JSON 写入 Memcached
dsm dsm/ 数据存储管理:从共享内存 ZONE10 读配置,查 iHyperDB归档为 JSON 文件
eqpm eqpm/ 设备点检管理:产量累积计算 + 检修日期预测 + 实时状态遥测解码

数据接收层(根据现场选用)

服务 目录 协议 适用场景
zsub src/zsub/ TCP 订阅 FDA 服务器已部署,标准 PLC 数据采集
zudp src/zudp/ UDP 广播 低延迟/广播式数据源
zdsf src/zdsf/ DSF SDK DSF 数据平台,按命名标签订阅
rcv src/rcv/ ICE (iXcomTCP2) L1 电文路由分发,通用入口

数据处理层

服务 目录 职责
zcache src/zcache/ 数据缓存中枢:原始二进制 → 地址映射 → 标准化浮点 → 共享内存环形缓冲
zhd src/zhd/ 实时历史数据:共享内存快照 → iHyperDB 批量写入(含自动标签创建)
zinit src/zinit/ 数据库初始化:启动时从 DB2 加载配置表/参数到共享内存,运行时缓存遥测

消息中间件层

服务 目录 角色 传输方向
zmqp src/zmqp/ ActiveMQ 生产者 ICE → ActiveMQ Topic报警/计算结果→外部)
zmqc src/zmqc/ ActiveMQ 消费者 ActiveMQ Queue → ICE外部指令→内部服务

公共库

目录 用途
libbase src/base/ 基础工具位操作、文件流、时间、ping
libglob src/glob/ 全局服务BinaryTele 编解码、ConnectionMag DB连接、ProxyMag ICE代理
libzlib src/zlib/ 共享内存管理MemFix/MemTable/DB2Mem、MemCachedClient、MemVar 全局变量)
libproxy src/proxy/ ICE 接口定义MessageICE、CallBackICE
libdao src/dao/ 数据访问对象DBMag、MatStructDBAX
libdbax src/dbax/ 数据库表访问扩展
libcold src/cold/ 冷轧业务对象MatUnit、RollMachine、RollTele
libcda src/cda/ 通用数据访问(报警日志、钢卷数据、调度数据)
libzcus src/zcus/ 定制工具IHDB 读取、规则报警、REST API
mix_cc mix_cc/ 表达式引擎、SQL DSL、iHyperDB API 封装、JSON、共享内存模板

关键技术栈

层级 技术
分布式框架 Baosight PACE / iPlature
进程间通信 ZeroC Ice 3.7
外部消息 Apache ActiveMQ-CPP 3.9
实时数据 共享内存Boost Memory-Mapped File、GlobMem
缓存 Memcached (libmemcached)
历史数据库 iHyperDB (HD3 API)
关系数据库 DB2 (通过 SQLAPI++)
数值计算 Eigen3、Armadillo、dlib、mlpack、GSL
JSON nlohmann/json
日志 log4cplus
C++ 标准 C++11 / C++17 / C++20各模块不同

工程目录结构

code/
├── EIS_README.md          # 本文件
├── config/                # 全局配置文件
│   ├── config.json        # DB2/IHDB/SHM/CronTab 配置
│   ├── dsfconfig.json     # DSF 数据订阅配置
│   ├── zone.cfg           # 共享内存区域定义
│   └── crgs.cfg           # 配置注册系统
├── cmake_include/         # CMake 公共模块
├── inc/                   # 全局头文件
│   ├── common/            # 公共定义L2Event、Macro
│   ├── glob/              # 全局服务头文件
│   ├── proxy/             # ICE 接口头文件
│   ├── zlib/              # 共享内存库头文件
│   ├── zcache/            # 各服务头文件
│   ├── ...
│   └── dbinc/             # DB2 表结构头文件
├── lib/                   # 预编译库 (.a)
├── src/                   # 基础服务源码
│   ├── base/              # libbase
│   ├── glob/              # libglob
│   ├── zlib/              # libzlib
│   ├── proxy/             # libproxy
│   ├── dao/               # libdao
│   ├── dbax/              # libdbax
│   ├── cold/              # libcold
│   ├── cda/               # libcda
│   ├── zcus/              # libzcus
│   ├── zsub/              # FDA TCP 订阅接收器
│   ├── zudp/              # UDP 接收器
│   ├── zdsf/              # DSF 接收器
│   ├── rcv/               # L1 电文路由
│   ├── zcache/            # 数据缓存中枢
│   ├── zhd/               # 实时历史数据
│   ├── zinit/             # 数据库初始化
│   ├── zmqp/              # ActiveMQ 生产者
│   ├── zmqc/              # ActiveMQ 消费者
│   └── ...                # 其他辅助服务
├── eqpalg/                # 设备算法监控引擎
├── RICS/                  # 规则信息展示服务
├── dsm/                   # 数据存储管理
├── eqpm/                  # 设备点检管理
├── mix_cc/                # 表达式引擎 / SQL DSL / 工具库
├── third_party/           # 第三方库
├── py/                    # Python 辅助脚本
├── script/                # Shell 脚本
└── TestProject/           # 测试项目

现场部署模式

根据不同的现场情况,系统支持灵活部署:

标准部署FDA

zsub (TCP订阅FDA) → zcache → eqpalg + zhd
                         ↓
                    zinit (启动时加载DB配置)

DSF 部署

zdsf (DSF标签订阅) → ICE → zcache → eqpalg + zhd

UDP 广播部署

zudp (UDP接收) → 共享内存/ICE → zcache → eqpalg + zhd

L1 电文部署

rcv (L1电文路由) → zcache/ztrk/zmtr → eqpalg + zhd

数据接收层可根据现场已有基础设施任选一种或组合使用,上层 eqpalg/zhd 等消费端不感知数据来源差异。

各服务 README 索引

服务 README
eqpalg eqpalg/eqpalg_readme.md
RICS RICS/RICS_readme.md
eqpm eqpm/eqpm_readme.md
dsm dsm/dsm_readme.md
zmqp src/zmqp/zmqp_readme.md
zmqc src/zmqc/zmqc_readme.md
zcache src/zcache/zcache_readme.md
zhd src/zhd/zhd_readme.md
zinit src/zinit/zinit_readme.md
zsub src/zsub/zsub_readme.md
zudp src/zudp/zudp_readme.md
zdsf src/zdsf/zdsf_readme.md
rcv src/rcv/rcv_readme.md

作者