Wago FbDimmSingleButton Hilfe?

NixDa

Level-1
Beiträge
24
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin zusammen,

ich bin gerade in den Zügen meine Daliverdrahtung zu programmieren.

Hierzu habe ich im Setup:
750-889
750-641
MDT Glasstaster II

Insbesondere bei dem SingleButton Baustein komme ich nicht weiter. Beim DoubleBotten konnte ich per Logik Funktionsbaustein mir das Signal für das Lichtdimmen programmieren:

FUNCTION_BLOCK FbDimmDirection
VAR_INPUT
xControl_In:BOOL;
bValue_In:BYTE;
END_VAR
VAR_OUTPUT


xDimm_Up: BOOL;
xDimm_Down: BOOL;
END_VAR
VAR


END_VAR

IF bValue_In=1 AND xControl_In THEN
xDimm_Up := TRUE;
ELSE
xDimm_Up := FALSE;
END_IF
IF bValue_In=1 AND xControl_In=FALSE THEN
xDimm_Down := TRUE;
ELSE
xDimm_Down := FALSE;
END_IF

Die Kette schaut folgendermaßen aus:

MDT Taster -> FbDPT_Switch -> FbDPT Control Dimming -> FbDALI_DimmSingleButton -> FbDALI_StatusDimmValue -> FbDPT_Scaling - Licht Dimmen mit Wert Rückmeldung
-> FbDALI_Latching Relay - Licht ein / aus
Nun fehlt mir die Brücke vom Control_Diming (wie gehe ich mich Control_Out & bValue_Out um?) in den Baustein SingleButton?

Danke für eure Hilfe im Voraus.

Nun frage ich mich, wie ich die Richtung bei dem Singlebutton programmieren kann.
 
Was soll denn Deine "LichterKette" tun? EIN/AUS einerseits und heller/dunkler andererseits und diese 4 Funktionen mit einem SingleButton betätigen?
Zeigt Dein Code wirklich die vor dem DoppelPunkt angekündugte DoubleButton-Variante?
Was ist "bValue_In:BYTE;"? Wir darin die HelligkeitsStufe gespeichert?
Vorschlag:
1. Kurzer TastenDruck: schaltet um zwischen EIN und AUS ("StromStossRelais")
2. Langer TastenDruck: stellt abwechselnd (wechseln der Richtung durch erneuten TastenDruck) dunkler oder heller
Was soll passieren, wenn "voll" dunkel oder hell erreicht ist? Stoppen oder automatisch die DimmRichtung (heller/dunkler) wechseln?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin Heinileini,

bValue enthält in 7 Stufen die Helligkeit.

1. genau so hatte ich es auch gemacht. (Latching Relax)
2. Wenn 100% erreicht sind soll das Dimmen wieder in die andere Richtung gehen.

Grüße
 
Statt in WAGO habe ich's mal in LOGO gebastelt:
Anhang anzeigen SingleButtonDimmer.lsc.pdf <===<<< nach Herunterladen ' .pdf ' entfernen
SingleButtonDimmer.jpgSingleButtonDimmerDisplay.jpg

Deine Kette "MDT Taster -> …" stellt vermutlich eine Ansammlung von Bausteinen dar, so mit einander verschaltet, dass sie zusammen die gewünschte Funktionalität ergeben.
Ich denke, Du brauchst für Deinen Zweck einen Baustein, der über …
- VAR_INPUT
. Taste (BOOL)
- VAR_IN_OUT
. Helligkeit (BYTE)
. Leuchte (BOOL)
. Richtung (BOOL)
. ZustandAltTaste (BOOL)
… verfügt sowie über 2 "TÖNE", also
1 EinschaltVerzögerung und
1 Taktgeber.

Nachschlag:
improvisiert, SCL- bzw. ST-ähnlich und garantiert ungetestet (die beiden "TON" müssen noch benamt und deklariert werden):
Code:
// SingleButtonDimmer; 
// kurzer Tastendruck: EIN bzw. AUS (inOutLamp)
[LEFT]// langer Tastendruck: heller bzw. dunkler (Werte 1 .. 7 in inOutDimmVal)
//    bei Erreichen des Minimal- bzw. MaximalWertes wird die "Richtung" umgekehrt
[/LEFT]
//    nach langem Tastendruck wird die Richtung umgekehrt (optional)
//    langer Tastendruck schaltet AUSgeschaltete Leuchte EIN (optional)

VAR_INPUT
    inButton       :    BOOL;    // "Single Button"
END_VAR;
VAR_IN_OUT
    inOutDimmVal   :    INT;     // HelligkeitsWert  (BYTE?)
    inOutButtonOld :    BOOL;    // FlankenMerker von "Single Button"
    inOutFwd       :    BOOL;    // DimmRichtung heller/dunkler
    inOutLamp      :    BOOL;    // Leuchte EIN
END_VAR;
VAR_TEMP;
    tmpCntPls      :    BOOL;    // Zählimpuls
    tmpLong        :    BOOL;    // langer Tastendruck
    tmpNegEdge     :    BOOL;    // Impuls negative Flanke von "Single Button"
    tmpShort       :    BOOL;    // kurzer Tastendruck
END_VAR;

tmpNegEdge     := inOutButtonOld AND NOT inButton;
inOutButtonOld := inButton;

tmpShort := tmpNegEdge AND NOT TON1.Q;
tmpLong  := tmpNegEdge AND TON1.Q;

TON1(IN:=inButton, PT:=0.7s); // TastendruckLänge, Start mit pos. Flanke von inButton

tmpCntPls := TON2.Q;
TON2(IN:=TON1.Q AND NOT tmpCntPls, PT:=0.5s); // ZählimpulsWiederholung, solange Dimmen aktiv und Zeit abgelaufen

inOutLamp := (inOutLamp XOR tmpShort) OR tmpCntPls; // OR tmpCntPls entfällt, wenn durch Dimmen nicht automatisch EINgeschaltet werden soll

IF NOT tmpCntPls THEN
    inOutFwd := inOutFwd XOR tmpLong; // entfällt, wenn nach langem Tastendruck nicht Richtung umgekehrt werden soll
ELSIF inOutDimmVal < 7 AND inOutFwd THEN
    inOutDimmVal := inOutDimmVal + 1;
ELSIF inOutDimmVal > 1 AND NOT inOutFwd THEN
    inOutDimmVal := inOutDimmVal - 1;
ELSE
    inOutFwd := NOT inOutFwd;
END_IF;
 
Zuletzt bearbeitet:
@Heinileini, danke dir. Das hat super geklappt. Nun erhalte ich aber mein nächstes Problem... Wenn ich das Licht ausschalte, bleibt ein ganz minimaler Lichtwert an, obwohl 0 sein müsste. Nun habe ich bei der Wago Visualisierung im Dali eine Statusfrage gestellt und erhalte folgende Rückmeldung. Ausser dem Ausschalten funktioniert jedoch alles. Könnt ihr mir vielleicht sagen was das Problem sein kann?

DALI Fehlermeldung.PNG
 
Zurück
Oben