# DALI THREAD - Von Anfänger zu Anfänger "WAGO" bezogen



## KingHelmer (25 November 2013)

Hallo liebe Forenmitglieder,

wenn man mit der Programmierung von DALI-Netzwerken zu tun hat, so findet man kaum bis wenige Informationen darüber, wie man es praktisch umsetzt.
Ich will mit diesem Thread jedem, der Probleme mit DALI hat, die Gelegenheit bieten im "Workaround" innerhalb dieses Threads eine Lösung für die Probleme zu finden.

Ich habe mir gedacht, dass ich ein paar meiner zufriedenstellenden Lösungen hier hineinstelle, um anderen das Leben zu erleichtern oder eben Hinweise auf die "Schlechtigkeit" der Lösung zu bekommen.

Die folgenden Lösungen und Beispiele basieren auf der DALI_02.lib der Firma WAGO. In meinem Fall kombiniert mit folgenden Controllern: 750-881, 750-841, 750-830.
Ich benutze den DALI Master 750-641. Bisher habe ich noch nicht auf den 753-647 gewechselt, da hier anscheinend NUR noch mit der Extra DALI-Software ein Netzwerk inbetrieb genommen werden kann.

So, nun fange ich mal langsam an. Da ich natürlich schreibfaul bin, vergesse ich viel absichtlich und schreibe auch nicht sofort an einem Tag in einem Post, daher bitte etwas Nachsicht. DANKE!



*Problem 1*:
Zunächst ein Wort zu dem *FbDALI_Master und FbDALI_Master_Adv Baustein.*

In den Anwendungshinweisen von WAGO stolpert man über diesen Baustein und ich fand ihn sehr "sexy", da ich hiermit unabhängig alle Befehle absenden kann, die ich brauche, ABER:
Vorsicht bei mehrfacher Instanzierung des Bausteins, denn dieser wird nicht mit dem FbDALI_Joblist verwaltet, sondern arbeitet unabhängig.

Das merkt man anfangs nicht besonders, gerade bei der Simulation ist alles normalschnell, auch die Zykluszeiten stimmen. Sobald aber eine reale DALI-Klemme damit "gefüttert" wird, hängt sich die Software komplett auf, je mehr Instanzen des FbDALI_Masters / FbDALI_Master_Adv, desto stärker.

*Erklärung: *
Der Masterbaustein umgeht die Joblist und sendet die Befehle direkt an die Klemme. 
Schafft man mehrere Instanzen, in meinem Fall waren es ganze 128 davon, dann kämpfen diese natürlich um Befehlsausführung. Das kann man im laufenden Betrieb auch ganz gut hören (klickklickklickklickklick).

*Abhilfe: *
Man sollte entweder die vorgefertigten Bausteine von WAGO verwenden (z.B. FbDALI_DimmDoubleButton) oder eben den Master so verwenden, dass nur über eine Instanz die Befehle abgearbeitet werden.
Ich habe mich in meinem Fall für die erste Option entschieden, denn diese Bausteine können mit entsprechender Logik vor den Inputs so ziemlich alle Befehle ausführen, die man sich wünscht.

*Fazit:*
Meine Lösung ist natürlich nicht die eleganteste, sehr wohl aber eine einfach zu verstehende Lösung, ich bin bisher zufrieden damit und auch in langzeittests lief alles reibungslos und vor allem SCHNELL (Bei DALI-manchmal problematisch).


*Problem 2:

*Meine nächste kleine Aufgabe war das *Dokumentieren der Szenenwerte.*
Nach meiner Erfahrung haben viele EVGs (auch von renomierten Herstellern) das Problem, früher zu "verecken" als gedacht/gehofft. Bei einem DALI-Netzwerk gibt es hier das Problem, dass man dann sofort das neue EVG programmieren muss.
Je nach Standort ist das natürlich schwierig, da ein Inder oder Taiwanese nicht unbedingt DALI kennen muss, geschwiege denn, das DALI-EVG konfigurieren können muss.

*Erklärung:*
Das Dokumentieren der Szenenwerte kann sich in so fern als schwierig gestalten, als dass es immer Menschen geben wird, die im Netzwerk manche Werte verändern.
Man kann diesem zuvorkommen, in dem man die möglichkeit der Szenenspeicherung so leicht wie möglich und Kundenfreundlich bedienbar macht.
Beispiel: Speichern einer Szene durch langen Tastendruck auf die entsprechende Szenentaste (dieses Beispiel ist meine Lösung).

