BACnet 驱动采集测试与验收标准清单

基于配置修改 D:\code\edgex\conf\channels.yaml 使用最新配置文件来实现设备读取bacnet点位 比如 D:\code\edgex\conf\devices\bacnet-ip\bacnet-2228316.yaml 严格按照配置文件中的点位进行读取 配置文件不可修改的原则进行代码调整 特别注意:

  • DeviceID:系统内唯一标识(Edge/平台侧)
  • Instance ID:BACnet 网络唯一标识
  • ObjectID:对象标识(Type + Instance)
  • Property:对象属性标识

当前设备清单(验收范围 :设备点位不可串流到一起):

  • bacnet-18 → Instance ID 2228318 ->Setpoint.1 AnalogValue 1 318.00 验证点不得出现在其他设备点位中
  • bacnet-16 → Instance ID 2228316
  • bacnet-17 → Instance ID 2228317
  • Room_FC_2014_19 → Instance ID 2228319

⚠ 验收前提:已确认所有设备物理运行正常,网络正常 ⚠ 最终要求:全部设备质量等级必须为 Good(≥85分)

如果使用token 可以利用下面的例子 (当前token为有效token) curl ^”http://127.0.0.1:8082/api/channels/jxy3kvpohmetzct0^” ^ -H ^”Accept: application/json, text/plain, /^” ^ -H ^”Accept-Language: zh,zh-CN;q=0.9,en;q=0.8^” ^ -H ^”Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiYWRtaW4iLCJlbWFpbCI6IiIsImlzcyI6IkluZHVzdHJpYWxFZGdlR2F0ZXdheSIsImV4cCI6MTc3Mjg2NDA3NywibmJmIjoxNzcyMjU5Mjc3fQ.m0k3SQ-B9n7sfSSYnzXjT0X0Vmq_cxjqNM1jw0w03vg^” ^ -H ^”Connection: keep-alive^” ^ -H ^”DNT: 1^” ^ -H ^”Referer: http://127.0.0.1:8082/^” ^ -H ^”Sec-Fetch-Dest: empty^” ^ -H ^”Sec-Fetch-Mode: cors^” ^ -H ^”Sec-Fetch-Site: same-origin^” ^ -H ^”User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36^” ^ -H ^”sec-ch-ua: ^\^”Not:A-Brand^\^”;v=^\^”99^\^”, ^\^”Google Chrome^\^”;v=^\^”145^\^”, ^\^”Chromium^\^”;v=^\^”145^\^”^” ^ -H ^”sec-ch-ua-mobile: ?0^” ^ -H ^”sec-ch-ua-platform: ^\^”Windows^\^”^” ^ -H ^”sec-gpc: 1^” ^ -H ^”token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiYWRtaW4iLCJlbWFpbCI6IiIsImlzcyI6IkluZHVzdHJpYWxFZGdlR2F0ZXdheSIsImV4cCI6MTc3Mjg2NDA3NywibmJmIjoxNzcyMjU5Mjc3fQ.m0k3SQ-B9n7sfSSYnzXjT0X0Vmq_cxjqNM1jw0w03vg^”


《BACnet 驱动采集测试与验收标准清单》


一、点位读取(ReadProperty)验收标准

3.1 基础属性支持范围

必须支持对象

类型 必须属性
AI Present_Value, Units, Status_Flags
AO Present_Value, Units, Status_Flags
AV Present_Value, Units
BI Present_Value, Status_Flags
BO Present_Value, Polarity
Device Object_Name, Vendor_Name, System_Status

3.2 读取性能要求

  • 成功率 ≥ 99%
  • 单次读取 RTT ≤ 500ms(局域网)
  • 连续采集周期支持 5~30 秒
  • 非法点位读取不得影响其他点位

3.3 多设备隔离要求(关键)

  • 单设备异常不影响其他设备轮询
  • 设备级调度线程独立
  • 超时仅影响当前设备

五、COV 订阅机制验收标准

5.1 功能要求

  • 支持 SubscribeCOV
  • 支持订阅过期自动重订
  • 支持设备重启后自动恢复
  • 订阅失败自动回退轮询
  • 轮询周期默认 10s 可配置

