Главная Техническая поддержка 15.06.2012 Устранение ошибки UDP recv() error. Сервер с двумя IP.
15.06.2012 Устранение ошибки UDP recv() error. Сервер с двумя IP.

Решение проблемы с UDP recv() error при работе 1С.

Исходные данные.

От пользователя пришло письмо с таким содержанием:

Установлена 1С БИТ СКУД с контролером Шелни Адемант 500.
Все работало, пока не было принято решение о переносе сервера
Предприятия 1С на другую машину. Со старой машины соединение
проходит на ура, и все необходимые данные нормально
получаются. С любой другой машины соединения не происходит
или соединение происходит с ошибкой: Ademant
{ОбщийМодуль.БИТ_СКУД_РаботаСЖурналомСобытий.Модуль(1640)}:
Ошибка при вызове метода контекста (ReadLog): Произошла
исключительная ситуация (CmdDrv.Ademant66): UDP recv() error.

 

По телефону выяснил, что аппаратная конфигурация следующая:

  • контроллер Адемант-500, подключен к локальной сети через модуль st-lan. Адрес контроллера 1.
  • Адрес модуля 192.168.10.102.
  • Драйвер для работы с контроллером cmddrv.dll, версия 1.0.0.15

Ход работ.

1.    Запустил DeviceDriverTest.exe в режиме циклической передачи команд. Количество повторов 100.
2.    Наблюдал модуль st-lan. Цель наблюдения – проверить мигание светодиодов обмена. Светодиоды не мигали. Только постоянно горел светодиод питания.
3.    Запустил ping –t 192.168.10.102. Пинги проходят.
4.    Вынул джек RJ-45 из модуля st-lan. Пинг проходил!!!
5.    Анализ таблицы arp (команда arp -a) показал, что адресу 192.168.10.102 сопоставлен MAC-адрес, отличный от MAC-адреса модуля st-lan.
6.    Стало очевидно, что в сети есть еще один адрес 192.168.10.102.
7.    После консультаций и согласовании вместе с администратором решили изменить адрес модуля st-lan. С мопощью программы ethcfg.exe установил модулю адрес 192.168.10.250.
8.    Запустил DeviceDriverTest.exe в режиме циклической передачи команд. Количество повторов 100.
9.    Наблюдал модуль st-lan. Было четко видно мигание двух светодиодов (RX и TX), что говорит о прохождении и команд, и ответов.
10.    Дал команду opendoor door=0. На контроллере реле щелкнуло.
11.    Запустили 1С в рабочем режиме. Ошибки исчезли, все стало работать штатно. По миганию светодиодов было видно, что каждые 10 секунд происходит обмен (регламентное задание 1С).

Причины ошибки.

Дальнейшие действия (совместно с местным администратором) показали следующее:
1.    В локальной сети предприятия находился сервер supermicro под управлением ОС Windows. Этот сервер получал IP адрес через DHCP, и нареканий в работе не вызывал. Именно на этом сервере изначально и работала 1С, когда не было проблем.
2.    При попытке обратиться по адресу http://192.168.10.102 открывалась web-панель, предлагающая ввести пароль и логин для входа, что явно не соответствовало st-lan'у.
3.    При старте сервер supermicro получал IP адрес для собственной системы управления. Это был адрес 192.168.0.102. Затем грузилась ОС, и получала второй IP адрес, который был известен администраторам. Т.о., сервер имел два IP адреса при одном разъеме RG-45.
4.    При работе на этом сервере 1С при обращении к модулю st-lan сервер корректно решал проблему задвоения IP адреса, и проблем не было. Когда же стали обращаться к адресу 192.168.10.102 из других участков сети, то происходил конфликт адресов, и последствия наблюдались в появлении ошибок.