Протокол конфигуратора МСД-200 (Modbus RTU) Приложение А. Протокол конфигуратора МСД-200 (Modbus RTU) Управление прибором реализовано с помощью следующих функций: • 3 (0x03) — Read Holding Registers/ чтение нескольких регистров; • 16 (0x10) — Write Multiple registers/ запись нескольких регистров; • 17 (0x11) (report slave ID), чтение имени прибора и версии прошивки; • 71 (0x47) (пользовательская функция), Команды работы с картой памяти. На широковещательный адрес 0 и адреса большие 247 прибор реагировать не будет.
Время ожидания ответа на команду должно быть равно 1 секунде, плюс двойное время передачи данных, зависящее от скорости передачи данных в канале, и плюс двойное время задержки передачи данных в канале GSM при работе через модем (задается при настройке). Время выполнения команды прибором может достигать 30 секунд (время удаления файла объемом 1 Гбайт равно 30 секундам). Если в течение 1 секунды прибор не успел выполнить команду, он возвращает ошибку с номером 7. На последующие команды до завершения выполнения текущей команды прибор отвечает ошибкой с номером 8 (занят) и кодом функции запущенной команды. Прервать выполнение длинной команды нельзя.
После завершения выполнения команды прибор на любой запрос ответит результатом выполненной команды с кодом функции выполненной команды. Если к прибору подключается «Конфигуратор МСД-200» по каналу USB, то на любые запросы «Конфигуратора МСД-200», подключенного к каналу RS-485, отправляется ошибка с номером 9. Для функций 03 и 16 допускается запись или чтение регистров, относящихся только к одной команде. При попытке записать или прочитать регистры нескольких команд возвращается ошибка 3 (VALIDATA DATA VALUE). Исключение составляют команды группы чтения оперативных параметров прибора, которые могут быть все считаны одной командой.
При этом начальный адрес регистра может быть любым в пределах адресов оперативных параметров (учитывать ограничение длины пакета 256 байт). Для функции 03, при попытке прочитать регистры, предназначенные только для записи, или при попытке обращения к несуществующим регистрам возвращается ошибка 2 (ILLEGAL DATA ADDRESS). Для функции 16, при попытке записать регистры, предназначенные только для чтения, или при попытке обращения к несуществующим регистрам возвращается ошибка 1 (ILLEGAL FUNCTION). Используемый в приборе контроллер имеет особенность: в канале USB нельзя передавать и принимать пакеты кратные 64 байтам.
Для решения этой проблемы предлагается передавать пакеты только нечетной длины при использовании USB. При передаче четной длины пакета в конце пакета (после CRC) нужно добавить дополнительный байт 0х00. При приеме положение CRC определяют по содержимому пакета, а не как два последних байта. Назначение регистров, используемых для функций 03 и 16: Структура запроса и ответа для функции 17: функция позволяет получить имя прибора и версию программного обеспечения. В таблице представлен запрос на чтение имени и версии программного обеспечения прибора с адресом 12: 40 Адрес Функция Длина параметров в байтах Контрольная сумма 12 0х47 Длина параметров в байтах ZZ