Протокол Modbus

Список регистров Modbus

Чтение параметра: функции 0x03; 0x04.

Групповая запись параметров: функция 0x10.

Для параметров, у которых есть функциональные ограничения, такие как ENUM и уставки, при попытке записи данных все доступного диапазона, должна возвращаться ошибка без записи.

Если в групповой записи хотя бы для одного параметра передается недопустимое значение, то должна возвращаться ошибка без записи всех параметров в групповой записи.

Общий список регистров

Параметр

Адрес (dec)

Адрес (hex)

Описание

Тип данных

Архив (см. раздел)

Период архивирования

900

0x0384

Частота записи архива. Указывается в секундах.

Если 0 – Архивация не ведется

Unsigned 16

Количество архивов

901

0x0385

Unsigned 32

Размер архива

908

0x038C

Unsigned 32

Последний индекс архива

910

0x038E

Unsigned 32

Часы реального времени

Время в миллисек

61563

0xF07B

Время работы прибора с момента подачи питания (USB или внешнего)

Unsigned 32

Время и дата (UTC)

61553

0xF071

Текущее время в секундах от 1 января 2000 г.

Date time 32

Часовой пояс

61555

0xF073

Задает часовой пояс, в котором находится прибор

Enum 38

Переменные даты и времени (см. раздел)

Секунды

61557

0xF075

Unsigned 8

Минуты

61558

0xF076

Unsigned 8

Часы

61559

0xF077

Unsigned 8

Дни

61560

0xF078

Unsigned 8

Месяцы

61561

0xF079

Unsigned 8

Годы

61562

0xF07A

Unsigned 16

День недели

61556

0xF074

Enum 8

Батарея

Напряжение

801

0x0321

Unsigned 16

Пороговое напряжение

800

0x0320

Unsigned 16

Состояние

802

0x0322

Enum 2

Настройки Ethernet* (см. раздел)

MAC адрес

61712

0xF110

Устанавливается на заводе-изготовителе и является неизменным

String 144

Установить IP адрес

20

0x0014

Записывает измененный параметр в энергонезависимую память прибора

Unsigned 32

Установить маску подсети

22

0x0016

Unsigned 32

Установить IP адрес шлюза

24

0x0018

Unsigned 32

Режим DHCP

32

0x0020

Настройка режима работы DHCP. Возможные значения:

  0 – выкл.

  1 – вкл.

Enum 2

Применить

33

0x0021

Используется для записи в энергонезависимую память новых значений:

  0 — нет,

  1 — да

Enum 2

Статус подключения

34

0x0022

Отображает статус подключения прибора к сети Ethernet:

  0 — Отсутствует MAC,

  1 — Норма,

  2 — Кабель не подключен,

  3 — DHCP сервер не доступен

  4 — Ошибка интерфейса

Enum 6

Текущие настройки

MAC адрес

61712

0xF110

МАС-адрес интерфейса Ethernet. Задается на заводе-изготовителе

String 144

Текущий IP адрес

26

0x001A

Текущие параметры с которыми работает интерфейс Ethernet

Unsigned 32

Текущая маска подсети

28

0x001C

Unsigned 32

Текущий IP адрес шлюза

30

0x001E

Unsigned 32

Параметры интерфейса RS-485** (см. раздел)

Скорость

750

0x02EE

Скорость работы СОМ-порта. Возможные значения:

  3 – 9600 бит/с

  4 – 14400 бит/с

  5 – 19200 бит/с

  6 – 38400 бит/с

  7 – 57600 бит/с

  8 – 115200 бит/с

Enum 6

Размер данных

751

0x02EF

Размер данных в посылке. Возможные значения:

  0 – 8 бит

  1 – 7 бит

Enum 2

Контроль четности

752

0x02F0

Количество стоп-бит. Возможные значения:

  0 – нет

  1 – нечет

  2 – чет

Enum 3

Кол. стоп-битов

753

0x02F1

Возможные значения:

  0 – 1 стоп

  1 – 2 стопа

Enum 2

Slave ID

754

0x02F2

Адрес прибора в сети RS-485. По умолчанию — 16

Unsigned 8

Modbus Slave*

Таймаут перехода в безопасное состояние

700

0x02BC

Прибор переходит в безопасное состояние, если в течение времени тайм-аута отсутствуют команды от Мастера сети. Если значение 0, то переход в безопасное состояние отключен

Unsigned 8

Отсутствует сетевой обмен по Modbus

53248

0xD000

Enum 2

Права удалённого доступа из OwenCloud*

Разрешение конфигурирования

701

0x02BD

Возможные значения:

  0 — запрещено,

  1 — разрешено

Enum 2

Управление и запись значений

702

0x02BE

Возможные значения:

  0 — заблокировано,

  1 — разрешено

Enum 2

Доступ к регистрам Modbus

703

0x02BF

Возможные значения:

  0 — полный запрет,

  1 — только чтение,

  2 — только запись,

  3 — полный доступ

Enum 4

USB host (см. раздел)

Статус устройства

59990

0xEA56

Статус подключенного устройства (см. таблицу)

Enum 9

Имя папки

59991

0xEA57

Имя папки на USB flash в которую пишется архивString 128

Процент записи

59999

0xEA5F

Отображает количество процентов до окончания записи на USB flash

Unsigned 8

Пользовательский экран (см. раздел)

Экран 1

1020

0x03FC

Параметры для выбора, что отображается на верхнем и нижнем ЦИ

Enum 9

Экран 2

1022

0x03FE

Enum 9

Экран 3

1024

0x0400

Enum 9

Время бездействия

1026

0x0402

Время автоматического возврата из меню настроек в режим отображения параметров при отсутствии активности (нажатия кнопок)

Enum 5

Смена экранов

1028

0x0404

Автоматическая смена экранов отображения параметров. Выбирается из списка в секундах

Enum 6

Режим ВУ

1030

0x0406

Настройка вывода параметра мощности (только для аналогового выхода)

Enum 2

Устройство 1 (см. раздел)

Тип датчика

60024

0xEA78

Тип устройства. Для ЛУ Наработки времени с высоким уровнем сигнала время считается после среза, с низким – после фронта

Enum 5

Множитель

60025

0xEA79

Показания счетчика/тахометра умножаются на множитель и отображаются на ЦИ

Float 32

Измеренное значение

60002

0xEA62

Float 32

Положение десятичной точки

60027

0xEA7B

Положение десятичной точки. Авто – прибор определяет значение целой части и отображает ее полностью, остальные разряды относит на дробную часть (если она есть):

0...5 – отображается количество знаков после точки

Enum 7

Работа при уставке

60028

0xEA7C

Enum 3

Работа при сбросе

60029

0xEA7D

Enum 3

Блокировка сброса с кнопки

60030

0xEA7E

Блокировка кнопки сброса для счетчика и наработки времени

Enum 2

Вход 1

60031

0xEA7F

Выбор функции для входа

Enum 12

Вход 2

60032

0xEA80

Enum 12

Вход 3

60033

0xEA81

Enum 12

Вход 4

60034

0xEA82

Enum 12

Вход 5

60035

0xEA83

Enum 12

Состояние

60004

0xEA64

Отображение текущего состояния ЛУ

Enum 6

Маска событий

60005

0xEA65

Битовая маска событий ВУ

Unsigned 16

Сброс

60111

0xEACF

Алгоритм работы при сигнале Сброс (внешний или кнопка)

Unsigned 8

Параметры счетчика/энкодера (см. раздел)

Режим

60018

0xEA72

Режим работы для счетчика

Enum 5

Начальное значение

60019

0xEA73

Начальное значение для счетчика. Данное значение присваивается счетчику/энкодеру при изменении типа устройства, а затем включении счетчика/энкодера

Signed 32

Параметры тахометра (см. раздел)
Масштаб тахометра 1

60021

0xEA75

Масштаб отображения. Масштаб тахометра определяет на какой коэффициент умножается измеренное значение:

  • Сек – на 1;

  • Мин – на 60;

  • Час – на 3600;

  • Множитель – на значение, заданное в параметре Множитель

Enum 4

Параметры счетчика наработки (см. раздел)

Масштаб счетчика наработки

60022

0xEA76

Масштаб отображения счетчика наработки. Если текущее значение времени больше, чем умещается в данный формат, то автоматически будет выбран следующий. Возможные значения:

  Часы/Минуты/Секунды

  Часы/Мин

  Часы

Enum 3

Число срабатываний счетчика наработки 1

