Dali 753-647 mehrere Gruppen Schalten

matchef

Level-1
Beiträge
94
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

Ich habe momentan ein Projekt bei dem ich 120 Dali Lampen habe. Diese habe ich auf 3 753-647 aufgeteilt. Diese 120 Lampen habe ich in 30 Gruppen eingeteilt.

Jetzt möchte ich über Schalter diverse Gruppen zusammen schalten. So ca. 5-15 Gruppen gleichzeitig)
Ich benutze dafür den Baustein "FbDaliSwitchOnOff". Nun ist es leider so das nicht immer alle Gruppen ein bzw. ausschalten. Was natürlich sehr unschön ist.

Kann es sein mit Dali und Wago nicht soviele einzelen Gruppe gleichzeitig geschalten werden können?

Hat da vielleicht jemand auch solche Erfahrung gemacht damit?

Gruss

matchef
 
Hallo,

das von dir beschriebene Verhalten kann ich so nicht bestätigen, ich schalte z.B. über ein Zeitprogramm weit mehr Gruppen auf 6 Dali-Karten verteilt und konnte noch keinen Ausfall bemerken.

Als Abhilfe könnte ich mir vorstellen das du die jeweiligen Gruppen pro Dali-Klemme nochmals zu einer weiteren Gruppe zusammenfasst, sprich nicht Gruppe 1-15 einzeln schalten sondern Gruppe 31 welche alle Leuchtmittel der anderen Gruppen vereint - natürlich kenn ich deinen Anwendungsfall nicht genau.

Gruß
Sagas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Servus,

Was für eine Zykluszeit hast bei deinem Programm?
Der Wago Support meint evtl. lieg es noch an dem...ich habe die Zykluszeit auf 40ms gestellt, effektiv ist er ca. bei 10-30ms...

Gruss
 
Servus,

bei mir läuft der Task frei, die genaue Zykluszeit kann ich gerade nicht auslesen, meine aber das die auch immer so um die 40-50ms war.
Zumal die Karte ja intern die Befehle speichern sollte und diese nach und nach abarbeiten.

Ich nehme an du nutzt den FbMaster753_647, hast du irgendeinen Wert in "bFeedback"?

Gruß
 
Hi Matchef,

hast du mal geschaut was der "Peak" an Zykluszeit ist?
klar ohne Befehle bleiben die Zyklen auf einer kleinen Zeit und treiben so den "Schnitt" runter.

Habe meine DALI-Anwendung immer auf zwischen 50-80ms laufen, je nach Größe.
Kann Wunder bewirken, das ein wenig hochzusetzen.

Gruß,
Flo
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja ich benutze den FbMaster753_647, Feedback habe ich zum teil "101" was ja soviel wie "Globaler Reset oder „Watchdog“ ist ausgelöst worden"....aber das ist auch nicht immer anstehend...

Der Wago Support meinte die Zykluszeit müsse so tief wie möglich sein..."Peak" muss ich nachschauen wie der genau ist...
 
Ich habe es wie "Sagas" gelöst.
Eine Gruppe mit den Gruppen... Alle Adressen, die benötigt werden in einer separaten Gruppe (Pro DALI-Linie).
So muss die SPS nur auf jeder Karte einmal den Gruppenbefehl senden.
 
Okay, dsa mit der zusätzlichen Gruppe könnte ich noch ausprobieren...jetzt habe ich es einfach mit einer kleinen überwachung mal gemacht, ich werte die rActualvalue aus und wenn "soll" und "ist" nicht passen dann schicke ich den Einschaltbefehl nochmals...

Meine Max. Zykluszeit ist 35ms...sollte nicht aus dem Rahmen fallen oder? Habt ihr eure Dali-Karten alle im gleichen oder in einem separaten Tasks?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,

bei mir laufen alle Dali-Karten plus Jalousiesteuerung plus EnOcean plus ... alles im gleichen Task, das sollte kein Problem sein.
Aber wie KingHelmer schon schrieb solltest du evtl. die Taskzeiten nach oben korrigieren und schauen ob sich das Verhalten ändert.

Was mir noch einfällt: Du hast pro Dali-Gruppe je eine Instanz von "FbDaliSwitchOnOff"? Hatte schon Kollegen die mit einem FB in einer Schleife alle Adressen abarbeiten wollten u.ä.

Grüße
 
Ich hab nun m die taskzeit auf 100ms gestellt...hat sich leider nix geändert...
Ja ich habe pro Gruppe einen "FbDaliSwitchOnOff"....in dem Fall Probiere ich das mit den Gruppen...
 
Hallo Zusammen,

habe bisher nur in CFC DALI-Projekte erstellt (erfolgreich). Ist aber bei vielen Gruppen irgendwann total unübersichtlich.

Wie sieht das mit ST aus? Könnte man damit nicht die Gruppennummer per Schleife o.ä. durchrattern und an alle Gruppen einen Befehl absetzen? Oder geht das zu schnell, so dass der DALI dem nicht folgen kann?!:confused:
Hat da mal jemand vielleicht ein Beispiel?

Für ein paar Hinweise bin ich dankbar...

Grüße
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

und ja, das geht. Zu schnell ist im dem Sinne nichts für die Dali Schnittstelle da du ja pro Gruppe/Schaltbefehl eine eigene Instanz nutzt. Du wirst ja auch keine 200 Schaltbefehle pro Zyklus auf 62 Gruppen verteilen? :D

Man kann sich so einen FB bauen der den Dali Master und eine Schleife für alle möglichen Adressen abarbeitet - persönlich nutze ich dafür noch eine 2D-Array aus Ein-/Ausbefehlals Schnittstelle. So kann man mit einem FB pro Dali-Linie quasi alle Gruppen ansprechen. ggf. wäre auch Dimmwert etc. zu ergänzen.

