freebus-rf routing, Funktionsweise und Konfiguration.

Das interface hat die Funktion eines router, daher wird auch diese Bezeichnung im folgenden Text verwendet.

Im folgenden Text verwende ich diese Abkürzungen:

TP  twisted pair, der drahtgebundene freebus
RF  radio frequency, also Funk
FB  klar, freebus
PA  physikalische adresse
GA  Gruppenadresse
DA  domain Adresse
SN  Seriennummer

domain Adresse und Seriennummer, was ist das?

Ein KNX-RF Telegramm enthält ein paar Daten mehr als ein Telegramm auf dem Drahtbus.
Die Seriennummer bzw. domain Adresse gehört dazu. Ein Telegramm enthält jeweils eins von beiden, Seriennummer oder domain Adresse. Welches von beiden verwendet wird, wird durch die Konfiguration des Busteilnehmers festgelegt. Beide sind 6 Byte lang, und sie liegen an der selben Stelle im Telegramm. Um welche von beiden es sich handelt, geht aus bit 0 des NPCI hervor.

Eine Seriennummer ist eine eindeutige Kennung des EIB Geräts, die schon bei der Herstellung festgelegt wird. Theoretisch soll es weltweit keine 2 Geräte geben, die dieselbe Seriennummer haben. Das haben die Hersteller untereinander irgendwie sichergestellt.
Seriennummern sind vor allem für Geräte nützlich, die nicht konfiguriert werden können. Das sind z.B. Geräte, die nur senden können, also z.B. Sensoren. Weil sie nur senden und nicht empfangen können, kann man sie auch nicht konfigurieren, d.h. man kann weder ihre PA setzen, noch kann man bestimmen, an welche GA sie ein Telegramm senden sollen, wenn z.B. ein Taster betätigt wird. Wenn man sich also 2 Tastsensoren gleichen Typs vom selben Hersteller kauft, muss man davon ausgehen, dass sie dieselbe PA haben, und auch bei Betätigung des selben Eingangs beide denselben Befehl an dieselbe GA senden. In der Praxis will man aber meistens verschiedene Aktoren bedienen.
Dazu nimmt man die SN zu Hilfe. Die Konfiguration erfolgt jetzt nicht durch programmieren des Sensors selbst, sondern sie erfolgt im router. Hier muss es eine Übersetzungstabelle dieser Art geben:

SN original GA übersetzte GA
12 34 56 78 9a bc 0/8/15 1/2/3
0/9/16 1/2/4
34 56 78 9a bc de 0/8/15 2/3/4
0/9/16 2/3/5

das handling einer solchen Tabelle ist noch nicht implementiert!

Eine domain Adresse ist eine Kennung, die identisch ist für alle Geräte, die miteinander kommunizieren sollen. Sie dient dazu, sich gegenüber evtl. in der Nachbarschaft befindlicher KNX-RF Installationen abzugrenzen. Telegramme werden nur dann angenommen, wenn die DA vom empfangenen Telegramm mit der eigenen DA übereinstimmt. DAs machen nur Sinn bei Geräten, die senden und enpfangen können. Solche Geräte kann man genauso wie die Geräte am Drahtbus konfigurieren, d.h. PA und GAs sind frei wählbar. Eine Übersetzungstabelle im router braucht man hier nicht. Die DA dient lediglich dazu, solche Telegramme auszusortieren, die evtl. aus der Nachbarschaft kommen.

Routing im freebus-rf router

Telegramme werden unter bestimmten Bedingungen von TP nach RF "geroutet":
  • alle Broadcast Telegramme
  • Multicast (an Gruppenadressen gerichtet) wenn die GA in der Adresstabelle steht.
    Sie braucht keinem Objekt (im router) zugeordnet sein.
  • Direkt adressierte (Zieladresse ist eine PA), wenn das high byte der PA zu einer
    im EEPROM abgelegten Maske passt.