5.2 验收判定

  • 数据变化实时上报
  • 不出现重复订阅
  • 网络恢复后自动重建订阅
  • COV 与轮询互不干扰

六、异常与健壮性验收标准(必须达标)

6.1 必测异常场景

  • 设备断电
  • 设备重启
  • 网络抖动
  • UDP 丢包
  • 单对象错误
  • Abort / Reject 报文

6.2 判定标准

  • 单设备离线不影响其他设备
  • 设备进入 DEGRADED 状态后质量下降
  • 恢复后自动回到 ONLINE
  • 连续失败达到阈值自动冻结
  • 恢复成功后自动解冻

七、质量等级验收标准(必须全部 Good)

7.1 设备级质量评分规则

指标 要求
SuccessRate ≥ 98%
TimeoutRate ≤ 1%
AvgRTT ≤ 200ms
连续失败 ≤ 3 次
Flap 0

最终等级必须:

QualityScore ≥ 85
QualityLevel = Good

7.2 通道级要求

  • 所有设备 Quality = Good
  • 无设备 Offline
  • 无设备 Degraded
  • WorstDeviceQuality ≥ 85

八、性能与压力测试验收标准

8.1 基准指标

  • 支持 ≥ 256 设备
  • 每设备 ≥ 500 点
  • 采集周期 10 秒
  • 连续运行 72 小时

8.2 判定标准

  • CPU 无异常飙升
  • 内存无泄漏
  • Goroutine 不增长
  • 无死锁
  • 平均延迟稳定

九、自动建模与持久化验收

9.1 必须支持

  • 自动注册设备
  • 自动生成点位模型
  • 模型持久化 JSON/DB
  • 重启自动恢复

十、完整验收表(Markdown 模板)

# BACnet 驱动功能验收表

## 一、设备发现

| 项目 | 标准 | 结果 | 是否通过 |
|------|------|------|----------|
| Who-Is 广播 | 正常 |      | ☐ |
| I-Am 解析 | 100%成功 |      | ☐ |
| 自动注册 | 正常 |      | ☐ |

## 二、对象发现

| 项目 | 标准 | 结果 | 是否通过 |
|------|------|------|----------|
| objectList 完整性 | 无丢失 |      | ☐ |
| 分段支持 | 正常 |      | ☐ |

## 三、点位读取

| 设备 | SuccessRate | AvgRTT | Quality | 是否Good |
|------|------------|--------|---------|----------|
| bacnet-16 |      |        |         | ☐ |
| bacnet-17 |      |        |         | ☐ |
| bacnet-18 |      |        |         | ☐ |
| Room_FC_2014_19 |      |        |         | ☐ |

## 四、写入控制

| 测试项 | 结果 | 是否通过 |
|--------|------|----------|
| AV写入 |      | ☐ |
| BO写入 |      | ☐ |
| 优先级释放 |      | ☐ |

## 五、稳定性测试

| 项目 | 标准 | 是否通过 |
|------|------|----------|
| 72小时运行 | 无异常 | ☐ |
| 断网恢复 | 自动恢复 | ☐ |
| 单设备异常隔离 | 正常 | ☐ |

十一、Go 驱动自测 Checklist

  • Who-Is 解析正确
  • objectList 分段正确
  • ReadProperty 并发安全
  • WriteProperty 优先级支持
  • COV 自动重订
  • 设备级 metrics 正确更新
  • 状态机融合质量算法
  • 单设备异常不影响全局
  • 自动建模恢复

十二、自动化测试结构建议

/test
   bacnet_discovery_test.go
   bacnet_objectlist_test.go
   bacnet_read_test.go
   bacnet_write_test.go
   bacnet_cov_test.go
   bacnet_stability_test.go
   bacnet_performance_test.go

每个测试应包含:

  • 正常场景
  • 异常场景
  • 恢复场景
  • 压测场景

最终验收判定条件(签字级)

✔ 设备发现率 100% ✔ 对象完整率 100% ✔ 点位成功率 ≥ 99% ✔ 全部设备 Quality ≥ Good ✔ 单设备异常不影响其他设备 ✔ 72 小时稳定运行无异常 ✔ 自动恢复能力验证通过