60000

0xEA60

Число срабатываний счетчика наработки

Unsigned 32

Старт работы счетчика наработки

60023

0xEA77

Старт работы счетчика наработки

Enum 2

Устройство 2 (см. раздел)

Тип датчика

60042

0xEA8A

Тип устройства. Для ЛУ Наработки времени с высоким уровнем сигнала время считается после среза, с низким – после фронта

Enum 5

Множитель

60043

0xEA8B

Показания счетчика/тахометра умножаются на множитель и отображаются на ЦИ

Float 32

Измеренное значение

60011

0xEA6B

Float 32

Положение десятичной точки

60045

0xEA8D

Положение десятичной точки. Авто – прибор определяет значение целой части и отображает ее полностью, остальные разряды относит на дробную часть (если она есть):

0...5 – отображается количество знаков после точки

Enum 7

Работа при уставке

60046

0xEA8E

Enum 3

Работа при сбросе

60047

0xEA8F

Enum 3

Блокировка сброса с кнопки

60048

0xEA90

Блокировка кнопки сброса для счетчика и наработки времени

Enum 2

Вход 1

60049

0xEA91

Выбор функции для входа

Enum 12

Вход 2

60050

0xEA92

Enum 12

Вход 3

60051

0xEA93

Enum 12

Вход 4

60052

0xEA94

Enum 12

Вход 5

60053

0xEA95

Enum 12

Состояние

60013

0xEA6D

Отображение текущего состояния ЛУ

Enum 6

Маска событий

60014

0xEA6E

Unsigned 16

Сброс

60112

0xEAD0

Алгоритм работы при сигнале Сброс (внешний или кнопка)

Unsigned 8

Параметры счетчика/энкодера (см. раздел)

Режим

60036

0xEA84

Режим работы для счетчика

Enum 5

Начальное значение

60037

0xEA85

Начальное значение для счетчика. Данное значение присваивается счетчику/энкодеру при изменении типа устройства, а затем включении счетчика/энкодера

Signed 32

Параметры тахометра (см. раздел)
Масштаб тахометра 2

60039

0xEA87

Масштаб отображения. Масштаб тахометра определяет на какой коэффициент умножается измеренное значение:

  • Сек – на 1;

  • Мин – на 60;

  • Час – на 3600;

  • Множитель – на значение, заданное в параметре Множитель

Enum 4

Параметры счетчика наработки (см. раздел)

Масштаб счетчика наработки

60040

0xEA88

Масштаб отображения счетчика наработки. Если текущее значение времени больше, чем умещается в данный формат, то автоматически будет выбран следующий. Возможные значения:

 Часы/Минуты/Секунды

 Часы/Мин

 Часы

Enum 3

Число срабатываний счетчика наработки 2

60009

0xEA69

Число срабатываний счетчика наработки

Unsigned 32

Старт работы счетчика наработки

60041

0xEA89

Старт работы счетчика наработки

Enum 2

Вход 1 (см. раздел)

Логический уровень

60054

0xEA96

Тип датчика на входе. NPN и PNP датчики имеют внешнюю подтяжку к плюсу или минусу ИП24. TTL и HTL не имеют внешней подтяжки, логика определяется типом уровня (низкий или высокий)

Enum 4

Минимальная длительность импульса, мкс

60055

0xEA97

Фильтр минимальной длительность импульса (мкс). После детектирования фронта/среза прибор отсчитывает время. Если импульс исчез за время меньшее, чем значение данного параметра – то прибор игнорирует данный импульс в подсчете

Unsigned 32

Минимальная длительность паузы, мкс

60057

0xEA99

Фильтр минимальной длительности паузы (мкс)

Unsigned 32

Вход 2 (см. раздел)

Логический уровень

60059

0xEA9B

Тип датчика на входе. NPN и PNP датчики имеют внешнюю подтяжку к плюсу или минусу ИП24. TTL и HTL не имеют внешней подтяжки, логика определяется типом уровня (низкий или высокий)

Enum 4

Минимальная длительность импульса, мкс

60060

0xEA9C

Фильтр минимальной длительность импульса (мкс). После детектирования фронта/среза прибор отсчитывает время. Если импульс исчез за время меньшее, чем значение данного параметра – то прибор игнорирует данный импульс в подсчете

Unsigned 32

