Спасибо за прошивку! (Сегодня как раз начал отлаживать свой вариант через modbus.lib, но где-о что-то пока не так, так что прошивка пришлась кстати.)
Проверил, погонял с двумя устройствами по 12 регистров чтения и записи на 115200 бит/с с периодом опроса 50 мс. Ошибки 81 стали появляться гораздо реже, порядка одной в секунду при минимальном времени цикла контроллера 1 мс. Никакие параметры обмена при изменении в допустимых для меня пределах ситуацию заметно не улучшили, но увеличение минимального цикла ПЛК до 2 мс помогло избавиться от ошибки 81. По крайней мере, за более чем 20 минут не поймал ни одной (смотрю программно). Буду пробовать на реальном объекте.
По поводу минимального времени цикла контроллера - почему ПЛК не увеличивает его, если что-то не успевает?
Или это всё-таки не совсем "минимальное" время?
Или же его имеет право увеличивать только пользовательская программа (пока не достигнет максимального, когда сработает WatchDog), а служебные вещи выполняются строго в отведённый им интервал и не микросекундой больше, не успел, так не успел?
Ещё раз спасибо за быстрое решение.




Ответить с цитированием
