реклама на сайте
подробности

 
 
> Преобразователь 232-485 ADAM-4520, Непонятки в работе
EugeNNe
сообщение Oct 2 2008, 09:18
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 424
Регистрация: 6-03-06
Из: Н.Новгород
Пользователь №: 14 997



Есть железяка с интерфейсом 485 на одном конце, линия длинной порядка 100м, на другом конце комп сопряжённый с 485 линией посредством преобразователя ADAM-4520. Всё работало замечательно пока работали на скоростях более 19200 бод. Но потребовалось перейти на скорость 4800 и вот тута началось. Моя железка изначально настоена на приём, получаю я комманду из линии, переключаюсь на передачу и отсылаю подтверждение приёма данных. На другом конце в комп приходит какая то ересь. В линии до АДАМА данные корректны, а вот после него уже нет. Заметим, что АДАМ автоматом определяет направление передачи данных. В конце концов выяснилось, что нужно сделать задержку порядка 50-500 мкс (на разных линиях по разному ) после того как контроллер переключает драйвера 485-го на передачу и только потом выдавать данные в линию. Подозреваю что эта задержка нужна для того что бы АДАМ определил направление прередачи данных. Но данный эффект пропадает напрочь если скорость выше 9600 бод. Чем скорость ниже тем дольше нужно делать задерку. И почему данная задержка зависит от линии? Две идентичные линии, одинаковой длинны, но на одной задержку приходится делать 50мкс, а на другой 500мкс. Смотрел осцилоскопом, качество сигнала одинаково в обеих линиях. Может кто сталкивался с чем нибудь подобным? Непонятно мне всё это...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Oct 2 2008, 12:15
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(BigBolt @ Oct 2 2008, 15:18) *
В конце концов выяснилось, что нужно сделать задержку порядка 50-500 мкс (на разных линиях по разному ) после того как контроллер переключает драйвера 485-го на передачу и только потом выдавать данные в линию. Подозреваю что эта задержка нужна для того что бы АДАМ определил направление прередачи данных. Но данный эффект пропадает напрочь если скорость выше 9600 бод. Чем скорость ниже тем дольше нужно делать задерку.
Догадки у вас в правильном направлении идут. Раз преобразователь не зависит от протокола, а лишь от формата символа, то скорее всего у него унутре стоит "переключалка" с перезапуском, завязанная на длительность передачи символа. Пришел перепад уровня 1->0 "переключалка" включила выходной драйвер и держит его в режиме передачи как минимум на время передачи одного символа со всеми битами четности и стоп-битами. И такая реакция будет на любой перепад 1->0, т.е. перезапуск на каждый переход. Поэтому минимальное время удержания будет 1 символ + какой-то запасец, определяемый задумкой авторов, на выбранной с помощью свитчей скорости передачи и количества бит, а максимальное 1 + 0,8/0,9 символа + какой-то запасец. Если вы в своем приборе не делаете какую-либо паузу после приема, а тут же пытаетесь гнать ответ в линию, то возникает коллизия, при которой пакет портится. Сделайте в своей реализации протокола два перестраиваемых тайм-аута.
1) задержка на выдачу ответа, после приема
2) задержка на удержание драйвера в состоянии передачи.
Вторая задержка бывает полезна если протокол RTU-ный.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 10:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01583 секунд с 7
ELECTRONIX ©2004-2016