Hallo Zusammen,
ich habe den Zähler ONTIME mehrfach in einem Projekt am laufen. Nun haben sich die Zähler an einer Anlage aber aus irgendeinem Grund aufgehangen und nicht mehr weitergezählt.
Ein kurzer IMPULS an RST hat den Zähler wieder gestartet.
Kann der Fehler mit dem in STIME beschriebenen Problem mit dem überlaufenden Zähler zusammenhängen?
Die verwendeten Codebestandteile sind auf dem Neuesten Stand.
Gruß
Benjamin
Nun ja. Die Ursache scheint mir ein viel zu großer Wert von ms zu sein (siehe Foto im Anhang). Daher hat auch die Aktivierung von RST den Zähler wieder weiterlaufen lassen (ms := 0;)
Die Ursache für den Überlauf scheint mir aber eher im Baustein STIME zu liegen.
Als kurzfristige Abhilfe reicht es sicher zu stellen, dass ms nicht überläuft.
IF DWORD_TO_DINT(ms) >= 1000 THEN
seconds := seconds + 1;
ms := DINT_TO_DWORD(DWORD_TO_DINT(ms) - 1000);
IF DWORD_TO_DINT(ms) > 1000 THEN (* Wenn immer noch größer als 1000 ms, dann war ein Überlauf da. *)
ms := 0;
END_IF;
END_IF;
[gelöscht durch Administrator]
Ich habe zu STIME einen neuen Thread (http://www.oscat.de/community/index.php/topic,1808.0.html) gestartet.