Код:
	loadReception	: BOOL;
	saveReception	: BOOL;
	hFile			: DWORD;				(* дескриптор файла рецептов *)
	reception		: ARRAY [0..9] OF PROD_RECEPT;


IF loadReception THEN																			(* при загрузке плк *)
	hFile:=SysFileOpen('rcpt.bin', 'r');																(* получение дескриптора файла *)
	IF hFile>0 THEN																				(* если файл существует *)
		logFileSize := SysFileGetSize('rcpt.bin');													(* вычисляем размер файла *)
		(* читаем данные по минимуму, либо размер файла, либо размер массива *)
		IF SysFileRead(hFile, ADR(reception)
			,MIN(UDINT_TO_DWORD(logFileSize)
			,INT_TO_DWORD(SIZEOF(reception)))) <> 0 THEN	(* если приняли соответствующее количество байт *)
			SysFileClose(hFile);																	(* закрываем файл *)
			loadReception:=FALSE;
		ELSE SysFileClose(hFile);loadReception:=FALSE; END_IF;
	ELSE loadReception:=FALSE; END_IF;
END_IF;
Такой код работает
Не понятно зачем Вы рецепты в разные файлы пишите, не забывайте что к каждому файлу пишется еще служебная информация, поэтому такой способ больше занимает место на флеш