news 2026/9/10 11:27:45

53 极物科技 | KNX协议 - CEMI报文帧格式详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
53 极物科技 | KNX协议 - CEMI报文帧格式详解

极物科技 | KNX协议 - CEMI报文帧格式详解

前言

KNX 之所以能成为全球楼宇自动化的“通用语言”,靠的是严谨到字节级的协议设计——它既是国际标准 ISO/IEC 14543-3,也意味着任何厂商按规范实现的设备都能在同一总线上精确协作。

极物科技的研发团队对 KNX 协议栈做了深度自主研发,从 CEMI 帧解析到 KNXnet/IP 双通道实现全部内置于自研 KNX 主机,自主可控;配合鸿蒙、苹果、安卓三端原生 APP、Apple HomeKit 与小度生态接入及主机远程调试能力,这正是极物主机稳定对接全球上万种 KNX 设备的技术底气。

一句话概述:本文回答"CEMI帧每个字节是什么含义",CEMI(Common External Message Interface)是KNX报文在IP通道上传输的标准封装格式,看懂它就等于拿到了KNX报文的"解剖图"。


1. CEMI在协议栈中的位置

KNXnet/IP(隧道/组播)通道上传输的每一帧,外层是KNXnet/IP报文头,内层载荷就是CEMI帧;knxd的Socket接口吐出的同样是CEMI。可以说:CEMI = 总线L_Data帧在IP世界的化身

KNXnet/IP帧(RoutingIndication) ┌──────────────────────────┬─────────────────────┐ │ KNXnet/IP Header (6字节) │ CEMI帧(本文主角) │ └──────────────────────────┴─────────────────────┘

2. CEMI帧整体结构

┌────────┬──────────┬──────────┬──────────┬─────────────┬───────┬───────────┐ │ 消息码 │ 附加信息长度│ 附加信息区 │ 控制域1/2 │ 源地址+目的地址│ NPDU长度│ TPCI/APCI+数据│ │ 1字节 │ 1字节 │ 0~N字节 │ 2字节 │ 2+2字节 │ 1字节 │ 1~16字节 │ └────────┴──────────┴──────────┴──────────┴─────────────┴───────┴───────────┘

3. 逐字段详解

3.1 消息码(Message Code)

含义
0x11L_Data.req(请求发送)
0x2EL_Data.con(发送确认,含成功/失败状态)
0x29L_Data.ind(接收指示,总线收到帧时上报)

3.2 附加信息区(Additional Information)

常见于隧道与路由通道,用于携带占用通道、射频中继等信息。组播路由帧附加信息长度为0;隧道帧常见4字节附加信息(L_Data.con使用)。

3.3 控制域(Control Field 1 / 2)

控制域1(如0xBC/0xB4)承载帧类型、重复标志、优先级(低优先级为主)、广播标志等;控制域2(如0xE0)承载目的地址类型(0x80=组地址)与跳数计数。

3.4 源地址与目的地址

均为2字节大端。源地址是个体地址(如1.1.0),目的地址通常是组地址(如0/0/37):

高字节 00 25 → 组地址 0/0/37 高字节 09 01 → 组地址 1/1/1

3.5 NPDU长度与TPCI/APCI

NPDU长度为0表示无数据或仅6bit以内数据(1bit开关等);TPCI 2bit+APCI 8bit共同组成指令字段,APCI高6位是操作码、低2位与后续数据字节拼装数值:

TPCI/APCI字节指令
0x00GroupValueRead(读请求)
0x40GroupValueResponse(读响应)
0x80GroupValueWrite,低2bit=值(1bit开关)

4. L_Data帧逐字节示例

4.1 1bit开关写入帧(开灯)

