Autor Thema: Timer_P4  (Gelesen 7338 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Loni

  • Gast
Timer_P4
« am: 18. September 2008, 22:34:02 »
Hallo alle zusammen.
Programm mit Timer_P4 läuft nur beim ersten mal ,wenn ich z.b. im Array 0
Channel=0 ,Typ = 2, Day = 1 , Start = TOD#12:00:00,Duration = T#120s einfestlege schaltet der
Channel 0 auch zur programmierten Zeit.
Wenn ich danach aber die Zeit (Start = TOD#13:00:00) ändere schaltet der Channel nicht mehr.

Kann mir jemand weiterhelfen, wo liegt der Fehler? :o


Offline hugo

  • Global Moderator
  • *****
  • Beiträge: 2 150
    • Profil anzeigen
Re: Timer_P4
« Antwort #1 am: 19. September 2008, 07:06:28 »
der timer ist so programmiert das er nur einmal am tag ein ereignis auslöst (je array eintrag) durch mehrere einträge natürlich schon. im letzten feld eines jeden array datensatzes merkt sich der kontroller das setzte aus diesen tageszähler auf null und er läuft auch bei änderungen ein zweites mal

Loni

  • Gast
Re: Timer_P4
« Antwort #2 am: 19. September 2008, 13:23:16 »
Habt ihr einen Vorschlag?

Ist es möglich nachdem der Channel gesetzt wurde eine neue Startzeit einzugeben und den Channel
nochmal schalten zu lassen?

Denke nur mal so daran das ein Benutzer die Schaltzeit von 12:00 Uhr nach 15:00 Uhr ändert nachdem der Channel gesetzt wurde,
und sich dann wundert warum der Channel um 15:00 Uhr nicht mehr gesetzt wird.

Danke nochmal an dieses super Forum! ;D

Offline hugo

  • Global Moderator
  • *****
  • Beiträge: 2 150
    • Profil anzeigen
Re: Timer_P4
« Antwort #3 am: 19. September 2008, 14:13:52 »
lies doch erst meine antwort von vorher natürlich ist es möglich und es steht auch dort
im struct timer_event ist der letzte eintrag ein eintrag der automatisch vom system verwaltet wird, dort merkt sich der timer das er heute bereits einmal gelaufen ist. setzt du diesen eintrag auf 0 wird er sofort das ereignis neu starten

der timer stellt damit sicher das ein ereignis mindestens einmal / tag läuft auch wenn es nur jede stunde aufgerufen wird würde der timer alle fälligen aber noch nicht gestarteten ereignisse starten. fällt dann z.b. der strom aus und der timer startet wieder hoch erkennt er am eintrag last im struct tier event wann das entsprechende ereignis das letzte mal gestartet wurde und es wird nicht doppelt oder mehrfach gestartet.

Offline hugo

  • Global Moderator
  • *****
  • Beiträge: 2 150
    • Profil anzeigen
Re: Timer_P4
« Antwort #4 am: 19. September 2008, 14:21:26 »
Denke nur mal so daran das ein Benutzer die Schaltzeit von 12:00 Uhr nach 15:00 Uhr ändert nachdem der Channel gesetzt wurde,
und sich dann wundert warum der Channel um 15:00 Uhr nicht mehr gesetzt wird.

genau das soll verhindert werden.
denke doch mal an ein ereignis einmal / tag wieso sollte es dann bei zeitänderung plötzlich 2* / tag ausgelöst werden?????

aber auch das ist durchaus möglich, einfach bei der zeitänderung gleichzeitig den eintrag last im entsprechenden struct des arrays prog auf 0 setzen dann denkt der baustein das er heute das entsprechende ereignis noch nicht ausgelöst hat und macht es nochmals

Loni

  • Gast
Re: Timer_P4
« Antwort #5 am: 25. September 2008, 16:12:08 »
Habe nochmal ne Frage zum Timer_P4

soweit funktioniert alles,
ich habe nun Typ = 2 programmiert ( Ereignis an selektierten Wochentagen )
wenn ich nun die SPS starte sind alle Startzeiten auf 00:00, wenn ich jetzt den heutigen Wochentag selektiere bevor
ich die Startzeit eingegeben habe  , wird der Ausgang .LAST gesetzt und der Schaltausgang schaltet heute nun nicht mehr.

Hat jemand eine Idee wie man im Programm abfangen kann?

Offline hugo

  • Global Moderator
  • *****
  • Beiträge: 2 150
    • Profil anzeigen
Re: Timer_P4
« Antwort #6 am: 25. September 2008, 17:00:01 »
warum schreibst du ereignis 2 rein bevor du die startzeit angibst?

erst alle daten füllen dann das ereignis setzen.

wenn du willst das der baustein bei zeitänderung am gleichen tag wieder aktiv wird musst du den letzen eintrag im timer_event (last) auf 0000 setzen