KNX报文格式及示例解析

本文目录
  1. 1. 1. KNX协议分层(OSI模型简化)
  2. 2. 2. 通信模式
  3. 3. 3. 报文类型
  4. 4. 4. 地址结构
  5. 5. 5. 数据表示(APDU)
  6. 6. 6. 通信服务
  7. 7. 7. 安全机制
  8. 8. 8. 实际调试建议
  9. 9. 1. 标准帧(L_Data Standard)
  10. 10. 2. 扩展帧(L_Data Extended)
  11. 11. 3. 确认帧(ACK/NACK)
  12. 12. 4. 轮询请求(Polling Request)
  13. 13. 5. 响应帧(Response)
  14. 14. 6. 广播帧(Broadcast)
  15. 15. 7. 安全报文(KNX Secure)
  16. 16. 关键对比表
  17. 17. 注意事项
  18. 18. 以下示例说明:
  19. 19. 示例1:开关控制(标准帧)
  20. 20. 示例2:温度传感器数据(扩展帧)
  21. 21. 示例3:场景控制(多字节数据)
  22. 22. 关键点
  23. 23. 实际应用建议

1. KNX协议分层(OSI模型简化)

KNX协议主要基于 OSI模型的简化版本,分为四层:

OSI层KNX实现功能说明
物理层TP(双绞线)、RF、IP定义物理介质(如KNX TP1总线、无线射频、KNXnet/IP隧道)。
数据链路层KNX Data Link Layer管理总线仲裁、冲突检测、帧校验(如校验和)。
网络层KNX Network Layer处理路由(组播/广播)、地址过滤(物理地址与组地址)。
应用层KNX Application Layer定义数据语义(如DPT类型)、设备间交互逻辑(读/写/响应)。

2. 通信模式

(1) 组播(Group Communication)

  • 用途:设备向组地址发送数据,所有订阅该组地址的设备接收并处理。
  • 特点:高效的一对多通信,适用于灯光控制、场景触发等。
  • 示例组地址 1/2/3 接收开灯指令,所有绑定此地址的灯执行操作。

(2) 点对点(Point-to-Point)

  • 用途:设备直接通过物理地址通信(如配置、诊断)。
  • 特点:需明确指定目标物理地址,用于设备初始化或维护。
  • 示例:中控设备 0.0.1 向传感器 1.1.10 请求温度数据。

3. 报文类型

KNX报文分为 标准帧(L_Data)扩展帧(L_Data Extended)

类型控制字段值数据长度限制适用场景
标准帧0xBC≤ 15字节常规控制指令(开关、百分比)
扩展帧0xBF≤ 255字节大数据传输(如日志、配置)

4. 地址结构

(1) 物理地址(Individual Address)

  • 格式区域(4bit).线(4bit).设备(8bit) → 2字节。
  • 示例1.2.30x12 0x03(二进制 0001 0010 0000 0011)。
  • 用途:唯一标识设备,用于点对点通信或设备配置。

(2) 组地址(Group Address)

  • 格式主组(5bit)/中间组(3bit)/子组(8bit)主组(5bit)/子组(11bit) → 2字节。
  • 示例
  • 3/2/10xE3 0x21(二进制 1110 0011 0010 0001)。
  • 5/20470xA5 0xFF(二进制 1010 0101 1111 1111)。
  • 用途:逻辑分组,设备订阅组地址实现一对多通信。

5. 数据表示(APDU)

(1) DPT(Data Point Type)

KNX通过 DPT标准 定义数据语义,格式为 主类型.子类型(如 DPT 1.001 表示布尔开关):

DPT示例数据长度说明
DPT 1.0011 bit布尔值(0=关,1=开)。
DPT 5.0011字节百分比(0x00=0%,0xFF=100%)。
DPT 9.0012字节温度(浮点数,如 0x0C00=24°C)。
DPT 16.00114字节字符串(ASCII编码,如 "KNX")。

(2) APDU结构

  • TPCI(Transport Control):1字节,标记报文类型(如数据请求、确认)。
  • APCI(Application Control):1字节,定义操作类型(读、写、响应)。
  • 数据负载:根据DPT编码的实际数据。

示例

  • 开关写入指令:TPCI=0x00(写), APCI=0x80(DPT 1.001), 数据=0x01(开)
  • 温度读取请求:TPCI=0x40(读), APCI=0x00(无数据)

6. 通信服务

(1) 轮询(Polling)

  • 主设备主动向从设备请求数据(如查询传感器状态)。
  • 报文示例控制字段=0xBC, 目标地址=传感器物理地址, APCI=读请求

(2) 确认(Acknowledge)

  • 接收方需回复确认帧(ACK)以确保可靠性。
  • 示例:设备收到控制指令后返回 ACK报文(0xB0)

