Подскажите, пожалуйста, с чем может быть связана следующая ситуация. Имеется два контроллера ADAM 6060 с разными IP адресами. С помощью двух каналов подтипа Modbus(Rin Byte(2)) пытаемся получить с каждого контроллера байт состояний его дискретных входов(DI). Каналы имеют следующие настройки: #RS=0, ADDR=00 и 01, CH=0000, TYPE=TCP, Q=0. Проблема в следующем: если оба контроллера включены, то значения с них получаем нормально, если же один из них выключается, то и с другого контроллера тут же перестаем получать значение. Обработка в каналах следующая: на каждом цикле пересчета во вход поступает значение с контроллера, а затем вход с помощью программы трансляции обнуляется, т.е. то, что значение с контроллера перестает поступать, видно довольно наглядно. При этом изредка (примерно раз в минуту) значение все же приходит. Как только связь с первым контроллером востанавливается, то и со второго тоже начинает приходить "искомое" значение. Подскажите, в чем дело, может я что-то напутал с настройками?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
1) А при выключеном одном из них атрибут Достоверность на обоих каналах 1 или только на одном? 2) Запустите под Профайлером в инструменталке и посмотрите в лог-файле проекта - какие записи пишет сервер, когда Вы отключаете один из модулей? 3) Какой релиз ТМ изпользуете?
Posted by Konstantin (Участник № / Member № 833) on :
1. Довольно странно, но атрибуты "достоверность" каналов при выключении любого из контроллеров не изменяются и остаются нулевыми 2. В логе, при выключении любого контроллера появляется запись "TCP: Modbus error = -7", и далее, с периодичностью около полминуты, появляются записи "TCP: Modbus error = -4", до тех пор, пока контроллер опять не будет включен. При включении контроллера в лог ничего не заносится. 3. Используем релиз 5.12
Вообще говоря, есть ощущение, что при отключении ADAM, МРВ некоторое время пытается получить с него значение, и в течении этого времени другой контроллер просто не опрашивается. Затем, когда таймаут истекает, один раз проходит значение с включенного контроллера и затем все повторяется вновь.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Попробуйте новый 5.15. В нем были внесены исправления по ModBus TCP, в частности - по диагностике достоверности и самому обмену. Может это поможет прояснить ситуацию.
Posted by Konstantin (Участник № / Member № 833) on :
Ситуация несколько прояснилась. Если АСУТП построена с помощью устройств обменивающихся по ModBus TCP, и одно из устройств вышло из строя - обмен всех устройсв с MPB останавливается. Не подскажите как нам сдать объект в опытную эксплуатацию? Ставить новый релиз на прект мягко говоря боязно. Может у вас есть обновленная библиотека modbus.dll ?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Отделаться просто dll-кой не получится, потому как там изменения и в самом Drawser.exe были. Все же рекомендую попробовать 5.15, но не на объекте, а хотябы просто как тестовый проект с двумя модулями. И еще - какой у Вас таймаут задан в настройках обмена по ModBus TCP в конфигурационном файле? Может в нем все дело, ведь связь по ModBus TCP несмотря на Ethernet все же полудуплексная?
Posted by Konstantin (Участник № / Member № 833) on :
Конфигурационный файл о котором Вы упоминаете, это ip_modbus? О других конфигурационных файлах мы не знаем...Если он есть, укажите пожалуйста имя и путь, и желательно ссылку на документацию. Где скачать DrawServ релиза 5.15 ?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Вообще-то Вы этот файл сами должны были вручную создать! А Вы его не создавали? Релиз 5.15 есть на нашем сайте в разделе "Техподдержка".
Posted by Konstantin (Участник № / Member № 833) on :
Разумеется создали. Данный файл (ip_modbus) содержит привязки ip-адресов к номеру. И это все, что говорит документация по поводу его содержимого. Если есть возможность указать таймаут - будте любезны сообщите где и как, т.к. в документации по этому поводу ничего не нашли.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
В указанном файле IP_Modbus также могут присутствовать строки:
произвольное_число CSC отработка пакетов ответа от контроллеров, формирующих контрольную сумму в фрагменте Modbus пакета Modbus/TCP (по стандарту в части пакета TCP, отведенного под Modbus, контрольная сумма не формируется).
Пример: 2 CSC
число_в_формате_hex PORT задание номера порта для обмена.
Пример: 1F6 PORT - обмен по порту 502
число TIMEOUT величина (в миллисекундах) ожидания ответа от контроллера на запрос получения данных.
Пример: 200 TIMEOUT
Однако - все это работает только для ТМ5.15. Пришлите пожалуйста на E-mail адрес техподдержки письмо, мы вышлем Вам необходимые файлы релиза 5.15.
Posted by ATMosphere (Участник № / Member № 115) on :
Абсолютно такая же проблема с Modbus TCP.
Скачали 5.15 - ничего не помогло: - не формируется флаг достоверности - значительно замедляется обмен с работающим устройством при выключении другого участника обмена.
В IP_modBus: 1 192.168.0.200 2 192.168.0.79
5 TIMEOUT
Т.е. система функционирует только в том случае, когда все узлы работают и с ними есть связь. Стоит лишь любой из узлов выключить или сэмулировать обрыв сети - система перестает функционировать. Что делать?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :