- 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
4.4 KiB
4.4 KiB
zinit — 数据库初始化服务
概述
zinit(Zero Init / 零初始化)是 EIS 系统中的 数据库→共享内存 初始化服务。它在系统启动时从关系数据库加载静态配置表、参数常量和遥测地址映射到共享内存,供所有 PACE 组件直接访问;运行时接收遥测数据并缓存到共享内存。
进程架构
启动时
┌──────────────────────────────────────────┐
│ zinit │
│ │
│ ZInitICEI 构造 │
│ │ │
│ ├→ InitMag::LoadTable() │
│ │ └→ DB2表 → DB2Mem → 共享内存 │
│ │ ├─ T_LOV_FDAAITEM (遥测项目录) │
│ │ ├─ T_LOV_TAB1/TAB2 (映射表) │
│ │ ├─ T_TIME_SET (时间设置) │
│ │ └─ T_PDO_CFG (PDO配置) │
│ │ │
│ └→ InitMag::LoadConstant() │
│ └→ T_LOV_PARAM → GLB_VAR.gbconst│
│ ├─ 各段速度标签名 │
│ ├─ 各段运行状态标签名 │
│ ├─ 事件范围 (START/END) │
│ └─ IHDB 查询间隔等 │
│ │
└──────────────────────────────────────────┘
运行时
┌──────────────────────────────────────────┐
│ ICE SendDataShort(eventNo, seq) │
│ │ │
│ ├→ CacheMag::CacheTele() │
│ │ └─ 原始数据 → 共享内存缓存 │
│ │ │
│ ├→ eventNo 1010/1012: │
│ │ CacheMag::ConvertTele() │
│ │ └─ 地址映射处理(位提取等) │
│ │ │
│ └→ eventNo 99999: │
│ InitMag::LoadTable() 重新加载 │
│ │
└──────────────────────────────────────────┘
核心模块
InitMag — 静态数据加载
| 方法 | 功能 |
|---|---|
LoadTable() |
从数据库表加载遥测项目录、时间设置、PDO 配置到共享内存,使用 DB2Mem<T> 模板 |
LoadConstant() |
从 T_LOV_PARAM 表加载系统参数到全局变量 GLB_VAR.gbconst |
加载的关键参数:
- 各工艺段(EIS/ENT/ACD/AXT/TCM)的速度标签名和运行状态标签名
- 事件号范围(
EVENT_EIS_START/END) - IHDB 查询间隔(
EIS_QIHD_INTERVAL_TIME) - 编码器参数、卷材尺寸限制、焊缝跟踪范围、剪切位置等
CacheMag — 运行时遥测缓存
| 方法 | 功能 |
|---|---|
CacheTele(eventNo, seq) |
原始二进制数据写入共享内存环形缓冲区 |
ConvertTele(eventNo, seq) |
根据地址映射解析分解遥测数据(位提取/类型转换) |
ICE 接口
| 方法 | 说明 |
|---|---|
SendDataShort(eventNo, seq) |
eventNo 1010/1012: 转换遥测;eventNo 99999: 重新加载配置 |
SendDataLong |
未实现 |
TimeNotify |
未实现 |
共享内存架构
所有数据通过 GlobMem 管理的命名共享内存区域存取:
| 数据类型 | 内存结构 | 用途 |
|---|---|---|
| 数据库表 | DB2Mem<T,S> |
关系表 → 固定大小内存区域 |
| PLC 遥测 | CMemTable<PLC_DATA> |
运行时原始数据环形缓冲 |
| 全局变量 | GLB_VAR |
系统参数常量 |
源文件
src/zinit/
├── zinit.cpp # PACE 组件入口
├── ZInitICEI.cpp # ICE servant:初始化触发 + 运行时缓存
├── InitMag.cpp # 数据库→共享内存加载器
└── CacheMag.cpp # 地址映射构建 + 遥测转换