eis/src/zinit/zinit_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

4.4 KiB
Raw Blame History

zinit — 数据库初始化服务

概述

zinitZero 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        # 地址映射构建 + 遥测转换