Hallo,

ich habe folgendes System:

Wago 753-880 mit Dali Klemme 753-647. Zusätzlich 753-646 (KNX), 750-400 (Digital Input) und 750-501 (Digitaler input, wo zwei Taster dran hängen).
An der Daliklemme sitzen vier EVGs mit Adressen 0-3, mit DaliConfigurator eingestellt.

Mein Programm macht folgendendes:
1. Dalimaster aufrufen
2. Steigende Flanke am Taster erkennen (das funktioniert)
3. In dem Fall vier mal nacheinander den Funktionsblock aufrufen um den einzelnen lampen einen neuen Dimmwert zu übertragen
4. Bei Tastendruck den Dimmwert auf 0/100 wechseln.

Problem:
Ich bin Anfänger in dem Gebiet. Mal schaltet eine Lampe mal nicht, idR nur einzelne. Es scheint der Wago oder Daliklemme zu schnell zu gehen. Mit Debugger konnte ich feststellen, dass der Dalimaster baustein in den ersten ~10 zyklen die Mailbox nicht initialiseren kann. Mache ich es grundsätzlich falsch?

Kann ich pro Zyklus nur eine Lampe ansteuern?

PLC_PRG:
Variablen:
Code:
PROGRAM PLC_PRG
VAR
    Dali_Master:FbMaster753_647;

    abIn_753_647         AT %IB0        : ARRAY [0..23] OF BYTE;          (*Input array of the DALI Multi-Master Module 753-647    II  Eingangdatenarray der DALI-Multi-Master_Klemme 753-647*)
    xQuit                            : BOOL;                         (*Error message acknowledgement                        || Quittierung  der Störungsmeldung*)

    abOut_753_647        AT %QB0        : ARRAY [0..23] OF BYTE;         (*Output array of the DALI Multi-Master Module 753-647    II  Ausgangdatenarray der DALI-Multi-Master_Klemme 753-647*)
    bFeedback                    : BYTE;                             (*Code for Feedback                                         II Code für  Rückmeldung*)

    Lampe:Dali_Switch;
    feedback2:BYTE;

    Taster AT %IX24.0 : BOOL;
    value:REAL;

    Trigger:FlipFlop;
END_VAR
Code:
Code:
(*Dalimaster starten*)
Dali_Master(
    abIn_753_647:=abIn_753_647,
    bModule_753_647:=1,
    xQuit := xQuit,
    abOut_753_647=>abOut_753_647,
    bFeedback=>bFeedback
);

Trigger(CLK := Taster);
IF Trigger.Q = TRUE THEN

Lampe(
    addr:=0,
    wert:=value
);

Lampe(
    addr:=1,
    wert:=value
);

Lampe(
    addr:=2,
    wert:=value
);

Lampe(
    addr:=3,
    wert:=value
);

IF value > 0 THEN
    value := 0;
ELSE
    value := 100;
END_IF;

END_IF;
Der Lampen-Baustein:
Variablen:
Code:
FUNCTION_BLOCK Dali_Switch
VAR_INPUT
    addr: INT;
    wert:REAL;
END_VAR
VAR_OUTPUT
END_VAR
VAR
    Lampe:FbDaliSendDimmValue;
END_VAR
Code:
Code:
Lampe(
    bAddress :=  INT_TO_BYTE(addr),
    xGroup := FALSE,
    rDimmValue                        :=wert,
    rHysteresis                        :=1,
    xUpdate                            :=TRUE,
    bModule_753_647:= 1
);
Wäre über Hilfe sehr dankbar!

mfg
Nils