*Abhilfe:*
Es gibt den netten Baustein *FbDALI_ConfigScene*, welcher dem Nutzer erlaubt, aktuelle Werte als Szene zu speichern.
Dem geübten Programmierer sollte es dann nicht schwer fallen, globale retain/persistent Variablen anzulegen, welche die gerade eben abgespeicherten Szenenwerte parallel in ein (in meinem Fall) 
zweidimensionales Array speichern.
Damit kann man dann natürlich anstellen, was man will. Mann kann zum beispiel in der Visu die Farbwerte in der Theorie auswerten und den Szenentaster entsprechend einfärben oder man kann die Daten eben in einer Datei abspeichern und zu Dokumentationszwecken nutzen.

*Fazit:*
Hat man alle Szenenwerte zu einem EVG und alle Gruppenzugehörigkeiten, sowie die EInstellungen sauber dokumentiert, kann man jederzeit manuell ein EVG so vorbereiten, dass es nur noch das defekte EVG 
ersetzen muss und ohne weitere Inbetriebnahme funktioniert. 


**** Weitere Posts / Erweiterungen /Ergänzungen folgen **** HINWEISE erwünscht, Beleidigungen aufgrund schlechter Lösungswege erwünscht **** 
Dies soll nicht zuletzt auch für mich selbst eine kleinen Erinnerungshilfe darstellen.


----------



## andi26 (20 Dezember 2013)

Hallo, 

ich habe eine Wago 750-849 die ich jetzt mit einer Dali klemme 753-647 erweitern wollte. 
Allerdings kann ich jetzt mit dem WAGO DALI Configurator nicht auf die klemme zugreifen, da kommt immer eine Fehlermeldung. 
und da ist mir noch aufgefallen das die Led G die, die spannung anzeigt immer leuchtet, auch wenn die DALI Bus spannung abgeklemmt ist.
Hat jemand eine idee an was das liegen kann?

Gruß
  Andi


----------



## Benjamin-K (21 Dezember 2013)

Moin,

wahrscheinlich hat dein 750-849 eine zu alte Firmware, frag doch mal beim Wago Support nach der aktuellen Version..

Viele Grüße


----------



## andi26 (23 Dezember 2013)

Hallo,

Danke für die schnelle Antwort, Ich hab vergessen zu erwähnen das ich schon die neuste Firmware aufgespielt hab.
Also daran sollte es nicht liegen, es ist auf jedenfall die 01.01.32 (05) drauf.

Gruß
  Andi


----------



## Benjamin-K (23 Dezember 2013)

Hi,
was hast du denn noch für Klemmen hinter deinem Controller ?

Gruß
Benny


----------



## andi26 (23 Dezember 2013)

Hi,

Also da ist 

750-849
750-459
750-402
753-620
753-647
750-653/003-000
753-646
11x 750-405
20x 750-513
750-600
und zwischen den 750-405 sind natürlich noch 7stück 750-609 einspeise klemmen.

sind schon ein paar klemmen, aber kann das einen einfluss darauf haben?

Gruß
Andi


----------



## Curby (30 Januar 2014)

- neues Thema -


----------



## Player-Ben (30 Mai 2016)

Hallo,
ich benötige in meiner Steuerung  den aktuellen Zustand von dem im DALI-Bus angeschlossenen EVGs. Also ob die Leuchten an oder aus sind.

Hierfür gibt es von der WAGO DALI LIB die Funktion EVG-Statusabfrage. Diese benötigt, aber immer eine positive Flanke am Eingang um die Werte zu aktualisieren. Aktuell generiere ich mir eine variable, welche in einem Zyklus auf True und im nächsten Zyklus auf False geschaltet wird.  Ich finde diese Lösung nicht ganz so elegant.

Gibt es noch eine andere Möglichkeit dieses zu machen oder hat wer eine andere Idee?


----------



## Curby (30 Mai 2016)

Player-Ben schrieb:


> Hallo,
> ich benötige in meiner Steuerung  den aktuellen Zustand von dem im DALI-Bus angeschlossenen EVGs. Also ob die Leuchten an oder aus sind.
> 
> Hierfür gibt es von der WAGO DALI LIB die Funktion EVG-Statusabfrage. Diese benötigt, aber immer eine positive Flanke am Eingang um die Werte zu aktualisieren. Aktuell generiere ich mir eine variable, welche in einem Zyklus auf True und im nächsten Zyklus auf False geschaltet wird.  Ich finde diese Lösung nicht ganz so elegant.
> ...



