Доброго дня!

Обучаюсь работе с файлами на ПЛК110-32 [M02].

На основе примеров собрал свой минимальный тестовый пример.
Устанавливаю биты команд записи bWriteFile и чтения bReadFile по которым запускается обмен с файлом.
Файл разместил в RAM области.
Для быстрого изменения переменной - удваиваю её установкой бита bDoubleTime.
Но переменная не восстанавливается.
Код:
PROGRAM PLC_PRG
VAR
	tTime: TIME;
	blinkTest: BLINK;

	bReadFile: BOOL;
	bWriteFile: BOOL;
	bDoubleTime: BOOL;

	res: ASYNC_RET_VALUE;
	iResult:DWORD;
	sFileName:STRING := 'ram:configure.dat';

	iFileReadState:INT;
	iReadHandle:DWORD:=0;
	state_resRead: INT;

	iFileWriteState: INT;
	iWriteHandle: DWORD := 0;
	state_resWrite: INT;
END_VAR
Код:
(* сохраняемая в файле переменная tTime: её использование и быстрое изменение для теста *)
blinkTest(enable:=TRUE, timelow:=tTime, timehigh:=tTime);
(*out:=blinkTest.OUT;*)
IF tTime<t#500ms THEN
	tTime := t#500ms;
END_IF;
IF bDoubleTime THEN
	bDoubleTime:=FALSE;
	tTime:=tTime+tTime;
END_IF;

(* конечный автомат чтения переменной *)
CASE iFileReadState OF
	10: (* ожидание "внешней" команды чтения *)
		IF bReadFile THEN
			state_resRead:=20;
			bReadFile:=FALSE;
		END_IF;
	20: (* открытие файла для чтения - 1 этап *)
		res:=OwenFileOpenAsync(sFileName, 'r', ADR(iReadHandle));
		IF res=ASYNC_WORKING THEN
			state_resRead:=30;
		END_IF;
	30: (* открытие файла для чтения - 2 этап *)
		res:=OwenFileOpenAsync(sFileName, 'r', ADR(iReadHandle));
		IF res=ASYNC_DONE THEN
			IF iReadHandle<>0 THEN
	 			state_resRead:=40;
 			ELSE
 				state_resRead:=20;
			END_IF
		 ELSIF res<0 THEN
			state_resRead:=10;
		END_IF
	40: (* чтение из файла - 1 этап *)
		res:=OwenFileReadAsync(iReadHandle,ADR(tTime),SIZEOF(tTime),ADR(iResult));
		IF res=ASYNC_WORKING THEN
			state_resRead:=41;
		ELSE
			state_resRead:=50;
		END_IF
	41:
		res:=OwenFileReadAsync(iReadHandle,ADR(tTime),SIZEOF(tTime),ADR(iResult));
		IF res=ASYNC_DONE THEN
			IF iResult>=0 THEN
				state_resRead:=50;
			ELSE
				state_resRead:=50;
			END_IF
		ELSIF res<0 THEN
			state_resRead:=50;
		END_IF
	50: (* закрытие *)
		res:=OwenFileCloseAsync(iReadHandle,ADR(iResult));
		IF res=ASYNC_DONE THEN
			IF iResult=0 THEN
				state_resRead:=10;
			ELSE
				state_resRead:=10;
			END_IF
		ELSIF res<0 THEN
			state_resRead := 10;
		END_IF;
ELSE
		state_resRead:=10;
END_CASE;


CASE iFileWriteState OF
	10:
		IF bWriteFile THEN
			state_resWrite:=20;
			bWriteFile:=FALSE;
		END_IF;
	20:
		res:=OwenFileOpenAsync(sFileName, 'w', ADR(iWriteHandle));
		IF res=ASYNC_WORKING THEN
			state_resWrite:=30;
		END_IF;
	30:
		res:=OwenFileOpenAsync(sFileName, 'w', ADR(iWriteHandle));
		IF res=ASYNC_DONE THEN
			IF iReadHandle<>0 THEN
	 			state_resWrite:=40;
 			ELSE
 				state_resWrite:=10;
			END_IF
		 ELSIF res<0 THEN
			state_resWrite:=10;
		END_IF
	40:	(* запись *)
	res:=OwenFileWriteAsync(iWriteHandle,ADR(tTime),SIZEOF(tTime),ADR(iResult));
	IF res=ASYNC_WORKING THEN
		state_resWrite:=41;
	ELSE
		state_resWrite:=50;
	END_IF
	41: (* запись - 2 этап *)
		res:=OwenFileWriteAsync(iWriteHandle,ADR(tTime),SIZEOF(tTime),ADR(iResult));
		IF res=ASYNC_DONE THEN
			IF iResult>=0 THEN
				state_resWrite:=50;
			ELSE
				state_resWrite:=50;
			END_IF
		ELSIF res<0 THEN
			state_resWrite:=50;
		END_IF

	50: (* закрытие *)
		res:=OwenFileCloseAsync(iWriteHandle,ADR(iResult));
		IF res=ASYNC_WORKING THEN
			state_resWrite:=51;
		ELSE
			state_resWrite:=10;
		END_IF;
	51: (* закрытие *)
		res:=OwenFileCloseAsync(iWriteHandle,ADR(iResult));
		IF res=ASYNC_DONE THEN
			IF iResult=0 THEN
				state_resWrite:=10;
			ELSE
				state_resWrite:=10;
			END_IF
		ELSIF res<0 THEN
			state_resWrite := 10;
		END_IF;
ELSE
		state_resWrite:=10;
END_CASE;

(* обновление стадий чтения или записи *)
iFileReadState:=state_resRead;
iFileWriteState:=state_resWrite;
Не могу понять в какой части ошибка и какая.