(3) 重试机制

  • 若未收到ACK,发送方在指定超时后重传报文(通常最多3次)。

7. 安全机制

  • 传统模式:无加密,依赖物理层安全(如总线访问控制)。
  • KNX Secure:新增数据加密(AES-128)和身份验证,防止篡改与窃听。
  • 安全报文示例:在标准帧基础上增加加密负载和MAC(消息认证码)。

8. 实际调试建议

  1. 抓包工具:使用Wireshark + KNX插件 分析总线流量,过滤特定组地址。
  2. 错误排查
  • 校验和错误:检查报文异或结果。
  • 地址冲突:确保物理地址和组地址唯一。
  1. ETS配置:在ETS工程中绑定DPT类型,避免数据解析错误。

KNX协议中,报文类型主要通过控制字段TPCI(Transport Control Information)区分,不同报文类型适用于不同场景(如控制指令、数据请求、响应等)。以下是常见KNX报文类型的详细说明及示例:


1. 标准帧(L_Data Standard)

  • 控制字段0xBC
  • 数据长度:≤ 15字节
  • 适用场景:常规控制指令(开关、百分比、状态读取等)。

示例:开关控制

BC 11 0A E1 03 01 01 80
  • 控制字段 0xBC:标准帧,正常优先级。
  • 源地址 0x110A(1.1.10)。
  • 目标地址 0xE103(组地址1/2/3)。
  • 数据 0x01:开关状态(开)。
  • 校验和 0x80:异或计算结果。

2. 扩展帧(L_Data Extended)

  • 控制字段0xBF
  • 数据长度:≤ 255字节
  • 适用场景:大数据传输(如字符串、日志、复杂配置)。

示例:发送字符串信息

BF 23 05 E2 51 0E 10 4B 4E 58 20 54 65 73 74 00 00 00 5C
  • 控制字段 0xBF:扩展帧,低优先级。
  • 源地址 0x2305(2.3.5)。
  • 目标地址 0xE251(组地址2/5/1)。
  • 数据长度 0x0E:14字节数据。
  • 数据 0x10 4B 4E 58 20 54 65 73 74 00 00 00
  • DPT 16.001(字符串),内容为 "KNX Test"(ASCII编码)。
  • 校验和 0x5C:计算略。

3. 确认帧(ACK/NACK)

  • 控制字段0xB0(ACK)或 0xB1(NACK)
  • 结构:无数据部分,仅控制字段和校验和。
  • 适用场景:接收方回复确认或拒绝。

示例:ACK确认

B0 00 00 00 00 00 00 B0
  • 控制字段 0xB0:确认帧(ACK)。
  • 校验和 0xB0:仅自身异或结果为 0xB0

4. 轮询请求(Polling Request)

  • 控制字段0xBC(标准帧)
  • TPCI0x40(读请求)
  • 适用场景:主设备主动请求从设备数据。

示例:读取温度传感器数据

BC 00 01 12 34 01 40 00 2D
  • 源地址 0x0001(中控设备0.0.1)。
  • 目标地址 0x1234(传感器物理地址1.2.52)。
  • 数据长度 0x01:1字节数据。
  • TPCI+APCI 0x40:读请求(无数据负载)。
  • 校验和 0x2D:计算略。

5. 响应帧(Response)

  • TPCI0x80(写响应)或 0xC0(读响应)
  • 适用场景:设备回复请求的数据或状态。

示例:温度传感器返回数据

BC 12 34 00 01 02 06 00 5C
  • 源地址 0x1234(传感器地址1.2.52)。
  • 目标地址 0x0001(中控设备0.0.1)。
  • 数据长度 0x02:2字节数据。
  • 数据 0x0600:温度值(DPT 9.001,24.0°C)。
  • 校验和 0x5C:计算略。

6. 广播帧(Broadcast)

  • 目标地址0x0000(全零地址)
  • 适用场景:设备向总线所有节点发送全局指令(如系统复位)。

示例:全局复位指令

BC 00 01 00 00 01 FF 01
  • 源地址 0x0001(中控设备)。
  • 目标地址 0x0000:广播地址。
  • 数据 0xFF:复位指令(自定义编码)。

7. 安全报文(KNX Secure)

  • 控制字段0xBC0xBF(结合加密标志)
  • 结构:在标准帧基础上增加加密负载和MAC(消息认证码)。
  • 适用场景:防止数据篡改或窃听。

示例(简化的加密报文)

BC 11 0A E1 03 10 01 80 [加密负载] [MAC] 2A
  • 数据部分:明文数据 0x01 被加密为更长字节。
  • MAC:用于验证数据完整性(如AES-128计算)。

关键对比表

