INT
링 카운터 2,5ms
데이터 레지스터는 링 카운터 역할을 합니다. 레지스터 값은 2,5ms마다 1씩 증가합니다(카운팅 범위: 0–32767 및 -32768–0). 다른 두 시간(v1 및 v2)의 레지스터 값(v)을 비교하여 경과 시간 (t)을 판별합니다: t = (v2-v1) x 2,5ms.
레지스터 값은 스캔을 시작할 때마다 업데이트됩니다.
if (NOT bIsInitialized) then
bIsInitialized:=TRUE;
iRingCounter_Old:=sys_iRingCounter_2ms5;
iScans:=1;
else
iRingCounter_New:=sys_iRingCounter_2ms5;
iRingCounterDiff:=iRingCounter_New-iRingCounter_Old;
if (iRingCounterDiff>0) then (* Important to work also for shorter scan times *)
diScanTime_µs:=(INT_TO_DINT(iRingCounterDiff)*2500)/INT_TO_DINT(iScans);
iRingCounter_Old:=iRingCounter_New;
iScans:=1;
else
iScans:=iScans+1;
end_if;
end_if;