Forum: Mikrocontroller und Digitale Elektronik Dali Kurzadresse vergeben


von DimiFuerDali (Gast)


Lesenswert?

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

von Jochen (Gast)


Lesenswert?

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

von DimiFuerDali (Gast)


Lesenswert?

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

von Gerd M. (avrgerd)


Lesenswert?

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

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

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.

von Hans (Gast)


Lesenswert?

DimiFuerDali:

Hast du das Problem gefixt?

von DimiFuerDali (Gast)


Lesenswert?

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

von DimiFuerDali (Gast)


Lesenswert?

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

von DimiFuerDali (Gast)


Angehängte Dateien:

Lesenswert?

hier der Code...
was ist daran falsch?

von Hans (Gast)


Lesenswert?

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

von DimiFuerDali (Gast)


Lesenswert?

Danke!
Nun geht es endlich!
Weiß nun wen ich nächstes mal anspreche...!

danke noch mals

mfg

von Hans (Gast)


Lesenswert?

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

von frame (Gast)


Lesenswert?

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).

von DimiFuerDali (Gast)


Lesenswert?

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

von frame (Gast)


Lesenswert?

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.

von DimiFuerDali (Gast)


Lesenswert?

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

von avrGerd (Gast)


Lesenswert?

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

von DimiFuerDali (Gast)


Lesenswert?

Moin,

Ok danke, dann werde ich das vorsehen und bevorich die neue Gruppe
vergebe, die zugehörigkeit zu der alten Gruppe löschen...

mfg

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.