报文类型控制字段数据长度TPCI典型场景
标准帧0xBC≤15字节0x00开关控制、百分比调节
扩展帧0xBF≤255字节0x00长文本、复杂配置
ACK确认0xB0接收成功响应
NACK拒绝0xB1接收失败响应
读请求0xBC1字节0x40主动请求传感器数据
写响应0xBC可变0x80设备状态更新确认
广播帧0xBC可变0x00系统级指令(如复位)

注意事项

  1. TPCI与APCI
  • TPCI(传输控制)标记报文类型(读、写、响应)。
  • APCI(应用控制)定义具体操作(如DPT类型)。
  1. 地址过滤:设备仅处理目标地址匹配的报文(物理地址或订阅的组地址)。
  2. 校验和:始终为前面所有字节的异或(XOR)值。

希望这些示例能帮助你理解KNX不同报文类型的写法!实际开发中建议结合官方协议文档和ETS工具验证。

以下示例说明:

示例1:开关控制(标准帧)

场景:物理地址 1.1.10 的设备向组地址 1/2/3 发送开灯指令。
报文

BC 11 0A E1 03 01 01 80
  • 控制字段 0xBC:标准帧,正常优先级。
  • 源地址 0x110A:设备地址 1.1.10
  • 目标地址 0xE103:组地址 1/2/3E1表示组地址类型)。
  • 数据长度 0x01:1字节数据。
  • 数据 0x01:开关状态(0x01=开,0x00=关)。
  • 校验和 0x80BC XOR 11 XOR 0A XOR E1 XOR 03 XOR 01 XOR 01 = 80

示例2:温度传感器数据(扩展帧)

场景:传感器 2.3.5 上报温度 22.5°C 到组地址 2/5/1
报文

BF 23 05 E2 51 02 06 00 5C
  • 控制字段 0xBF:扩展帧,低优先级。
  • 源地址 0x2305:设备地址 2.3.5
  • 目标地址 0xE251:组地址 2/5/1
  • 数据长度 0x02:2字节数据。
  • 数据 0x0600
  • DPT 9.001(温度),编码为 0x060022.5°C(浮点格式)。
  • 校验和 0x5C:计算略。

示例3:场景控制(多字节数据)

场景:中控设备 0.0.1 触发场景 3(组地址 5/0/3)。
报文

BC 00 01 E5 03 03 03 00 00 6F
  • 控制字段 0xBC:标准帧。
  • 源地址 0x0001:中控地址 0.0.1
  • 目标地址 0xE503:组地址 5/0/3
  • 数据长度 0x03:3字节数据。
  • 数据 0x030000:场景编号3,附加参数。
  • 校验和 0x6F:计算略。

关键点

  1. 地址编码
  • 物理地址:区域(4bit).线(4bit).设备(8bit) → 2字节(如 1.1.100x11 0x0A)。
  • 组地址:主组(5bit)/中间组(3bit)/子组(8bit) → 2字节(如 1/2/30xE1 0x03,高位 1110 表示组地址)。
  1. 数据编码
  • 开关:1字节(0x00=关,0x01=开)。
  • 温度:2字节浮点(如 DPT 9.001)。
  • 百分比:1字节(0x00=0%,0xFF=100%)。
  1. 校验和:对所有前面字节进行异或运算(如 BC XOR 11 XOR 0A XOR E1 XOR 03 XOR 01 XOR 01 = 80)。

实际应用建议

  • 使用ETS(KNX工程工具软件)配置设备,无需手动组包。
  • 报文示例主要用于理解底层协议,调试时可借助抓包工具(如Wireshark + KNX插件)。
  • 深入学习可参考KNX官方文档《KNX Standard》或书籍《KNX for IoT》。

技术术语(共 1 个)—— 点击展开
传感器将物理量转换为电信号的检测装置
来源/工具信息 —— 点击展开
来源 Modbus中文网(modbus.cn) —— 国内领先的Modbus通信协议技术社区 分类 智能家居 字数 4405 字 · 阅读约 12 分钟 更新 2026-06-25 永久链接 https://www.modbus.cn/knx%e6%8a%a5%e6%96%87%e6%a0%bc%e5%bc%8f%e5%8f%8a%e7%a4%ba%e4%be%8b%e8%a7%a3%e6%9e%90/
推荐工具:Modbus调试助手 微信小程序
Modbus中文网官方推出的Modbus调试工具,支持 Modbus RTU/TCP 实时通信调试、寄存器读写、线圈控制、数据监控和报文分析。 无需安装,微信搜索「Modbus调试助手」即可使用。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
相关标签
把这篇资料用于真实项目?

进入工具中心进行报文解析、CRC 校验和设备调试,或提交需求获取选型与接入建议。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注