Чтение и запись параметров по протоколу Modbus TCP
Операция | Функция |
---|---|
Чтение | 3 (0х03) или 4 (0х04) |
Запись | 6 (0х06) или 16 (0х10) |
Список регистров Modbus (см. таблицу и Приложение А) считывается с прибора с помощью Owen Configurator во вкладке «Параметры устройства».
Общие регистры оперативного обмена по протоколу Modbus
Название | Регистр | Размер/тип/описание |
---|---|---|
Название (имя) прибора для пользователя (DEV) | 0xF000 | Символьная строка до 32 байт, кодировка Win1251 |
Версия встроенного ПО прибора для пользователя (VER) | 0xF010 | Символьная строка до 32 байт, кодировка Win1251 |
Заводской номер прибора | 0xF084 | Символьная строка 32 байта, кодировка Win1251, используется 17 символов |
Во время работы прибора по протоколу Modbus могут возникать ошибки (см. таблицу). Прибор отправляет Мастеру сети ответ с кодом ошибки.
Список возможных ошибок
Название ошибки | Возвращаемый код | Описание ошибки |
---|---|---|
MODBUS_ILLEGAL_FUNCTION | 01 (0x01) | Недопустимый код функции – ошибка возникает, если прибор не поддерживает функцию Modbus, указанную в запросе |
MODBUS_ILLEGAL_DATA_ADDRESS | 02 (0x02) | Недопустимый адрес регистра – ошибка возникает, если в запросе указаны адреса регистров, отсутствующие в приборе |
MODBUS_ILLEGAL_DATA_VALUE | 03 (0x03) | Недопустимое значение данных – ошибка возникает, если запрос содержит недопустимое значение для записи в регистр |
MODBUS_SLAVE_DEVICE_FAILURE | 04 (0x04) | Ошибка возникает, если запрошенное действие не может быть завершено |
Во время обмена по протоколу Modbus прибор проверяет соответствие запросов спецификации Modbus. Не прошедшие проверку запросы игнорируются прибором. Запросы, в которых указан адрес, не соответствующий адресу прибора, также игнорируются.
Далее проверяется код функции. Если приходит запрос с кодом функции, не указанной в таблице, возникает ошибка MODBUS_ILLEGAL_FUNCTION.
Список поддерживаемых функций
Название функции | Код функции | Описание функции |
---|---|---|
MODBUS_READ_HOLDING_REGISTERS | 3 (0x03) | Чтение значений из одного или нескольких регистров хранения |
MODBUS_READ_INPUT_REGISTERS | 4 (0x04) | Чтение значений из одного или нескольких регистров ввода |
MODBUS_WRITE_SINGLE_REGISTER | 6 (0x06) | Запись значения в один регистр |
MODBUS_WRITE_MULTIPLE_REGISTERS | 16 (0x10) | Запись значений в несколько регистров |
Ситуации, приводящие к возникновению ошибок во время работы с регистрами, описаны в таблице.
Ошибки во время работы с регистрами
Используемая функция | Наименование ошибки | Возможные ситуации, приводящие к ошибке |
---|---|---|
MODBUS_READ_HOLDING_REGISTERS | MODBUS_ILLEGAL_DATA_ADDRESS | Количество запрашиваемых регистров больше максимального возможного числа (125) |
Запрос несуществующего параметра | ||
MODBUS_READ_INPUT_REGISTERS | MODBUS_ILLEGAL_DATA_ADDRESS | Количество запрашиваемых регистров больше максимального возможного числа (125) |
Запрос несуществующего параметра | ||
MODBUS_WRITE_SINGLE_REGISTER | MODBUS_ILLEGAL_DATA_ADDRESS | Попытка записи параметра, размер которого превышает 2 байта |
Попытка записи параметра, доступ на запись к которому запрещен | ||
Попытка записи параметра такого типа, запись в который не может быть осуществлена данной функцией. Поддерживаемые типы:
| ||
Запрос несуществующего параметра | ||
MODBUS_ILLEGAL_DATA_VALUE | Выход за пределы максимального или минимального ограничений для параметра | |
MODBUS_WRITE_MULTIPLE_REGISTERS | MODBUS_ILLEGAL_DATA_ADDRESS | Запись несуществующего параметра |
Попытка записи параметра, доступ на запись к которому запрещен | ||
Количество записываемых регистров больше максимального возможного числа (123) | ||
MODBUS_ILLEGAL_DATA_VALUE | Не найден терминирующий символ (\0) в строковом параметре | |
Размер запрашиваемых данных меньше размера первого или последнего в запросе параметра | ||
Выход за пределы максимального или минимального ограничений для параметра |