11 00 B4 E0 11 00 00 25 00 81 │ │ │ │ └┬┘ └┬┘ │ └┬┘ │ │ │ │ 源地址 目的 │ APCI=0x80写 │ │ │ │ 1.1.0 0/0/37│ 低2bit=01 → 开 │ │ │ └ 控制域2(组地址) │ │ └ 控制域1 │ └ 附加信息长度=0 └ 消息码 L_Data.req NPDU长度=00:数据不足1字节,值直接放在APCI字节低2位

4.2 1byte百分比写入帧(窗帘行程50%)

11 00 B4 E0 11 00 00 25 01 80 32 └─ 数据 0x32 = 50(%)

对比可见:NPDU长度变为1,数据跟随在APCI字节之后。

4.3 读请求帧(状态查询)

11 00 B4 E0 11 00 00 25 00 00 └─ APCI=0x00 读,无数据

5. 代码级解析片段

极物主机收发层解析CEMI的核心逻辑(脱敏示意):

typedefstruct{uint8_tmsg_code;/* 0x11 req / 0x29 ind */uint8_tctrl1,ctrl2;uint16_tsrc_ia;/* 源个体地址 */uint16_tdst_ga;/* 目的组地址 */uint8_tnpdu_len;uint8_tapci;/* 低2bit与首数据字节拼接 */uint8_tdata[16];}cemi_frame_t;intcemi_parse(constuint8_t*buf,intlen,cemi_frame_t*out){constuint8_t*p=buf+1+buf[1];/* 跳过消息码+附加信息 */out->ctrl1=*p++;out->ctrl2=*p++;out->src_ia=(p[0]<<8)|p[1];p+=2;out->dst_ga=(p[0]<<8)|p[1];p+=2;out->npdu_len=*p++;out->apci=(*p)&0x03?(*p&0xC0):(*p&0xC0);/* 取APCI高2位 *//* 1bit值在apci字节低2位;多字节数据从下一字节起 */...}

6. 解析实战建议

  1. 先看第1字节:0x11是本机发出、0x29是总线收到,方向立判;
  2. 再看目的地址:换算成三级组地址后,直接对照ETS工程核查;
  3. 最后看APCI与数据:0x80/0x00/0x40三类指令覆盖90%日常报文;
  4. 配合Wireshark的KNXnet/IP解析器,可自动完成上述拆解(见系列第44篇)。

7. 相关文档

  • 《极物科技 | KNXnet/IP - 报文结构逐字节解析》
  • 《极物科技 | KNX协议 - APCI指令与数据点类型解析》
  • 《极物科技 | knxd - Wireshark抓包与总线监控》
  • 《极物科技 | KNX协议栈 - 系统架构与分层设计》

关于极物科技(ZEEWO)

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

我们的核心能力:

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

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


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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 11:27:20

基于Qt的AGV调度系统实战:信号槽、多线程与路径规划

简介&#xff1a;这套源码是一个基于QT框架与C开发的智能AGV调度系统&#xff0c;适合有一定C基础并希望深入QT项目实战的开发者&#xff0c;也适用于工业自动化、仓储物流场景中的调度逻辑学习。压缩包共66个文件&#xff0c;核心由26个cpp、24个头文件、2个UI界面及2个pro工程…

作者头像 李华
网站建设 2026/9/10 11:25:56

GE图引擎SetInput API

SetInput 【免费下载链接】ge GE&#xff08;Graph Engine&#xff09;是面向昇腾的图编译器和执行器&#xff0c;提供了计算图优化、多流并行、内存复用和模型下沉等技术手段&#xff0c;加速模型执行效率&#xff0c;减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的…

作者头像 李华
网站建设 2026/9/10 11:24:25

AT89C51+MAX487 RS485自动收发时序设计与Proteus仿真

简介&#xff1a;本资源是一套面向嵌入式初学者与电子工程实践者的RS485自动收发通信完整仿真方案&#xff0c;聚焦AT89C51单片机与MAX487收发器协同实现半双工总线通信的核心技能训练&#xff0c;适用于工业通信、多节点传感网络等典型应用场景。压缩包共27个文件&#xff0c;…

作者头像 李华