"ArDALIGroupOnOff[2,13,1]:=TRUE;" für 2 Dali-Linie, 13 Gruppe, auf EIN(1) - usw.

Gruß
Sagas
 
Hallo nochmal,

nein den Status werte ich an der Stelle allgemein nicht aus - war noch nie nötig. Nur das "bFeedback" von "FbMaster753_647" führe ich weiter zur übergeordneten Leitwarte.

Gruß
 
So mit etwas Verspätung, vielleicht hilft es ja weiter:

Deklaration:
Code:
PROGRAM Dali
VAR
    xQuitDali: BOOL;
    bFeedBackDali: ARRAY[0..5] OF BYTE;
    DaliGroups: ARRAY[0..5] OF FB_DaliGroups;
    Dali_Master753_647:  ARRAY[0..5] OF FbMaster753_647;
    (*DALI Linie 1*)
    ArInputBytes_Dali1 AT %IB48: ARRAY[0..23] OF BYTE;
    ArOutputBytes_Dali1 AT %QB48: ARRAY[0..23] OF BYTE;

Aufruf:
Code:
PrgDALIConfig();

IF b_CountDaliMaster>0 THEN
(*Dali Master*)
    Dali_Master753_647[0](
    bModule_753_647:=1 ,
    abIn_753_647:= ArInputBytes_Dali1 ,
    xQuit:=xQuitDali OR DwModbusControlCommen.0,
    abOut_753_647=>ArOutputBytes_Dali1  ,
    bFeedback=> bFeedBackDali[0] );
(*Dali Groups*)
    DaliGroups[0](bModule:=1 , PtArByteStatusDaliShortAddress:=ADR(ArByteStatusDaliShortAddress) ,PtArXModBusControlDaliShortAddress:=ADR(ArXModBusControlDaliShortAddress) , xCentralOn:= GxLightOn, xCentralOff:= GxLightOff, typConfigDimmer:=typConfigDimmer );
END_IF

IF b_CountDaliMaster>1 THEN
(*Dali Master*)
    Dali_Master753_647[1](
 .....usw

und der Gruppenaufruf:
Code:
FUNCTION_BLOCK FB_DaliGroups
VAR_INPUT
    bModule: BYTE:=1;        (*Nummer des 753_647 Moduls*)
    PtArByteStatusDaliShortAddress: POINTER TO ARRAY[1..cMaxDaliLines,0..63] OF BYTE;
    xCentralOn:BOOL;
    xCentralOff:BOOL;
END_VAR

Code:
(*Master Zentral Ein/Aus*)
DaliSwitchOnOffMaster(
    bAddress:= 255,
    xGroup:= ,
    xOn:=xCentralOn ,
    xOff:=xCentralOff ,
    rDimmLevelForOff:= ,
    bModule_753_647:=bModule,
    xReady=> ,
    bFeedback=> ,
    rActualLevel=> );

(*Dali Groups*)
FOR bLoopDaliGroupSwitch:=0 TO cMaxDaliNumbers BY 1 DO
DaliGroupSwitch[bLoopDaliGroupSwitch](
    bAddress:= bLoopDaliGroupSwitch,
    bModule:= bModule,
    xOn:=ArDALIGroupOnOff[bModule,bLoopDaliGroupSwitch,1] ,
    xOff:= ArDALIGroupOnOff[bModule,bLoopDaliGroupSwitch,0],
    rActualLevel=> );
END_FOR

(*Status Groups *)
FOR bLoopStatus:=0 TO cMaxDaliNumbers BY 1 DO
    IF DaliGroupSwitch[ bLoopStatus].rActualLevel=0 THEN
        ArDALIGroupStatus[bModule, bLoopStatus]:=FALSE;
    ELSE
        ArDALIGroupStatus[bModule, bLoopStatus]:=TRUE;
    END_IF
END_FOR


Gekürzt, vereinfacht und ohne Garantie versteht sich ;-)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
(*Master Zentral Ein/Aus*)
[B]DaliSwitchOnOffMaster[/B](
    bAddress:= 255,
    xGroup:= ,
    xOn:=xCentralOn ,
    xOff:=xCentralOff ,
    rDimmLevelForOff:= ,
    bModule_753_647:=bModule,
    xReady=> ,
    bFeedback=> ,
    rActualLevel=> );

(*Dali Groups*)
FOR bLoopDaliGroupSwitch:=0 TO cMaxDaliNumbers BY 1 DO
DaliGroupSwitch[bLoopDaliGroupSwitch](
    bAddress:= bLoopDaliGroupSwitch,
    bModule:= bModule,
    xOn:=ArDALIGroupOnOff[bModule,bLoopDaliGroupSwitch,1] ,
    xOff:= ArDALIGroupOnOff[bModule,bLoopDaliGroupSwitch,0],
    rActualLevel=> );
END_FOR


Danke für den Code, das Prinzip habe ich (denke ich) verstanden. Nur an der Umsetzung hapert es noch etwas.
Auf welchen Funktionsblock bezieht sich "[B]DaliSwitchOnOffMaster[/B]"? Ich vermutete FbDaliSwitchOnOff, aber er meckert beim übersetzen (bAdress kein Eingangsparameter vom Funktionsblock).

Gruß und danke
 
Hallo,

Ja das ist einfach der FbDaliSwitchOnOff, nur als Broadcast für Zenral-Ein/-Aus.

Aber bAddress ist ein Parameter dieses FB?

Dali_Adr.jpg

Gruß
 
Zuletzt bearbeitet:
ja schon, aber der wird doch über typBallast (z.B."typBallastGRUPPE1.bAddress") angesteuert, oder? Direkt bAddress ist kein Eingangsparameter.
 
Zuletzt bearbeitet:
Zurück
Oben