← 返回主页
Pipeline Document
EasyPoint 分配逻辑说明
基于代码实际行为整理,覆盖从 Excel 点表解析到 CPS 输出的主流程。
1. 总体流程概览 Pipeline
上传 Excel 点表 (.xlsx)
↓
读取配置(Schema / BACnet)
↓
解析所有 DDC-* Sheet
↓
逐个 DDC 生成 .cps
↓
打包 ZIP 并下载
Web 端通过 /api/generate 触发生成入口。每个 DDC Sheet 对应一个 CPS 文件,包含一个 CW 主模块和该 Sheet 中全部 IO 模块。
2. Excel 点表解析 ExcelParser
2.1 Sheet 与模块识别
- 仅处理名称以
DDC-开头的 Sheet。 - 第一列匹配
M\d+的行为模块起点,第二列判断模块类型(CW*/IO-*)。
2.2 点位识别规则
CW 点位正则:^(UI|DI|DO|AO)\d+$;IO 点位正则:^(UI|DI|DO|AO|AI)\d+$。
| 字段 | 来源 | 说明 |
|---|---|---|
name | 第 1 列 | 点位原名,如 UI1、DI3 |
display_name | 第 2 列 | 显示名,为空则视为未分配 |
type | name 前缀 | UI / DI / AO / DO / AI |
channel | name 后缀数字 | 通道号 |
signal_type | 第 5 列 | 信号类型 |
3. RefId 分配策略 RefIdAllocator
每个 DDC 独立维护 RefId 计数器,避免模块内部与全局组件 ID 冲突。
| 固定组件 | refId |
|---|---|
| BACnetClientNETwork | 10 |
| HardIn | 14 |
| HardOut | 15 |
| BACnetService | 18 |
| BACServerNetwork | 48 |
动态区间包括:io_internal(49-399)、ui/di/uo/do、av/bv、io_device 等,按类别分别递增。
4. CPS XML 结构 CPSGenerator
CPS 根节点是 <sedonaComposite>,包含 schema、composite、links 三大块。
<sedonaComposite>
<schema>...</schema>
<composite>
<comp origName="BACnetClientNETwork" .../>
<comp origName="HardIn" .../>
<comp origName="HardOut" .../>
<comp origName="BACnetService" .../>
</composite>
<links>...</links>
</sedonaComposite>
5. HardIn / HardOut 构建 Hardware
统一排序规则:sort_key = (0 if display_name else 1, channel),即已分配点位优先。
5.1 HardIn
- 将 CW 的 UI 与 DI 合并排序并重新连续编号。
- UI 与 DI 都使用
jciCW::UI;DI 的inputType固定为 2。
5.2 HardOut
- 先 UO(AO) 后 DO,组内分别排序。
- 两组的 channel 各自从 1 开始递增。
6. BACnetClientNETwork 构建 IO 模块
存在 IO 模块时才创建该节点。系统按模块类型加载 io_module_templates/ 中模板,并重新分配模板内部 refId。
6.1 关键处理
- IO-0602/IO-1006 的 UI 中,跳过包含
TypeSet或Ttable Sel的点位。 Type与TempTable点位根据 signal_type 动态计算in16。- IO-2000 的 AI 中同样跳过
Ttable Sel,并处理TempTable。
模板原始 refId 不直接使用,统一由 allocate_io_internal() 重新分配。
7. BACnetService / BACServerNetwork BACnet
BACnet 层负责为硬件点位和 IO 点位建立 AV/BV 对象,instanceNumber 在各自容器内从 1 连续递增。
7.1 AV 规则
- CW:非干触点 UI + DI + UO(AO) 进入 AV。
- IO:非干触点 UI、AI、AO 进入 AV。
7.2 BV 规则
- CW:干触点 UI + DO 进入 BV。
- IO:干触点 UI + DI + DO 进入 BV。
8. Links 链接生成 LinkGenerator
Links 描述组件间数据流,核心包含 CW 硬件链接和 IO 模块链接两类。
HardIn/{point}.out -> BACServerAV.in16
HardIn/{point}.digitalOut -> BACServerBV.in16
BACServerAV.out -> HardOut/UO.in
BACServerBV.out -> HardOut/DO.in
IO 模块场景下,DI/UI/AI 与 AV/BV 按点位分类对应,DO/AO 为反向控制链接。
9. 信号类型映射 SignalTypeMapper
CW 的 UI 点位 inputType 由 signal_type 决定。DI 点位固定为 inputType=2。
| signal_type | inputType | 说明 |
|---|---|---|
| Voltage0to10V | 0 | 电压输入 |
| resistance | 1 | 电阻输入 |
| digital / 干接点 / 干触点 | 2 | 数字量输入 |
| Sensor10k_20k | 3 | 10K/20K 传感器 |
| Sensor1k | 4 | 1K 传感器 |
| 空值或未知 | 0 | 默认电压输入 |