Der Algorithmus basiert auf den wachsenden Zeitabständen zwischen zwei Aufrufen des Funktionsbausteins. Der Funktionsbaustein ist in der Lage, die verstrichene Zeit nach einem Neustart (Warmstart) beginnend mit dem letzten Aufruf zu berechnen. Der Zeitabstand wird mit Hilfe eines internen Systemimpulszählers gemessen (enthält die Zeit in ms). Der Wert der voreingestellten Zeit (PT) ist begrenzt auf 2.147.483.647 Millisekunden für den *_R-Funktionsbaustein (max. Bereich des DINT-Datentyps) und 9.223.372.036.854.775.807 Millisekunden für den *_R_LTIME-Funktionsbaustein (max. Bereich des LINT-Datentyps).
Das Problem des verlorenen Aufrufs nach einem Neustart (Warmstart)
Da der Algorithmus auf einem gedächtnislosen internen Systemimpuls-Zeitgeber basiert, ist es wichtig das Problem zu beachten, das wir als 'verlorenen Aufruf' bezeichnen. Die untere Abbildung beschreibt das Verhalten des Funktionsbausteins vor und nach einem Warmstart. Nachdem der Parameter IN auf TRUE gesetzt ist, wird beim nächsten Aufruf die steigende Flanke am Eingang IN registriert. An diesem Punkt beginnt die Berechnung mit ET (verstrichene Zeit) := 0. Nach einem Neustart (Warmstart) registriert der nächste Aufruf den veränderten Status und normalisiert den internen Startwert mittels Subtraktion des momentanen Systemzählerwertes vom internen gepufferten Zähler. Das ist der Grund, warum der Zeitabstand zum vorherigen Aufruf Null ist. Bezogen auf die reale verstrichene Zeit gibt es eine Verzögerung abhängig von der Dauer zwischen den aufeinander folgenden Aufrufen des Funktionsbausteins. Dies bedeutet, dass die Berechnungszeit eines Funktionsbausteins nach einem Warmstart im schlechtesten Fall für die Dauer eines Aufruf-Zeitabstandes langsamer ist, als ein Funktionsbaustein, bei dem kein Neustart (Warmstart) auftrat.
Heißstart-Verhalten
Nachdem ein Heißstart ausgeführt wurde, ist es wichtig zu wissen, dass der Zeitgeber die verstrichene Zeit inklusive der Dauer des Stop-Status berechnet. Ein Heißstart wird durchgeführt, wenn das SPS-Programm beispielsweise von einem Haltepunkt (Breakpoint) fortgesetzt wird. Während dem Debuggen im Online-Modus kann es vorkommen, dass manche Zeitgeber ablaufen, wenn die SPS auf Breakpoints aufläuft.