Добрый день.
1.
Код:
IF j>=101 THEN
Work2:=FALSE;
//Закрываем файл
SysFileClose(hFile:= hFile);
END_IF
Как только дошли до 101 элемента массива - закрываем файл.
В этот момент полученный при его открытии дескриптор становится невалидным.
На следующем цикле контроллера опять попадаем в этот блок кода.
j всё ещё 101, так что происходит попытка закрытия неоткрытого файла => исключение.
2. У меня в вашем проекте рецепты работают корректно.
Можете связаться со мной по телеграм (см. в подписи), и мы более детально рассмотрим этот вопрос при подключении по AnyDesk.