Решение проблемы с 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 из других участков сети, то происходил конфликт адресов, и последствия наблюдались в появлении ошибок.
|