This is topic MODBUS: запросы на чтение байтовых регистров в PLC Emersson ROC809 (Trace Mode 6) in forum Редактор проекта TRACE MODE 6 / at Форум TRACE MODE: техническая поддержка.
Сталкиваюсь не первый раз, но не понимаю до сих пор, почему ТМ6, посылая групповой запрос на чтение байтовых регистров, ждёт в ответ всего 7 байт. То есть, она ждёт значения только одного канала. По получении 7-ми байт МРВ проверяет CRC и обнаруживает ошибку. Принятое значение в канал не поступает. Остальная часть ответа просто игнорируется. Все эти умозаключения подтверждаются при просмотре протокола обмена с помощью утилитки PORTMON.EXE. Что бы это всё значило? И что нужно ТМ6, чтобы она приняла ответ на групповой запрос чтения байтовых регистров?
[ 17.11.2006, 13:03: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Согласно стандарту MODBUS функция 02 запрашивает битовые переменные (это группа Coils-переменных). И в запросе указывается количество битов, а не байтов. А в ответе указывается количество байтов, содержащихся в теле ответа. В продемонстрированном Вами в письме запросе (07 02 00 97 00 10 C8 4C) указывается 16 (0х10) битов. В ответе они должны укладываться в 2 байта. Именно поэтому МРВ ожидает кадр ответе в объеме 7 байтов. Если Ваш MODBUS-Slave отвечает иначе, значит он нарушает стандарт.
Posted by Gregory_ua (Участник № / Member № 1497) on :
Спасибо. Принято. Однако есть ещё одна задачка. Пришлось поковырять Emersson ROC809. В ответ на запрос: > 07 04 00 01 00 01 CRC CRC можем получить ответ > 07 04 0A 65 65 20 20 20 20 20 20 20 20 CRC CRC Ответ, бесспорно, MODBUS. Однако ТМ6 его не принимает. Приходится придерживать ТМ6 от анализа с помощью драйверка Т11. А можно было бы предусмотреть анализ байта 2 (0, 1, 2) на предмет определения реальной длины ответа ROC809 или другого подобного КП. Или я опять чего-то не понимаю?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Ответ Вашего прибора на указанный запрос некорректен. Он должен был бы ответить 07 04 02 xx xx CRC CRC Трейс Моуд 6 ожидает ответа такого формата или сообщения об ошибке. Никаких нарушений стандарта со стороны Трейс Моуд 6 я не вижу. Если ROC809 не соблюдает стандарта, это проблемы производителя. Если прибор может отвечать только 5-регистрами, придется организовывать для него групповые запросы в рамках проекта. Это реально, хотя и утомительно. Хотя на наш запрос российский поставщик этих контроллеров ответил, что никаких отступлений от стандарта MODBUS у этих приборов нет.
Возможно еще, что у Вас задан малый таймаут на обмен и прибор посылает ответы с задержкой, что путает их последовательность.