Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Контроль потери соединения мс W3150+ с ПЭВМ
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам
Vital33
Подскащите как решить проблему контроля потери соединения мс 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+.

Подскажите , каким образом можно определить факт потери соединения !!!!
Itch
icmp ping?
Vital33
Вопрос определения потери соединения модуля Wiznet NM7010B+(реализованном на базе W3150+) с ПЭВМ был решен следующим образом: - находясь в состоянии SOCK_ESTABLISHED выдавалась команда SEND_KEEP. Анализ прерывания и контроль бита TIMEOUT производился с учетом того что микросхема W3150+ находится в состоянии SOCK_ESTABLISHED. В результате проведенной работы было определено, что прерывание в регистре IR и бит TIMEOUT в регистре Sn_IR взводятся когда микросхема W3150+ переходит в состояние SOCK_LISTEN. Зная это, - вопрос потери соединения был решен.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.