KNXメッセージ形式及サンプル解析

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

KNXメッセージ形式及サンプル解析

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

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

OSI层KNX実装功能説明
物理層はTP(ツイストペア)、RF、IP定义物理介质(如KNX TP1バス、无线射频、KNXnet/IP隧道)。
データ链路层KNX Data Link Layer管理バス仲裁、冲突检测、フレームチェック(如チェック和)。
网络层KNX Network Layer処理路由(组播/broadcast)、アドレス过滤(物理アドレス与组アドレス)。
アプリケーション層KNX Application Layer定义データ语义(如DPTType)、デバイス间交互逻辑(读/写/Response)。

2. 通信モード

(1) 组播(Group Communication)

  • 用途:デバイス向组アドレス送信データ,すべての订阅该组アドレス的デバイス受信并処理。
  • 特点:高效的一对多通信,適用される灯光控制、场景触发等。
  • example组アドレス 1/2/3 受信开灯指令,すべての绑定此アドレス的灯执行操作。

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

  • 用途:デバイス直接経由物理アドレス通信(如設定、诊断)。
  • 特点:需明确指定目标物理アドレス,用于デバイス初期化或维护。
  • example:中控デバイス 0.0.1 向センサーは 1.1.10 リクエスト温度データ。

3. message type

KNX报文分为 標準フレーム(L_Data)扩展フレーム(L_Data Extended)

Type控制字段值データ長さ限制適用可能なシーン
標準フレーム0xBC≤ 15バイト常规控制指令(switch、百分比)
扩展フレーム0xBF≤ 255バイト大データ传输(如日志、設定)

4. アドレス構造

(1) 物理アドレス(Individual Address)

  • formatエリア(4bit).线(4bit).device(8bit) → 2バイト。
  • example1.2.30x12 0x03(binary 0001 0010 0000 0011)。
  • 用途:唯一标识デバイス,用于点对点通信或デバイス設定。

(2) 组アドレス(Group Address)

  • format主组(5bit)/中间组(3bit)/子组(8bit)主组(5bit)/子组(11bit) → 2バイト。
  • example
  • 3/2/10xE3 0x21(binary 1110 0011 0010 0001)。
  • 5/20470xA5 0xFF(binary 1010 0101 1111 1111)。
  • 用途:逻辑分组,デバイス订阅组アドレス実装一对多通信。

5. データ表示(APDU)

(1) DPT(Data Point Type)

KNX経由 DPT標準 定义データ语义,格式为 主タイプ.子タイプ(如 DPT 1.001 表示布尔开关):

DPTexampleデータ長さ説明
DPT 1.0011 bit布尔值(0=关,1=开)。
DPT 5.0011バイト百分比(0x00=0%,0xFF=100%)。
DPT 9.0012バイトtemperature(浮動小数点数,如 0x0C00=24°C)。
DPT 16.00114バイトストリング·ストリング(ASCIICoding,如 "KNX")。

(2) APDU構造

  • TPCI(Transport Control):1バイト,标记报文タイプ(如データリクエスト、Confirm)。
  • APCI(Application Control):1バイト,定义操作タイプ(读、写、Response)。
  • データ負荷:根据DPT编码的实际データ。

example

  • 开关写入指令:TPCI=0x00(写), APCI=0x80(DPT 1.001), data=0x01(开)
  • 温度読み取りリクエスト:TPCI=0x40(读), APCI=0x00(无データ)

6. 通信服务

(1) ポーリング(Polling)

  • 主デバイス主动向从デバイスリクエストデータ(如查询センサーはステータス)。
  • 报文サンプル控制字段=0xBC, 目标アドレス=センサーは物理アドレス, APCI=读リクエスト

(2) Confirm(Acknowledge)

  • 受信方需回复確認フレーム(ACK)以确保可靠性。
  • example:デバイス收到控制指令后戻る ACKmessage(0xB0)

(3) 重试机制

  • 若未收到ACK,送信方在指定タイムアウト后重传报文(通常最多3次)。

7. セキュリティ机制

  • 传统モード:无加密,依赖物理層はセキュリティ(如バスアクセス控制)。
  • KNX Secure:新增データ加密(AES-128)和身份验证,防止篡改与窃听。
  • セキュリティ报文サンプル:在標準フレーム基础上增加加密負荷和MAC(メッセージ认证码)。

