При работе по Modbus TCP по GPRS-каналу не удается увеличить таймаут ожидания ответа. Насколько я понял из документации, за это отвечает параметр TMOUT в файле ip_modbus. В справке не объясняется формат записи данного параметра. Пробовал варианты 3 TMOUT, TMOUT 3, TMOUT=3, TMOUT3. Ни один из приведенных вариантов не работает. Как, все-таки, правильно будет задать индекс таймаута для использования?
Пока вышел из ситуации задав в CNF-файле параметры tcp_modbus_tmout[0] - [7] равные 10 секундам для всех восьми таймаутов. Так работает, но хотелось бы сделать более красиво.
Спасибо.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
В релизе 6.08 таймауты в файле ip_modbus не задаются. Они задаются в строке дополнительно в форме TMOUT=x где x - индекс таймаута для использования. Таймауты задаются в CNF-файле с помощью ключа MDB_TMOUT_SEC<x>=<число секунд>. Если TMOUT=x не задан, устройству задается таймаут с 0-м индексом, который по умолчанию равен 1 сек.
Posted by artash05 (Участник № / Member № 5793) on :
Как понимать вашу фразу
>Они задаются в строке дополнительно ?
В какой строке? В командной строке при запуске? Или в одной из строк CNF-файла?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
В компонентах MODBUS слоя "Источники/Приемники" есть поле "Дополнительно", куда можно записать строковые выражения.
Posted by artash05 (Участник № / Member № 5793) on :
Теперь понятно. В первом вашем посте слово "дополнительно" я понял в буквальном смысле. Надо было его заключить в кавычки или написать с большой буквы. Хотя, если быть точным, поле "Дополнительно" теперь называется "IP-адрес".
Протестировал работу ТМ с учетом ваших разъяснений. Все заработало, спасибо!
Posted by ilovefiniki (Участник № / Member № 4106) on :
А что означает каждый из 8 таймаутов? Раньше, когда они задавались в файле ip_modbus там были разные названия и назначение. А сейчас вообще непонятно какой таймаут задаётся, для чего? Понятно только, что как-то на modbus повлияет, а как именно - никому не известно. Сейчас крайне не стабильно работает связь через modbus tcp и GPRS на удалённом устройстве. И вот даже не знаю как повлиять теперь можно. TM сыпет запросы определённо быстрее, чем может отработать GPRS связь.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
По умолчанию таймаут ожидания ответа по Modbus TCP равен 1 сек. Именно этот таймаут определяет период опроса при существенной задержке ответов.
Для каждого Modbus-устройства в настройках компонентов слоя "Источники/Приемники" можно задать индекс (0...7) в списке предуставленных значений таймаутов. Предустановленные по умолчанию значения таймаутов с указанными индексами описаны в разделе "Обмен по протоколу MODBUS TCP/IP".
Вы можете изменить эти предустановленные значения таймаутов в файле *.cnf (см.тот же раздел).