1. KNX-Protokoll - Schichten (OSI-Modell vereinfacht)
Das KNX-Protokoll basiert hauptsächlich auf einer vereinfachten Version desOSI-Modellsund ist in vier Schichten unterteilt:
| OSI-Schicht | KNX-Implementierung | Funktionsbeschreibung |
|---|---|---|
| Physische Schicht | TP (Twisted Pair), RF, IP | definiert das physische Medium (z. B. KNX TP1 - Bus, drahtlose RF, KNXnet / IP-Tunnel). |
| Die Datenlink-Schicht | KNX Data Link Layer | Verwalten Sie Bus-Arbitration, Konflikterkennung, Frame-Prüfungen (z. B. Prüfsumme). |
| Netzwerk Ebene | KNX Network Layer | Verarbeitung von Routing (Multicast / Broadcast), Adressfilterung (physische und Gruppenadressen). |
| Anwendungsschicht | KNX Application Layer | definiert die Datensemantik (z. B. DPT-Typen) und die Logik für die Interaktion zwischen Geräten (Lese / Schreiben / Antwort). |
2. Kommunikationsmodell
(1) Multicast (Gruppenkommunikation)
- ZweckDas Gerät sendet Daten an eine Gruppenadresse, die von allen Geräten empfangen und verarbeitet wird, die diese Gruppenadresse abonnieren.
- Merkmale: Effiziente One-to - Many-Kommunikation, geeignet für die Beleuchtungsteuerung, Szenenauslösung usw.
- Beispiel:
组地址 1/2/3Erhält den Befehl „Light on", und alle Lampen, die an diese Adresse gebunden sind, führen die Aktion aus.
(2)Punkt-zu - Punkt (Point-to - Point)
- ZweckGeräte kommunizieren direkt über eine physische Adresse (z. B. Konfiguration, Diagnose).
- MerkmaleDie physikalische Adresse des Ziels muss für die Initialisierung oder Wartung des Geräts eindeutig angegeben werden.
- Beispiel: Zentrale Steuerung
0.0.1zum Sensor.1.1.10Temperaturdaten angefordert.
3. Typ der Nachricht
KNX-Nachrichten werden inStandard-Frame (L_Data) 和 Erweiterter Frame (L_Data Extended):
| Typ | Steuerungsfeldwert | Datenlänge Beschränkung unterteilt | Anwendungsszenarien |
|---|---|---|---|
| Standard-Frame | 0xBC | ≤ 15 Byte | Regelmäßige Steuerung (Schalter, Prozentsatz) |
| Erweiterte Frame | 0xBF | ≤ 255 Byte | Big Data Übertragung (wie Protokoll, Konfiguration) |
4. Struktur der Adresse
(1) Physikalische Adresse (Individual Address)
- Format:
区域(4bit).线(4bit).设备(8bit)2 Bytes. - Beispiel:
1.2.3→0x12 0x03(binär0001 0010 0000 0011). - Zweck: Identifiziert das Gerät eindeutig für die Peer-to - Peer-Kommunikation oder die Konfiguration des Geräts.
(2) Gruppenadresse
- Format:
主组(5bit)/中间组(3bit)/子组(8bit)或主组(5bit)/子组(11bit)2 Bytes. - Beispiel:
3/2/1→0xE3 0x21(Binärsystem1110 0011 0010 0001(Binär5/2047→0xA5 0xFF(Binärsystem1010 0101 1111 1111)- NutzungLogische Gruppierung, Geräte Abonnements-Gruppen - Adresse realisieren die One-to - Many-Kommunikation.
5. Datendarstellung (APDU)
(1) DPT (Data Point Type)
KNX definiert die Datensemantik durch denDPT-Standard, im Format主类型.子类型(z. B.DPT 1.001Schalter für Boolean):
| DPT Beispiel | Datenlänge | Beschreibung |
|---|---|---|
| DPT 1.001 | 1 bit | Booleaner Wert (0= Off,1= Öffnen). |
| DPT 5.001 | 1 Byte | Prozentsatz (0x00= 0%,0xFF= 100%). |
| DPT 9.001 | 2 Byte | Temperatur (Fließkomma, z. B.0x0C00= 24 ° C). |
| DPT 16.001 | 14 - Byte | Zeichenkette (ASCII-codiert, z. B."KNX")。 |
(2)APDU Struktur
- TPCI (Transport Control): 1 Byte, markiert den Nachrichtstyp (z. B. Datenanfrage, Bestätigung).
- APCI (Application Control): 1 Byte, um den Operationstyp (Lesen, Schreiben, Antwort) zu definieren.
- Data Load: Die tatsächlichen Daten basieren auf DPT-Codierung.
Beispiel:
- Schalter Schreibbefehl:
TPCI=0x00(写),APCI=0x80(DPT 1.001), Daten =0x01(开)。 - Temperaturlesesanfrage:
TPCI=0x40(读),APCI=0x00(无数据)。
6. Kommunikationsdienst
(1) Polling
- Das Master-Gerät fordert aktiv Daten von einem Slave-Gerät an (z. B. den Sensorstatus).
- Nachricht Beispiel:
控制字段=0xBC,目标地址=传感器物理地址,APCI=读请求。
(2) Bestätigung
- Der Empfänger muss ein Bestätigungsframe (ACK) beantworten, um die Zuverlässigkeit zu gewährleisten.
- Beispiel: Rückgabe von
ACK报文(0xB0)。
(3) Wiederversuch-Mechanismus
- Wenn kein ACK erhalten wird, überträgt der Absender die Nachricht nach einer angegebenen Zeitüberschreitung (normalerweise bis zu drei Mal).
7. Sicherheitsmechanismen
- Herkömmlicher Modus: Keine Verschlüsselung, abhängig von der physischen Schicht Sicherheit (z. B. Buszugriffssteuerung).
- KNX Secure: Hinzufügen von Datenverschlüsselung (AES - 128) und Authentifizierung, um Manipulation und Abhören zu vermeiden.
- Beispiel für SicherheitsnachrichtenVerschlüsselungslast und MAC (Message Authentication Code) auf der Basis von Standard-Frame hinzufügen.
8. Taktische Testempfehlungen
- Package-Snap - Tool: Verwenden Sie Wireshark +KNX-Plug - inum den Busverkehr zu analysieren und bestimmte Gruppenadressen zu filtern.
- Fehlersuche:
- Checksumme-Fehler: Prüft das Ergebnis der Ausnahme-OR der Nachricht.
- Adresskonflikte: Sicherstellen, dass physische und Gruppenadressen einzigartig sind.
- ETS-KonfigurationBindet DPT-Typen im ETS-Projekt, um Datenanalysefehler zu vermeiden.
Im KNX-Protokoll wird die Nachricht überwiegend überSteuerungsfeld和TPCI (Transport Control Information)unterschieden, wobei verschiedene Nachrichtentypen für verschiedene Szenarien geeignet sind (z. B. Steuerungsanweisungen, Datenanfragen, Antworten usw.). Im Folgenden finden Sie eine detaillierte Beschreibung und ein Beispiel für gängige KNX-Nachrichtentypen:
1. Standard-Frame (L _ Data Standard)
- Steuerungsfeld:
0xBC - Datenlänge: ≤ 15 Byte
- Anwendbares Szenario: Regelmäßige Steuerungsanweisungen (Schalter, Prozentsatz, Zustandlese, etc.).
Beispiel: Schaltersteuerung
BC 11 0A E1 03 01 01 80- Steuerungsfeld
0xBC: Standard-Frame, normale Priorität - Quelladresse
0x110A(1.1.10) - Zieladresse
0xE103(Gruppenadresse 1 / 2 / 3). - Daten
0x01: Schalter-Zustand (Ein). - Prüfsumme
0x80: Ergebnis der Exclusive OR-Berechnung.
2. Erweiterte Frames (L _ Data Extended)
- Steuerungsfeld:
0xBF - Datenlänge: ≤ 255 Byte
- Anwendbares Szenario: Übertragung großer Datenmengen (z. B. Zeichenketten, Logs, komplexe Konfigurationen).
Beispiel: Senden von Zeichenketteninformationen
BF 23 05 E2 51 0E 10 4B 4E 58 20 54 65 73 74 00 00 00 5C- Steuerungsfeld
0xBF: Erweiterte Frames, niedrige Priorität. - Quelladresse
0x2305(2.3.5). - Zieladresse
0xE251(Gruppenadresse 2 / 5 / 1). - Datenlänge
0x0E14 Bytes Daten. - Daten
0x10 4B 4E 58 20 54 65 73 74 00 00 00: - DPT 16.001 (Zeichenfolge) mit
"KNX Test"(ASCII-Codierung). - Prüfungen und
0x5C: Berechnung geringer.
3. Bestätigung des Frames (ACK / NACK)
- Steuerungsfeld:
0xB0(ACK) oder0xB1(NACK) - StrukturKeine Daten, nur Kontrollfelder und Prüfsumme.
- AnwendungsszenarienDer Empfänger bestätigt oder verweigert.
Beispiel: ACK bestätigt
B0 00 00 00 00 00 00 B0- Kontrollfeld
0xB0Bestätigung des Frame (ACK). - Prüfungen und
0xB0: Nur das eigene Exclusive-OR - Ergebnis ist0xB0。
Polling Request
- Steuerungsfeld:
0xBC(Standard-Frame) - TPCI:
0x40(Leseanfrage) - Anwendbares Szenario: Das Master-Gerät fordert aktiv Daten aus dem Slave-Gerät an.
Beispiel: Lesen von Temperatursensordaten
BC 00 01 12 34 01 40 00 2D- Quelladresse
0x0001(Zentralgerät 0.0.1). - Zieladresse
0x1234(physische Sensoradresse 1.2.52). - Datenlänge
0x01: 1 Bytes Daten. - TPCI + APCI
0x40: Leseanforderung (ohne Datenlast). - Prüfungen und
0x2D: Berechnung geringer.
5. Antwort (Response)
- TPCI:
0x80(Schreibantwort) oder0xC0(Leseantwort) - Szenario: Daten oder Status der Anforderung, die das Gerät antwortet.
Beispiel: Der Temperatursensor gibt Daten zurück
BC 12 34 00 01 02 06 00 5C- Quelladresse
0x1234(Sensoradresse 1.2.52). - Zieladresse
0x0001(Zentralgerät 0.0.1). - Datenlänge
0x02: 2 Byte Daten. - Daten
0x0600: Temperaturwerte (DPT 9,001, 24,0 ° C). - Prüfungen und
0x5C: Berechnung geringer.
6.Übertragung (Broadcast)
- Zieladresse:
0x0000(All-Null - Adresse) - Anwendbares SzenarioDas Gerät sendet globale Befehle an alle Knoten des Busses (z. B. Systemreset).
Beispiel: Globale Reset-Befehl
BC 00 01 00 00 01 FF 01- Quelladresse
0x0001(zentrales Gerät). - Zieladresse
0x0000: Broadcast-Adresse. - Daten
0xFFZurücksetzungsbefehl (Code).
7. Sicherheit (KNX Secure)
- Steuerungsfeld:
0xBC或0xBF(in Kombination mit Verschlüsselungs-Flags) - Struktur: Verschlüsselungslast und MAC (Message Authentication Code) auf Standard-Frame hinzufügen.
- Anwendbares SzenarioVerhinderung von Datenmanipulationen oder Abhören.
Beispiel (vereinfachte verschlüsselte Nachrichten)
BC 11 0A E1 03 10 01 80 [加密负载] [MAC] 2A- Datenteil: Klartext-Daten
0x01wird in längeren Byte verschlüsselt. - MAC: verwendet, um die Datenintegrität zu überprüfen (z. B. AES - 128 Berechnungen).
Schlüsselvergleichstabelle
| Nachrichtentyp | Kontrollfeld | Datenlänge | TPCI | Typisches Szenario |
|---|---|---|---|---|
| Standard-Frame | 0xBC | ≤ 15 Byte | 0x00 | Schaltersteuerung, Prozentsatz-Anpassung |
| Erweiterter Frame | 0xBF | ≤ 255 Byte | 0x00 | Lange Text, komplexe Konfiguration |
| ACK Bestätigung | 0xB0 | 无 | - | Erfolgreiche Antwort erhalten |
| NACK Ablehnung | 0xB1 | 无 | - | Erhalt fehlerhafter Antwort |
| Lesesanfrage | 0xBC | 1 Byte | 0x40 | Aktive Anforderung von Sensordaten |
| Schreibantwort | 0xBC | Variable | 0x80 | Gerätestatus-Aktualisierung Bestätigung |
| Send Frame | 0xBC | Variable | 0x00 | Anweisungen auf Systemebene (z.B. Reset) |
Hinweise
- TPCI versus APCI:
- TPCI (Transport Control) Kennzeichnung des Nachrichtstyps (Lesen, Schreiben, Antwort).
- APCI (Application Control) definiert spezifische Aktionen (z. B. DPT-Typen).
- Adressfilterung: Das Gerät verarbeitet nur Nachrichten, die mit der Zieladresse übereinstimmen (physische oder abonnierte Gruppenadresse).
- ChecksummeImmer ein XOR-Wert für alle vorhergehenden Bytes.
Ich hoffe, dass diese Beispiele Ihnen helfen, die verschiedenen Nachrichtentypen von KNX zu verstehen! In der praktischen Entwicklung wird empfohlen, die offizielle Protokolldokumentation und die Validierung von ETS-Tools zu kombinieren.
Die folgenden Beispiele zeigen:
Beispiel 1: Schaltersteuerung (Standard-Frame)
Szenario: Gerät für die physische Adresse1.1.10an die Gruppe1/2/3Senden Sie den Beleuchtungsanweis.
Nachricht:
BC 11 0A E1 03 01 01 80- Steuerungsfeld
0xBCStandard-Frame, normale Priorität. - Quelle
0x110A: Gerätenadresse1.1.10。 - Zieladresse
0xE103: Gruppenadresse1/2/3(E1gibt den Adresstyp der Gruppe an. - Datenlänge
0x011: 1 Bytes Daten. - Daten
0x01: Schaltzustand (0x01= Ein,0x00= geschlossen). - Prüfungen und
0x80:BC XOR 11 XOR 0A XOR E1 XOR 03 XOR 01 XOR 01 = 80。
Beispiel 2: Temperatursensordaten (erweiterter Rahmen)
Szenario: Sensor2.3.5Melde Temperatur22.5°Can Gruppenadresse2/5/1。
Nachricht:
BF 23 05 E2 51 02 06 00 5C- Steuerfeld
0xBF: Erweiterter Frame, niedrig Priorität. - Quelle-Adresse
0x2305: Gerätadresse2.3.5。 - Ziel-Adresse
0xE251: Gruppen-Adresse2/5/1。 - Datenlänge
0x02: 2 Byte Daten. - Daten
0x0600: - DPT 9.001 (Temperatur), kodiert als
0x0600→22.5°C(Floating Point-Format). - Prüfungen und
0x5C: Berechnung geringer.
Beispiel 3: Szenensteuerung (Multibyte-Daten)
Szenario: Zentrale Gerät0.0.1Trigger-Szenario3(Gruppenadresse)5/0/3)。
Meldung:
BC 00 01 E5 03 03 03 00 00 6F- Kontrollfeld
0xBC: Standard-Frame. - Quelladresse
0x0001: Zentrale Adresse0.0.1。 - Zieladresse
0xE503: Gruppenadresse5/0/3。 - Datenlänge
0x03: 3 Bytes Daten. - Daten
0x030000Szenario Nr. 3, zusätzliche Parameter. - Prüfungen und
0x6F: Berechnung.
Schlüsselpunkt
- Adresscode:
- physische Adresse:
区域(4bit).线(4bit).设备(8bit)→ 2 Byte (z. B.1.1.10→0x11 0x0A)。 - Adresse der Gruppe:
主组(5bit)/中间组(3bit)/子组(8bit)→ 2 Byte (z. B.1/2/3→0xE1 0x03, die höchste Zahl1110Angabe der Adresse).
- Daten kodieren:
- Schalter: 1 Schalter (
0x00= aus,0x01= ein). - Temperatur: 2 Byte Gleitkomma (z. B. DPT 9.001).
- Prozentsatz: 1 Byte (
0x00= 0%,0xFF= 100%).
- Prüfungen und: Exclusive OR für alle vorhergehenden Bytes (z. B.
BC XOR 11 XOR 0A XOR E1 XOR 03 XOR 01 XOR 01 = 80)
Praxisempfehlung
- Konfiguration des Geräts mit ETS (KNX Engineering Tools Software) ohne manuelles Paket.
- Nachrichtenbeispiele dienen hauptsächlich zum Verständnis der zugrunde liegenden Protokolle und können mit Package-Grab - Tools (wie Wireshark + KNX-Plugins) debuggt werden.
- Vertieftes Lernen findet man im offiziellen KNX-Dokument „KNX Standard" oder im Buch „KNX for IoT".
Antwort veröffentlichen