8. 实际デバッグ建议

  1. 抓包工具:使用Wireshark + KNX插件 分析バストラフィック,过滤特定组アドレス。
  2. エラートラブルシューティング
  • チェックサムエラー:チェック报文异或结果。
  • アドレス冲突:确保物理アドレス和组アドレス唯一。
  1. ETS設定:在ETS工程中绑定DPTType,避免データの解析エラー。

KNX协议中,报文タイプ主要経由控制字段TPCI(Transport Control Information)区分,不同报文タイプ適用される不同场景(如控制指令、データリクエスト、レスポンス等)。以下是常见KNX报文タイプ的详细説明及サンプル:


1. 標準フレーム(L_Data Standard)

  • 控制字段0xBC
  • データ長さ:≤ 15バイト
  • 適用可能なシーン:常规控制指令(switch、百分比、ステータス読み取り等)。

example:スイッチ制御

BC 11 0A E1 03 01 01 80
  • 控制字段 0xBC:標準フレーム,正常优先级。
  • 源アドレス 0x110A(1.1.10)。
  • 目标アドレス 0xE103(组アドレス1/2/3)。
  • data 0x01:开关ステータス(开)。
  • checksum 0x80:异或計算结果。

2. 扩展フレーム(L_Data Extended)

  • 控制字段0xBF
  • データ長さ:≤ 255バイト
  • 適用可能なシーン:大データ传输(如ストリング·ストリング、日志、复杂設定)。

example:送信ストリング·ストリング信息

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:14Bytesのデータ。
  • data 0x10 4B 4E 58 20 54 65 73 74 00 00 00
  • DPT 16.001(ストリング·ストリング),内容为 "KNX Test"(ASCIICoding)。
  • checksum 0x5C:計算略。

3. 確認フレーム(ACK/NACK)

  • 控制字段0xB0(ACK)或 0xB1(NACK)
  • 構造:无データ部分,仅控制字段和チェック和。
  • 適用可能なシーン:受信方回复確認或拒绝。

example:ACKConfirm

B0 00 00 00 00 00 00 B0
  • 控制字段 0xB0:確認フレーム(ACK)。
  • checksum 0xB0:仅自身异或结果为 0xB0

4. ポーリングリクエスト(Polling Request)

  • 控制字段0xBC(標準フレーム)
  • TPCI0x40(读リクエスト)
  • 適用可能なシーン:主デバイス主动リクエスト从設備のデータ。

example:読み取り温度センサーデータ

BC 00 01 12 34 01 40 00 2D
  • 源アドレス 0x0001(中控デバイス0.0.1)。
  • 目标アドレス 0x1234(センサーは物理アドレス1.2.52)。
  • データ長さ 0x01:1Bytesのデータ。
  • TPCI+APCI 0x40:读リクエスト(无データ負荷)。
  • checksum 0x2D:計算略。

5. レスポンスフレーム(Response)

  • TPCI0x80(写レスポンス)或 0xC0(读レスポンス)
  • 適用可能なシーン:デバイス回复リクエスト的データ或ステータス。

example:温度センサー戻るデータ

BC 12 34 00 01 02 06 00 5C
  • 源アドレス 0x1234(センサーはアドレス1.2.52)。
  • 目标アドレス 0x0001(中控デバイス0.0.1)。
  • データ長さ 0x02:2Bytesのデータ。
  • data 0x0600:温度值(DPT 9.001,24.0°C)。
  • checksum 0x5C:計算略。

6. 广播フレーム(Broadcast)

  • 目标アドレス0x0000(全零アドレス)
  • 適用可能なシーン:デバイス向バスすべての节点送信全局指令(如系统复位)。

example:全局复位指令

BC 00 01 00 00 01 FF 01
  • 源アドレス 0x0001(中控デバイス)。
  • 目标アドレス 0x0000:放送アドレス。
  • data 0xFF:复位指令(自定义编码)。

7. セキュリティ报文(KNX Secure)

  • 控制字段0xBC0xBF(结合加密标志)
  • 構造:在標準フレーム基础上增加加密負荷和MAC(メッセージ认证码)。
  • 適用可能なシーン:防止データ篡改或窃听。

example(简化的加密报文)

