melky Да, плохо. Я с этим намучился жесть. И потом перешёл на OCL (OWEN Communication Library), которая уже работает асинхронно как и нужно: ты ей дал команду на выполнение - и она не блокирует цикл задачи, а потом возвращает результат или ошибку.
И ещё можно написать свою логику обработки ошибок так, что если запрос Modbus на модуль IO отвалился по ошибке (если модуль сломался или отключен) - то можно не делать другие запросы к нему, а сразу опрашивать следующий модуль. Это я про то, когда к одному модулю у нас идёт несколько запросов на чтение-запись.
Я под OCL даже свою обёртку написал: сделал массив структур, где указываются адрес, команда Modbus, длина данных и указатели на буфер для ответа. И этот массив у меня красиво перебирается подряд.

У CodeSys 3.5 в штатных устройствах Modbus, которые в дерево проекта добавляются (от 3S).