Имеется проект,в котором по Modbus TCP опрашиваются регистры 30001-30008, в каналах создали канал Call с типом вызова ChGroupReq, вроде как заработало, но через определенное время показания перестают изменятся.Причем каналы опрашиваемые не через Modbus продолжают исправно опрашиваться
В чем может быть причина? Нет ли там какого-нибудь числа означающего количество опросов?
P.S. Проект делали по видео уроку из Adastra.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Надо получить диагностическую информацию. Посмотреть атрибут ДОСТОВЕРНОСТЬ канала ChGroupReq. Запустить профайлер с ключом DEBUG=400 в файле конфигурирования запуска TMcom_xx.cnf и посмотреть в протоколе профайлера сообщения об ошибках сетевого обмена.
В каком релизе Вы работаете? Каково содержание файла ip_mobus?
При нормальной связи количество запросов не огранчивается.
Posted by Legolas (Участник № / Member № 5047) on :
При запуске программы Достоверность канала CALL = _T После того как каналы перестают менять значения Достоверность _F Релиз 6.06.2 Содержание ip_modbus: ;502 Port 100 RECTIMEOUT 0 TIMEOUT 5 ERROR 5 OFFCOUNT 1 10.0.2.113
Протокол профайлера как выглядит?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Вам следует обновиться до релиза 6.07.7, выложенного в настоящее время на сайте. С целью повышения устойчивости обмена драйвер протокола Modbus TCP в последнем релизе модифицирован. Протокол профайлера - текстовый файл в папке узла с тем же именем, что и файл *.dbb. Можно предположить, что в канале существует некоторый уровень ошибок. После прохождения большого числа неудачных транзакций канал, в соответствии с настройками Вашего файла ip_modbus, отключается от источника. Обмен прекращается. После налаживания связи канал надо вновь включать (атрибут 8 (W) сбросить в 0).
Надо получить информацию в протоколе профайлера и по ее содержанию либо настраивать сеть с целью уменьшения количества ошибок, либо настройками в файле ip_modbus оптимизировать режим обмена. В частности, можно поставить 0 OFFCOUNT.
Posted by Kollega (Участник № / Member № 4097) on :
Добрый день, уважаемая теххподдержка! Дабы не создавать лишних тем напишу здесь. Итак, есть два компьютера: один с МРВ+, второй с маленькой системой, написаной на делфи(другой фирмы). Возникла задача получать в МРВ два значения float. Реализовать это посредством передачи по com-порту затруднений не вызывает. Но хотелось бы научиться передавать и получать данные по TCP протоколу. Изучив документацию, показалось, что это подобно связи по произвольному протоколу по RS. Т.е. с помощью канала ChGroupReq c привязкой MODBUS.R_FIFO_Queue я смогу задавать параметры как при связи по RS(само собой, что в системе на делфи придеться писать нужную функцию для связи). Правильно ли я мыслю или что-то не понимаю?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Если внешнее устройство в качестве сервера будет поддерживать "пользовательские" функции в соответствии с требованиями Modbus TCP, то Ваши предположения верны.