Цитата(BigBolt @ Oct 2 2008, 15:18)

В конце концов выяснилось, что нужно сделать задержку порядка 50-500 мкс (на разных линиях по разному ) после того как контроллер переключает драйвера 485-го на передачу и только потом выдавать данные в линию. Подозреваю что эта задержка нужна для того что бы АДАМ определил направление прередачи данных. Но данный эффект пропадает напрочь если скорость выше 9600 бод. Чем скорость ниже тем дольше нужно делать задерку.
Догадки у вас в правильном направлении идут. Раз преобразователь не зависит от протокола, а лишь от формата символа, то скорее всего у него унутре стоит "переключалка" с перезапуском, завязанная на длительность передачи символа. Пришел перепад уровня 1->0 "переключалка" включила выходной драйвер и держит его в режиме передачи как минимум на время передачи одного символа со всеми битами четности и стоп-битами. И такая реакция будет на любой перепад 1->0, т.е. перезапуск на каждый переход. Поэтому минимальное время удержания будет 1 символ + какой-то запасец, определяемый задумкой авторов, на выбранной с помощью свитчей скорости передачи и количества бит, а максимальное 1 + 0,8/0,9 символа + какой-то запасец. Если вы в своем приборе не делаете какую-либо паузу после приема, а тут же пытаетесь гнать ответ в линию, то возникает коллизия, при которой пакет портится. Сделайте в своей реализации протокола два перестраиваемых тайм-аута.
1) задержка на выдачу ответа, после приема
2) задержка на удержание драйвера в состоянии передачи.
Вторая задержка бывает полезна если протокол RTU-ный.