KNX 的 1/2/3 和 1/515 会指向同一地址吗:怎样转换组地址表示
在XKNX 3.6.0的表示规则中,三级组地址1/2/3与二级1/515都对应原始16位值2563。斜杠层数改变的是显示划分,不改变线上两字节;比较组地址应先归一化原始值,同时保留项目选用的显示方式。
适用版本与输入范围
依据 XKNX 维护者仓库固定标签 3.6.0 的下列源码,只实现本文明示的数据点或组值解析子集。它不是 KNX 规范全文,也不是设备互通认证;组地址与DPT应由项目点表明确提供。 本文所有输入均为原创合成数据,未接真实设备。
三级与二级共用同一段位空间
三级格式把16位划成主组5位、中组3位、子组8位;二级格式则是主组5位、子组11位。所以1/2/3中的中组2左移8位再加3,合并后成为二级子组515。程序使用位运算而不是字符串拼接,输出三种表示和两字节0A03。不能把1/2/3改写为1/23,那会改变原始地址,也不能假定每个斜杠字段都恰好占一个字节。
转换前先检查各字段范围
三级主组0到31、中组0到7、子组0到255;二级子组0到2047。显式负例1/8/3中中组越界,程序拒绝,不能让8向主组位进位之后生成另一个地址。自由格式仅接受0到65535的整数。本题展示表示转换,包含原始零的数值空间,但不将零推荐为设备功能组;维护者的设备地址绑定路径对广播地址另有约束,实际项目应按场景再检查。
点表归一化不丢原显示文本
附件三条正例输入不同,输出raw、three_level、two_level、free和hex完全相同,可用于检查两个供应商导出表是否只是格式不同。工程数据库建议存原始16位值作为比较键,同时存原文和ETS约定显示层级。若只按字符串判重复,会把同一个功能地址当成两项;若只存整数,人读时又容易误以为它是个体地址或设备编号。归一化应解决比较,不应擅自改项目命名。
地址等价不等于数据点类型等价
两个条目的原始组地址相同,只能证明它们指向同一个组地址值,还需核对双方DPT、通信对象标志和工程用途。一个百分比与一个开关即使共用地址,也不会因为显示格式转换而获得正确语义。本程序没有打开ETS工程、没有读总线或下载配置;它只验证公开实现的位划分。后续联调应把地址值和明确DPT一起交付,避免转换表被误当成设备联动已经验证的证据。
下载与复跑
将输入 fixture.json与独立程序 verify.py放在同一目录,用 Python 3.12 执行 python verify.py,无需安装第三方包。程序从自身目录读取输入并写入 report.json,不要求当前终端恰好位于下载目录。也可查看本次实跑报告和复跑说明。
本次实际运行通过 4 条输入断言,包括标有“显式负例”的记录;负例以JSON字段承载,不会把下载文件本身做成损坏编码。raw用于数值比较,hex是两字节地址;显示格式等价不代表数据点语义相同。 修改输入后应同时审查期望结果,不能只改断言数字让测试变绿。
对象或字段的基础关系可回到KNX 组地址与DPT入门核对,更多接口入口在设备协议库。若需要把已确认的数据点接入展项编排,可了解SoftControl 展厅中控;具体接入能力以项目确认和实际测试为准。
一级依据
来源核对日期:2026-10-24。离线结果只证明给定输入的解析或计算行为;现场兼容性、响应时间、硬件准确度和具体产品支持均未测量。
相关阅读
留言讨论
评论发布后会被人工复核,违规内容将被删除。
如果发表没有反应,可以前往联系我们告诉我们。