Zum Hauptinhalt springen

KNXnet/IP-Treiber

Überblick

KNXnet/IP — tunnelt den in der Gebäudeautomation (Beleuchtung / Verschattung / HLK) standardisierten KNX-Bus über IP. Native Neuimplementierung 2026-07 — die frühere Delegation an Apache PLC4j knxnet-ip wurde entfernt (Überführung P2, 2026-07). Verwendet wird nun die Eigenimplementierung in plantpulse-plc-protocol (KnxNetIpClient UDP 3671 tunneling + KnxGroupAddress + KnxDpt).

PunktWert
opc_typeKNXNET
Implementierungsklasseplantpulse.driver.protocol.knxnet.KNXnetDriver
BibliothekEigene native Implementierung (plantpulse-plc-protocol aus knx — UDP tunneling)
VererbungBaseProtocolDriver (nicht PLC4j)
getProtocol()"knxnet-ip" (alte PLC4X-Scheme-Notation beibehalten — Kompatibilität für Logs/Diagnose)
Standardport3671 (UDP)
Statusstabil (TUNNELING)
readOK (GroupValueRead)
writeOK (GroupValueWrite — DPT-Suffix erforderlich)
Sicherheitkeine (KNX Secure nicht unterstützt)
Nur TUNNELING — ROUTING nicht unterstützt

Der native Client unterstützt ausschließlich TUNNELING (Unicast). Multicast-ROUTING wird nicht unterstützt — bei Angabe von connection-type=routing erfolgt eine Warnmeldung im Log, anschließend wird mit Tunneling fortgefahren.


Klassenstruktur

BaseProtocolDriver
└── KNXnetDriver — connect() 에서 KnxNetIpClient(host, port) tunneling 세션 수립

Wire-Ablauf: CONNECT_REQUEST(0x0205) → RESPONSE(channelId) → TUNNELING_REQUEST(cEMI L_Data.req GroupValueRead) → ACK → vom Gateway gesendetes L_Data.ind GroupValueResponse (+ACK-Rückmeldung) → CONNECTIONSTATE-Heartbeat (30 s) → DISCONNECT. Bei einem Kommunikationsfehler während read wird der Socket invalidiert (connected=false), damit der Edge einen Neuaufbau der Verbindung auslöst.


OPC-Registrierungsoptionen

FeldBedeutungStandard
opc_agent_ipIP des KNX/IP-Gateways192.168.1.10
opc_agent_portUDP-Port3671 (in der Regel fest)
options.request-timeoutAntwort-Timeout (ms)2000 (identisch zum alten PLC4X-Standard)
options.connection-typenur tunneling unterstützttunneling

Tag-plc_address-Format (bestehender Vertrag bleibt erhalten)

<main>/<middle>/<sub>[:<DPT>] 예) 1/0/5:DPT_Switch / 3/2/0:9.001 / 1/2/10
<main>/<sub>[:<DPT>] 2-level (main 0-31 / sub 0-2047)

Als DPT-Suffix sind sowohl PLC4X-Namen (DPT_Switch / DPT_Scaling / DPT_Value_Temp / DPT_Value_Length …) als auch Zahlen (1.001 / 5.001 / 9.001 / 14.056 …) zulässig.

NotationBedeutung
1/0/5:DPT_Switch1-Bit boolean (DPT 1.001)
2/1/3:DPT_Scaling0..100 % (DPT 5.001)
3/2/0:DPT_Value_Temp2-Byte-Float (DPT 9.001)
3/2/0:9.001identisch (numerischer DPT)
1/2/10DPT weggelassen — längenbasierte Unsigned-(RAW-)Interpretation

Unterstützte Dekodierung: DPT1 bool / 5.001 %scale / 5.x u8 / 7.x u16 / 9.x 2-Byte-Float / 12·13.x u32 / 14.x float32 / 16.x string. Ohne DPT-Angabe erfolgt eine längenbasierte Unsigned-(RAW-)Interpretation — wenn exakte Werte benötigt werden, geben Sie den DPT gemäß ETS-Projekt explizit an.


Unterstützt / nicht unterstützt

  • read: GroupValueRead → GroupValueResponse — OK.
  • write: GroupValueWrite — OK. DPT-Suffix erforderlich — mit RAW ist keine Kodierung möglich; die Kodierung bestimmt der DPT (unabhängig von data_type).
  • ROUTING (Multicast, 224.0.23.12): nicht unterstützt (nur TUNNELING).
  • KNX Secure (IP / Data): nicht unterstützt.
  • Automatisches Mapping per Import eines ETS-Projekts (.knxproj): nicht unterstützt — Group Address direkt eingeben. (Die Optionen knxproj-file-path / knxproj-password / group-address-num-levels des alten Formulars werden in der nativen Implementierung ignoriert — entfernt.)
  • Direktanbindung an KNX TP/PL/RF: nicht unterstützt — setzt ein IP-Gateway voraus.

Hinweise

  • KNX Standard ISO/IEC 14543-3.
  • Code: plantpulse-edge-driver/src/plantpulse/driver/protocol/knxnet/KNXnetDriver.java + Paket knx in plantpulse-plc-protocol.
  • Betrieb: Beachten Sie die begrenzte Anzahl an Tunneling-Slots im Gateway (Gira / ABB / Siemens N146) — üblich sind 1 bis 5 gleichzeitige Verbindungen.