Re: FS20-Funksystem Protokoll Kategorie: Sonstige Hardware (von Hansi - 30.10.2004 11:00) | ||
Als Antwort auf FS20-Funksystem Protokoll von Thomas H. - 27.10.2004 21:47 | ||
| ||
Hallo tom, Dank Deiner Hilfe ( wichtig waren für mich noch die Befehle ) versteht meine C-Control II jetzt meine FS20-Steuerung. Mein jetziger Treiber wertet allerdings nur ein Befehlsbyte aus und mu? jetzt natürlich etwas optimiert werden. Jawohl, C-Control II goes FS20 ist keine Zukunftsmusik mehr ! Der nächste Schritt ist jetzt der Sender. Gru? Hansi > Habe mal von Conrad das FS20-Protokoll bekommen > Vielleicht hilft es weiter: > ------------------------------------------------------------------------------ > FS20-Funkschaltsystem > > 1. Protokoll > > 1.1. Datenrahmen: > Hauscode 16 bit > Adresse 8 bit > Befehl 8 bit (16bit, wenn im ersten Befehlsbyte das Erweiterungsbit gesetzt ist.) > Quersumme 8 bit > > Daten-Bit: > Senden Empfang > 0: 400µs High, 400µs Low 600-1000µs Periodendauer > 1: 600µs High, 600µs Low 1000-1450µs Periodendauer > > Synchronisation: > 0000000000001 (12* ??0??, 1* ??1??) > Jede ?bertragung zu Empfängern wird mit dieser Synchronisationssequenz eingeleitet. > > Parität: > Gerade > > EOT: > 0 > Damit das letzte Datenpaket richtig ausgewertet werden kann, mu? ein zusätzliches Daten-Bit > übertragen werden. Diese 0 selber kann allerdings nicht ausgewertet werden! > > 1.1.1. Hauscode: > 0-65535 > Hauscode1: 8bit (High-Byte) > Hauscode2: 8bit (Low-Byte) > > 1.1.2. Adresse: > High-Nibble (4bit): Adre?-Gruppe (Bank / Raum) > 15 = Master- / Funktionsgruppen-Bereich > 0-14 = Adre?raum für Einzeladressen > Low-Nibble (4bit): Unter-Adresse > 15 = alle der Adre?-Gruppe (lokal Master) > 0-14 = Einzel-Adresse / Adresse der Funktionsgruppe > > Das High-Nibble wählt die Adre?-Gruppe aus. Es stehen 15 Adre?-Gruppen zur Verfügung. > Die Adre?-Gruppe ??15?? wählt den Master- bzw. Funktionsgruppen-Adre?bereich aus. > Das Low-Nibble bestimmt innerhalb der gewählten Adre?-Gruppe die anzusprechende Unter-Adresse. > Zum Ausführen einer globalen Master-Funktion müssen High- und Low-Nibble der Adresse ??15?? sein! > > Reihenfolge der Eingabe und Speicherung von Hauscode und Adresse beim Setup von Sendern: > 1. HC1: [A1|A0|B1|B0|C1|C0|D1|D0] 2. HC2: [E1|E0|F1|F0|G1|G0|H1|H0] > 3. Adr: [I1|I0|J1|J0|K1|K0|L1|L0] > 1.1.3. Befehl: > Unteren 5 bit: > 000h aus > 101h an, 6,25% Einschalten auf Helligkeitsstufe 1 (min.) > 2 02h an, 12,5% > ... > 15 0fh an, 93,75% > 16 10h an, 100% Einschalten auf Helligkeitsstufe 16 (max.) > 1711h an, alter Wert Auf letztem Helligkeitswert einschalten > 1812h toggle Wechsel zwischen ??aus? und ??an, alter Wert?? > 1913h dim up Eine Helligkeitsstufe heller > 2014h dim down Eine Helligkeitsstufe dunkler > 2115h dim up and down ..., + bis max, kurz warten, - bis min, kurz warten, ? > 2216h timeset Timerprogrammierung (Start, Ende) > 2317h send status Nur bei bidirektionalen Komponenten! > 2418h aus, für Timerzeit > 2519h an, 100%, für Timerzeit > 261ah an, alter Wert, für Timerzeit > 271bh reset (auf Auslieferzustand) > 281ch frei > 291dh frei > 301eh frei > 311fh frei > Bit 5: Erweiterungsbit (0 = ohne, 1 = Erweiterungsbyte zwischen Befehl und Quersumme) > Bit 6: bidirektionaler Befehl (normal = 0) > Bit 7: Antwort eines Empfängers (normal = 0) > > Erweiterungsbyte bei gesetztem Erweiterungsbit: > Ist im ersten Befehlsbyte das Erweiterungsbit gesetzt, wird ein Erweiterungsbyte eingeschoben. > Für die Befehle 0 bis 18 und 24 bis 26 gilt folgende Codierung des Erweiterungsbytes: > Das Byte gibt die einmalige Zeitdauer für den Timer in Schritten von 0,25s an. > Bei Befehl 22 wird der Timer des Empfängers fest auf den übertragenen Timerwert gestellt. > Das Low-Nibble gibt den Zahlenwert an. Ist es Null (= 0), wird die Timerfunktion ignoriert und der > Verbraucher dauerhaft/sofort geschaltet. > Das High-Nibble dient als Multiplikator mit dem Faktor 2^x. Es sind nur Werte kleiner oder gleich > 12 sinnvoll. Grö?ere Werte werden auf 12 begrenzt! > Zeit = 2^(High-Nibble) * Low-Nibble * 0,25s > Die maximale Zeitdauer beträgt damit ca. 4,25Std, die minimale 0,25s, sofern dies jeweils von den > Empfängern bis zu den angegebenen Grenzen unterstützt wird. > > 1.1.4. Quersumme > 8bit-Summe aus 6, Hauscode, Adresse und Befehl (und Erweiterungsbyte) bilden > Werden Repeater verwendet, so treten auch um 1 oder 2 erhöhte Quersummen auf, die von den > Empfängern im Normalfall akzeptiert werden sollten. Wurde von einem Empfänger bis 1,6s vor einem > Repeater-Befehl ein normaler Befehl empfangen, so wird der Repeater-Befehl ignoriert. > > > 1.1.5. Komplette ?bertragung: > Synchr, HC1, Parity, HC2, Parity, Adresse, Parity, Befehl, Parity, Quersumme, Parity, EOT > 13 bit 8 bit 1 bit 8 bit 1 bit 8 bit 1 bit 8 bit 1 bit 8 bit 1 bit 1 bit > oder: > Synchr, HC1, Parity, HC2, Parity, Adr, Parity, Bef1, Parity, Bef2, Par, Quersumme, Par, EOT > 13 bit 8 bit 1 bit 8 bit 1 bit 8 bit 1 bit 8 bit 1 bit 8 bit 1 bit 8 bit 1 bit 1 bit > > ?bertragung beginnt mit MSB. > Die ?bertragung für ein komplettes Datenpaket mit 1 Befehl dauert 47,6ms bis 65,6ms. > > Wird an der Hand-FB eine Taste < 400ms gedrückt, so wird beim Loslassen folgendes gesendet: > DAT, 10msPAUSE, DAT, 10msPAUSE, DAT, 110msPAUSE > > Wird eine Taste an der Hand-FB länger als 400ms gedrückt, so wird alle 250ms folgendes gesendet: > DAT, 10msPAUSE, DAT > > > Im AUS-Zustand schaltet ein Dimmer bei EIN mit alter Helligkeit ein. > Im AUS-Zustand schaltet ein Dimmer bei DIMUP mit voller Helligkeit ein. > Im EIN-Zustand wird bei DIMUP eine Stufe aufgedimmt. > > Alle Befehle dürfen von Empfängern immer nur 1x ausgewertet werden. Gesendet wird der > Befehl 3x mit einer Pause von 10ms. Dim-Befehle werden nur 2x mit einer Pause von ca. 10ms > und 130ms gesendet. Nach einem erkannten Befehl ignorieren die Empfänger für 120ms weitere > Befehle. Befehle von Repeatern werden für 1,6s ignoriert. > ---------------------------------------------------------------- > Mit Gruss > tom h. > | ||
Antwort schreiben Antworten: |