Взаимодействие с ADAM-4000 по RS-232 проблемы опроса |
Ответить |
Автор | |
Действительный член Присоединился: 01 Июнь 2006 Категория: Russian Federation Online Status: Offline Публикации: 464 |
Опубликовано: 01 Июнь 2006 09:47 |
При написании программы взаимодействия с модулями распределенного УСО Advantech ADAM-4000 из CoDeSys RTE через COM-порт RS-232 (конвертор RS-232/RS-485) возникла следующая проблема:
При опросе одного модуля даже при наличии нескольких в сети RS-485 все отлично работает. Как только пытаюсь обращаться к нескольким модулям возникает проблема выраженная в смещении данных на один модуль, то есть первый опрашиваемый модуль вообще не отвечает (функция SysComRead возвращает 0 байт по завершении таймаута) второй модуль получает данные первого модуля. Возможны различные вариации ситуации, результат один нарушение обмена при попытке отклонения обмена point-to-point. Пробывал устанавливать задержки между обращениями к модулям но эффекта это не возымело. Предпологаю что проблема в RS-485 (служебные команды или что то в этом роде). Опрос модуля реализован в виде FB на ST . Буду признателен за подсказки. С уважением Dismay! |
|
Действительный член Присоединился: 29 Январь 2004 Категория: Russian Federation Online Status: Offline Публикации: 293 |
|
Что за конвертер? С автоматическим или ручным (по сигналам RTS или DTR) переключением прием/передача? Если передача закончена, но передатчик еще не отключился, то могут пропадать фрагменты или целые сообщения. Подключите еще один конвертер к другому компьютеру или Com порту, включите его жестко на прием и посмотрите любой терминальной программой, что реально происходит в сети.
|
|
Igor Petrov
|
|
Действительный член Присоединился: 01 Июнь 2006 Категория: Russian Federation Online Status: Offline Публикации: 464 |
|
Конвертор ADVANTECH ADAM-4520 использую библиотеку CoDeSys SysLibCom.lib в общем то подробностей ее реализации я незнаю конечно. Насчет второго конвертора это мысль попробую обязательно пока есть правда только один но думаю что найду... Анализировал команды OPC серверов терминалом через нуль модемный кабель ничего крименального не увидел теже наборы команд ничего лишнего, расстроило что для аналоговых модулей используеться поканальный режим доступа и запросы OPC-клиентов напрямую транслируються модулям, что просто не может не приводить к провалам производительности в многопользовательской среде, это неправилльно.
|
|
Действительный член Присоединился: 01 Июнь 2006 Категория: Russian Federation Online Status: Offline Публикации: 464 |
|
Подключил таки второй конвертор, в общем то все очень красиво выглядит, получаеться что функция SysComRead
по какой то причине принимает смещенный массив данных в терминале все как и должно быть играю задержками сейчас поставил 35мс на запись и столько же на чтение вроде работает но затыкаеться иногда и начинает читать ерунду #01 пишем запрос >>+000.63+000.42+000.46+000.46+000.46+000.67-000.02+000.46 получаем ответ #02 >>+250.02+032.31+041.33+001.70+017.07+000.84+000.31+000.29 #01 >>+000.63+000.42+000.46+000.46+000.46+000.67+000.04+000.46 |
|
Действительный член Присоединился: 01 Июнь 2006 Категория: Russian Federation Online Status: Offline Публикации: 464 |
|
Все таки дело похоже было в таймингах подобрал рабочий вариант и немного загрубил вроде работает все попробую нарастить численность, что то до второго конвертора сам не дошел так что примного благодарен
|
|
Ответить |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |