![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 30.03.2010
Сообщений: 4
|
![]()
Подскажите как решить проблему контроля потери соединения мс Wiznet W3150+ с ПЭВМ ?
В настоящее время наше предприятие использует модуль Wiznet NM7010B+ для осуществления удаленного мониторинга оборудования. Для осуществления мониторинга, оборудование подключается к ПЭВМ по TCP/IP. ПЭВМ ----------> Хаб-----//----->Хаб-----------> Оборудование с модулем NM7010B+ ^ | место разрыва TCP/IP соединения ПЭВМ настраивается в качестве TCP-клиента, оборудование (плата) с модулем NM7010B+ - в качестве TCP-сервера. Модуль NM7010B+ выполнен на базе микросхемы W3150A+. Суть проблемы состоит в невозможности определить факт потери соединения (физического разрыва на участке, указанном на рисунке ) средствами модуля NM7010B+ . Если установить соединение по TCP/IP компьютер <> NM7010B+ и разорвать в указанном на рисунке месте, то и компьютер и модуль будут оставаться «в соединении» сколь угодно длительное время (по крайней мере более 8 часов). Т.е., факт разрыва не определяется ни компьютером, ни модулем NM7010B+. Со стороны ПО компьютера, решением является задание низкоуровневых операционных режимов для Socket посредством функция socket.IOControl со значениями: keepalivetime=3000; // определяет интервал между посылкой сообщений при пассивном состоянии канала. keepaliveinterval=500; // определяет интервал посылки сообщений, если ответ не получен. После применения этих параметров, разрыв соединения приводит к генерации ошибки сокета. Что, в свою очередь, может быть обработано программно и позволяет отследить факт разрыва соединения. Со стороны оборудования подобного решения найти не удалось. Мы попытались выполнить следующие действия: 1. После того как установлено соединение (между ПЭВМ и NM7010B+ ) и микросхема W3150A+ имеет состояние SOCK_ESTABLISHED , производим физический разрыв соединения, как показано на рисунке выше. Микросхема W3150A+ остается в состоянии SOCK_ESTABLISHED; 2. Записывается регистр RTR=0х07D0 (200мс) и RCR=5; 3 Записывается команда SEND_KEEP в регистр команд сокета Sn_CR и в течении 3 минут происходит ожидание установки бита TIMEOUT в «1» (при чтении регистра прерывания сокета Sn_IR). После истечения 3 минут бит TIMEOUT так и не взвелся, хотя должен был взвестись через 6 секунд. Таким образом данную последовательность действий мы не можем использовать для сброса состояния соединения блока с модулем NM7010B+. Подскажите , каким образом можно определить факт потери соединения !!!! |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
![]()
...сочувствую. обращались-ли вы собственно к разработчикам модуля? судя по структуре модуля Wiznet NM7010B, tcp стек обслуживается контроллером, а значит ситуацию нужно разруливать изменением (модификацией) прошивки.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 30.03.2010
Сообщений: 4
|
![]()
С этой проблемой мы обратились к поставщику этих модулей - ЭФО. Они осуществляют тех. поддержку по Wiznet. Пообещали связаться с производителем.
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
![]()
...лучше сами параллельно напишите производителю ...странная техподдержка у поставщика.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
![]() |
![]() |
![]() |
#5 |
Новичок
Джуниор
Регистрация: 30.03.2010
Сообщений: 4
|
![]()
Написать самим затруднительно, так как производитель корейская фирма
|
![]() |
![]() |
![]() |
#6 |
Новичок
Джуниор
Регистрация: 30.03.2010
Сообщений: 4
|
![]()
Вопрос определения потери соединения модуля Wiznet NM7010B+(реализованном на базе W3150+) с ПЭВМ был решен следующим образом: - находясь в состоянии SOCK_ESTABLISHED выдавалась команда SEND_KEEP. Анализ прерывания и контроль бита TIMEOUT производился с учетом того что микросхема W3150+ находится в состоянии SOCK_ESTABLISHED. В результате проведенной работы было определено, что прерывание в регистре IR и бит TIMEOUT в регистре Sn_IR взводятся когда микросхема W3150+ переходит в состояние SOCK_LISTEN. Зная это, - вопрос потери соединения был решен.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Избежать потери форматирования | HellMercenariess | Свободное общение | 1 | 26.11.2009 19:59 |
Indy. Определение потери связи с сервером | Pitonio | Работа с сетью в Delphi | 1 | 17.11.2009 10:57 |
Убрать точки без потери данных | king13 | Microsoft Office Excel | 4 | 07.10.2009 13:54 |
Копирование таблицы без потери форматирования | k1r1ch | Microsoft Office Excel | 3 | 09.07.2009 11:00 |
Можно ли отлавливать событие потери фокуса Control'ом | tolikman | Microsoft Office Excel | 2 | 09.01.2009 15:02 |