DALI: Unterschied zwischen den Versionen
K (Links verbessert) |
K |
||
(10 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 2: | Zeile 2: | ||
Zum Dimmen von EVGs gibt es als Alternative noch den 1-10V-Standard (=Analoge Steuerspannung) und die einfacher als DALI aufgebaute DSI-Schnittstelle (Digital Serial Interface). DALI hat den Vorteil, daß einzelne Leuchten oder Gruppen gezielt über den Bus angesteuert werden können und daß es ein 2-Wege-Bus ist bei dem Lampen so Fehlerzustände etc. zurückmelden können. | Zum Dimmen von EVGs gibt es als Alternative noch den 1-10V-Standard (=Analoge Steuerspannung) und die einfacher als DALI aufgebaute DSI-Schnittstelle (Digital Serial Interface). DALI hat den Vorteil, daß einzelne Leuchten oder Gruppen gezielt über den Bus angesteuert werden können und daß es ein 2-Wege-Bus ist bei dem Lampen so Fehlerzustände etc. zurückmelden können. | ||
+ | |||
+ | [[Bild:DALI_EVG.jpg|thumb|2 DALI EVGs]] | ||
=== Der Bus === | === Der Bus === | ||
* Ein Master (Ethersex) und bis zu 64 Lampen an einem Bus | * Ein Master (Ethersex) und bis zu 64 Lampen an einem Bus | ||
− | * | + | * 2 Drähte, keine komplexen Topologievorschriften, keine Terminierung |
* Lampen dürfen nur auf Anfrage des Master antworten | * Lampen dürfen nur auf Anfrage des Master antworten | ||
* Master ist für Stromversorgung des Bus zuständig | * Master ist für Stromversorgung des Bus zuständig | ||
* Bus ist '''Basisisoliert''', aber keine Schutzkleinspannung -> eigentlich sollte noch ne galvanische Trennung in den Master | * Bus ist '''Basisisoliert''', aber keine Schutzkleinspannung -> eigentlich sollte noch ne galvanische Trennung in den Master | ||
* 1200 Baud, Manchester-Encoding | * 1200 Baud, Manchester-Encoding | ||
− | * 22,5V bis 9,5V | + | * 22,5V bis 9,5V (16V nominell) sind high |
− | * 6,5V bis -6,5V | + | * 6,5V bis -6,5V (0V nominell) sind low |
* Bus wird von Master normal auf High gehalten | * Bus wird von Master normal auf High gehalten | ||
* wollen die Slaves ein Low-Wert übertragen, schliessen sie den Bus kurz | * wollen die Slaves ein Low-Wert übertragen, schliessen sie den Bus kurz | ||
Zeile 17: | Zeile 19: | ||
=== Schaltung === | === Schaltung === | ||
− | + | ==== Senden ==== | |
+ | [[Bild:DALI-send.png|unisolierte Sende-Stage]] | ||
+ | |||
+ | * Es wird der Einfachheit halber 12V verwendet. Wenn man den Verlust durch den Transistor abzieht, kommt man schon sehr nahe an die für den Master minimal erlaubten 11,5V. Da der Slave aber ab 9,5V high erkennen muß, geht das noch wenn die Verkabelung nicht allzu wild ist. | ||
+ | * Es fehlt jegliche extra Isolierung. Bei einer Störung im EVG oder Kabelriss bei gemeinsamer Verlegung liegt die Schaltung also auf Netzspannung. | ||
+ | * Der Q2 verbrennt im Fehlerfalle dauerhaft 3W und sollte das abkönnen. Der nächst-passende in meinem Vorrat war der BD679 - der ist sicher etwas überdimensioniert, da tut es auch ein kleinerer (aber eben keiner in SOT23 wie die BC817er) | ||
+ | * Der C10 ist für die EMV damit die Flanken nicht so steil werden | ||
+ | * Die D4 zum Schutz gegen Überschwinger etc. | ||
+ | * Q2 steuert den Strom über den Bus, normal auf High | ||
+ | * Wenn Q1 durchschaltet, wird der Strom in den Bus abgeschnürt (High am Controllerpin zieht also den Bus auf Low) | ||
+ | * Wenn über R14 und R15 ca. 220mA fließen, ist die Basis-Emitter-Spannung von Q3 hoch genug daß dieser durchschaltet und die Basis von Q2 abschnürt. Dadurch wird der Strom über den Bus begrenzt. | ||
+ | |||
+ | ==== Empfangen ==== | ||
+ | [[Bild:DALI-receive.png|unisolierte Empfangs-Stage]] | ||
+ | * Es fehlt jegliche extra Isolierung. Bei einer Störung im EVG oder Kabelriss bei gemeinsamer Verlegung liegt die Schaltung also auf Netzspannung. | ||
+ | * Über den Spannungsteiler R16 und R17 werden 8,8V eingestellt | ||
+ | * Ist die Spannung höher, legt der Pullup R13 den Ausgang des LM393-Komparators auf High | ||
+ | * Ist die Spannung niedriger, zieht der Komparator den Ausgang auf Low | ||
+ | * Der LM393 ist recht unempfindlich gegen Spannungen höher Vcc etc. | ||
+ | * Nur sollten die 12V einigermaßen stabil sein. Wenn man eine ungeregelte Versorgung nimmt, muß man sich statt dem Spannungsteiler was anderes ausdenken (z.B. Z-Diode oder ein TL431). | ||
=== ECMD-Befehle === | === ECMD-Befehle === | ||
− | + | ==== Beschreibung ==== | |
+ | {| border=1 cellspacing=0 padding=4 class=wikitable | ||
+ | ! width="25%" | Kommando | ||
+ | ! Funktion | ||
+ | |- | ||
+ | |dali raw ''Byte1'' ''Byte2''|| Sendet ein Frame mit 2 Bytes (in Hex). Wenn man weiß was man tut... | ||
+ | |- | ||
+ | |- | ||
+ | |dali dim ''Target'' ''Level''|| Das angegebene Ziel wird auf ein Dimm-Level (0-254) gestellt, 0 ist aus, 254 voll an. | ||
+ | |- | ||
+ | |- | ||
+ | |dali cmd ''Target'' ''Command'' ''[!]'' ''[?]''|| Sendet einen Befehl an ein Ziel, Befehlscodes in Dezimal, Liste siehe NXP Appnote oder Standard. Ein ''!'' am Ende wiederholt den Befehl automatisch (bei manchen Befehlen notwendig). Ein ''?'' am Ende bedeutet, dass auf eine Antwort vom Ziel gewartet wird. Diese wird dezimal ausgegeben. Nur bei manchen Befehlen sendet das Ziel eine Antwort. | ||
+ | |- | ||
+ | |- | ||
+ | |dali scmd ''Command'' ''Data'' ''[!]'' ''[?]''|| Sendet einen Spezialbefehl an alle, Befehlscodes in Dezimal (256-287), Liste siehe NXP Appnote oder Standard. Ein ''!'' am Ende wiederholt den Befehl automatisch (bei manchen Befehlen notwendig). Ein ''?'' am Ende bedeutet, dass auf eine Antwort vom Ziel gewartet wird. Diese wird dezimal ausgegeben. Nur bei manchen Befehlen sendet das Ziel eine Antwort. | ||
+ | |} | ||
+ | |||
+ | Werte für den ''Target''-Parameter: | ||
+ | {| border=1 cellspacing=0 padding=4 class=wikitable | ||
+ | ! Targetcode | ||
+ | ! Bedeutung | ||
+ | |- | ||
+ | |all || Alle / Broadcast | ||
+ | |- | ||
+ | |- | ||
+ | |s''nn''|| Kurzadresse (short address) 0 bis 63 (dezimal) | ||
+ | |- | ||
+ | |- | ||
+ | |g''nn''|| Gruppe 0 bis 16 (dezimal) | ||
+ | |} | ||
+ | ==== Beispiele ==== | ||
+ | |||
+ | {| border=1 cellspacing=0 padding=4 class=wikitable | ||
+ | ! width="25%" |Beispiel | ||
+ | ! width="75%" |ECMD | ||
+ | |- | ||
+ | |Alle Lampen voll an || <code>dali dim all 254</code> | ||
+ | |- | ||
+ | |- | ||
+ | |Lampe 12 aus || <code>dali dim s12 0</code> | ||
+ | |- | ||
+ | |- | ||
+ | |Lampen in Gruppe 3 auf 50% || <code>dali dim g3 127</code> | ||
+ | |- | ||
+ | |- | ||
+ | |Alle Lampen in Zukunft innerhalb von ca. 5,6 Sekunden auf- und abdimmen (t=1/2*SQRT(2^x), x=1-15)|| <code>dali scmd 257 7 | ||
+ | dali cmd all 46 !</code> | ||
+ | |- | ||
+ | |- | ||
+ | |Das aktuelle Dimm-Niveau von Lampe 4 abfragen || <code>dali cmd s4 160 ?</code> Antwort: <code>180</code> | ||
+ | |- | ||
+ | |- | ||
+ | |Ist eine Lampe an Adresse 8? || <code>dali cmd s8 145 ?</code> Antwort: <code>255</code> (bedeutet Ja) | ||
+ | |- | ||
+ | |- | ||
+ | |Störung an Lampe 8? || <code>dali cmd s8 146 ?</code> Antwort: <code>READ TIMEOUT</code> (Keine Antwort, bedeutet Nein) | ||
+ | |- | ||
+ | |- | ||
+ | |Der einzigen angeschlossenen Lampe Adresse 3 zuordnen || <code>dali scmd 257 3 | ||
+ | dali cmd all 128 !</code> | ||
+ | |} | ||
=== Externe Quellen === | === Externe Quellen === | ||
Zeile 30: | Zeile 111: | ||
Wenn man Glück hat, findet man bei Google auch den eigentlich kostenpflichtigen IEC 60929. Da ist es nochmal besser drin erklärt... | Wenn man Glück hat, findet man bei Google auch den eigentlich kostenpflichtigen IEC 60929. Da ist es nochmal besser drin erklärt... | ||
+ | |||
+ | === Sourcecode === | ||
+ | Der Code ist im normalen Ethersex-Git unter [http://github.com/ethersex/ethersex/tree/master/protocols/dali protocols/dali/] zu finden. |
Aktuelle Version vom 15. August 2011, 01:00 Uhr
DALI steht für Digital Addressable Lighting Interface und ist ein Bussystem, mit dem vor allem Elektronische Vorschaltgeräte für Leuchtstoffröhren (EVGs) gesteuert, gedimmt und überwacht werden.
Zum Dimmen von EVGs gibt es als Alternative noch den 1-10V-Standard (=Analoge Steuerspannung) und die einfacher als DALI aufgebaute DSI-Schnittstelle (Digital Serial Interface). DALI hat den Vorteil, daß einzelne Leuchten oder Gruppen gezielt über den Bus angesteuert werden können und daß es ein 2-Wege-Bus ist bei dem Lampen so Fehlerzustände etc. zurückmelden können.
Inhaltsverzeichnis
Der Bus
- Ein Master (Ethersex) und bis zu 64 Lampen an einem Bus
- 2 Drähte, keine komplexen Topologievorschriften, keine Terminierung
- Lampen dürfen nur auf Anfrage des Master antworten
- Master ist für Stromversorgung des Bus zuständig
- Bus ist Basisisoliert, aber keine Schutzkleinspannung -> eigentlich sollte noch ne galvanische Trennung in den Master
- 1200 Baud, Manchester-Encoding
- 22,5V bis 9,5V (16V nominell) sind high
- 6,5V bis -6,5V (0V nominell) sind low
- Bus wird von Master normal auf High gehalten
- wollen die Slaves ein Low-Wert übertragen, schliessen sie den Bus kurz
- der Master muß den Strom auf 250mA begrenzen
Schaltung
Senden
- Es wird der Einfachheit halber 12V verwendet. Wenn man den Verlust durch den Transistor abzieht, kommt man schon sehr nahe an die für den Master minimal erlaubten 11,5V. Da der Slave aber ab 9,5V high erkennen muß, geht das noch wenn die Verkabelung nicht allzu wild ist.
- Es fehlt jegliche extra Isolierung. Bei einer Störung im EVG oder Kabelriss bei gemeinsamer Verlegung liegt die Schaltung also auf Netzspannung.
- Der Q2 verbrennt im Fehlerfalle dauerhaft 3W und sollte das abkönnen. Der nächst-passende in meinem Vorrat war der BD679 - der ist sicher etwas überdimensioniert, da tut es auch ein kleinerer (aber eben keiner in SOT23 wie die BC817er)
- Der C10 ist für die EMV damit die Flanken nicht so steil werden
- Die D4 zum Schutz gegen Überschwinger etc.
- Q2 steuert den Strom über den Bus, normal auf High
- Wenn Q1 durchschaltet, wird der Strom in den Bus abgeschnürt (High am Controllerpin zieht also den Bus auf Low)
- Wenn über R14 und R15 ca. 220mA fließen, ist die Basis-Emitter-Spannung von Q3 hoch genug daß dieser durchschaltet und die Basis von Q2 abschnürt. Dadurch wird der Strom über den Bus begrenzt.
Empfangen
- Es fehlt jegliche extra Isolierung. Bei einer Störung im EVG oder Kabelriss bei gemeinsamer Verlegung liegt die Schaltung also auf Netzspannung.
- Über den Spannungsteiler R16 und R17 werden 8,8V eingestellt
- Ist die Spannung höher, legt der Pullup R13 den Ausgang des LM393-Komparators auf High
- Ist die Spannung niedriger, zieht der Komparator den Ausgang auf Low
- Der LM393 ist recht unempfindlich gegen Spannungen höher Vcc etc.
- Nur sollten die 12V einigermaßen stabil sein. Wenn man eine ungeregelte Versorgung nimmt, muß man sich statt dem Spannungsteiler was anderes ausdenken (z.B. Z-Diode oder ein TL431).
ECMD-Befehle
Beschreibung
Kommando | Funktion |
---|---|
dali raw Byte1 Byte2 | Sendet ein Frame mit 2 Bytes (in Hex). Wenn man weiß was man tut... |
dali dim Target Level | Das angegebene Ziel wird auf ein Dimm-Level (0-254) gestellt, 0 ist aus, 254 voll an. |
dali cmd Target Command [!] [?] | Sendet einen Befehl an ein Ziel, Befehlscodes in Dezimal, Liste siehe NXP Appnote oder Standard. Ein ! am Ende wiederholt den Befehl automatisch (bei manchen Befehlen notwendig). Ein ? am Ende bedeutet, dass auf eine Antwort vom Ziel gewartet wird. Diese wird dezimal ausgegeben. Nur bei manchen Befehlen sendet das Ziel eine Antwort. |
dali scmd Command Data [!] [?] | Sendet einen Spezialbefehl an alle, Befehlscodes in Dezimal (256-287), Liste siehe NXP Appnote oder Standard. Ein ! am Ende wiederholt den Befehl automatisch (bei manchen Befehlen notwendig). Ein ? am Ende bedeutet, dass auf eine Antwort vom Ziel gewartet wird. Diese wird dezimal ausgegeben. Nur bei manchen Befehlen sendet das Ziel eine Antwort. |
Werte für den Target-Parameter:
Targetcode | Bedeutung |
---|---|
all | Alle / Broadcast |
snn | Kurzadresse (short address) 0 bis 63 (dezimal) |
gnn | Gruppe 0 bis 16 (dezimal) |
Beispiele
Beispiel | ECMD |
---|---|
Alle Lampen voll an | dali dim all 254
|
Lampe 12 aus | dali dim s12 0
|
Lampen in Gruppe 3 auf 50% | dali dim g3 127
|
Alle Lampen in Zukunft innerhalb von ca. 5,6 Sekunden auf- und abdimmen (t=1/2*SQRT(2^x), x=1-15) | dali scmd 257 7
|
Das aktuelle Dimm-Niveau von Lampe 4 abfragen | dali cmd s4 160 ? Antwort: 180
|
Ist eine Lampe an Adresse 8? | dali cmd s8 145 ? Antwort: 255 (bedeutet Ja)
|
Störung an Lampe 8? | dali cmd s8 146 ? Antwort: READ TIMEOUT (Keine Antwort, bedeutet Nein)
|
Der einzigen angeschlossenen Lampe Adresse 3 zuordnen | dali scmd 257 3
|
Externe Quellen
- DALI bei Wikipedia
- Freescale DRM004 Application Note Hier ist die Schaltung zur Ansteuerung gut gezeigt und erklärt
- NXP AN10760 Hier ist die Datenübertragung und die Befehlsliste recht übersichtlich
- NEMA Standard 243 bei Archenergy
Wenn man Glück hat, findet man bei Google auch den eigentlich kostenpflichtigen IEC 60929. Da ist es nochmal besser drin erklärt...
Sourcecode
Der Code ist im normalen Ethersex-Git unter protocols/dali/ zu finden.