Umgekehrt werden Telegramme von RF nach TP geroutet, wenn:
  • die DA des RF Teilnehmers mit der DA des routers übereinstimmt.
  • oder der RF Teilnehmer eine Seriennummer sendet.
    (Die Unterscheidung DA / SN erfolgt durch NPCI bit0.)

Eine Selektion mittels SN ist noch nicht implementiert.

Selbstverständlich werden die Telegramme im router entsprechend umgebaut. RF hat z.B. einen Datenblock (Block1) mit SN bzw DA, welcher zuerst gesendet wird, erst danach kommen (Block2) die Daten, sie sind fast so wie bei TP. Fast. Daher wird umgebaut.

Da es bei RF kein ACK gibt, werden die GroupValue-write Telegramme vom Sender 2x wiederholt. Der Empfänger merkt sich die PA des Absenders und die zugehörige LFN (linklayer frame number) für einige Sekunden, und verwirft Telegramme mit derselben PA / LFN Kombination, die kurzzeitig nacheinander empfangen werden. LFN ist ein spezielles Merkmal des RF Protokolls, enthalten in NPCI bits 3..1 .

Andere Telegramme als GroupValue-write erwarten in der Regel eine Antwort. Daher merkt der Sender an der ausbleibenden Antwort dass etwas nicht stimmt. Eine Telegrammwiederholung auf der Sendeseite würde evtl. mit der Antwort kollidieren.
Daher werden nur GroupValue-write Telegramme wiederholt gesendet.

Konfiguration der Applikation

Nachdem die PA des RF-Geräts gesetzt wurde, und diese mit der PA Maske des routers zusammenpasst, müssten die RF Geräte genauso wie die TP Geräte mit ETS programmierbar sein. Freebus-Applikationen können mit kleinen Anpassungen nach RF übernommen werden.

Speicherbelegung EEPROM

Der "NodeParam" Bereich wurde für RF um 16 + 2 byte aufgebohrt.
(Wenn man diese Adressen über die eibd Kommandos mread/mwrite anspricht, bitte 0x0100 draufaddieren!)

0x0000-0x00ff alter NodeParam Bereich
0x0100 RSSI (Received Signal Strength Indication)
0x0108 forward PA. Messages with physical dest address are forwarded if upper byte of
dest address matches. Only the bits that are 1 in the MASK must match (see below).
0x0109 MASK for the forward PA
0x010a-0x010f serial number / domain address (6 byte)
0x0110-0x0111 Abgleichwert für den Oszillator des RFM22

Programmieren der domain Adresse

Da Funk ein offenes Medium ist, muss man sich gegen evtl vorhandene KNX-RF Systeme in der Nachbarschaft abgrenzen. Dies geschieht mit einer "domain address" (DA). Sie kann individuell festgelegt werden. Empfangene RF Telegramme werden nur verarbeitet,
wenn die DA von Sender und Empfänger übereinstimmen.

Zuerst programmiert man die DA des routers über den Drahtbus, z.B. mit eibd und mwrite.

mwrite ip:rechnername 0.8.15 20a 66 71 65 65 62 75

hier wird "freebu" als ascii Zeichen in die DA des Geräts mit der PA 0.8.15 programmiert.

Die DA vom router wird automatisch in ein freebus-rf Gerät übernommen, wenn dessen PA programmiert wird. Dazu wird ganz normal der "prog" Taster gedrückt und per eibd

writeaddress ip:rechnername 15.8.0

bzw. mit ETS die PA programmiert.
Dieser Vorgang läuft ja schon über Funk ab, und die RF Telegramme des routers enthalten die DA, so dass diese in's RF Gerät übernommen werden kann. Write PA ist ausserdem ein broadcast telegramm, es wird also unbedingt vom router durchgereicht.

Fake: Damit PA read auch bei noch nicht gesetzter DA funktioniert, wird bei PA response die DA als SN gesendet (npci bit 0 = 0).
Dadurch reicht der router das Telegramm weiter in den Drahtbus, unabhängig von der DA.