ONTIME zählt nicht mehr weiter

Begonnen von Benjamin, 01. August 2012, 21:11:03

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 3 Gäste betrachten dieses Thema.

Benjamin

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

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]

Benjamin

Ich habe zu STIME einen neuen Thread gestartet.