Knx Szenenbaustein 753-646

fstoiber

Level-1
Beiträge
27
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

wünsche noch ein frohes neues Jahr.

Gibt es einen fertigen Szenenbausten bei dem man z. B. Bei langem Tastendruck Werte wie Licht gedimmt 40%, Jalousie 30%, Lamellen 20% Werte speichert und bei kurzem Tastendruck die Werte an den Blind_actuator oder Analogausgang weiter gibt?

Danke im voraus :)

Gruß Florian

Gesendet von meinem HUAWEI MT7-L09 mit Tapatalk
 
Hallo,

also einen Funktionsbaustein der die besagten Funktionen mitführt, haben wir leider nicht. Aber man kann sich mit einigen Funktionsbausteinen der Wago Bibliotheken, die gewünschten Funktionen nachbauen. Ich denke das auswerten der Kurz- und Lang- Signale der Digitalen Eingänge (oder KNX Tast/Dimmsensoren), ist das Hauptproblem?!

Dieses ist in wenigen Wago Bausteinen, welche eine Dimmfunktion haben bereits integriert. Dies ist aber leider nicht in Kombination mit Dimmwert hoch-, runterzählen und Updaten bei kurz tasten verfügbar.

Nach deiner beschriebenen Anforderung, habe ich einen Funktionsbaustein programmiert:

Code:
--------------------------------------------------------------------Anfang Deklaration-----------------------------------------------------------------------------------------


FUNCTION_BLOCK Fb_ChangeOrUpdate_PrecentValue
(*WICHTIG*)
(*Bitte bedenke, dass dein Task Aufrufintervall immer min. doppelt so schnell sein muss, wie deine eingestellte Wertänderungsgeschwindigkeit
    Beispiel:
    Wertänderungsgeschwindigkeit: t#40ms


    zyklische Task
    Taskaufrufintervall:    t#20ms
*)


VAR_INPUT
    xSetOrDimmUp : BOOL;
    xSetOrDimmDown : BOOL;
    tShortTime: TIME := t#500ms;
END_VAR
VAR_OUTPUT
    rActualPrecentValue : REAL;(*Ausgang zeigt imme den aktuell eingestellten Dimmwert an*)
    rLastUpdatedPrecentValue : REAL;(*Ausgang Prozentwert nach kurz tasten (Update)*)
    xUpdate : BOOL; (*Ausgang wird immer für einen Zyklus auf "True" gesetzt, sollte ein kurz tasten betätigt worden sein*)


END_VAR
VAR
    TonDelayDimmUp: TON;
    tUpSignal: TIME;
    Ton1Inkrement: TON;
    tInkrementValue: TIME := t#40ms;(*Wertänderungsgeschwindigkeit*)
    flInkrement: R_TRIG;
    rValue: REAL := 0;
    TonDelayDimmDown: TON;
    Ton1Dekrement: TON;
    tDekrementValue: TIME := t#40ms;(*Wertänderungsgeschwindigkeit*)
    flDekrement: R_TRIG;
    tDownSignal: TIME ;
    flLostSignal: F_TRIG;
END_VAR
------------------------------------------------------------Ende Deklaration---------------------------------------------------------------------------------

------------------------------------------------------------Anfang Quellcode--------------------------------------------------------------------------------

(*Init----------------------------*)
xUpdate := FALSE;
tUpSignal := tShortTime ;
tDownSignal := tShortTime;
(*--------------------------------*)


(*SET xUpDate bei kurz Tastendruck (DEFAULT: Tastendruck < t#500ms)*)
flLostSignal(CLK:=xSetOrDimmUp OR xSetOrDimmDown , Q=> );(*überwachung fallende Flanke der UP/Down Inputs*)
IF  flLostSignal.Q  AND NOT TonDelayDimmUp.Q AND NOT TonDelayDimmDown.Q THEN (*Set "xUpDate" WENN fallende Flanke und Tastendruck < t#500ms*)
   xUpdate := TRUE;
END_IF
(*----------------------------------------------------*)




(*Einschaltverzögerung für UP and DOWN Inputs (Langtastendruck)*)
TonDelayDimmUp(IN:=xSetOrDimmUp , PT:=tUpSignal , Q=> , ET=> );
TonDelayDimmDown(IN:=xSetOrDimmDown , PT:= tDownSignal, Q=> , ET=> );
(*-----------------------------------------------------*)




(*Inkrementieren des Prozentwerts bei Langtastendruck des "xSetOrDimmUp" (Tasterverriegelung inklusieve)*)
IF TonDelayDimmUp.Q AND NOT xSetOrDimmDown  THEN


    Ton1Inkrement(IN:=NOT Ton1Inkrement.Q , PT:= tInkrementValue, Q=> , ET=> );
    flInkrement(CLK:= Ton1Inkrement.Q, Q=> );


    IF flInkrement.Q AND rValue < 99.8  THEN
        rValue := rValue + 0.2;
    END_IF


END_IF
(*----------------------------------------------------------------------*)




(*Dekrementieren des Prozentwertes bei Langtastendruck des "xSetOrDimmDown" (Tasterverriegelung inklusieve)*)
IF TonDelayDimmDown.Q AND NOT xSetOrDimmUp  THEN


    Ton1Dekrement(IN:=NOT Ton1Dekrement.Q , PT:= tDekrementValue, Q=> , ET=> );
    flDekrement(CLK:= Ton1Dekrement.Q, Q=> );


    IF flDekrement.Q AND  rValue > 0.2 THEN
         rValue := rValue - 0.2;
    END_IF


END_IF
(*----------------------------------------------------------------------*)


rActualPrecentValue := rValue;(*Zuweisung der internen Variable auf den Ausgang*)


IF xUpdate THEN
   rLastUpdatedPrecentValue := rValue;
END_IF

------------------------------------------------------------------------Ende Quellcode---------------------------------------------------------------------------------------------

Ich habe folgende Variablen als Ausgang nach Außen geführt:

1. aktuell geänderten Prozentwert
2. Prozentwert, welcher den Zustand des letzten Updates beinhaltet

Nun könntest du selber entscheiden ob du diesen Wert auf einen Analogen 0-10V Ausgang(Umrechnung mittels "FuAO" aus der "Building_HVAC_03.lib") gibst oder diesen Wert als Dimmwert für eine Dali Gruppe/Kurzadresse nutzt ("FbSendDimmValue" aus der "Dali_647_02.lib").

Ich hoffe ich konnte dir mit diesem Beispiel etwas weiterhelfen.
 
Hallo,

die Wago Bibliothek WagoBuilding_01.lib sollte die notwenigen Hilfsmittel zur Verfügung stellen.

http://www.wago.de/appnoteadmin/libraries23/Libraries_BA/public/WagoBuilding_01_d.pdf

Es gibt einen Szenenbaustein für Licht und Beschattung und bei Bedarf gibt es auch einen Baustein zur Auswertung Tastendruck Kurz/Lang.
Wenn KNX Taster verwendet werden, dann ist die Auswertung Kurz/Lang schon im Tastsensor integriert (z.B. Funktion Jalousie).
Die oben genannten und im Screenshot dargestellten Bausteine müssen "nur" noch mit den KNX Bausteinen verbunden werden.

Unbenannt.JPG
 
Zurück
Oben