Nun, dazu muss man erstmal den Anwendunsgzweck kennen. Nach meinem Wissensstand ist das so, dass wenn du eine Lampe über einen Baustein ein/ausschaltest, wird diese Information im Master Baustein/Klemme gespeichert wird. Jeder andere Befehl als eine Synchronisation (welche immer einige Zeit in Ansrich nimmt) greift auf diese temporäre Information zu.

Was ich leider nicht sagen kann ist, ob man gezielt ein EVG abfragen kann, ob es an/aus ist. Bzgl. deinem toggeln: Frage die Lampen einfach immer dann ab, wenn es wirklich notwendig ist - oder wird der zustand ausserhalb der Wago verändert?


----------



## KingHelmer (30 Mai 2016)

Hi Ben,

ich nutze hierfür den Baustein FbDALI_StatusDimmValue.

Mit diesem Baustein wird zyklisch der Status einzelner Adressen abgefragt, heir der Text aus dem Anwendungshinweis der DALI_02.lib:


```
Funktionsbeschreibung: 

Wenn der Eingang „xEnable“ TRUE ist, erfolgt die Abfrage des Dimmwertes zyklisch. Die Zykluszeit wird über den Eingang 

„tCycleTime“vorgegeben. 

Die DALI- Geräte werden über die Kurzadresse„bShortAddress“ einzeln angesprochen. Eine Gruppenadressierung ist nicht möglich. 

Am Eingang „bModule_750_641“wird die DALI Masterklemme ausgewählt, mit der dieser Funktionsbaustein kommunizieren soll.  
Wenn der Ausgang „xReady“ FALSE ist, ist die Kommunikation mit dem EVG aktiv. 

Der Ausgang „bFeedback“ gibt einen Zahlencode mit der Antwort aus. Die Zahlencodes sind in Tabelle 6 im Anhang aufgelistet. 

Der aktuelle Dimmwert wird am Ausgang „bDimmValue“ angezeigt. Der Schaltstatus des adressierten EVGs wird am Ausgang „xStatus“

 angezeigt.
```

Hoffe das hilft.
Gruß, 
Florian


----------



## Curby (30 Mai 2016)

KingHelmer schrieb:


> Hi Ben,
> 
> ich nutze hierfür den Baustein FbDALI_StatusDimmValue.
> 
> ...



Ich kann mir aber vorstellen, dass das bei voll ausgelasteter Klemme zu timing Problemen führen kann oder? Also dass ab und an mal etwas verschluckt wird?


----------



## KingHelmer (30 Mai 2016)

Hi Curby,

Die Zykluszeiten sind hier mit mindestens 1 Sekunde einstellbar, also drunter geht nichts.
Also wird jede Sekunde einmal abgefragt.

Verschluckt wird nie etwas, habe hunderte Systeme am laufen, die diese Abfrage genau so benutzen.
Praktisch ist, dass so auch direkt der Dimmwert abgefragt werden kann.

Der Bus kann hier einiges verkraften, ich habe von diesen Bausteinen 16 Stück instanziert (Pro gruppe einen).

Bei WAGO läuft das ohnehin alles über den Joblist baustein, der die Commands verwaltet.

Würde man nun direkt über den DALI_MASTER ansteuern, dann kann es schonmal passieren, dass Commands verloren gehen.

Gruß, 
Flo


----------



## KingHelmer (30 Mai 2016)

Nehmen wir mal an, es gäbe diesen Baustein nicht.
Dann würde ich eine Statusabfrage über den DALI_MASTER machen, die aber einen eigenen, ereignisgesteuerten Task bekommt.

Diesen dann immer ansteuern, wenn der Status geändert wird.

Oder wahlweise zyklisch ansteuern mit großer Zykluszeit.


----------



## Blockmove (30 Mai 2016)

Curby schrieb:


> Ich kann mir aber vorstellen, dass das bei voll ausgelasteter Klemme zu timing Problemen führen kann oder? Also dass ab und an mal etwas verschluckt wird?



Ich hab hier ca. 30 Teilnehmer am Dalibus hängen und nutze auch den FbDALI_StatusDimmValue.
Bei den meisten Teilnehmern frage ich einfach zeitverzögert nach einer Aktion den Status ab. Die Zeitverzögerung ist etwas länger als die entsprechende zugehörige Fadetime.
Bei hoher Fadetime gibt es eben 2 Abfragen im zeitlichen Abstand.
Die zyklische Abfrage habe ich nicht aktiv. Dadurch wird es doch bei hoher Teilnehmerzahl träge.

