sanyok_amd Posted September 9, 2013 Share Posted September 9, 2013 Здравствуйте, какое оборудование позволит связать сервер, работающий по двухпроводному RS485, с тремя объектами, связанными между собой и серверной единой лвс? Напрашивается такой вариант: установить на каждом объекте преобразователь 485-ethernet и настроить на сервере виртуальные com-порты. Но не всё так просто. Приложение на сервере может работать только с одним com-портом. Подскажите, как решить вопрос "малой кровью", не хотелось бы ставить три сервера по одному на каждый объект. Спасибо. Link to comment
Agibalov Posted September 10, 2013 Share Posted September 10, 2013 Здравствуйте! Специально для такого случая, в драйвере NPort предусмотрена настройка COM Grouping, когда несколько NPort соответствуют только одному COM-порту на компьютере. При этом, данные, которые компьютер отправляет в COM-порт, отправляются на все NPort, а данные, которые попадают в последовательный порт одного из NPort, отправляются только на компьютер. Link to comment
sanyok_amd Posted September 10, 2013 Author Share Posted September 10, 2013 Здравствуйте! Специально для такого случая, в драйвере NPort предусмотрена настройка COM Grouping, когда несколько NPort соответствуют только одному COM-порту на компьютере. При этом, данные, которые компьютер отправляет в COM-порт, отправляются на все NPort, а данные, которые попадают в последовательный порт одного из NPort, отправляются только на компьютер. То есть если я поставлю три преобразователя, скажем Nport 5150, то я смогу их всех привязать к одному виртуальному COM-порту? Если это так, то это отличная новость! Link to comment
Komantsev Posted September 16, 2013 Share Posted September 16, 2013 Добрый день! Именно так! До 32 устройств NPort на одном виртуальном COM-порте Link to comment
sanyok_amd Posted September 16, 2013 Author Share Posted September 16, 2013 Спасибо большое, будем пробовать! Link to comment
Starkite Posted September 17, 2013 Share Posted September 17, 2013 (edited) Разве устройства с двусторонним обменом не будут мешаться друг-другу на сгруппированных портах? Вот например несколько телефонных станций, и каждой надо управлять по отдельности, как можно разделить команды и ответы между ними? Или другой пример, те же три телефонные станции, с которых снимается лог звонков по СОМ-портам. Допустим, меня устраивает, что все логи пишутся в один файл, но если две станции одновременно начнут скидывать лог - не перемешаются ли их данные? Допустим, станция передает строку единым потоком, смешаются ли потоки, или второй поток станет приниматься только когда первый завершится? ---- Практика показала, что в случае с логизацией данные идут в куче не вышел фокус... Edited September 17, 2013 by Starkite Link to comment
Komantsev Posted September 18, 2013 Share Posted September 18, 2013 Добрый день! Спасибо за грамотное замечание! Вы правы на 100%. Такой режим группировки портов призван, по сути, эмулировать шину RS-485. Если есть несколько приборов, которые надо опрашивать по очереди, и эти приборы адресуемы (т.е. прибор будет отвечать только на "свой" запрос и будет игнорировать "чужие"), то вариант группировки портов иногда очень удобен. Если же NPort использовать для консолного управления оборудованием, снятия лог-файлов с АТС и прочее, то это, конечно, плохой вариант. Ещё раз спасибо за комментарий! Link to comment
sanyok_amd Posted September 24, 2013 Author Share Posted September 24, 2013 Подключил два контроллера к двум преобразователям nport 5150, которые объединены в единый com порт. В программе, управляющей работой этих контроллеров, копятся очереди команд и через некоторое время работа приложения останавливается с ошибкой (System. Out of memory exception). Какие параметры следует изменить в настройках nport или это не поможет? ps В течение нескольких минут после запуска приложние съедает всю свободную оперативную память (около 1,7Гб) и вываливается ошибка переполнения памяти, Если подключить оба контроллера к одному nport 5150, то приложение работает идеально, забирая около 50мб опер. памяти. Куда копать? Link to comment
Komantsev Posted September 24, 2013 Share Posted September 24, 2013 Здравствуйте, Судя по всему, проблема не в настройках NPort (раз уж по одному устройства работают), а в утилите NPort Administrator. Какая у Вас версия утилиты установлена? Попробуйте последнюю версию (высылаю вложением) version.txt Npadm_Setup_Ver1.19.5_Build_13031911.zip Link to comment
sanyok_amd Posted September 25, 2013 Author Share Posted September 25, 2013 Спасибо большое, похоже, что вопрос решился с новой версией Npadmin. Проводим тестирование на стабильность работы. Link to comment
Komantsev Posted September 25, 2013 Share Posted September 25, 2013 Спасибо за новости! Будет что не так - обращайтесь! Link to comment
Starkite Posted September 26, 2013 Share Posted September 26, 2013 О! Вопрос: Можно реализовать такую вещь, как "револьверный опрос" сгруппированных портов? Что имеется в виду: Программа должна открывать сгруппированные порты по одному, выкачивать из них накопленные данные, закрывать порт по некоторому таймауту и открывать следующий. В частности такая возможность пригодится в моем случае - снятие логов с нескольких однотипных АТС. Каждая из них имеет свой буфер, хранящий по 30-50 записей. При открытии порта все накопленные записи скидываются одним потоком. После получения плотного потока данных, если за заданное время (в моем случае достаточно секунд 5) не передано ни одного бита - порт можно закрыть (буфер АТС пуст) и перейти к следующему. Характерная особенность этого процесса в том, что при снятии логов на АТС не передается никакой информации, порты работают только на прием. И еще вопрос: Можно ли создать настройку, обратную группировке портов? То есть, что бы один физический порт на устройстве отображался в два виртуальных порта на компе. Применение: на работающей (круглосуточно) системе логизации требуется сменить оборудование и ПО, собирающее логи. Не все сразу можно поменять, а потеря части логов нежелательна. Если данные будут приходить одновременно на два порта, то на одном будет продолжать работать действующая система, а на другом будет отлаживаться новая. Как вариант - виртуальные порты могут находиться на разных компьютерах. Как вариант - один порт "мастер", работающий на прием/передачу, а другой "слейв" - только на прием. Link to comment
Timoshuk Posted September 27, 2013 Share Posted September 27, 2013 Можно реализовать такую вещь, как "револьверный опрос" сгруппированных портов? Что имеется в виду: Программа должна открывать сгруппированные порты по одному, выкачивать из них накопленные данные, закрывать порт по некоторому таймауту и открывать следующий. В частности такая возможность пригодится в моем случае - снятие логов с нескольких однотипных АТС. Каждая из них имеет свой буфер, хранящий по 30-50 записей. При открытии порта все накопленные записи скидываются одним потоком. После получения плотного потока данных, если за заданное время (в моем случае достаточно секунд 5) не передано ни одного бита - порт можно закрыть (буфер АТС пуст) и перейти к следующему. Характерная особенность этого процесса в том, что при снятии логов на АТС не передается никакой информации, порты работают только на прием. Здравствуйте! "Револьверный опрос" организовать с помощью утилит Moxa не получится. Могу подсказать утилиту, которая позволит считывать данные из портов NPort по TCP - VSPE. Она как раз подходит для работы только на прием, если, например, АТС выдают свои логи в порт по расписанию. Для этого порты NPort необходимо перевести в режим TCP Server (в данном примере, можно настроить и в режиме TCP Client). Далее в VSPE необходимо добавить виртуальное устройство Bridge. Оно позволяет связать два источника данных, такие как файл, COM-порт, TCP Server и TCP Client. В Вашем случае нужны файл и TCP Client. В настройках файла необходимо указать расположение текстового файла в поле Output path (поле Input path можно оставить пустым), а в настройках TCP Client указать IP адрес NPort и порт подключения. Виртуальные устройства Bridge могут быть созданы для каждой АТС в отдельности, таким образом логи каждой АТС будут писаться в отдельный файл. Если необходимо предварительно на АТС отправлять запрос, то можно написать простой lua скрипт, правда при этом немного меняется схема подключения (добавляется промежуточный COM-порт, из которого уже пишутся данные в файл). Можно ли создать настройку, обратную группировке портов? То есть, что бы один физический порт на устройстве отображался в два виртуальных порта на компе. Применение: на работающей (круглосуточно) системе логизации требуется сменить оборудование и ПО, собирающее логи. Не все сразу можно поменять, а потеря части логов нежелательна. Если данные будут приходить одновременно на два порта, то на одном будет продолжать работать действующая система, а на другом будет отлаживаться новая. Как вариант - виртуальные порты могут находиться на разных компьютерах. Как вариант - один порт "мастер", работающий на прием/передачу, а другой "слейв" - только на прием. Да, можно. Для этого необходимо увеличить на NPort значение параметра Max Connection (по умолчанию 1). Однако утилиты NPort имеют некоторые ограничения - для случая одновременного подключения с разных компьютеров все замечательно, а вот создать 2 виртуальных порта, соответствующих одному и тому же порту NPort не выйдет. Можно, конечно, создать 1 порт Administrator, а 2-й Driver Manager. А можно воспользоваться все той же VSPE. Она позовляет создать виртуальный порт (устройство Connector), а затем связать его с NPort через виртуальное устройство TCP Client (с возможностью установки только на прием или только на передачу и активацией дополнительного скрипта). Таким образом с одного компьютера можно будет работать с портом NPort одновременно через 4 или 8 виртуальных COM-портов (NPort поддерживают до 8 TCP сессий на порт в зависимости от модели). Так как это утилита стороннего производителя и мы ей пользуемся только при тестировании, то мы не даем никаких гарантий ее отказоусточивости. Для работы всех виртуальных устройств VSPE необходимо держать утилиту постоянно включенной (она сворачивается в трей). Также настройки можно сохранить в файл и загрузить его при перезапуске программы. Link to comment
sanyok_amd Posted October 1, 2013 Author Share Posted October 1, 2013 Спасибо за новости! Будет что не так - обращайтесь! Все эти дни занимался тестированием стабильности работы системы. К сожалению, у меня не получилось получить стабильную работу хотя бы в течение суток. Перебор и подгон различных параметров передачи не помог. Обычно через час-два работы (реже через 5-10 часов) начинает падать rs485, устройства отваливаются. Периодически они подключаются на несколько секунд и снова отваливаются. Сервер должен управлять контроллерами в режиме реального времени и обмен данными происходит практически постоянно, поэтому частое и длительное падение сети недопустимо. PS RS485 в контроллерах на MAX1480BEPI Link to comment
Komantsev Posted October 15, 2013 Share Posted October 15, 2013 Здравствуйте! Извините, что поздно. Уточните, пожалуйста, по нестабильности работы. Раньше шла речь о переполнении памяти, сейчас же сбои в передаче данных. Я правильно понимаю, что предыдущая проблема решена? Что именно происходит теперь? Что значит "устройства отваливаются"? Становится недоступен COM-порт или приходят некорректные данные? Link to comment
sanyok_amd Posted October 18, 2013 Author Share Posted October 18, 2013 Здравствуйте. COM-порт остаётся доступным, судя по логам, к серверу приходят команды с побайтовым смещением внутри посылки. Скажем сервер передаёт одному устройству команду: А2 00 15 00 00 00 00, а обратно получает из сети что-то вроде эха со смещением: А2 00 00 15 00 00 00. Через некоторое время индикаторы TX на контроллерах перестают моргать и приложение на сервере сообщает, что контроллеры не в сети ( отвалились). Проблема с переполнением памяти решена, это верно. 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