seit einigen Wochen versuche ich, den timer_ext für eine Aussenbeleuchtung einzusetzen. Der Timer macht was er will, er schaltet ein, schaltet auch mal aus, aber das System welches er dabei verfolgt kann ich nicht nachvollziehen. Aktuell ist es so, dass ich keine festen Zeiten vorgebe, sondern ihn anhand der Schaltpunkte vor und nach Sunset schalten lassen will. Soweit der Plan. Aber obwohl die Zeiten t_day_start und t_day_stop mit “TOD#00:00:00.000” versehen sind (leer lassen funktioniert ebensowenig), sehe ich im Statusbyte, dass er aufgrund t_day_start gerade aktiv ist (Status=111). Per Taster kann ich auch nicht dauerhaft schalten, der Baustein springt sofort wieder zurück.
Ich habe mal zwei Screenshots gemacht, vielleicht fällt jemandem etwas auf. Bei der Variablentabelle beginnt die Lokalzeit bei Adresse DB6.DBB0
Rahmenbedingungen:
CPU314, aktuelle Firmware
Oscat-Lib 3.11
zyklischer Aufruf von timer_ext
ich habe das Projekt mal aufs Wesentliche reduziert und hier beigefügt. In der Simulation lief alles zunächst, aber dann fing timer_ext nach kurzer Zeit doch wieder an, Dinge zu tun, die ich nicht nachvollziehen kann…
so ich glaube ich muss mal die ganzen Funktionen welche STIME benutzen durchschauen.
Das Problem ist auch bei TIMER_EXT das wenn kein INIT beim Anlauf der CPU gemacht wird dieser nicht richtig läuft. Das Problem habe ich jetzt korrigiert der Baustein erkennt jetzt selbstständig einen Neustart der CPU und Initialisiert sich.
In deinem Projekt musst Du die Bausteine STIME u. TIMER_EXT gegen die Neuen tauschen (siehe Anhang).
Wichtig den Instanzdatenbaustein von TIMER_EXT nochmal in die Steuerung übertragen.
ich habe die Bausteine STIME und TIMER_EXT eingefügt, den Instanzdatenbaustein für TIMER_EXT neu generiert und alles übertragen. Leider ohne Erfolg. Das für mich unerklärliche Verhalten des Bausteines besteht weiterhin (siehe 1. Posting). ???
um die Flanke vom Taster korrekt zu erkennen, musst Du die Zeit an T_DEBOUNCE auf T#200MS setzen (Standart ist 100ms), 100ms funktionieren nicht da die Routine nur alle 200ms durchlaufen wird.
Der Rest funktioniert bei mir tadellos, übertrage doch mal das komplette Programm an die Steuerung.
es hat leider etwas gedauert bis ich wieder an der Anlage war und testen konnte. Leider funktioniert es bei mir nicht. Und zwar weder auf der SPS noch in der Simulation. Wenn ich, wie Du vorgeschlagen hast, nach einem Urlöschen nur das Programm aus Deinem Dateianhang in die SPS bzw. in PLCSim lade, setzt TIMER_EXT spätestens nach einer Minute den Ausgang Q und gibt als Status 115 aus, obwohl das gar nicht sein dürfte.
Auch auf den externen Taster reagiert der Baustein höchstens für Bruchteile einer Sekunde (Status 110), dann springt Q aber sofort wieder auf 1. T_DEBOUNCE steht wie Du empfohlen hast auf T#200ms.