# Frage zu TIMER\_2

**URL:** <https://oscat.discourse.group/t/frage-zu-timer-2/158>\
**Category:** Bestehende Module / Existing Modules\
**Created:** [30. August 2007 um 12:09 UTC](https://oscat.discourse.group/t/frage-zu-timer-2/158 "2007-08-30T12:09:14Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/free1/uploads/oscat/original/1X/2efdfb9c592ff9a666c94dff124ee84fa863dae5.jpeg) [@system](https://oscat.discourse.group/u/system)\
**Post date:** [30. August 2007 um 12:09 UTC](https://oscat.discourse.group/t/frage-zu-timer-2/158/1 "2007-08-30T12:09:14Z")

</div>

Hallo,

ich brauche jeden Tag um 9 Uhr einen Trigger um eine E-Mail zu versenden.  
Habe FB TIMER\_2 mittels CoDeSys für WAGO 758 folgendermassen im Programm als eigene Task eingebaut:

PROGRAM Time\_Switch  
VAR  
TriggerDay: timer\_2;  
END\_VAR  
TriggerDay(DT\_in:=Current\_Time,start:=tod#09:00:00,duration:=t#3s,mode:=11);

Task läuft ständig, Current\_Time zählt die aktuelle Uhrzeit hoch.  
Trotzdem wird der Ausgang nicht um 9 Uhr für 3 Sekunden gesetzt.

Im Source-Code von TIMER\_2 ist eine Abfrage, die ich nicht verstehe:

IF enabled AND NOT Q AND daytime \>= start AND run\_date \<\> dat THEN  
Q := 1;  
activation := tx;  
run\_date := dat;  
ELSIF Q AND tx - activation \>= duration THEN  
Q := 0;  
END\_IF;

Variable “run\_date” ist in meinem Testprogramm natürlich gleich wie Variable “dat”.  
Wenn ich “run\_date” auf einen Tag vorher force, dann wird der Ausgang ca. jede Sekunde für 3 Sekunden gesetzt.

Was mache ich falsch ? Darf TIMER\_2 nicht in einer Task zyklisch aufgerufen werden ?  
N.B.: oscat.lib ist wirklich eine tolle Library, grosses Lob von mir

Grüsse,  
Dieter

---

<div class="post-metadata">

**Author:** ![hugo](https://yyz2.discourse-cdn.com/free1/user_avatar/oscat.discourse.group/hugo/32/133_2.png) [@hugo](https://oscat.discourse.group/u/hugo)\
**Post date:** [11. September 2007 um 22:06 UTC](https://oscat.discourse.group/t/frage-zu-timer-2/158/2 "2007-09-11T22:06:31Z")

</div>

die abfrage bedeutet das der folgende code übersprungen wird falls:

a) der ausgang schon gesetzt ist  
b) daytime \> start dient dazu die funktioin nicht dauernd auszuführen sondern nur einmal pro 100ms  
c) run\_date sorgt dafür das die funktion nur einmal pro tag ausgeführt wird.

lasse die task mal freilaufend rennen und checke ob sich das eiungangsdatum auch verändert.  
grundsätzlich muss es aber auch zyklisch laufen

run\_date merkt sich das die funktion heute schon einmal gelaufen ist und verhindert weitere aufrufe, sie soll ja nur einmal pro tag laufen

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/free1/uploads/oscat/original/1X/2efdfb9c592ff9a666c94dff124ee84fa863dae5.jpeg) [@system](https://oscat.discourse.group/u/system)\
**Post date:** [12. September 2007 um 15:28 UTC](https://oscat.discourse.group/t/frage-zu-timer-2/158/3 "2007-09-12T15:28:28Z")

</div>

danke  
das mit dem run\_date (nur einmal pro tag) war der richtige Ansatz.  
Jetzt funktioniert es bestens.

Tolle Lib !
