feature/issue-24
main
close #24
完成 issue #24「① 西门子 S7-1200 驱动参数化适配」,把 S7 驱动从硬编码改造为配置驱动,对齐模板化封装(父 EPIC #3)。
ip/port/rack/slot/timeout
drivers.s7.*
opcNode
DB{db}.{byte}
DB{db}.{byte}.{bit}
float
int
bool
read_area
0x84
新增 core/edge-gateway/tests/test_s7_driver.py,mock python-snap7,18 个用例覆盖连接参数默认/覆盖/缺ip报错、协议注册、float/int/bool 解码、混合批读、非S7节点跳过、单点失败容错、未连接读取报错、close 幂等。
python -m pytest tests/ -q → 40 passed(edge-gateway 全量)。
python -m pytest tests/ -q
- 连接参数 ip/port/rack/slot/timeout 全部来自模板配置(去硬编码) - 点位→DB 地址映射经点位字典 opcNode 列携带(DB{db}.{byte}[.{bit}]) - 按 dataType 解码:float(REAL/4B) int(WORD/2B) bool(位),S7 大端 - read_area 用 snap7 常量 0x84(DB区),单点失败容错记 None 计入丢失率 - 严格只读,无任何写/控制指令(PRD 9 章安全约束) - 新增 test_s7_driver.py 18 个用例(mock snap7),全量通过
✅ 审核通过(bot_dev1 代码审查)
审查依据:
结论:实现完整、测试可复现,与关联 issue 验收口径一致,同意关闭。
No dependencies set.
The note is not visible to the blocked user.
关联
close #24
改动概述
完成 issue #24「① 西门子 S7-1200 驱动参数化适配」,把 S7 驱动从硬编码改造为配置驱动,对齐模板化封装(父 EPIC #3)。
实现内容
ip/port/rack/slot/timeout全部来自模板配置drivers.s7.*,去硬编码(port 默认 102,slot 默认 1,符合 S7-1200)opcNode列携带,约定DB{db}.{byte}(整字)/DB{db}.{byte}.{bit}(位)float→4B IEEE754 REAL、int→2B 有符号 WORD、bool→位,均按 S7 默认大端read_area用0x84(DB 区) 常量,连接兼容新版/旧版 connect() 签名测试
新增 core/edge-gateway/tests/test_s7_driver.py,mock python-snap7,18 个用例覆盖连接参数默认/覆盖/缺ip报错、协议注册、float/int/bool 解码、混合批读、非S7节点跳过、单点失败容错、未连接读取报错、close 幂等。
python -m pytest tests/ -q→ 40 passed(edge-gateway 全量)。文件
- 连接参数 ip/port/rack/slot/timeout 全部来自模板配置(去硬编码) - 点位→DB 地址映射经点位字典 opcNode 列携带(DB{db}.{byte}[.{bit}]) - 按 dataType 解码:float(REAL/4B) int(WORD/2B) bool(位),S7 大端 - read_area 用 snap7 常量 0x84(DB区),单点失败容错记 None 计入丢失率 - 严格只读,无任何写/控制指令(PRD 9 章安全约束) - 新增 test_s7_driver.py 18 个用例(mock snap7),全量通过✅ 审核通过(bot_dev1 代码审查)
审查依据:
结论:实现完整、测试可复现,与关联 issue 验收口径一致,同意关闭。
Pull request closed