Форум TRACE MODE: техническая поддержка Послать новую тему / Post New Topic  Послать ответ / Post A Reply
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 6 » TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version » таймаут на ожидание ответа по MODBUS TCP

   
Автор / Author Тема / Topic: таймаут на ожидание ответа по MODBUS TCP
Sheon
Forum Member / Участник форума
Участник № / Member № 5164


Icon 1 отправлено / posted      Профиль для / Profile for Sheon           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте! Можно ли как-то уменьшить таймаут на ожидание ответа от контроллера по MODBUS TCP?

Просто приходится опрашивать 15 устройств по 7 регистров в каждом, так вот если какого-то устройства в сети MODBUS нету то Узел RTM начинает висеть где-то по 1сек на каждом регистре, а это значит что задержка отображения данных в реальном времени равна 7*N сек (N - число выключенных устройств). Опрос сети MODBUS идет через MOXA, у нее мы выставили таймаут в 100мс так что скорее всего это TM ждет ответа, прежде чем посылать следующий запрос.

Сообщения / Posts 51 | Из / From: Российская федерация  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Запросы по Modbus TCP посылаются только при наличии коннекта к соответствующему устройству. Возможно, в используемом преобразователе существует настройка, по которой он должен разорвать коннект МРВ к соответствующему устройству. В этом случае запросы к устройству посылаться не будут.
Возможно, существуют настройки преобразователя, по которым он без задержки будет эмулировать ответ с сообщением об ошибке. В этом случае не будет ожидания ответа и не будет описанного Вами эффекта.
Проверить, как ведет себя преобразователь в этой ситуации можно, если МРВ запустить с ключом DEBUG=400 в файле конфигурирования запуска узла TMcom_<ordinal>.cnf.
Если никаких дополнительных настроек в преобразователе найти не удастся, в случае отсутствия какого-либо устройства надо отключать каналы, которые осуществляют с ним обмен. И подключать их тогда, когда станет известно о наличии устройства в сети.
Обнаружить отсутствие устройства можно программным образом, анализируя атрибуты недостоверность соответствующих каналов.

Сообщения / Posts 17114 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Sheon
Forum Member / Участник форума
Участник № / Member № 5164


Icon 1 отправлено / posted      Профиль для / Profile for Sheon           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Я попробовал запустить проект сконфигурировав его на отладку DEBUG=400 как вы посоветовали. Он мне выдал сообщения, для всех каналов привязанных к MODBUS TCP тегам не работающих устройств, следующего характера:
(<время>) ERR_TCP:Modbus recieve zero bytes from <IP адрес> <имя канала>
(причем интервал между ними приблизительно секунда, ну может чуть меньше). Не совсем понятно что это означает: то, что TM так и не дождался вообще никакого ответа от преобразователя, или все-таки ответ был, но нулевой (пустое сообщение по протоколу TCP). Если это первый случай, то это не соответствует истине, т.к. мы проверяли с помощью программы CommView иторию обмена между компьютером, на котором работает узел, и моксой, и было видно что она отвечает практически сразу же, даже если устройство с определенным адресом в сети MODBUS обнаружено не было.

По поводу программного отключения каналов...
Как это реализовать я представляю в принципе, мне не понятен один момент:
Ну допустим по атрибуту недостоверности я определю, что устройства нет и отключу канал, тем самым прекращу опрос соответствующего устройства, а как же я тогда узнаю что устройство появилось, ведь его опрос не ведется? Или при проверке бита достоверности в отдельном потоке посылается некоторая команда о запросе состояния связанного с этим каналом устройства?

И еще вопрос не касающийся MODBUS TCP.
Запись в СПАД архив производится по изменению значения канала, а нельзя ли как-нибудь осуществить запись с определенной периодичностью (пусть даже только по изменению значения, но, допустим, не чаще чем раз в 30 сек)? Просто писать надо параметры с быстро изменяющимся значением в реальном времени (например температуры, изменения незначительны, но часты) ну и естественно архив забивается очень быстро, да и буфер тренда надо выделить сильно большой, чтобы отобразить данные за последние двое суток. Но при этом отображать данные на ГЭ надо в реальном времени с заданным циклом пересчета.
В одной из тем (http://forum.adastra.ru/cgi-bin/ultimatebb.cgi/ubb/get_topic/f/32/t/000322.html?#000000 пост 5) вы посоветовали, как я понял, увеличить период пересчета, но разве в этом случае отображаемые на ГЭ данные не будут обновляться синхронно с записью в СПАД(т.е. раз в 30 сек)?

Сообщения / Posts 51 | Из / From: Российская федерация  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Сообщение
(<время>) ERR_TCP:Modbus recieve zero bytes from <IP адрес> <имя канала>
означает, что за время таймаута (около 1 с.) ответ получен не был.
Если какое-то устройство не работает, то должны быть приняты меры по восстановлению его работоспособности и соответствующее оповещение персонала. Когда оператор получит соответствующее подтверждение, он включит обмен по этому устройству.
Если организация обслуживания оборудования таких уведомлений не предусматривает, придется программным путем с некоторым периодом кратковременно включать хотя бы 1 канал обмена с данным устройством для проверки работоспособности устройства.
Автоматически повторяется только запрос коннекта, если он потерян.

Можно ввести в канале процедуру трансляции, которая будет обновлять РЕАЛЬНОЕ значение в канале с нужным Вам периодом. С этим периодом и будет осуществляться архивирование параметра.
А для остальных процедур реального времени можно использовать АППАРАТНОЕ значение канала.

Сообщения / Posts 17114 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

Quick Reply
Сообщение / Message:

HTML код не разрешен. / HTML is not enabled.
UBB код разрешен. / UBB Code is enabled.

Значки Graemlins / Instant Graemlins
   


Послать новую тему / Post New Topic  Послать ответ / Post A Reply Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2