Aktion einmal am Tag

Portisch

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

ich überlege gerade wie man das am besten macht um eine Aktion einmal am Tag auszuführen.
Also einen BOOL für einen Zyklus auf True zu setzen.

Ich möchte Stunde/Minute/Sekunde angeben und dann zu dieser Zeit den Impuls auslösen.

Wenn ich nun Stunde/Minute/Sekunde mit der aktuellen Zeit vergleiche wird es trotzdem mehrmals ausgelöst, da in der einen Sekunde der Ablauf mehrmals durchgeführt wird.

Gibt es da vielleicht einen Lösungsansatz?

PC WorX + Oscat in ST.

Danke!
 
Das schreit doch nach einer Flankenauswertung.

Der Vergleich liefert Dir dann ca. eine Sekrunde lang ein True Signal damit eine Flankenauswertung und das Ergebnis ist der gewünschte Impuls.
 
Ok, danke für den Tipp!

Also Zeit + Datum um feststellen zu können ob es an diesem Tag bereits ausgeführt wurde.
Das sollte ich hinbekommen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das wäre meine Variante als Pseudocode.
Code:
IF Sollzeit = Istzeit AND NOT OUT AND NOT Var1 THEN
    OUT := TRUE;
    Var1 := TRUE;
Else
    OUT := FALSE;
END_IF;
If Sollzeit <> Istzeit Then 
    Var1 := FALSE;
END_IF;
 
Ich habe es nun so ähnlich umgesetzt.
Bei einer Uhr wird jede Minute bei Sekunde 0 ein Update durchgeführt.
Der FB merkt sich dann die Minute und somit wird er nur einmal durchlaufen.

Das gleiche habe ich mit dem einmal Täglich gemacht. Beim Durchlauf merkt sich der FB den Tag und der nächste Durchlauf ist dann erst am nächsten Tag möglich.

Code:
IF ((second_of_DT(ltime) = INT#00) AND
 (m <> minute_of_DT(ltime))) OR NOT init THEN
 ....
 ....
 m := minute_of_DT(ltime);
 init := TRUE;
END_IF;
Das init erlaubt einen Durchlauf beim ersten mal ausführen um nicht warten zu müssen.
 
Zurück
Oben