This is topic Время восстановления связи после обрыва in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/31/t/001553.html

Posted by LepreconSTR (Участник № / Member № 7367) on :
 
В процессе разработки проекта возникло пара вопросов касательно таймаутов Modbus TCP:
1. При отсутствии ответа от устройства, повторный запрос посылается не ранее чем чем через 1 секунд.
В документации описан ключ TMOUT, который регулирует длительность таймаута для RTU подключения, но для Modbus TCP это выбор типа таймаута. Что это за типы? Можно ли задать время таймаута меньше секунды?

2.При потере связи с устройством МРВ достаточно долго не восстанавливает связь с устройством, хотя на самом деле она уже есть. При кратковременно обрыве связь восстаналивается через 10-15 секунд. При долговременном дисконнекте, попытка восстановить связь предпринимается примерно раз в минуту, что достаточно критично для проекта.
Можно ли увеличить частоту запросов соединения с устройством после обрыва.?
Пробовал различные комбинации ключей согласно документации и того, что вычитал на форуме, но так и не удалось заставить МРВ чаще долбиться в сеть в надежде ответа.
Лог в момент обрыва содержит строку
ERR_TCP:p9 recieve zero bytes from 192.168.ХХ.ХХ:502

Версия IDE 6.10 PRO , МРВ 6.10
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. TMOUT – индекс таймаута для использования. Таймауты задаются в CNF-файле с помощью ключа MDB_TMOUT_SEC<x>=<число секунд> (x=0-7 – индекс таймаута). Значения таймаутов по умолчанию:
a. tcp_modbus_tmout[0]=1;
b. tcp_modbus_tmout[1]=2;
c. tcp_modbus_tmout[2]=5;
d. tcp_modbus_tmout[3]=10;
e. tcp_modbus_tmout[4]=30;
f. tcp_modbus_tmout[5]=60;
g. tcp_modbus_tmout[6]=5;
h. tcp_modbus_tmout[7]=5;

2. "Управление и диагностика обмена":
"...
Для контроля и управления обменом по встроенным протоколам предусмотрены следующие ключи в файле *.cnf:
...
TCP_DIFCONN<nn>=<число секунд> – таймаут переподключения. В случае ошибки соединения попытка подключения предпринимается спустя время, заданное данным ключом (значение по умолчанию – 30с, nn – номер протокола);

TCP_DISCONN<nn>=<число секунд> – таймаут разрыва соединения. Если в ходе нормального обмена с устройством наступает момент, когда не проходит посылка, то сокет не уничтожается, а в течение времени, заданного данным ключом, примерно 1 раз в 10с предпринимается попытка повторной отправки посылки. Если отправить посылку не удается, по истечении таймаута сокет уничтожается. Значение данного таймаута по умолчанию – 0, что соответствует уничтожению сокета через 1 минуту;

"

Для Modbus TCP номер протокола 09.
 
Posted by LepreconSTR (Участник № / Member № 7367) on :
 
Спасибо за развернутый ответ.
Спасибо за ответ касательно изменения значения времени индексов таймаутов, этого я не знал.
Но опять же все значения касающиеся как таймаутов так и разрыва сессии задаются кратные секундам, а секунда в проекте достаточно большой отрезок времени.
В нормальном режиме работы количество пакетов для обмена составляет около 20 за 200 мс, т.е. за секунду в среднем проходит около 100 пакетов.
и в случае пропадания связи с устройством весь обмен задерживается на как минимум на секунду, а то и более (5-10 секунд).
Изначально все устройства работали в одном потоке THMAIN и отсутствие ответа от одного устройства означало остановку опроса всех устройств до истечения таймаута, но затем устройства были разделены по потокам ключами TH14 и TH15.

Вопросы:
1.Можно ли выставить таймаут модбаса менее 1 секунды?

2.Не предусмотрено ли средства отображения в МРВ\профайлере задействованных ключей из файла *.cnf? Не всегда очевидно работает ли данный ключ или нет.

3.Не могли бы вы подсказать ключи дебага, благодаря которым в протоколе было бы видно работу ключей TCP_DIFCONN и TCP_DISCONN. Пробовал различные ключи отладки сети, но не увидел сообщений касающихся переподключения\разрыва соединения. Сейчас для анализа обмена используется wireshark, но хотелось бы посмотреть и на встроенные средства отладки сетевого обмена.

4.Не могли бы вы разъяснить необходимо ли ставить символ ";" после ключа в файле *.cnf. Согласно справки символ не требуется, но к примеру после компиляции проекта после ключа THMAIN символ ";" стоит.


Немного не по теме но все же задам еще парочку вопросов, дабы не плодить темы.

5.Существует ли возможно из ГЭ ОТ убрать\скрыть столбец отображающий названия каналов?
Даже при минимальном размере столбца часть первого символа названия канала отображается в ОТ. Учитывая что названия каналов это сугубо служебные значения и оператору совсем не обязательно их знать и наблюдать за ними. Есть возможность скрывать кодировку канала, а вот возможность скрыть столбец именно с именем канала не обнаружена.

6.Вопрос касательно лицензии. Есть проект разработанный в версии 6.10 PRO. Некоторое время назад была приобретена МРВ для этого проекта тоже версии 6.10, все работало без проблем. Но недавно была приобретены еще несколько лицензий МРВ версии 6.10.2 и на новых лицензиях не запускается проект МРВ (6.10) при попытке открытия вылетает ошибка, если не ошибаюсь с кодом -13. Если же перевести проект на версию 6.10.2 то все открывается.
Теперь приходится вести одновременно два одинаковых проекта в разных версиях (отлаженная и гарантированно работоспособная 6.10 и новая в версии 6.10.2)
Вопрос: Я так понимаю нельзя открывать проекты в версии ниже чем указано на ключе?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Нет.

2. Нет.

3. Ключи TCP_DIFCONN и TCP_DISCONN работают только при разрыве/восстановлении соединения, т.е. в тех случаях, если возникают проблемы с сетевыми процедурами.
Отсутствие ответа от подключенного устройства за время, превышающее заданный таймаут ожидания ответа, приводит к прерыванию транзакции, но не приводит к разрыву соединения.
Фиксировать сетевые ошибки процедуры создания и разрыва соединений можно, задав в файле *.cnf ключ
DEBUGON=70000400

4. В файле *.cnf символ ";" может ставиться только в начале строки и указывается, что эта строка является комментарием и не исполняется.
Ключ THMAIN находится только в файле tcp_modbus.
Формат файла задан в IDE и изменен быть не может.

5. Такой возможности нет.

6. Лицензионные ключи инвариантны к номеру релиза. Все ключи, которые работали, в релизе 6.10 и ключи, приобретенные с ПО релиза 6.10.2, работают с проектами любых релизов.
МРВ и профайлер ПО релиза 6.10.2 не может работать с узлом, который компилирован в IDE более раннего релиза. Выдается сообщение об ошибке -11.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2