eis/src/zinit/zinit_readme.md

98 lines
4.4 KiB
Markdown
Raw Normal View History

# zinit — 数据库初始化服务
## 概述
zinit**Z**ero **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 # 地址映射构建 + 遥测转换
```