MAG Posted February 7, 2012 Share Posted February 7, 2012 Для увеличения количества COM-портов контроллера планируется использовать NPort IA-5250. Программное обеспечение контроллера предлагает только режим Modbus over UDP. Вижу, что запрос от контроллера на COM-порт пришёл, устройство ответило, а контроллер от NPort посылку не получает - выдаёт тайм-аут готовности. Проверил связь с NPort от компьютера с помощью программы Modbus Poll: При задании в программе связи Modbus over TCP (NPort - в режиме TCP Server Mode) обмен идёт нормально: вижу код отправленный и код полученный. При задании в программе режима Modbus over UDP (NPort - в режиме UDP Mode) ответа не получаю. Что-то надо изменить в настройках? Link to comment
Guest Stepashkin Posted February 8, 2012 Share Posted February 8, 2012 Добрый день! Прежде чем советовать, что нужно изменить в настройках, хотелось бы видеть эти самые настройки. Также непонятно, как построена схема опроса. Контроллер выступает в качестве Master-устройства? Опрашиваемое устройство тоже поддерживает Modbus over UDP или только Modbus/RTU? Поясните, пожалуйста. Link to comment
MAG Posted February 9, 2012 Author Share Posted February 9, 2012 Добрый день. На время забудем про контроллер. Есть компьютер с установленной программой Modbus Poll. По сети ETHERNET он связан с NPort. К COM-порту NPort по RS-485 подключено устройство с Modbus-протоколом. Реализовывал 2 режима работы NPort: 1. UDP Mode. При этом в Modbus Poll задавал связь Modbus RTU over UDP/IP. Устройство отвечает на запросы, приходящие с COM-порта (подключил осциллограф), но до компьютера ответы не доходят: программа выдаёт ошибку тайм-аута. 2. TCP Server Mode. При этом в Modbus Poll задавал связь Modbus RTU over TCP/IP. В этом режиме компьютер получает ответы, идёт полноценный обмен информацией. Почему не приходят ответы в первом случае? Link to comment
MAG Posted February 10, 2012 Author Share Posted February 10, 2012 Прикладываю скрины обоих режимов. MOXA1.doc Link to comment
Komantsev Posted February 15, 2012 Share Posted February 15, 2012 Добрый день, Похоже, с настройками всё хорошо. Тут вопрос в Modbus Poll, мне кажется. Вы ведь через Modbus Poll открываете соединение "Modbus RTU/ASCII over UDP/IP" (как на картинке)? Там можно задать IP-адрес NPort (в Вашем случае - 192.168.127.254) и номер порта для опроса (в Вашем случае - 4001). А вот по какому порту слушает приемные данные Modpoll - это я, честно говоря, не знаю. Вы уверены, что тоже 4001? Я не нашел, где это задается. У меня мало опыта общения с Modpoll, и я сходу не смог найти информацию о входящем порте. В протоколе TCP всё просто: логическое соединение устанавливается, и данные из NPort возвращаются в Modpoll в тот же сокет, откуда стартовал запрос. А в UDP может быть всё по-другому. Link to comment
MAG Posted February 17, 2012 Author Share Posted February 17, 2012 Вы правы, всё дело в несогласованности портов при приёме ответной посылки. Такая же история происходит и при опросе от контроллера. Вопрос - как узнать этот destination адрес, чтобы прописать его в настройках NPort. Мы забыли, что в запросе, который посылает и контроллер и компьютер с программой ModPoll есть не только порт назначения, но и порт источника. Логично было бы отвечать по этому адресу источника. Провёл эксперимент. Запустил программу WireShark, которая мне позволила посмотреть содержимое посылок по IP. Подсмотрел там порт источника и прописал его в настройках как destination port. Порт оказался совсем дурацкий: 55719. И обмен пошёл. Но если я перезапускаю программу ModPoll (разрываю связь и вновь восстанавливаю), то этот порт будет уже другой. А, значит обмена вновь нет. Логично было бы в настройках NPort ввести режим, когда destination port задаётся не фиксированным, а берётся из посылки-запроса. Не знаю, почему "прыгает" порт в запросе, и, наверное, тоже самое происходит с контроллером. Так что пытаться найти и прописать этот destination port дело бесполезное. Вывод печальный: NPort не поддержиает стандартный обмен по UDP. Может быть вы можете предложить альтернативные варианты? Задача простая: у контроллера есть Ethenet порт, спомощью которого надо опросить, скажем, 8 устройств по COM-портам. Устройства умеют "говорить" только по протоколу Modbus RTU. Контроллер может работать в следующих режимах: Modbus/TCP, Modbus RTU over UDP. Спасибо за внимание. Link to comment
Komantsev Posted February 19, 2012 Share Posted February 19, 2012 Добрый день! Вывод печальный: NPort не поддержиает стандартный обмен по UDP. Нет, как раз-таки наоборот. NPort работает по UDP. Как раз в самом классическом понимании этого протокола. Отправлять ответ на тот порт, откуда пришел запрос, это уже частный случай. Какой-то "UDP а-ля TCP" получается. В самом NPort, как раз, при работе в UDP-режиме задаются порты как для приема, так и для передачи данных. Почему порты для приема в некоторых программах не задаются, вот это вопрос! Ну а почему не использовать в Вашей задаче Modbus over TCP, если он корректно работает? А вообще, если передавать данные из Modbus RTU-счетчиков, то MOXA для этого выпускает преобразователи серии MGate. Они конвертируют данные из формата Modbus RTU в крассический Modbus/TCP, корректно обрабатывают требуемые задержки Modbus-протокола. Link to comment
MAG Posted February 20, 2012 Author Share Posted February 20, 2012 Здравствуйте. Хотелось бы разобраться, как формируются порты source в протоколах UDP, какие возможны варианты. Не могли бы дать ссылку. Обратил внимание, что контроллер перебирает порты source в своих запросах, если нет ответа. Появилась надежда наладить связь... К программе ModPoll обратился как к инструменту, чтобы понять, почему нет связи с контроллером. Контроллер поддерживает только два, как считается на www.modbus.org - стандартных соединения: Modbus/TCP и Modbus RTU over UDP. Так что выбор у меня ограничен. Посмотрел на предложенные вами преобразователи MGate. Там есть для расширенного диапазона температур, которые нам подошли бы: MGate MB3270I-T и MGate MB3270-T. К сожалению, не нашёл описания на них. В чём между ними разница? P.S. Не могли бы дать образец на тестирование? Link to comment
Komantsev Posted February 21, 2012 Share Posted February 21, 2012 Добрый день, Номер исходящего порта UDP вобщем-то назначается случайно. Какого-то стандартизованного метода назначения портов нет. По поводу устройств MGate - модели с буквой "i" имеют гальваническую изоляцию 2 КВ по последовательным портам. Если по порту плймается какая-то высоковольтная помеха, то она не передастся на остальное оборудование. Насчет тестирования - да, конечно! Личным собщением я описал, что надо для получения на тест. Link to comment
MAG Posted February 22, 2012 Author Share Posted February 22, 2012 С наступающим праздником! Личного сообщения не увидел. Если можно, вышлите и описание на MGate. Не факт, что и он подойдёт. Link to comment
Komantsev Posted February 23, 2012 Share Posted February 23, 2012 C праздником!!!! На MGate есть описание только английское, к сожалению. Можете скачать здесь. А личное сообщение я продублировал Вам на почту. К сожалению, могут проявляться какие-то проблемы на форуме, в т.ч. с личными сообщениями. Старая версия форума стала уязвима для спаммеров, а после апгрейда до новой версии выяснилось, что движок форума поменялся кардинальным образом, и наши программисты адаптируют сервер под новый вариант форума. Так что пока возможны какие-то сбои. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now