
(* @NESTEDCOMMENTS := 'Yes' *)
(* @PATH := '' *)
(* @OBJECTFLAGS := '0, 8' *)
(* @SYMFILEFLAGS := '2048' *)
FUNCTION_BLOCK TaskCycleTime_FB
VAR
	lrCycleCounter:	REAL := 0;
	lrMinCycleTime:	REAL := 10000;
	lrMaxCycleTime:	REAL := 0;
	tStartTime: 		TIME := t#0ms;
END_VAR
VAR_OUTPUT
	rTaskCycleTime:	REAL;
END_VAR
(* @END_DECLARATION := '0' *)

lrCycleCounter	:= lrCycleCounter + 1;

IF TIME() >= (tStartTime + t#1s) THEN
	rTaskCycleTime	:= (1 / lrCycleCounter) * 1000000;

	IF rTaskCycleTime < lrMinCycleTime THEN
		lrMinCycleTime	:= rTaskCycleTime;
	END_IF

	IF rTaskCycleTime > lrMaxCycleTime THEN
		lrMaxCycleTime	:= rTaskCycleTime;
	END_IF

	tStartTime		:=	TIME();
	lrCycleCounter	:= 0;
END_IF

END_FUNCTION_BLOCK
