INT
Ringzähler100ms
Das Datenregister verhält sich wie ein Ringzähler. Der Registerwert wird alle 100ms um eins erhöht (Zählbereich: 0–32767 und -32768–0). Vergleicht man die Registerwerte (v) zu zwei verschiedenen Zeitpunkten (v1 und v2), lässt sich die Zeitdauer (t) bestimmen: t = (v2-v1) x 100ms.
if (NOT bIsInitialized) then
bIsInitialized:=TRUE;
iRingCounter_Old:=sys_iRingCounter_100us;
iScans:=1;
else
iRingCounter_New:=sys_iRingCounter_100us;
iRingCounterDiff:=iRingCounter_New-iRingCounter_Old;
if (iRingCounterDiff>0) then (* Important to work also for shorter scan times *)
diScanTime_µs:=(INT_TO_DINT(iRingCounterDiff)*10000)/INT_TO_DINT(iScans);
iRingCounter_Old:=iRingCounter_New;
iScans:=1;
else
iScans:=iScans+1;
end_if;
end_if;