vas19 Posted February 9, 2011 Share Posted February 9, 2011 Проблема в следующем: Есть счетчики Landis с интерфейсом (7-E-1). К нему через преобразователь CL(токовая петля)-RS-232 подключена Moxa NPort 5210. Проброс данных осуществляется по локальной сети на сервер. На сервере стоит программа обмена для опроса этих счетчиков, которая выдает команды опроса в 8-N-1. Как не крутил с настройками NPort 5210 (Real-COM, TCP-Server) не хочет конвертировать посылаемую посылку с (8-N-1) в (7-E-1) в результате чего счетчик не понимает команду. 7-E-1 настраивал на Serial-интерфейсе NPort 5210. Такое впечатление, что NPort 5210 понимает только принимаемые данные с Serial-интерфейса согласно настроек (7-E-1). Пробовал вместо NPort 5210 подключить IP-модем(по GPRS) SPRUT M2M в режиме ТСР-сервера к счетчику с конвертором по RS-232 в режиме (7-E-1) - все работает (посылаемые команды 8-N-1 удачно конвертируются в 7-E-1) Подключаешь к ПК на прямую счетчик через конвертер, с той же программой обмена (команды опроса в 8-N-1), но интерфейс ПК настраиваешь на (7-E-1) - тоже все работает. Может я делаю что-то не так, либо как-то настроить проброс данных по-другому. Конечно не пробовал Pair Connection - но не знаю, а что это изменит. Заранее благодарен. Link to comment
Komantsev Posted February 10, 2011 Share Posted February 10, 2011 Добрый день, Да, описанный Вами эффект будет наблюдаться. Если Вы работаете с NPort в режиме RealCOM, то приоритет будет отдаваться тем параметрам COM-порта, с которыми Вы откроете порт (т.е. настройкам Вашей программы). Настройки самого NPort в данном случае будут проигнорированы. Чтобы это изменить, надо в настройках режима работы поставить (см. на рисунке): Max Connection = 2 Allow driver control = No (если настраиваете через утилиту NPort Administrator, то там всё аналогично) "Allow driver control" как раз и указывает, будет ли скорость задаваться драйвером или NPort'ом. При Max Connection = 1 настройки порта всегда будут задаваться драйвером. При Max Connection > 1 есть возможность выбора. Link to comment
vas19 Posted February 10, 2011 Author Share Posted February 10, 2011 Заработало только в данной схеме: В режиме Pair Connection (master-slave) Счетчик -- конвертер (CL-RS232) -- NPort---ethernet---NPort -- ПК(RS232) Если Serial-интерфейсы обоих Nport - настраивать на 7-E-1, и RS232 ПК на 7-E-1 не работает. Если Serial-интерфейсы обоих Nport - настроил на 8-N-1, а RS232 ПК на 7-E-1. Тогда получился проброс команд формата (8-N-1) в формат (7-E-1). Самое главное получилось, но хотелось бы реализовать на одном NPort`е. Link to comment
Komantsev Posted February 10, 2011 Share Posted February 10, 2011 Добрый день, А не получилось сделать так, как я предложил в предыдущем посте? А по "парному соединению" корректной будет следующая схема: Счетчик: 7-E-1 NPort 1 (ближе к счетчику): 7-E-1 NPort 2 (ближе к ПК): 8-N-1 ПК: 8-N-1 Тогда получится, что на каждом участке RS-232 у оборудования стоят одинаковые скорости. Link to comment
vas19 Posted February 10, 2011 Author Share Posted February 10, 2011 Пробовал и так и так, как Вы описывали. Не работает. Вот именно, как я описал схему - так работает. Формат команд (8-N-1) в формат (7-E-1) имелось в виду например запрос команда выдаваемая с ПК к счетчику - 2F 3F 37 33 31 31 33 32 37 32 21 0D 0A - /?73113272! - (8-N-1) команду которую должен получить сам счетчик - AF 3F B7 33 B1 B1 33 B2 B7 B2 21 8D 0A - /?73113272! - (7-E-1) где 73113272 - номер счетчика Либо NPort не корректно передает коды 0D 0A (возврат каретки и перевод каретки CR/LF), либо игнорируются при передачи на Serial-интерфейс NPort`а биты паритета. Link to comment
Komantsev Posted February 10, 2011 Share Posted February 10, 2011 Стойте, ничего не понял. команду которую должен получить сам счетчик - AF 3F B7 33 B1 B1 33 B2 B7 B2 21 8D 0A - /?73113272! - (7-E-1) Посмотрим, например, первый байт в двоичном коде: AF = 10101111 Получается 8 бит. Его же 7-битной посылкой не передать. Link to comment
vas19 Posted February 11, 2011 Author Share Posted February 11, 2011 Возможно я не так высказался. Имелось ввиду AF = 10101111, это 2F = 00101111 только с дополнительным битом (битом четности) в старшем разряде. 10101111 - формат данных с битом четности в интерфейсе RS-232 (|старт бит |бит0|бит1|бит2|бит3|бит4|бит5|бит6|бит7|бит четности|стоп. бит). Кстати, если NPort настроить (8-N-1) и RS-232 ПК (8-N-1) и посылать счетчика данную команду через терминалку - AF 3F B7 33 B1 B1 33 B2 B7 B2 21 8D 0A - то он отвечает, но тогда приходящие ответы уже не понимает программа на ПК. Link to comment
vas19 Posted February 11, 2011 Author Share Posted February 11, 2011 Извиняюсь, ошибся количеством битов данных (|старт бит |бит0|бит1|бит2|бит3|бит4|бит5|бит6|бит четности|стоп. бит) 1 1 1 1 0 1 0 1 или 10101111(перевернутое 11110101) = AF 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