moin zusammen.
habe ein Tridonic pca 2/18 tcd evg und möchte diesem eine Kurzadresse
vergeben. Benutze einen Atmel und schreibe das DALI Programm in c
selbst. Das senden, sowie empfangen funktioniert gut. Das evg hatte
bereits eine Kurzadresse gehabt (20), die habe ich gelöscht und möchte
nun eine neue Adresse vergeben. Das speichern des Wertes in das DTR
funktioniert und den Inhalt kann ich auch übnerprüfen, allerdings wenn
ich anschließend "store dtr as short address" benutze, will er die neue
Kurzadresse nicht übernehmen. Ich glaube, dass eventuell ein paar
befehle fehlen, oder das Timing nicht stimmt. Vielleicht weiß ja einer
von euch, wie man nur (erstmal) einem evg eine Kurzadresse vergibt..?!
mfg
Hallo,
es ist schon ein paar Jaare her, dass ich mich mit DALI beschäftigt
habe. Aber ich erinnere mich dunkel, dass es bei der Adressierung einen
Befehl gab, den man zweimal kurz hintereinander senden musste. Ich
denke, dass es dieser 'Schreib das Data Transfer Register in das Short
Address Register' ist, den du oben schon erwähnt hast.
CU,
Jochen
hi,
ich habe schon fast alles ausprobiert. auch Timing variiert, ich weiß
nicht was er von mir will... brauche einen ansatz oder beispiel von
jemanden der das schon mal selber gemacht hat und es funktioniert hat.
sitze hier schon 3 Tage bei und der hat immer noch nicht eine
kurzadresse...
oder will vielleicht mein evg nicht, ich weiß es nicht...
mfg
Hallo DimiFuerDali,
Respekt. 3 Tage rumprobieren. Da hast Du viel Gedult, ich hätte da eher
mal nachgefragt.
Hier die Lösung:
2 mal Kommando "RESET" senden
ca. 1s warten
"DATA TRANSFER REGISTER" mit Adresse xx füllen und senden
2 mal "STORE DTR AS SHORT ADDRESS" senden
Mit "QUERY MISSING SHORT ADDRESS" kannst Du prüfen, ob er die Adresse
genommen hat.
Wenn man die DALI Norm nicht hat, ist es zugegebenermaßen schwierig
rauszufinden wie man sowas macht.
Wenn Du nur ein Gerät hast, brauchst Du die Adresse sowieso nicht
setzen.
Einfach die Kommandos als BROADCAST senden.
Viel Erfolg!
avrGerd
Nur ergänzend: Die von Gerd M. beschriebende Methode wird in der Norm
(habe nur alten Stand hier) als "simplified addressing method"
bezeichnet und es soll dazu nur ein Endgerät am Bus hängen - ist ja
wahrscheinlich der Fall. Zwischen erstem und zweiten Senden von "store
DTR..." (CMD 128) mind. 10 ms warten.
moin zusammen!
danke für die antworten...
war 2 wochen im urlaub, bin nun aber wieder voll mutiviert
und versuche die methode von Gerd M. werde mich mit erfolg oder
misserfolg dieses problems bei euch melden.
danke erst mal...
mfg
moin,
was ich allerdings nicht verstehe:
wenn man vorher den wert im DTR abspeichert (DATA TRANSFER REGISTER mit
XX) und anschließend soll man ja (2 x STORE DTR AS SHORT ADDRESS)
übertragen...
und der Befehl sieht ja so aus: YAAA AAA1 1000 0000. muss etwa die
kurzadresse noch einmal ausgewählt werden? der Wert ist ja bereits im
DTR abgespeichert! was muss also anstelle YAAA AAA1 stehen?
könnt ihr dies nachvollziehen, was ich meine?
mfg
Keinesfalls mit Reset Routinen arbeiten! Wenn du mehr als ein Gerät am
Bus hast weinst du!
Die meisten vergessen, dass wenn sie eine Shortadresse ZB 2 vergeben
wollen auch 2 zum DALI ballast schicken!!
Voll arg falsch!!!
Siehe Shortadressen Format: 0AAAAAAS (AAAAAA = 0 - 63, S = 0/1)
Beispiel!
gewünschte Adresse: 2
Adr = 2;
Adr = Adr << 1;
Adr = Adr & 0b01111110;
Adr = Adr | 0b00000001;
Snd_Dal(0xA3,Adr,SP_COM); DELAY_ms(20) //DTR direkt mit
Adresse beschreiben
Snd_Dal(0,128,BR_ADR); //Inhalt DTR als Shortadresse
DELAY_ms(20) //
Snd_Dal(0,128,BR_ADR);
DELAY_ms(20)
Das geht aber nur über einen Broadcast Befehl!
Gutes Gelingen
Wenn dein ballst schon eine Shortadresse hat, kannst du es auch unter
der alten Adresse erreichen und die Adresse ändern.
ZB Alte Adresse: 20
Neue Adresse: 2
Adr = 2;
Adr = Adr << 1;
Adr = Adr & 0b01111110;
Adr = Adr | 0b00000001;
Snd_Dal(0xA3,Adr,SP_COM); //DTR direkt mit Adresse beschreiben (jetze
übernehmen alle DALI Teilnehmer den Wert in ihr DTR, ist aber kein
Problem)
Snd_Dal(20,128,SH_ADR); //Inhalt DTR als Shortadresse
DELAY_ms(20) //
Snd_Dal(20,128,SH_ADR);
DELAY_ms(20)
Jetzt hat es die Adresse 2 (vormals 20)
Ist es noch nie adressiert worden wird's hart.
Das geht dann nur über die 3 Byte ID oder mit nur einem Gerät am Bus und
der Broadcast Adresse.
Schöne Grüße
Hallo DimiFuerDali,
am Besten besorgst du dir eine Kopie des Dali-Standards, auch wenn sie
schwer zu lesen ist.
Zu deinem Problem:
"Store DTR as Short Address" ist ein Konfigurationskommando, und
Konfigurationskommandos müssen generell zwei Mal innerhalb von 100ms
empfangen werden, damit ein Ballast sie auch ausführt. Außerdem darf da
kein anderes Kommando dazwischenfunken.
Das steckt Absicht dahinter (Störsicherheit).
Moin,
Da die Adressierung, sowie Gruppenzuordnung funktioniert, habe ich eine
weitere Frage an euch! und zwar die Parametrierung der Gruppe.
Ich will z.B. drei Teilnehmer der Gruppe 1 zuweisen (das geht) und
anschließend die dimmgeschwindigleit der Gruppe ändern. Das problem ist,
dass die Teilnehmer unterschiedlich schnell dimmen und nicht synchron
sind. Synchron wird es erst, wenn ich zuerst die Teilnehmer Parametriere
(mit fad_time und fade_rate) und anschließend diese in die Gruppe
zuweise. Kann es denn sinn der sache sein?
mfg
Du kannst die Fade Rate und/oder Fade Time über Broadcast oder über
Gruppenadressierung einstellen.
Wenn ich mich recht entsinne, ist die Fade Rate 0 in diesem Fall
besonders.
Während alle anderen im Standard vorgegeben sind, ist die Fade Rate 0
herstellerspezifisch. Und (wenn ich mich wieder recht entsinne ...) ist
nach einem Dali-Reset Fade Rate 0 eingestellt.
Und außerdem:
Die Fade Rate /Fade Time - Parameter beziehen sich hauptsächlich auf das
Fadingbit im Status. Ein Gerät darf physisch (also mit dem Licht) laut
Standard länger brauchen, wenn es nicht so schnell folgen kann. Das
fällt aber eher bei den kurzen Fade Rates ins Gewicht.
Moin
die Fade Rate und Fade Time habe ich versucht über die Gruppenadresse zu
vergeben, allerdings dimmen die EVG's anschließend nicht synchron. Aber
wie gesagt es ist nicht so schlimm, muss halt die EVG's vorher
Parametrieren, bevor ich sie zu der Gruppe zuweise.
Ich habe aber noch einen andere Frage: Falls ich die Gruppenadresse des
Teilnehmers ändern will, muss ich seine vorherige Gruppenzugehörigkeit
löschen? Also REMOVE_FROM_GROUP...? oder überschreibt die neue Gruppe
Nr. die alte einfach?
mfg
Hi,
wenn Du die alte Gruppe nicht löscht und dann Dein EVG zu einer neuen
Gruppe hinzufügst, dann gehört es zu beiden Gruppen.
Also bei Bedarf vorher löschen mit REMOVE_FROM_GROUP.
Gruss,
avrGerd