Минимальная длительность паузы, мкс

60062

0xEA9E

Фильтр минимальной длительности паузы (мкс)

Unsigned 32

Вход 3 (см. раздел)

Логический уровень

60064

0xEAA0

Тип датчика на входе. NPN и PNP датчики имеют внешнюю подтяжку к плюсу или минусу ИП24. TTL и HTL не имеют внешней подтяжки, логика определяется типом уровня (низкий или высокий)

Enum 4

Минимальная длительность импульса, мкс

60065

0xEAA1

Фильтр минимальной длительность импульса (мкс). После детектирования фронта/среза прибор отсчитывает время. Если импульс исчез за время меньшее, чем значение данного параметра – то прибор игнорирует данный импульс в подсчете

Unsigned 32

Минимальная длительность паузы, мкс

60067

0xEAA3

Фильтр минимальной длительности паузы (мкс)

Unsigned 32

Вход 4 (см. раздел)

Логический уровень

60069

0xEAA5

Тип датчика на входе. NPN и PNP датчики имеют внешнюю подтяжку к плюсу или минусу ИП24. TTL и HTL не имеют внешней подтяжки, логика определяется типом уровня (низкий или высокий)

Enum 4

Минимальная длительность импульса, мкс

60070

0xEAA6

Фильтр минимальной длительность импульса (мкс). После детектирования фронта/среза прибор отсчитывает время. Если импульс исчез за время меньшее, чем значение данного параметра – то прибор игнорирует данный импульс в подсчете

Unsigned 32

Минимальная длительность паузы, мкс

60072

0xEAA8

Фильтр минимальной длительности паузы (мкс)

Unsigned 32

Вход 5 (см. раздел)

Логический уровень

60074

0xEAAA

Тип датчика на входе. NPN и PNP датчики имеют внешнюю подтяжку к плюсу или минусу ИП24. TTL и HTL не имеют внешней подтяжки, логика определяется типом уровня (низкий или высокий)

Enum 4

Минимальная длительность импульса, мкс

60075

0xEAAB

Фильтр минимальной длительность импульса (мкс). После детектирования фронта/среза прибор отсчитывает время. Если импульс исчез за время меньшее, чем значение данного параметра – то прибор игнорирует данный импульс в подсчете

Unsigned 32

Минимальная длительность паузы, мкс

60077

0xEAAD

Фильтр минимальной длительности паузы (мкс)

Unsigned 32

Выход 1 (см. раздел)

Уставка S

60079

0xEAAF

Значение уставки для срабатывания по превышению значения. Параметр только для счетчика/тахометра/энкодера

Float 32

Уставка Н

60081

0xEAB1

Уставка только для для счетчика наработки. Задается XX.xx.xx → xx.XX.xx → xx.xx.XX

Time 32

Состояние ВУ по умолчанию

60094

0xEABE

Для аналогового ВУ

Enum 2

Тип выхода

60006

0xEA66

Enum 4

Значение

60007

0xEA67

Float 32

Аналоговый выход (см. раздел)

Режим регистратора

60083

0xEAB3

Enum 4

Нижнее значение

60084

0xEAB4

Float 32

Верхнее значение

60086

0xEAB6

Float 32

Дельта

60088

0xEAB8

Дельта (для П-регуляторов) — зона пропорциональности. Зона пропорциональности соответствует диапазону: от Уставка – Дельта до Уставка + Дельта

Float 32

Дискретный выход (см. раздел)

Гистерезис

60090

0xEABA

Гистерезис срабатывания дискретного ВУ тахометра. Для исключения дребезга ВУ при значении Входа около уставки. Для включения ВУ требуется достигнуть уставки, для отключения: уставка минус гистерезис. (Только для Дискретного ВУ и Тахометра)

Unsigned 32

Режим выхода

60092

0xEABC

Режим работы выхода при достижении уставки

Enum 3

Время удержания ВУ, с

60093

0xEABD

Время удержания активного ВУ для режимов Вкл.Врм и Вкл.крт

Unsigned 16

Выход 2 (см. раздел)

Уставка S

60095

0xEABF

Значение уставки для срабатывания по превышению значения. Параметр только для счетчика/тахометра/энкодера

Float 32

Уставка Н

60097

0xEAC1

