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

 
 
 
Reply to this topicStart new topic
> Преобразователь 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
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
EugeNNe
сообщение Oct 2 2008, 12:54
Сообщение #3


Местный
***

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



Вместо АДАМОВ воткнул в комп плату PCI-485 всё от того же Advantech. Всё замечательно работает безо всяких задержек на скорости 4800 и менее. Видно такая ерунда с задержками особенность данного АДАМА 4520. Меня больше всего интересует почему задержка разная на разных линиях? Протокол можно скоректировать, но величина задержки различается на порядок...Что то тут не так...
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Oct 2 2008, 13:02
Сообщение #4


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(BigBolt @ Oct 2 2008, 16:54) *
Вместо АДАМОВ воткнул в комп плату PCI-485 всё от того же Advantech. Всё замечательно работает безо всяких задержек на скорости 4800 и менее.

Не надо путать хрен с пальцем.
Там направление железно драйвером переключается.
В преобразователях 232-485 то же самое можно реализовать, дёргая ногой DTR (по-моему)
А если распознавание автоматическое - тогда только анализ потока.
Про этот случай rezident вам расписал ситуацию.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 2 2008, 13:13
Сообщение #5


Гуру
******

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



Цитата(MrYuran @ Oct 2 2008, 19:02) *
В преобразователях 232-485 то же самое можно реализовать, дёргая ногой DTR (по-моему)
У этой модели RTS используется. Картинка из мануала.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Oct 2 2008, 13:21
Сообщение #6


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(rezident @ Oct 2 2008, 17:13) *
У этой модели RTS используется.

Видать, не по назначению используется.
Вообще, наверно стоит мануал почитать.

Цитата
Baudrate (bps): 1200, 2400, 4800, 9600, 19.2 k, 38.4 k, 57.6 k, 115.2 k, RTS control and RS-422 mode (switchable

Вот что нужно, чтобы RTS-ом управлять


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
EugeNNe
сообщение Oct 2 2008, 13:35
Сообщение #7


Местный
***

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



Вот мануал смотрю: тама написано -
Интелектуальный контроль RS485
АДАМ 4520 автоматически чувствует направление потока данных и автоматически переключает направление передачи.
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 2 2008, 13:38
Сообщение #8


Гуру
******

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



Цитата(MrYuran @ Oct 2 2008, 19:21) *
Вот что нужно, чтобы RTS-ом управлять
Если это вопрос, то ответ на 3 странице мануала. Только вот управлять направлением передачи с помощью RTS под Виндой это геморрой еще тот sad.gif
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Oct 2 2008, 13:49
Сообщение #9


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Короче: если хотите, чтобы направлением потока управляло приложение, надо ставить движок на контроль от RTS.
Если автоматом - тогда выставить нужную скорость и терпеть задержку переключения на длину символа.
Я так понимаю.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th June 2025 - 21:24
Рейтинг@Mail.ru


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