Напишу о текущих итогах для истории. Явно может кому-то пригодиться.

По результатам анализа вместе с Евгениеем Кисловым, сделаны следующие выводы:

1) ошибка 5802 - это не ошибка работы СОМ-порта, а ошибка состояния CAA Async Manager (https://content.helpme-codesys.com/e...ums/ERROR.html), которая говорит о неверном дескрипторе. Но не дескрипторе СОМ-порта, а дескрипторе асинхронной задачи внутри библиотеки CAA Async Manager (эта библиотека применяется много где, потому эта ошибка бывает и у работы с файлами, и у работы с СОМ портами).

2) как говорит документация на CAA Async Manager, количество асинхронных задач ограничено - не более 20.

3) судя по обрывочной информации в интернете, неверный дескриптор задачи говорит о том, что дескриптор есть, а задачи уже нет и/или о повреждении таблицы текущих задач внутри библиотеки (что по мне почти равносильно). А это в свою очередь может являться следствием ошибки в библиотеке CAA.SerialCom при работе с портом, либо о каких-то ещё неявных проблемах, которые без точного их понимания костылём не подпереть.

4) как следствие - данная ошибка приводит к какому-то повреждению среды исполнения программы ПЛК, которую пользователь загружает через IDE. Т.е., программу можно и перезагрузить и перезапустить, но среда (процесс внутри ОС) уже повреждён и при этом не перезапукается, и поэтому порты не оживают после перезапуска (в таблицах по-прежнему мусор). Помогает только рестарт процесса среды исполнения (см. нажатие кнопки в веб-интерфейсе ПЛК выше) или ребут ПЛК по питанию.

Это всё поверхностные предположения, т.к. внутрь этих библиотек заглянуть невозможно.


КАКОЙ ВЫХОД?
По совету Евегния перешёл с CAA.SerialCom на OCL.COM_control/OCL.UNM_SerialRequest.

Делов на час - переписать асихнхронную машину работы с СОМ портом, все параметры схожи, только FB заменить.
Как итог: проработало 12 часов без сбоев, что на мой взгляд, подтверждает выше описанную гепотезу.