Уставка только для счетчика наработки. Задается XX.xx.xx → xx.XX.xx → xx.xx.XX

Time 32

Состояние ВУ по умолчанию

60110

0xEACE

Для аналогового ВУ

Enum 2

Тип выхода

60015

0xEA6F

Enum 4

Значение

60016

0xEA70

Float 32

Аналоговый выход (см. раздел)

Режим регистратора

60099

0xEAC3

Enum 4

Нижнее значение

60100

0xEAC4

Float 32

Верхнее значение

60102

0xEAC6

Float 32

Дельта

60104

0xEAC8

Дельта (для П-регуляторов) — зона пропорциональности. Зона пропорциональности соответствует диапазону: от Уставка – Дельта до Уставка + Дельта

Float 32

Дискретный выход (см. раздел)

Гистерезис

60104

0xEB52

Гистерезис срабатывания дискретного ВУ тахометра. Для исключения дребезга ВУ при значении Входа около уставки. Для включения ВУ требуется достигнуть уставки, для отключения: уставка минус гистерезис. (Только для Дискретного ВУ и Тахометра)

Unsigned 32

Режим выхода

60108

0xEB54

Режим работы выхода при достижении уставки

Enum 3

Время удержания ВУ, с

60109

0xEB56

Время удержания активного ВУ для режимов Вкл.Врм и Вкл.крт

Unsigned 16

Примечание

* Только для исполнений с интерфейсом Ethernet.

** Только для исполнений с интерфейсом RS-485.

Работа по протоколу Modbus

Список поддерживаемых функций

Название функции

Код согласно спецификации Modbus

Описание функции

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_FILE_RECORD

20 (0x14)

Чтение архива из файла

MODBUS_WRITE_FILE_RECORD

21 (0x15)

Запись архива в файл

Параметры битовой маски могут читаться функциями 0х03 и 0х01. При использовании функции 0x01 номер регистра следует умножить на 16 и прибавить номер бита.

Общие регистры оперативного обмена по протоколу Modbus
НазваниеРегистрРазмерТипОписание
Название (имя) прибора для показа пользователю (DEV)0xF00032 байтаСимвольная строкаКодировка Win-1251
Версия встроенного ПО прибора для показа пользователю (VER)0xF01032 байтаСимвольная строкаКодировка Win-1251
Название платформы0xF02032 байтаСимвольная строкаКодировка Win-1251
Версия платформы0xF03032 байтаСимвольная строкаКодировка Win-1251
Версия аппаратного обеспечения0xF04016 байтСимвольная строкаКодировка Win-1251
Дополнительная символьная информация0xF04816 байтСимвольная строкаКодировка Win-1251
Время и дата0xF0804 байтаUnsigned 32В секундах с 2000 г.
Часовой пояс0xF0822 байтаSigned shortСмещение в минутах от Гринвича
Заводской номер прибора0xF08432 байтаСимвольная строкаКодировка Win-1251, используется 17 символов
Основные форматы данных
Формат данныхКол-во регистровРазмерОписание
Unsigned 1612 байтаЦелое число без знака
Unsigned 3224 байта
Signed 1612 байтаЦелое число со знаком
Date time 3224 байтаДата/Время в секундах с 1 января 2000 г.
Специальные форматы данных
Формат данныхКол-во регистровРазмерОписание
Enum хх11 байт

Описывает позицию выбранного параметра из списка доступных, например, тип датчика

Float 3224 байт

Вещественный формат представления данных

Unsigned 811 байтЦелочисленный беззнаковый формат
String 4836 байтСтрока из шести символов
String 6448 байтСтрока из восьми символов
String 128816 байтСтрока из шестнадцати символов

Список регистров Modbus представлен в таблице А..

При работе с переменными, занимающими два и более регистра:

  • порядок байт — старшим байтом вперед;

  • порядок регистров — младшим регистром вперед.

Обработка ошибок обмена по Modbus

Список кодов общих ошибок Modbus

Возвращаемый код*

Описание ошибки

01

В приборе не реализована обработка запрашиваемого кода функции

02

Адрес данных, указанный в запросе, отсутствует в приборе. Критерии проверки – соответствие диапазону начального адреса регистра и количество регистров

03

Значение, содержащееся в поле данных запроса, является недопустимой величиной. Критерий проверки – соответствие длины записываемых или читаемых данных размерности типа регистра; соответствие записываемой величины условиям минимального и максимального значений регистра

