INT
Ringzähler 10,24ms oder 10,67ms (nicht für exakte Messungen geeignet)
Das Datenregister verhält sich wie ein Ringzähler. Der Registerwert wird alle 10,24ms oder 10,67ms 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 10,24ms oder 10,67ms.
Der Registerwert wird jeweils zu Beginn eines Zyklus aktualisiert. Da er auch bei jedem Lesezugriff mit F0_MV aktualisiert wird, lässt sich die Ausführungszeit von Programmblöcken bestimmen.
#if (IsSystemVariableSupported('sys_iRingCounter_10usXX')) #then
if (NOT bIsInitialized) then
bIsInitialized:=TRUE;
iRingCounter_Old:=sys_iRingCounter_10usXX;
else
iRingCounter_New:=sys_iRingCounter_10usXX;
iRingCounterDiff:=iRingCounter_New-iRingCounter_Old;
diScanTime_ns:=INT_TO_DINT(iRingCounterDiff)*SYS_RINGCOUNTER_10us_RESOLUTION_ns;
iRingCounter_Old:=iRingCounter_New;
end_if;
#end_if;