KNX프레임형식及예제분석

무료무료 기술 자료

이 글은 바로 읽을 수 있으며 기초 학습과 검색 유입에 적합합니다.

KNX报文格式及示例解析

1. KNX프로토콜分层(OSI模型简化)

KNX프로토콜主要基于 OSI模型的简化버전,分为四层:

OSI层KNX实现功能설명
物理层TP(双绞线)、RF、IP定义物理介质(如KNX TP1总线、无线射频、KNXnet/IP隧道)。
데이터链路层KNX 데이터 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_데이터) 和 扩展帧(L_데이터 Extended):

유형控制필드值데이터길이限制适用시나리오
표준帧0xBC≤ 15바이트常规控制指令(开关、百分比)
扩展帧0xBF≤ 255바이트大데이터传输(如로그、설정)

4. 주소结构

(1) 物理주소(Individual 주소)

  • 형식:区域(4bit).线(4bit).设备(8bit) → 2바이트。
  • 예제:1.2.3 → 0x12 0x03(2진수 0001 0010 0000 0011)。
  • 用途:唯一标识设备,用于点对点통신或设备설정。

(2) 组주소(Group 주소)

  • 형식:主组(5bit)/中间组(3bit)/子组(8bit) 或 主组(5bit)/子组(11bit) → 2바이트。
  • 예제:
  • 3/2/1 → 0xE3 0x21(2진수 1110 0011 0010 0001)。
  • 5/2047 → 0xA5 0xFF(2진수 1010 0101 1111 1111)。
  • 用途:逻辑分组,设备订阅组주소实现一对多통신。

5. 데이터表示(APDU)

(1) DPT(데이터 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_데이터 Standard)

  • 控制필드:0xBC
  • 데이터길이:≤ 15바이트
  • 适用시나리오:常规控制指令(开关、百分比、状态읽기等)。

예제:开关控制

BC 11 0A E1 03 01 01 80
  • 控制필드 0xBC:표준帧,正常优先级。
  • 源주소 0x110A(1.1.10)。
  • 目标주소 0xE103(组주소1/2/3)。
  • 데이터 0x01:开关状态(开)。
  • 체크섬 0x80:异或계산 결과。

2. 扩展帧(L_데이터 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(표준帧)
  • TPCI:0x40(读请求)
  • 适用시나리오:主设备主动请求从设备데이터。

예제:읽기온도 센서데이터

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)

  • TPCI:0x80(写响应)或 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)

  • 控制필드:0xBC 或 0xBF(结合加密标志)
  • 结构:在표준帧基础上추가加密负载和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/3(E1表示组주소유형)。
  • 데이터길이 0x01:1바이트데이터。
  • 데이터 0x01:开关状态(0x01=开,0x00=关)。
  • 체크섬 0x80:BC 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(온도),编码为 0x0600 → 22.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.10 → 0x11 0x0A)。
  • 组주소:主组(5bit)/中间组(3bit)/子组(8bit) → 2바이트(如 1/2/3 → 0xE1 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》。

相关标签
실제 프로젝트에 이 자료를 활용하시겠습니까?

도구 센터에서 프레임 분석, CRC 검증, 장비 디버깅을 진행하거나 요청을 제출하여 선정 및 연동 제안을 받아보세요.

엔지니어 회원

이 글을 실행 가능한 디버깅 자료로 활용하세요

가입하면 고급 프레임 분석, 자료 패키지 다운로드, 코드 예제, 엔지니어링 사례, 우선 기술 지원을 이용할 수 있어 실제 프로젝트 납품에 적합합니다.

고급 도구 무제한 이용
자료 패키지와 코드 패키지
완전한 엔지니어링 사례 라이브러리
우선 기술 지원 채널

답글 작성

이메일 주소는 공개되지 않습니다. 必填项已用 * 标注