Schreiben einer Dimmzeit in ST

Lurchie

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

ich hoffe ihr könnt mir kurz helfen, versuche gerade nen FB zu schreiben der es mir ermöglicht, ne gewünschte Dimmhelligkeit langsam anzufahren.

Konkreter gesagt: ich möchte den Dimmerbaustein von der Wago Gebäudebibliothek verwenden und diesen FB vor die Dimmvorgabe packen.
Wollte das mal in ST ausprobieren, da ich bisher nur mit FUP gearbeitet habe mir da aber die Mittel fehlen.

Also soweit bin ich bisher gekommen, aber mit den Zeiten hab ich probleme

Code:
FUNCTION_BLOCK dimm_time
VAR_INPUT
    dimm_soll: BYTE;
END_VAR
VAR_OUTPUT
    dimm_ist: BYTE;
END_VAR
VAR
END_VAR

Code:
WHILE dimm_ist > dimm_soll DO
dimm_ist := dimm_ist +1;
(* hier soll ein Delay von 2ms oder so hin*)
END_WHILE


WHILE dimm_ist < dimm_soll DO
dimm_ist := dimm_ist -1;
(* hier soll ein Delay von 2ms oder so hin*)
END_WHILE

Ich denke mal für die meisten hier sollte das kein Problem darstellen und ihr könnt mir kurz auf die Sprünge helfen.

Danke
 
WHILE geht schon mal gar nicht, da du dadurch den laufenden Programm-Zyklus für die Dauer der Bearbeitung der Schleife festhältst.
Ich würde mir bei Ungleichheit der Werte und nicht schon aktiver Dimmung ein Dimmung_Aktiv-Bit setzen. Ist dieses aktiv dann einen Timer starten und wenn der abgelaufen ist den Sollwert nach Bedarf verringern oder erhöhen und den Timer wieder neu starten. Bei Soll=Ist dann das Dimmung_Aktiv-Bit wieder rücksetzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

kurz nebenbei.
Verbessert mich, aber ich meine, ich sehe einen Fehler:#
Code:
WHILE dimm_ist > dimm_soll DO dimm_ist := dimm_ist +1; (* hier soll ein Delay von 2ms oder so hin*) END_WHILE

Wenn der aktuelle Wert größer ist, als der Sollwert, dann soll der aktuelle Wert erhöht werden um 1.
Das klingt für mich etwas unlogisch.

Hat zwar nciht direkt mit dem Problem zu tun, aber nur so nebenbei!

Grüße
 
Zurück
Oben