50 极物科技 | KNX协议 - KNXnet/IP报文结构逐字节解析

极物科技 | KNX协议 - KNXnet/IP报文结构逐字节解析

前言

KNX 作为国际标准(ISO/IEC 14543-3)拥有完全开放的协议规范与蓬勃的开源生态,knxd 正是这一开放性的最好注脚------一台普通 Linux 设备即可变身 KNX 路由器。

极物科技的产品同样构建在开放标准之上:自研 KNX 主机的极物 OS 原生支持 KNXnet/IP 路由与隧道双通道,与 knxd、ETS 等主流工具链无缝互通;配套鸿蒙、苹果、安卓三端原生 APP,深度接入 Apple HomeKit 与小度生态,支持主机远程调试------工程调试不受任何私有协议锁定。

一句话概述:本文拿三帧真实抓包报文,一个字节一个字节拆给你看------读完任何KNXnet/IP帧都能当场"人肉解码"。

本文聚焦于 KNXnet/IP 报文结构的逐字节解析,涵盖报文头、隧道通道头、CEMI各字段、1bit与1字节写入帧对比、组地址与APCI编码换算。


1. 三帧真实报文

以下为隧道模式下主机下发的三帧原始报文(十六进制):

text 复制代码
帧A:向组地址写入 1bit,值=0
06 10 04 20 00 15 04 71 00 00 11 00 bc e0 00 00 00 2a 01 00 80

帧B:向组地址写入 1字节,值=50%(0x80)
06 10 04 20 00 16 04 71 01 00 11 00 bc e0 00 00 00 25 02 00 80 80

帧C:向组地址写入 1字节,值=100%(0xff)
06 10 04 20 00 16 04 71 02 00 11 00 bc e0 00 00 00 25 02 00 80 ff

三帧分别对应"关灯(bit)""调光50%""调光100%"三个动作。下面对帧B做完整拆解。


2. 第一层:KNXnet/IP 报文头(6字节)

text 复制代码
06    10    04 20    00 16
│     │     │        └─ 总长度 = 0x0016 = 22字节(含头)
│     │     └─ 服务类型 = 0x0420(TUNNEL_REQUEST 隧道数据)
│     └─ 协议版本 = 0x10(KNXnet/IP 1.0)
└─ 头长度 = 6字节

服务类型速查 (前两字节固定 06 10,看后四字节即可分类):

服务 用途
0x0420 TUNNEL_REQUEST 隧道数据帧(本例)
0x0421 TUNNEL_ACK 隧道确认
0x0530 ROUTING_INDICATION 组播路由数据帧
0x0201~0x0209 搜索/描述/连接管理 设备发现与会话
0x0407 CONNECTIONSTATE_REQUEST 心跳保活

💡 抓包第一眼:看到 06 10 04 20 开头=隧道数据帧,06 10 05 30 开头=组播路由帧。


3. 第二层:隧道通道头(4字节)

text 复制代码
04    71    01    00
│     │     │     └─ 保留位 = 0
│     │     └─ 序列号 = 1(每发一帧+1,模256循环)
│     └─ 通道号 = 0x71(连接时网关分配)
└─ 结构长度 = 4字节

三帧的序列号依次是 00 → 01 → 02,这就是隧道的顺序保障机制:对端按序号ACK,乱序/丢帧立即发现。工程含义:抓包看到序列号跳变=链路丢帧,先查网络再看网关。


4. 第三层:CEMI 逐字段拆解

CEMI(Common External Message Interface)承载KNX链路层帧,帧B的CEMI部分共12字节:

text 复制代码
11 00 bc e0 00 00 00 25 02 00 80 80

4.1 消息码与附加信息(11 00)

字节 含义
+0 0x11 消息码 = L_Data.req(数据传输请求,主机→总线方向;总线→主机为L_Data.ind=0x29)
+1 0x00 附加信息长度 = 0(无附加信息)

4.2 控制域(bc e0)

text 复制代码
bc = 1011 1100
││││ └─ 帧类型:标准帧
│││└── 重复标志:非重复帧
││└─── 广播抑制:不抑制
│└──── 优先级:低优先级
└───── 确认请求:不需要ACK

e0 = 1110 0000
└── 跳数计数 = 6(每过一个路由器-1,归零丢弃)
   地址类型 = 组地址(bit7=0)

4.3 源地址与目的地址(00 00 / 00 25)

字节 含义
+4~5 00 00 源地址:主机侧未指定(隧道模式下由网关填入)
+6~7 00 25 目的组地址 = 0/0/37

组地址换算 (3级格式 主/中/子,按 (主<<11)|(中<<8)|子 编码):

text 复制代码
0x0025 = 0000 0000 0010 0101
主 = 0x0025 >> 11     = 0      → 0/
中 = (0x0025 >> 8) & 7 = 0     → 0/
子 = 0x0025 & 0xFF     = 37    → 0/0/37

帧A的目的地址是 00 2a = 0/0/42,反推方法相同。

4.4 数据长度与数据(02 / 00 80 80)

字节 含义
+8 02 数据长度 = 2字节(含TPCI/APCI所在字节,比纯数据多1)
+9 00 TPCI:传输层控制=数据包,无序号
+10~11 80 80 APCI + 数据

APCI编码(+10字节的高6位是APCI,低2位并入数据):

