Ganz klar: 9600 Baud …
Das wird zumindest der informierte KNX-Kenner sagen. Aber wie schnell ist das tatsächlich?
Nun. Dazu muss man ein wenig tiefer einsteigen…
Beim Auftreten eines Gruppen-Telegramms (z.B. eine Taste wird betätigt) sendet das KNX Gerät ein Telegramm auf den Bus. Dazu muss der Bus jedoch mindestens für eine bestimmte Zeit (t1) nicht belegt sein. Erst danach beginnt der Sendevorgang des eigentlichen Telegramms. Danach haben die empfangenden Geräte Zeit (t2) zur Überprüfung des korrekten Empfangs. Alle „angesprochenen“ Geräte (also die, die ein entsprechenden KO mit der betreffenden GA verknüpft haben) quittieren gleichzeitig den Empfang.
Das Telegramm wird mit 9600 Baud gesendet. Das heißt, 1 Bit belegt den Bus für 1/9600 s bzw. 104 µs. Oder anders ausgedrückt: Es werden 9600 Bit pro Sekunde übertragen.
Ein Zeichen besteht prinzipiell aus 8 Bit. Zusammen mit Prüfinformationen, wächst es jedoch auf 11 Bit an. Mit der notwendigen Pausenzeit von 2 Bit, summiert sich ein einziges Zeichen dann sogar auf 13 Bit auf.
13 Bit mit je 104µs ergeben dann 1,352ms.
Ein KNX Telegramm ist zwischen 8 (einfaches Ein/Aus-Telegramm) und 23 Zeichen (langes Text-Telegramm) lang. Manche Geräte beherrschen “Extended Frame” Teleramme. Diese können länger sein. Wir konzentrieren uns hier aber auf das, was jedes Gerät kann.
Die zuvor genannten Zeiten t1 und t2 sind 50 Bit und 13 Bit, bzw. 5,2ms und 1,352ms lang
Für ein kurzes Telegramm mit 8 Zeichen ergibt sich somit eine Zeit von 17,36ms und für ein langes Telegramm mit 23 Zeichen eine Zeit von 37,65ms.
Wenn es jetzt wie bei KONNEKTING zum Teil darum geht, über ein Gruppen-Telegramm “Daten” zu transportieren (je 14 Byte DPT-Rohdaten in einem solchen Telegramm), dann lässt sich ausrechnen, dass 14 Bytes Rohdaten etwa 37,65ms für die Übertragung benötigen.
Das sind dann, um es verständlicher auszudrücken, rund 372Bytes pro Sekunde.
Um das ganze aber mal praktisch zu beleuchten:
Mit Beta5 wollen wir wie anderweitig schon erwähnt, ein Firmware-Update der Geräte über den Bus ermöglichen. Nehmen wir mal einen mittelgroßen Beispielsketch. Dieser hat 50kByte, also 51.200 Bytes.
Unser “Programmierprotokoll” erlaubt den Transport von bis zu 11 Byte (Eigentlich 12, aber wir brauchen ein weiteres Byte für die Steuerung der Rohdaten) in einem Telegramm. Das Telegramm benötigt aber nach wie vor 37,65ms. Macht dann umgerechnet 292 Byte pro Sekunde.
Unser 50kB Beispiel-Sketch würde dann knapp 3min für die Übertragung benötigen. Das ist jetzt nicht rasend-schnell, aber zum gelegentlichen Firmware-Updaten doch angenehm zügig.
Warten wir mal ab wie das dann in der Praxis aussieht und wie die Meinungen der Nutzer dazu sind.
Stay tuned …
Sehr gute Darstellung!
Nur das mit der maximalen Länge von 23 Byte stimmt nicht. Extended Frames können viel länger sein. Durch das dann bessere Nutzlast/Overhead-Verhältnis ist z.B. ein Download mit der ETS5 in Geräte, die das unterstützen ca. 30% schneller.
Gruß, Klaus
> Nur das mit der maximalen Länge von 23 Byte stimmt nicht.
Doch, das stimmt. Ich habe nämlich von KNX Telegrammen, und nicht von “Extended Frame” KNX Telegrammen geschrieben. Aber um die Sache etwas klarer zu machen (dass es nämlich noch eine weitere Telegramm-Variante gibt), habe ich den Text entsprechend ergänzt. Danke für den Hinweis und die Klarstellung.
Hallo,
ich bin gerade dabei ein eigenes KNX Device zu bauen und dankbar, dass es dieses Projekt gibt. Danke dafür.
In diesem Beitrag wird erklärt, dass KNX mit 9600 Baud arbeitet. Das habe ich auch so verinnerlicht, allerdings musste ich bei meinen Versuchen feststellen, dass die von KONNEKTING gesendeten Daten nur 52us anstelle der notwendigen 104us lang sind. Eine Kontrolle des KnxTpUart Moduls hat sich das auch bestätigt. Die serielle Schnittstelle wird mit 19200 Baud initialisiert. Das passt doch nicht zusammen?!?
Die gesendeten Pakete werden auch nicht über den KNX Bus Monitor angezeigt – ich denke sie werden nicht verstanden.
Für Hilfe wäre ich hier sehr dankbar.
VG
Helmut
Hallo Helmut,
Die 19200 Baud die du auf Arduino Seite hast sind korrekt. Der KNX Transceiver Chip in der BCU kommuniziert zum Mikrocontroller mit 19200 Baud, zum Bus mit 9600 Baud.
Verwende am besten die Beispiel Sketches und kontrolliere mit dem “Gruppenmonitor” statt dem Busmonitor.
Gruß
Alex
P.S. am besten Support bekommst du bei uns im Konnekting Board auf knx-user-forum.de