BC 11 0A E1 03 10 01 80 [加密負荷] [MAC] 2A
  • データ部分:明文データ 0x01 被加密为更长バイト。
  • MAC:用于データの検証完全性(如AES-128計算)。

关键对比表

message type控制字段データ長さTPCI典型场景
標準フレーム0xBC≤15バイト0x00スイッチ制御、百分比调节
扩展フレーム0xBF≤255バイト0x00长文本、复杂設定
ACKConfirm0xB0-受信成功レスポンス
NACK拒绝0xB1-受信失敗レスポンス
读リクエスト0xBC1バイト0x40主动リクエストセンサーはデータ
写レスポンス0xBC可变0x80デバイスステータス更新確認
广播フレーム0xBC可变0x00系统级指令(如复位)

Precautions

  1. TPCI与APCI
  • TPCI(传输控制)标记报文タイプ(读、写、Response)。
  • APCI(应用控制)定义具体操作(如DPTType)。
  1. アドレス过滤:デバイス仅処理目标アドレスマッチング的报文(物理アドレス或订阅的组アドレス)。
  2. checksum:始终为前面すべてのバイト的异或(XOR)值。

希望这些サンプル能帮助你理解KNX不同报文タイプ的写法!实际开发中建议结合官方プロトコルのドキュメント和ETS工具验证。

以下サンプル説明:

example1:スイッチ制御(標準フレーム)

Scenarios:物理アドレス 1.1.10 的デバイス向组アドレス 1/2/3 送信开灯指令。
message

BC 11 0A E1 03 01 01 80
  • 控制字段 0xBC:標準フレーム,正常优先级。
  • 源アドレス 0x110A:Device address 1.1.10
  • 目标アドレス 0xE103:组アドレス 1/2/3E1表示组アドレスタイプ)。
  • データ長さ 0x01:1Bytesのデータ。
  • data 0x01:开关ステータス(0x01=开,0x00=关)。
  • checksum 0x80BC XOR 11 XOR 0A XOR E1 XOR 03 XOR 01 XOR 01 = 80

example2:温度センサーデータ(扩展フレーム)

Scenarios:Sensors 2.3.5 上报温度 22.5°C 到组アドレス 2/5/1
message

BF 23 05 E2 51 02 06 00 5C
  • 控制字段 0xBF:扩展フレーム,低优先级。
  • 源アドレス 0x2305:Device address 2.3.5
  • 目标アドレス 0xE251:组アドレス 2/5/1
  • データ長さ 0x02:2Bytesのデータ。
  • data 0x0600
  • DPT 9.001(temperature),编码为 0x060022.5°C(浮点格式)。
  • checksum 0x5C:計算略。

example3:シーンコントロール(多Bytesのデータ)

Scenarios:中控デバイス 0.0.1 触发场景 3(组アドレス 5/0/3)。
message

BC 00 01 E5 03 03 03 00 00 6F
  • 控制字段 0xBC:標準フレーム。
  • 源アドレス 0x0001:中控アドレス 0.0.1
  • 目标アドレス 0xE503:组アドレス 5/0/3
  • データ長さ 0x03:3Bytesのデータ。
  • data 0x030000:场景编号3,附加参数。
  • checksum 0x6F:計算略。

关键点

  1. アドレス编码
  • 物理アドレス:エリア(4bit).线(4bit).device(8bit) → 2バイト(如 1.1.100x11 0x0A)。
  • 组アドレス:主组(5bit)/中间组(3bit)/子组(8bit) → 2バイト(如 1/2/30xE1 0x03,高位 1110 表示组アドレス)。
  1. データ编码
  • switch:1バイト(0x00=关,0x01=开)。
  • temperature:2バイト浮点(如 DPT 9.001)。
  • 百分比:1バイト(0x00=0%,0xFF=100%)。
  1. checksum:对すべての前面バイト进行异或运算(如 BC XOR 11 XOR 0A XOR E1 XOR 03 XOR 01 XOR 01 = 80)。

实际应用建议

  • 使用ETS(KNX工程工具软件)設定デバイス,无需手动组包。
  • 报文サンプル主要用于理解底层协议,デバッグ时可借助抓包工具(如Wireshark + KNX插件)。
  • 深入学习可参照KNX官方ドキュメント《KNX Standard》或书籍《KNX for IoT》。

Related Tags
Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.