98 lines
4.4 KiB
Markdown
98 lines
4.4 KiB
Markdown
|
|
# 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 # 地址映射构建 + 遥测转换
|
|||
|
|
```
|