text 复制代码
0x80 = 1000 0000
APCI = 0b100000 → GroupValue_Write(组值写入)
低2位 = 数据前2个bit

所以帧B的 80 80:APCI=写入,数据字节=0x80。对DPT 5.001(百分比)来说,0x80=128→ 50% 。帧C的 ff=255→100%


5. 三帧对比总结

帧A(关灯) 帧B(调光50%) 帧C(调光100%)
总长 21 22 22
序列号 00 01 02
目的地址 0/0/42 0/0/37 0/0/37
数据长度 01 02 02
数据 bit=0 0x80(50%) 0xff(100%)
尾字节 00 80 00 80 80 00 80 ff

1bit帧的精妙之处:bit数据直接塞进APCI字节的低2位,不额外占字节------总长因此少1字节(21 vs 22)。这也是为什么"开关量报文"和"调光报文"长度不同,抓包时可据此快速区分。


6. 人肉解码流程卡

拿到任意一帧 06 10 ... 报文,按以下顺序读:

text 复制代码
① [2:4] 服务类型 → 判断隧道/路由/管理帧
② [4:6] 总长度 → 校验帧完整性
③ 隧道帧:[6:8]通道 [8]序号 → 会话与顺序
④ CEMI:[10]消息码 → 请求还是指示
⑤ [12:14]目的地址 → 反算 主/中/子
⑥ [16]数据长度 → 数据字节数
⑦ [17]TPCI + [18]APCI → 读/写/应答
⑧ [18]剩余bit + [19:] → 按DPT换算工程值

7. 注意事项

  1. 长度字段包含自身:总长度、数据长度都要+1看(数据长度含APCI字节);
  2. bit与byte的写入帧长度不同:调光地址若误配成1bit DPT,抓包看到长度01即可发现;
  3. 源地址在隧道帧中可能是0 :真实源地址由网关在L_Data.ind帧中填入,别把00 00当异常;
  4. 跳数计数默认6:跨多路由器的工程注意报文被丢弃,必要时链路层配置加大;
  5. 编码换算:百分比/温度类工程值必须按DPT编码表换算(详见《KNX协议 - APCI指令与数据点类型DPT详解》),"写50"不等于"发0x50"。

8. 相关文档

  • 《极物科技 | KNX协议 - CEMI报文格式详解》
  • 《极物科技 | KNX协议 - APCI指令与数据点类型DPT详解》
  • 《极物科技 | knxd - Wireshark抓包与总线监控》
  • 《极物科技 | KNX协议 - Tunneling隧道协议详解》
  • 《极物科技 | knxd - TCP与Unix Socket接口对接》

关于极物科技(ZEEWO)

极物科技(Zeewo)致力于为用户提供智能控制系统及硬件产品。我们以总线系统为技术底座,以**"稳定、可靠、快速响应"**为产品底线,是国内少有的拥有 KNX、DALI 全套软硬件自主研发能力的厂商之一。

我们的核心能力:

  • 系统架构:自研极物 OS,支持多协议无界融合(KNX/DALI/CAN/RS485/IP)。
  • 核心硬件:带双路 DALI 的 KNX 主机、超薄全金属定制面板、各类智选传感器及网关。
  • 生态互联:深度融入 Apple HomeKit、Matter、小度、HomeAssistant 及纯血鸿蒙生态。
  • 调试交付:独家支持 ETS 导出 XML 直接导入进行 APP 免编程调试,支持远程 WEB 运维。

我们的市场覆盖:

服务网点已覆盖全国核心城市(含长三角、珠三角、成渝等),并以高品质的方案深耕家居生活、酒店民宿、企业办公、疗愈康养、餐馆会所等多个细分领域。

(如果您在开发或落地中遇到技术问题,欢迎通过官网或后台私信与我交流探讨)

相关推荐
阿钱真强道2 天前
46 极物科技 | knxd - 路由模式与隧道模式详解
极物·极物智能·极物科技·knxnet/ip·knx协议·knxd·组播路由
阿钱真强道2 天前
46 极物科技 | knxd - NCN5120收发器与TP1总线接入
极物·极物智能·极物科技·knx协议·knxd·ncn5120·tp1总线
阿钱真强道2 天前
47 极物科技 | knxd - TCP与Unix Socket接口对接
socket编程·楼宇自动化·极物·极物智能·极物科技·knx协议·knxd
阿钱真强道3 天前
43 极物科技 | KNX设备 - Web添加与管理指南
智能家居·极物·极物智能·极物科技·knx协议·组地址
阿钱真强道3 天前
44 极物科技 | KNX场景 - 主机场景与APP免编程调试
智能家居·楼宇自动化·极物·极物智能·极物科技·knx协议
阿钱真强道4 天前
41极物科技 | KNX工程 - ETS导出XML一键导入指南
智能家居·ets·极物·极物智能·极物科技·knx协议·xml导入
阿钱真强道4 天前
39 极物科技 | KNX智能控制系统 - 快速接入指南
智能家居·极物·极物智能·极物科技·knx协议·knx网关
阿钱真强道4 天前
40 极物科技 | KNX网关 - KNXnet/IP路由器对接配置
智能家居·极物·极物智能·极物科技·knxnet/ip·knx协议·knx网关
阿钱真强道6 天前
33 极物科技 | Control4 对接 - A8 按键面板驱动
智能家居·rs485·极物·极物智能·极物科技·control4·c4对接