Hallo Zusammen,
in einem vorherigen
Thread habe ich ein Problem mit ONTIME beschrieben. Für mich sieh es aber so aus, als sei die Ursache in STIME zu suchen.
Es scheint ein Problem mit dem internen Zähler in S7 zu geben, und daher ist eine Anpassung notwendig.
//this function block makes sure that the timer of a siemens sps counts from 0 - 2^32-1.
Ich kann auch die Stelle finden, an der der Überlauf erkannt wird.
(* check for overrun *)
IF DWORD_TO_DINT(tx) < DWORD_TO_DINT(last_time) THEN
(* an overrun has occured, change the value of the highest bit *)
bit31 := NOT bit31;
END_IF;
(* stuff the highest bit into the timer value *)
at_tx[7] := bit31;
Danach kommt aber leider nichts mehr. Ich finde keinen Baustein und keine Stelle, an der die Information von at_tx[7] weiterverwendet wird.
Wurde die Anpassung irgendwann aus versehen gelöscht? Hat sonst jemand Erfahrungen mit STIME und darauf aufbauenden Bausteinen?