У нас есть оборудование, которое обменивается данными на различных скоростях передачи через RS-485 / Modbus RTU (от 1200, 9600 до 115200).
В прошивке, работающей на нашем устройстве, есть небольшая ошибка, в которой задержка ответа Modbus RTU была исправлена и рассчитана на основе работы на скорости 115200 бод. Проблема оставалась незамеченной до недавнего времени, когда один из наших клиентов начал использовать скорость передачи данных 1200 бод. Похоже, задержки ответа 115200 было достаточно для всего, вплоть до 9600.
Однако при скорости передачи 1200 бод первый байт ответного пакета пропускается (я предполагаю, что из-за времени, которое требуется для переключения с отправки на прием на скорости 1200 бод). Если запрашивается большой пакет, все в порядке (поскольку время, необходимое устройству для объединения пакета, компенсирует отсутствие задержки), хотя большинство пакетов повреждены.
К сожалению, обновление прошивки на этих устройствах уже в полевых условиях для использования правильной / более продолжительной задержки ответа не является вариантом. Есть ли у кого-нибудь идеи относительно того, как мы можем получить полные пакеты на скорости 1200 бод? (с неправильной задержкой ответа, из-за которой в настоящее время пропущен 1 байт)
Единственная идея, которую я мог придумать, - это запрашивать чрезмерное количество регистров у программного обеспечения с каждым запросом, чтобы увеличить задержку.