Код:
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;
Такой код работает
Не понятно зачем Вы рецепты в разные файлы пишите, не забывайте что к каждому файлу пишется еще служебная информация, поэтому такой способ больше занимает место на флеш