Gruß
Dieter


----------



## Player-Ben (30 Mai 2016)

Curby schrieb:


> …oder wird der zustand ausserhalb der Wago verändert?...


Ja genau, zum Beispiel das Kontrolllicht vom Kontrolltaster vom Bad, ob es an ist oder nicht.


KingHelmer schrieb:


> ich nutze hierfür den Baustein FbDALI_StatusDimmValue.


Klasse, dann probiere ich das mal aus.


KingHelmer schrieb:


> …Bei WAGO läuft das ohnehin alles über den Joblist baustein, der die Commands verwaltet.


Bedeutet das, dass ein Kommando nicht verloren gehen kann, sondern dann einfach später kommt?


Blockmove schrieb:


> Bei den meisten Teilnehmern frage ich einfach zeitverzögert nach einer Aktion den Status ab. Die Zeitverzögerung ist etwas länger als die entsprechende zugehörige Fadetime.
> Bei hoher Fadetime gibt es eben 2 Abfragen im zeitlichen Abstand.


Das habe ich nicht so ganz verstanden. Bedeutet das wenn ein Taster gedrückt wird (Ereignis), dass du dann ein paar Zyklen später den Status des Dali-Bus abfragst? Und was genau ist die Fadetime?


Ist es eigentlich generell ratsam von der Zyklussteuerung weg zu gehen und zur Task / Eventsteuerung zu wechseln?


----------



## Blockmove (30 Mai 2016)

Player-Ben schrieb:


> Das habe ich nicht so ganz verstanden. Bedeutet das wenn ein Taster gedrückt wird (Ereignis), dass du dann ein paar Zyklen später den Status des Dali-Bus abfragst? Und was genau ist die Fadetime?
> 
> Ist es eigentlich generell ratsam von der Zyklussteuerung weg zu gehen und zur Task / Eventsteuerung zu wechseln?




Nicht ganz:
Die Abfrage wird verzögert mit der negativen Flanke des Tasters (also mit dem Loslassen) oder des sonstigen Ereignisses (Schaltuhr, Dämmer, u.s.w. ) ausgelöst.
Das Aus- bzw. Einschalten kann bei Dali durch einstellbares sanftes Dimmen erfolgen. Die Zeit für diesen Vorgang nennt sich Fadetime. Frägst du den Dimmwert während dieses Vorgangs ab, bekommst du den falschen Wert.

Die Programmierung im Bereich Gebäudeleittechnik ist eigentlich heut zu Tage eine Mischung aus klassischem Eventhandling und normaler SPS-Programmierung.
Nicht umsonst erobern hier z.B. Waago große Marktanteile.

Gruß
Dieter


----------



## Player-Ben (31 Mai 2016)

Blockmove schrieb:


> ...
> Die Abfrage wird verzögert mit der negativen Flanke des Tasters (also mit dem Loslassen) oder des sonstigen Ereignisses (Schaltuhr, Dämmer, u.s.w. ) ausgelöst...


Danke.

Ich habe die 753-647 Klemme mit der dazugehörigen Lib. Dort gibt es leider den Baustein FbDALI_StatusDimmValue nicht, sondern nur FbDaliShowActualValue. Vom Prinzip her müsste die doch auch funktionieren, wenn man dieses dann aktualisiert bei einem Ereignis.


Wäre folgender Vorgang richtig?
Der Trigger wäre die negative Flanke des jeweiligen Schalters, dann eine Einschaltverzögerung welches ein Unterprogramm startet. Dieses Programm aktualisiert dann meinen Status von der jeweiligen Lampe.
Aber wie würde man es dann angehen, dass man 2 Statusabfragen generieren kann wie Du beschrieben hast. 
Grüße Ben


----------



## Blockmove (31 Mai 2016)

An der neg. Flanke des Tasters hängt eine TOF.
Mit dieser TOF bilde ich eine weitere neg. Flanke.
Und damit erfolgt die 2. Abfrage


----------



## NeuerSIMATICNutzer (7 Dezember 2016)

Hallo zusammen,

möchte mich nun auch etwas mehr mit WAGO und DALI beschäftigen. Habe mir nun eine 750-641 besorgt und steuere schon 7 EVG_LED Leuchten erfolgreich.
Lese immer wieder von der MultiMaster Klemme 753-647. Man kann ja hier über den DALI Konfigurator ohne Programmcode etwas projektieren. Ist dies der
einzige Unterschied oder gibt es noch andere Vorteile?

VG
NSN


----------

