- 1. 1. KNXVereinbarungUnterteilung层(OSI模型简化)
- 2. 2. Kommunikation模式
- 3. 3. Typ der Nachricht
- 4. 4. Adresse结构
- 5. 5. Daten表示(APDU)
- 6. 6. Kommunikation服务
- 7. 7. 安全机制
- 8. 8. 实际Tests建议
- 9. 1. 标准帧(L_Data Standard)
- 10. 2. 扩展帧(L_Data Extended)
- 11. 3. Bestätigen帧(ACK/NACK)
- 12. 4. 轮询Bitte(Polling Request)
- 13. 5. Antwort帧(Response)
- 14. 6. Rundfunk帧(Broadcast)
- 15. 7. 安全Meldung(KNX Secure)
- 16. 关键对比表
- 17. Aufmerksamkeit
- 18. 以下Beispiel说明:
- 19. Beispiel1:Schalter!控制(标准帧)
- 20. Beispiel2:Temperatur-SensorDaten(扩展帧)
- 21. Beispiel3:Szene控制(多Anzahl der Bytes据)
- 22. 关键点
- 23. 实际应用建议
1. KNXVereinbarungUnterteilung层(OSI模型简化)
KNXVereinbarung主要基于 OSI模型的简化版本,Unterteilung为四层:
| OSI层 | KNX实现 | Funktion说明 |
|---|---|---|
| 物理层 | TP(双绞线)、RF、IP | 定义物理介质(如KNX TP1总线、无线射频、KNXnet/IP隧道)。 |
| Daten链路层 | KNX Data Link Layer | 管理总线仲裁、冲突检测、帧Prüfungen(如Prüfungen und)。 |
| 网络层 | KNX Network Layer | 处理路由(组播/Rundfunk)、Adresse过滤(物理Adresse与组Adresse)。 |
| 应用层 | KNX Application Layer | 定义Daten语义(如DPTTypus)、Ausrüstung间交互逻辑(读/写/Antwort)。 |
2. Kommunikation模式
(1) 组播(Group Communication)
- 用途:Ausrüstung向组AdresseSenden SieDaten,所有订阅该组AdresseDie AusrüstungEmpfang并处理。
- 特点:高效的一对多Kommunikation,适用于灯光控制、Szene触发等。
- Beispiel:
组Adresse 1/2/3Empfang开灯指令,所有绑定此Adresse的灯执行Operationen。
(2) 点对点(Point-to-Point)
- 用途:Ausrüstung直接通过物理AdresseKommunikation(如配置、诊断)。
- 特点:需明确指定目标物理Adresse,用于Ausrüstung初始化或维护。
- Beispiel:中控Ausrüstung
0.0.1向Der Sensor1.1.10BitteTemperaturDaten。
3. Typ der Nachricht
KNXMeldungUnterteilung为 标准帧(L_Data) 和 扩展帧(L_Data Extended):
| Typus | 控制Feld值 | DatenLänge限制 | 适用Szene |
|---|---|---|---|
| 标准帧 | 0xBC | ≤ 15Bytes | 常规控制指令(Schalter!、百Unterteilung比) |
| 扩展帧 | 0xBF | ≤ 255Bytes | 大Daten传输(如日志、配置) |
4. Adresse结构
(1) 物理Adresse(Individual Address)
- Das Format:
区域(4bit).线(4bit).Ausrüstung(8bit)→ 2Bytes。 - Beispiel:
1.2.3→0x12 0x03(Binärsystem0001 0010 0000 0011)。 - 用途:唯一标识Ausrüstung,用于点对点Kommunikation或Ausrüstung配置。
(2) 组Adresse(Group Address)
- Das Format:
主组(5bit)/中间组(3bit)/子组(8bit)或主组(5bit)/子组(11bit)→ 2Bytes。 - Beispiel:
3/2/1→0xE3 0x21(Binärsystem1110 0011 0010 0001)。5/2047→0xA5 0xFF(Binärsystem1010 0101 1111 1111)。- 用途:逻辑Unterteilung组,Ausrüstung订阅组Adresse实现一对多Kommunikation。
5. Daten表示(APDU)
(1) DPT(Data Point Type)
KNX通过 DPT标准 定义Daten语义,Das Format为 主Typus.子Typus(如 DPT 1.001 表示布尔Schalter!):
| DPTBeispiel | DatenLänge | 说明 |
|---|---|---|
| DPT 1.001 | 1 bit | 布尔值(0=关,1=开)。 |
| DPT 5.001 | 1Bytes | 百Unterteilung比(0x00=0%,0xFF=100%)。 |
| DPT 9.001 | 2Bytes | Temperatur(浮点数,如 0x0C00=24°C)。 |
| DPT 16.001 | 14Bytes | Charaktere串(ASCIICodierung,如 "KNX")。 |
(2) APDU结构
- TPCI(Transport Control):1Bytes,标记Typ der Nachricht(如DatenBitte、Bestätigen)。
- APCI(Application Control):1Bytes,定义OperationenTypus(读、写、Antwort)。
- Daten负载:根据DPTCodierung的实际Daten。
Beispiel:
- Schalter!写入指令:
TPCI=0x00(写),APCI=0x80(DPT 1.001), Daten=0x01(开)。 - TemperaturLesenBitte:
TPCI=0x40(读),APCI=0x00(无Daten)。
6. Kommunikation服务
(1) 轮询(Polling)
- 主Ausrüstung主动向从AusrüstungBitteDaten(如查询Der SensorStatus)。
- MeldungBeispiel:
控制Feld=0xBC,目标Adresse=Der Sensor物理Adresse,APCI=读Bitte。
(2) Bestätigen(Acknowledge)
- Empfang方需回复Bestätigen帧(ACK)以确保可靠性。
- Beispiel:Ausrüstung收zu控制指令后返回
ACKMeldung(0xB0)。
(3) 重试机制
- 若未收zuACK,Senden Sie方在指定超时后重传Meldung(通常最多3次)。
7. 安全机制
- 传统模式:无加密,依赖物理层安全(如总线访问控制)。
- KNX Secure:新增Daten加密(AES-128)和身份验证,防止篡改与窃听。
- 安全MeldungBeispiel:在标准帧基础上增加加密负载和MAC(消息认证码)。
8. 实际Tests建议
- 抓包Werkzeuge:使用Wireshark + KNX插件 Unterteilung析总线流Quantität,过滤特定组Adresse。
- Fehler.排查:
- Prüfungen undFehler.:检查MeldungUnterschiedlich oderErgebnis。
- Adresse冲突:确保物理Adresse和组Adresse唯一。
- ETS配置:在ETS工程中绑定DPTTypus,避免DatenAnalyseFehler.。
KNXVereinbarung中,Typ der Nachricht主要通过控制Feld和TPCI(Transport Control Information)区Unterteilung,不同Typ der Nachricht适用于不同Szene(如控制指令、DatenBitte、Antwort等)。以下是HäufigKNXTyp der Nachricht的详细说明及Beispiel:
1. 标准帧(L_Data Standard)
- 控制Feld:
0xBC - DatenLänge:≤ 15Bytes
- 适用Szene:常规控制指令(Schalter!、百Unterteilung比、StatusLesen等)。
Beispiel:Schalter!控制
BC 11 0A E1 03 01 01 80
- 控制Feld
0xBC:标准帧,正常优先级。 - 源Adresse
0x110A(1.1.10)。 - 目标Adresse
0xE103(组Adresse1/2/3)。 - Daten
0x01:Schalter!Status(开)。 - Prüfungen und
0x80:Unterschiedlich oderBerechnungsergebnisse。
2. 扩展帧(L_Data Extended)
- 控制Feld:
0xBF - DatenLänge:≤ 255Bytes
- 适用Szene:大Daten传输(如Charaktere串、日志、复杂配置)。
Beispiel:Senden SieCharaktere串信息
BF 23 05 E2 51 0E 10 4B 4E 58 20 54 65 73 74 00 00 00 5C
- 控制Feld
0xBF:扩展帧,低优先级。 - 源Adresse
0x2305(2.3.5)。 - 目标Adresse
0xE251(组Adresse2/5/1)。 - DatenLänge
0x0E:14Anzahl der Bytes据。 - Daten
0x10 4B 4E 58 20 54 65 73 74 00 00 00: - DPT 16.001(Charaktere串),内容为
"KNX Test"(ASCIICodierung)。 - Prüfungen und
0x5C:Berechnung略。
3. Bestätigen帧(ACK/NACK)
- 控制Feld:
0xB0(ACK)或0xB1(NACK) - 结构:无Daten部Unterteilung,仅控制Feld和Prüfungen und。
- 适用Szene:Empfang方回复Bestätigen或拒绝。
Beispiel:ACKBestätigen
B0 00 00 00 00 00 00 B0
- 控制Feld
0xB0:Bestätigen帧(ACK)。 - Prüfungen und
0xB0:仅自身Unterschiedlich oderErgebnis为0xB0。
4. 轮询Bitte(Polling Request)
- 控制Feld:
0xBC(标准帧) - TPCI:
0x40(读Bitte) - 适用Szene:主Ausrüstung主动Bitte从AusrüstungDaten。
Beispiel:LesenTemperatur-SensorDaten
BC 00 01 12 34 01 40 00 2D
- 源Adresse
0x0001(中控Ausrüstung0.0.1)。 - 目标Adresse
0x1234(Der Sensor物理Adresse1.2.52)。 - DatenLänge
0x01:1Anzahl der Bytes据。 - TPCI+APCI
0x40:读Bitte(无Daten负载)。 - Prüfungen und
0x2D:Berechnung略。
5. Antwort帧(Response)
- TPCI:
0x80(写Antwort)或0xC0(读Antwort) - 适用Szene:Ausrüstung回复Bitte的Daten或Status。
Beispiel:Temperatur-Sensor返回Daten
BC 12 34 00 01 02 06 00 5C
- 源Adresse
0x1234(Der SensorAdresse1.2.52)。 - 目标Adresse
0x0001(中控Ausrüstung0.0.1)。 - DatenLänge
0x02:2Anzahl der Bytes据。 - Daten
0x0600:Temperatur值(DPT 9.001,24.0°C)。 - Prüfungen und
0x5C:Berechnung略。
6. Rundfunk帧(Broadcast)
- 目标Adresse:
0x0000(全零Adresse) - 适用Szene:Ausrüstung向总线所有节点Senden Sie全局指令(如Das System复位)。
Beispiel:全局复位指令
BC 00 01 00 00 01 FF 01
- 源Adresse
0x0001(中控Ausrüstung)。 - 目标Adresse
0x0000:RundfunkAdresse。 - Daten
0xFF:复位指令(Custom definiertCodierung)。
7. 安全Meldung(KNX Secure)
- 控制Feld:
0xBC或0xBF(结合加密标志) - 结构:在标准帧基础上增加加密负载和MAC(消息认证码)。
- 适用Szene:防止Daten篡改或窃听。
Beispiel(简化的加密Meldung)
BC 11 0A E1 03 10 01 80 [加密负载] [MAC] 2A
- Daten部Unterteilung:明文Daten
0x01被加密为更长Bytes。 - MAC:用于验证Datenvollständig性(如AES-128Berechnung)。
关键对比表
| Typ der Nachricht | 控制Feld | DatenLänge | TPCI | 典型Szene |
|---|---|---|---|---|
| 标准帧 | 0xBC | ≤15Bytes | 0x00 | Schalter!控制、百Unterteilung比调节 |
| 扩展帧 | 0xBF | ≤255Bytes | 0x00 | 长Text、复杂配置 |
| ACKBestätigen | 0xB0 | 无 | – | Empfang成功Antwort |
| NACK拒绝 | 0xB1 | 无 | – | Empfang失败Antwort |
| 读Bitte | 0xBC | 1Bytes | 0x40 | 主动BitteDer SensorDaten |
| 写Antwort | 0xBC | 可变 | 0x80 | AusrüstungStatus更新Bestätigen |
| Rundfunk帧 | 0xBC | 可变 | 0x00 | Das System级指令(如复位) |
Aufmerksamkeit
- TPCI与APCI:
- TPCI(传输控制)标记Typ der Nachricht(读、写、Antwort)。
- APCI(应用控制)定义具体Operationen(如DPTTypus)。
- Adresse过滤:Ausrüstung仅处理目标Adresse匹配的Meldung(物理Adresse或订阅的组Adresse)。
- Prüfungen und:始终为前面所有Bytes的Unterschiedlich oder(XOR)值。
希望这些Beispiel能帮助你理解KNX不同Typ der Nachricht的写法!实际开发中建议结合官方VereinbarungDokumentation和ETSWerkzeuge验证。
以下Beispiel说明:
Beispiel1:Schalter!控制(标准帧)
Szene:物理Adresse 1.1.10 Die Ausrüstung向组Adresse 1/2/3 Senden Sie开灯指令。
Meldung:
BC 11 0A E1 03 01 01 80
- 控制Feld
0xBC:标准帧,正常优先级。 - 源Adresse
0x110A:Geräte Adresse1.1.10。 - 目标Adresse
0xE103:组Adresse1/2/3(E1表示组AdresseTypus)。 - DatenLänge
0x01:1Anzahl der Bytes据。 - Daten
0x01:Schalter!Status(0x01=开,0x00=关)。 - Prüfungen und
0x80:BC XOR 11 XOR 0A XOR E1 XOR 03 XOR 01 XOR 01 = 80。
Beispiel2:Temperatur-SensorDaten(扩展帧)
Szene:Der Sensor 2.3.5 上报Temperatur 22.5°C zu组Adresse 2/5/1。
Meldung:
BF 23 05 E2 51 02 06 00 5C
- 控制Feld
0xBF:扩展帧,低优先级。 - 源Adresse
0x2305:Geräte Adresse2.3.5。 - 目标Adresse
0xE251:组Adresse2/5/1。 - DatenLänge
0x02:2Anzahl der Bytes据。 - Daten
0x0600: - DPT 9.001(Temperatur),Codierung为
0x0600→22.5°C(浮点Das Format)。 - Prüfungen und
0x5C:Berechnung略。
Beispiel3:Szene控制(多Anzahl der Bytes据)
Szene:中控Ausrüstung 0.0.1 触发Szene 3(组Adresse 5/0/3)。
Meldung:
BC 00 01 E5 03 03 03 00 00 6F
- 控制Feld
0xBC:标准帧。 - 源Adresse
0x0001:中控Adresse0.0.1。 - 目标Adresse
0xE503:组Adresse5/0/3。 - DatenLänge
0x03:3Anzahl der Bytes据。 - Daten
0x030000:Szene编Nr.3,附加Parameter。 - Prüfungen und
0x6F:Berechnung略。
关键点
- AdresseCodierung:
- 物理Adresse:
区域(4bit).线(4bit).Ausrüstung(8bit)→ 2Bytes(如1.1.10→0x11 0x0A)。 - 组Adresse:
主组(5bit)/中间组(3bit)/子组(8bit)→ 2Bytes(如1/2/3→0xE1 0x03,高位1110表示组Adresse)。
- DatenCodierung:
- Schalter!:1Bytes(
0x00=关,0x01=开)。 - Temperatur:2Bytes浮点(如 DPT 9.001)。
- 百Unterteilung比:1Bytes(
0x00=0%,0xFF=100%)。
- Prüfungen und:对所有前面Bytes进行Unterschiedlich oder运算(如
BC XOR 11 XOR 0A XOR E1 XOR 03 XOR 01 XOR 01 = 80)。
实际应用建议
- 使用ETS(KNX工程Werkzeuge软件)配置Ausrüstung,无需手动组包。
- MeldungBeispiel主要用于理解底层Vereinbarung,Tests时可借助抓包Werkzeuge(如Wireshark + KNX插件)。
- 深入学习可参考KNX官方Dokumentation《KNX Standard》或书籍《KNX for IoT》。
Antwort veröffentlichen