Зачем мне выкладывать сюда весь проект, если косячит даже элементарная запись? Каким образом можно блокировать очередную запись? С чего она может вообще начаться? Если функция уже выполнилась и выдала готовность ASYNC_DONE только тогда разрешен переход к следующему пункту. Если выдалось сообщение отличное от ASYNC_WORKING или ASYNC_DONE то переход на закрытие файла. От чего там не 18 чисел , а 2000? Очень просто 18 чисел по 4 байта за 30 секунд. В принципе повисает и от 80 байт записи и от 2000. Виснет даже на просто открытии файла.

Попробовать отследить сообщения от функций отличные от ASYNC_WORKING или ASYNC_DONE ? Тогда какие действия предпринимать в случае ошибки? Какой функцией определить готовность системы к дальнейшим действиям? Когда виснуть может любая из функций. И как тогда объяснить повисон ПЛК в случае работы с SysLibFile ?