snpp7715 Posted May 25, 2009 Share Posted May 25, 2009 Здравствуйте! К COM – порту преобразователя интерфейса подключен прибор, эпизодически выдающий строки по 80 символов, плюс символы возврата каретки и новой строки. Обмен осуществляется на скорости 1200 бод. MOXA NPort 5150 работает в режиме TCP Server Mode. TCP Alive Check Timeout = 7 минут, Inactivity Timeout = 0. Прошивка Ver3.3_Build_08061714. Связь осуществляется через IP Serial Library. Программа устанавливает соединение, настраивает скорость и режим работы порта, задает тайм-аут чтения, включает сигнал DTR. Затем, каждые 4 секунды, в отдельном потоке, вызывается функция чтения с 2-х секундным тайм-аутом и функция получения статуса ввода - вывода (nsio_data_status). Каждые 4-5 минут возникают ошибки -202 и реже -203 при операции получения статуса ввода - вывода, и иногда при чтении из порта. При этом, подключенный к преобразователю прибор фиксирует кратковременное пропадание сигнала DTR. Через несколько секунд соединение восстанавливается, но если в этот момент передавались данные, то они теряются (возможно из за разрешенного FIFO). Скорость канал Ethernet как правило устанавливалась 10 Мбит полу-дуплекс. В экспериментах использовалось два экземпляра MOXA NPort 5150, различное коммуникационное оборудование, в том числе и прямое подключение к сетевой плате компьютера – результат одинаковый. Иногда, правда, при круглосуточном прогоне, наблюдалось «аномальное» поведение – несколько часов бесперебойной работы, затем снова возникали ошибки с обычной периодичностью. В чем может быть причина такого поведения? Существуют ли рекомендованные методики работы с удаленным портом? С уважением, Дмитрий. P.S. На форуме узнал, что существует документация на русском языке, можно ли ее выслать на адрес eberlain@saes.ru? Link to comment
Komantsev Posted May 26, 2009 Share Posted May 26, 2009 Здравствуйте! К COM – порту преобразователя интерфейса подключен прибор, эпизодически выдающий строки по 80 символов, плюс символы возврата каретки и новой строки. Обмен осуществляется на скорости 1200 бод. MOXA NPort 5150 работает в режиме TCP Server Mode. TCP Alive Check Timeout = 7 минут, Inactivity Timeout = 0. Прошивка Ver3.3_Build_08061714. Связь осуществляется через IP Serial Library. Программа устанавливает соединение, настраивает скорость и режим работы порта, задает тайм-аут чтения, включает сигнал DTR. Затем, каждые 4 секунды, в отдельном потоке, вызывается функция чтения с 2-х секундным тайм-аутом и функция получения статуса ввода - вывода (nsio_data_status). Каждые 4-5 минут возникают ошибки -202 и реже -203 при операции получения статуса ввода - вывода, и иногда при чтении из порта. При этом, подключенный к преобразователю прибор фиксирует кратковременное пропадание сигнала DTR. Через несколько секунд соединение восстанавливается, но если в этот момент передавались данные, то они теряются (возможно из за разрешенного FIFO). Скорость канал Ethernet как правило устанавливалась 10 Мбит полу-дуплекс. В экспериментах использовалось два экземпляра MOXA NPort 5150, различное коммуникационное оборудование, в том числе и прямое подключение к сетевой плате компьютера – результат одинаковый. Иногда, правда, при круглосуточном прогоне, наблюдалось «аномальное» поведение – несколько часов бесперебойной работы, затем снова возникали ошибки с обычной периодичностью. В чем может быть причина такого поведения? Существуют ли рекомендованные методики работы с удаленным портом? С уважением, Дмитрий. P.S. На форуме узнал, что существует документация на русском языке, можно ли ее выслать на адрес eberlain@saes.ru? Добрый день, Дмитрий, Инструкцию на NPort выслал. Но это инструкция по настройке, а не по работе с программными библиотеками. Возвращаясь к Вашей проблеме - по описанию сложно понять, где именно происходит сбой: в самом NPort или в программном обеспечении. Есть ли возможность попробовать опросить прибор не софтом, разработанным с участием библиотеки PComm, а через виртуальный COM-порт? Т.е. настроить NPort в режим Real COM Mode, установить драйвер виртуального COM-порта и исключить влияние софта собственной разработки. Изменится ли поведение системы? Link to comment
snpp7715 Posted May 27, 2009 Author Share Posted May 27, 2009 Спасибо за ответ! Проблему можно сказать удалось обойти, не разобравшись в причинах, следующим образом. Теперь вызов nsio_data_status производится только при условии, если непосредственно перед этим, данные были реально получены с помощью функции nsio_read. Никаких ошибок пока не выявилось, правда и нагрузочного тестирования еще не проводилось. В предыдущем варианте вызов функции получения статуса ввода-вывода выполнялся всегда, даже если операция чтения возвращала нулевой результат, т.е. и при отсутствии данных. Предполагалось, что вызов функции nsio_data_status в отличии nsio_read всегда приводит к реальному взаимодействие по IP протоколу с преобразователем интерфейса, что позволит оперативно выявлять проблемы коммуникации. Просмотрев анализатором протоколов трафик между MOXA NPort 5150 и библиотекой IP Serial Library обнаружил, что при вызове функции чтения так же производится обмен и с 966 портом управления. Поэтому вариант с вызовом nsio_read без вызова nsio_data_status при отсутствии данных пока вполне устраивает. Как позволит время, постараюсь провести эксперимент с виртуальным СОМ портом и сообщить о результате. С уважением, Дмитрий. Link to comment
Komantsev Posted May 27, 2009 Share Posted May 27, 2009 Спасибо за ответ! Проблему можно сказать удалось обойти, не разобравшись в причинах, следующим образом. Теперь вызов nsio_data_status производится только при условии, если непосредственно перед этим, данные были реально получены с помощью функции nsio_read. Никаких ошибок пока не выявилось, правда и нагрузочного тестирования еще не проводилось. В предыдущем варианте вызов функции получения статуса ввода-вывода выполнялся всегда, даже если операция чтения возвращала нулевой результат, т.е. и при отсутствии данных. Предполагалось, что вызов функции nsio_data_status в отличии nsio_read всегда приводит к реальному взаимодействие по IP протоколу с преобразователем интерфейса, что позволит оперативно выявлять проблемы коммуникации. Просмотрев анализатором протоколов трафик между MOXA NPort 5150 и библиотекой IP Serial Library обнаружил, что при вызове функции чтения так же производится обмен и с 966 портом управления. Поэтому вариант с вызовом nsio_read без вызова nsio_data_status при отсутствии данных пока вполне устраивает. Как позволит время, постараюсь провести эксперимент с виртуальным СОМ портом и сообщить о результате. С уважением, Дмитрий. Дмитрий, На самом деле, работа NPort устроена следующим образом: по порту 950 передаются данные в "прозрачном виде" по порту 966 передаются все управляющие команды (изменение формата данных, управление сигналами RTS/DTR и проч.) поэтому в обычном рабочем режиме, где требуется исключительно чтение/запись данных, можно использовать только порт 950. Более того, поскольку данные по нему передаются в прозрачном виде, даже нет необходимости использовать библиотеку IPSerial, а можно просто открыть сокет по 950 порту и читать/писать данные. В любом случае, ждем от Вас результатов, если будут. 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