04

Невосстанавливаемая ошибка. Критерий – получение запроса при нахождении прибора в состоянии «Авария»
05

Запрос принят в работу, но на его обработку требуется много времени. Код ошибки предохраняет ведущее устройство от генерации ошибки тайм-аута. Критерий проверки – время на обработку запроса превышает заданное значение (например, при приеме запроса при исполнении программы логики)

06

Устройство занято. Критерий – прием запроса при наличии в обработке предыдущего запроса

08

Ошибка при обращении с запросами на чтение (функция 20) или запись (функция 21) файла. Критерий – неверная CRC или нарушение целостности файла при его чтении из памяти

Примечание
* Согласно спецификации Modbus.

Обработка пакетов производится в следующем порядке:

  1. Проверяется валидность пакета. Не прошедший проверку пакет отбрасывается.

  2. Проверяется адрес (SlaveID), если получен чужой пакет, то такой пакет игнорируется.

  3. Проверка на функцию Modbus.

Если приходит запрос с функцией не из таблицы выше, то выдается ошибка «MODBUS_ILLEGAL_FUNCTION».

Расшифровка ошибок данных и файлов приведена в таблицах ниже.

Обработка ошибок данных
Используемая функцияНаименование ошибкиВозможная причина ошибки
MODBUS_READ_ HOLDING_REGISTERSMODBUS_ILLEGAL_DATA_ADDRESS

Количество запрашиваемых регистров больше максимально возможного числа (125).

Запрос несуществующего параметра

MODBUS_READ_INPUT_ REGISTERSMODBUS_ILLEGAL_DATA_ADDRESS

Количество запрашиваемых регистров больше максимально возможного числа (125).

Запрос несуществующего параметра

MODBUS_WRITE_SINGLE_ REGISTERMODBUS_ILLEGAL_DATA_ADDRESS

Попытка записи параметра, размер которого превышает 2 байта.

Попытка записи параметра, доступ на запись к которому запрещен.

Попытка записи параметра такого типа, который данная функция не поддерживает.

Запрос несуществующего параметра.

Поддерживаемые типы данных:

  • знаковые и беззнаковые целые (размер не более 2 байт);

  • перечисляемые

MODBUS_ILLEGAL_DATA_VALUEВыход за пределы максимального или минимального ограничений для параметра
MODBUS_WRITE_ MULTIPLE_REGISTERSMODBUS_ILLEGAL_DATA_ADDRESS

Запись несуществующего параметра.

Попытка записи параметра, доступ на запись к которому запрещен.

Количество записываемых регистров больше максимального возможного числа (123)

MODBUS_ILLEGAL_DATA_VALUE

Не найден терминирующий символ (\0) в строковом параметре.

Размер запрашиваемых данных меньше размера первого или последнего в запросе параметра.

Выход за пределы максимального или минимального ограничений для параметра

Ошибки во время работы с файлами архива
Используемая функцияНаименование ошибкиВозможная причина ошибки
MODBUS_READ_FILE_ RECORDMODBUS_ILLEGAL_ FUNCTIONОшибочный размер данных (0x07 ≤ data length ≤ 0xF5)
MODBUS_ILLEGAL_DATA_ ADDRESS

Reference type не соответствует спецификации;

не удалось открыть файл для чтения (возможно, он отсутствует)

MODBUS_ILLEGAL_DATA_ VALUEНе удалось переместиться к нужному смещению в файле
MODBUS_SLAVE_DEVICE_ FAILURE

Ошибка удаления файла при запросе на удаление.

Запрос слишком большого количества данных (больше 250 байт).

Недопустимый record number (больше 0x270F).

Недопустимый record length (больше 0x7A)

MODBUS_WRITE_FILE_ RECORDMODBUS_ILLEGAL_ FUNCTIONОшибочный размер данных (0x09 ≤ data length ≤ 0xFB)
MODBUS_ILLEGAL_DATA_ ADDRESS

Reference type не соответствует спецификации.

Не удалось открыть файл для записи

MODBUS_SLAVE_DEVICE_ FAILURE

Запрашиваемый файл отсутствует.

Запрашиваемый файл доступен только для чтения.

Не удалось записать необходимое количество байт