Работа расходомеров компании Line Tech в промышленной сети RS-485 по протоколу Modbus-RTU

Содержание статьи:

  1. Настройки коммуникационного интерфейса расходомеров MD
  2. Регистры данных Modbus
  3. Функции чтения/записи Modbus
  4. Пример: считывание показаний мгновенного расхода

 

Цифровые расходомеры Line Tech серии MD оснащаются цифровым интерфейсом RS-485 для работы в промышленной сети по протоколу Modbus RTU. Способ подключения расходомеров MD к сети RS-485 описан в статье «Подключение приборов Line Tech к промышленной сети RS-485». Теория работы интерфейса RS-485 с объяснениями назначения отдельных элементов сети приводится в статье «Передача данных в промышленных сетях на основе RS485».

Настройки коммуникационного интерфейса расходомеров MD

Производитель поставляет расходомеры MD со следующими настройками коммуникационного интерфейса:

Скорость передачи данных: 38 400 бод. Также доступны значения 9 600, 19 200, 57 600 и 115 200. Может настраиваться конечным пользователем, процедура описана ниже.

Количество бит данных: 8 бит

Стоп-бит: 1

Проверка четности: нет

Протокол: Modbus RTU или Line Tech. Процедура настройки описана здесь

Адрес в шине: 1. Доступны значения 1…32. Может настраиваться конечным пользователем, процедура описана здесь.

Регистры данных Modbus

Доступ к данным в расходомерах Line Tech организован с помощью таблицы HOLDING REGISTERS с 16-битными данными (2 байта). Каждый регистр имеет свой адрес. Распределение параметров приборов Line Tech по этой таблице (адресам регистров) приведено ниже. Под некоторые параметры отводится сразу несколько последовательно идущих регистров. Все параметры доступны для чтения (символ «R» в колонке «Доступ»), в то время как запись разрешена для ограниченного числа регистров (символ «W»).

Особенность организации адресного пространства расходомеров Line Tech состоит в том, что регистры зависят от адреса прибора в сети. Например, если для расходомера с адресом «1» в сети показания расхода считываются в регистрах 0х0000 и 0х0001, то для расходомера с адресом «2» показания следует считывать в регистрах 0х0014 и 0х0015. А для расходомера с адресом 32 – в регистрах 0х026C и 0х026D. В связи с этим в таблице приведены регистры для расходомера с адресом 1, 2 и 32. Адреса регистров для произвольного адреса N (значение от 1 до 32) легко посчитать, прибавив к номеру регистра для первого адреса значение 20∙(N-1).

Таблица регистров расходомеров Line Tech серии MD

Адрес

Параметр

Тип данных

Доступ

Адрес, hex

Значение, hex

1

Мгновенный расход в единицах расхода

Float(*), 32 бит

R

Старший: 0x0000,

Младший: 0x0001

0x00000000…
0xFFFFFFFF

(0…3,4 × 1038)

1

Мгновенный расход в процентах от верхнего предела измерения (ВПИ)

Float, 32 бит

R

Старший: 0x0002,

Младший: 0x0003

0x00000000…
0xFFFFFFFF

(0…100)

1

Код единицы измерения

Unsigned int, 16 бит

R

0х0004

0x0001: н.см3/мин(**)

0x0002: н.л/мин

1

Верхний предел измерения

Float, 32 бит

R

Старший: 0x0005,

Младший: 0x0006

0x00000000…
0xFFFFFFFF

(0…3,4 × 1038)

1

Тип расходомера

Unsigned int, 16 бит

R

0х0007

0x0000: регулятор

0x0004: измеритель

1

Тип аналогового входного/выходного сигнала

Unsigned int, 16 бит

R

0х0008

0x0000: напряжение

0x0001: ток

1

Источник уставки

Unsigned int, 16 бит

RW

0х0009

0x0000: аналоговый сигнал

0x0001: цифровой сигнал

1

Включение/выключение регулирования расхода цифровым сигналом

Unsigned int, 16 бит

RW

0х000A

0x0000: выкл.

0x0001: вкл.

1

Уставка,
в единицах измерения расхода

Float, 32 бит

RW

Старший: 0x000C,

Младший: 0x000D

0x00000000…
0xFFFFFFFF

(0…3,4 × 1038)

1

Код скорости передачи данных

Unsigned int, 16 бит

RW

0х000E

0x0000: 9 600 бод

0x0001: 19 200 бод

0х0002: 38 400 бод

0х0003: 57 600 бод

0х0004: 115 200 бод

2

Мгновенный расход в единицах расхода

Float, 32 бит

R

Старший: 0x0014,

Младший: 0x0015

0x00000000…
0xFFFFFFFF

(0…3,4 × 1038)

2

Мгновенный расход в процентах от верхнего предела измерения (ВПИ)

Float, 32 бит

R

Старший: 0x0016,

Младший: 0x0017

0x00000000…
0xFFFFFFFF

(0…100)

2

Код единицы измерения

Unsigned int, 16 бит

R

0х0018

0x0001: н.см3/мин(**)

0x0002: н.л/мин

2

Верхний предел измерения

Float, 32 бит

R

Старший: 0x0019,

Младший: 0x001A

0x00000000…
0xFFFFFFFF

(0…3,4 × 1038)

2

Тип расходомера

Unsigned int, 16 бит

R

0х001B

0x0000: регулятор

0x0004: измеритель

2

Тип аналогового входного/выходного сигнала

Unsigned int, 16 бит

R

0х001C

0x0000: напряжение

0x0001: ток

2

Источник уставки

Unsigned int, 16 бит

RW

0х001D

0x0000: аналоговый сигнал

0x0001: цифровой сигнал

2

Включение/выключение регулирования расхода цифровым сигналом

Unsigned int, 16 бит

RW

0х001E

0x0000: выкл.

0x0001: вкл.

2

Уставка,
в единицах измерения расхода

Float, 32 бит

RW

Старший: 0x0020,

Младший: 0x0021

0x00000000…
0xFFFFFFFF

(0…3,4 × 1038)

2

Код скорости передачи данных

Unsigned int, 16 бит

RW

0х0022

0x0000: 9 600 бод

0x0001: 19 200 бод

0х0002: 38 400 бод

0х0003: 57 600 бод

0х0004: 115 200 бод

32

Мгновенный расход в единицах расхода

Float, 32 бит

R

Старший: 0x026C,

Младший: 0x026D

0x00000000…
0xFFFFFFFF

(0…3,4 × 1038)

32

Мгновенный расход в процентах от верхнего предела измерения (ВПИ)

Float, 32 бит

R

Старший: 0x026E,

Младший: 0x026F

0x00000000…
0xFFFFFFFF

(0…100)

32

Код единицы измерения

Unsigned int, 16 бит

R

0х0270

0x0001: н.см3/мин(**)

0x0002: н.л/мин

32

Верхний предел измерения

Float, 32 бит

R

Старший: 0x0271,

Младший: 0x0272

0x00000000…
0xFFFFFFFF

(0…3,4 × 1038)

32

Тип расходомера

Unsigned int, 16 бит

R

0х0273

0x0000: регулятор

0x0004: измеритель

32

Тип аналогового входного/выходного сигнала

Unsigned int, 16 бит

R

0х0274

0x0000: напряжение

0x0001: ток

32

Источник уставки

Unsigned int, 16 бит

RW

0х0275

0x0000: аналоговый сигнал

0x0001: цифровой сигнал

32

Включение/выключение регулирования расхода цифровым сигналом

Unsigned int, 16 бит

RW

0х0276

0x0000: выкл.

0x0001: вкл.

32

Уставка,
в единицах измерения расхода

Float, 32 бит

RW

Старший: 0x0278,

Младший: 0x0279

0x00000000…
0xFFFFFFFF

(0…3,4 × 1038)

32

Код скорости передачи данных

Unsigned int, 16 бит

RW

0х027A

0x0000: 9 600 бод

0x0001: 19 200 бод

0х0002: 38 400 бод

0х0003: 57 600 бод

0х0004: 115 200 бод

(*) Данные считываются/записываются в hex-представлении. Для данных с типом Int перевод в hex легко осуществить с помощью стандартного калькулятора Windows (в режиме «Программист»). Для конвертации данных с типом Float имеет смысл воспользоваться онлайн сервисами (можно найти в поисковиках по запросу «перевод hex во float онлайн»).

(**) символ «н» обозначает нормальные условия: 0°С и 101,325 кПа (абс).

Функции чтения/записи Modbus

Для управления работой расходомеров Line Tech используются следующие функции: чтение нескольких последовательных регистров, запись одного регистра и запись нескольких последовательных регистров. Ниже приведены структуры соответствующих запросов, формируемых ведущим устройством, а также структуры ответов, получаемых от ведомого устройства.

Чтение нескольких регистров из таблицы HOLDING REGISTERS, код функции 0×03

Запрос

Адрес ведомого устройства

Код функции

Адрес первого регистра

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

Контрольная сумма CRC16

1 байт

1 байт: 0х03

2 байта

2 байта

2 байта,
младшим вперед

Ответ

Адрес ведомого устройства

Код функции

Количество байт данных

Передаваемые данные

Контрольная сумма CRC16

1 байт

1 байт: 0х03

1 байт

N байт

2 байта,
младшим вперед

Для получения значения контрольной суммы можно воспользоваться онлайн сервисами (можно найти в поисковиках по запросу «контрольная сумма crc16 modbus онлайн»). Важно учитывать, что контрольная сумма передается младшим байтом вперед. Так для строки с запросом на считывание мгновенного расхода расходомера с адресом «1» («0х010300000002») контрольная сумма CRC16 равна «0х0BC4». Соответственно, полный правильный запрос на чтение расхода будет выглядеть так: 0х010300000002C40B

Запись одного регистра из таблицы HOLDING REGISTERS, код функции 0×06

Запрос

Адрес ведомого устройства

Код функции

Адрес записываемого регистра

Записываемые данные

Контрольная сумма CRC16

1 байт

1 байт: 0х06

2 байта

2 байта

2 байта, младшим вперед

Ответ: Если команда выполнена успешно, то ведомое устройство возвращает точную копию запроса.

Запись нескольких регистров из таблицы HOLDING REGISTERS, код функции 0×10

Запрос

Адрес ведомого устройства

Код функции

Адрес первого записываемого регистра

Количество записываемых регистров

Количество записываемых байтов

Записываемые данные

Контрольная сумма CRC16

1 байт

1 байт: 0х10

2 байта

2 байта

1 байт

N байт

2 байта, младшим вперед

Ответ:

Адрес ведомого устройства

Код функции

Адрес первого записываемого регистра

Количество записываемых регистров

Количество записываемых байтов

Контрольная сумма CRC16

1 байт

1 байт: 0х10

2 байта

2 байта

1 байт

2 байта, младшим вперед

Пример: считывание показаний мгновенного расхода

Из таблицы регистров видно, что показания мгновенного расхода можно считывать как в единицах измерения, в которых откалиброван расходомер, так и в процентах ВПИ.

Считывание мгновенного расхода для расходомера с адресом «1» в единицах измерения

Запрос: 01 03 00 00 00 02 C4 0B, где

0х01        Адрес устройства

0х03        Код функции

0х00        Адрес первого регистра, старший байт

0х00        Адрес первого регистра, младший байт

0х00        Количество регистров, старший байт

0х02        Количество регистров, младший байт

0xC4       Контрольная сумма, младший байт

0x0B       Контрольная сумма, старший байт

 

Ответ: 01 03 04 3F 3F F4 DD 40 B2, где

0х01        Адрес устройства

0х03        Код функции

0х04        Количество байт данных

0х3F        Мгновенный расход, старший байт 1

0х3F        Мгновенный расход, байт 2

0хF4        Мгновенный расход, байт 3

0хDD       Мгновенный расход, младший байт

0x40        Контрольная сумма, младший байт

0xB2       Контрольная сумма, старший байт

 

Мгновенный расход в единицах расхода (регистр 0х0000 и 0x0001): 0х3F3FF4DD, что равно «0,74983» в десятеричной системе счисления

 

Считывание мгновенного расхода для расходомера с адресом «1» в процентах ВПИ

Запрос: 01 03 00 02 00 02 65 CB, где

0х01        Адрес устройства

0х03        Код функции

0х00        Адрес первого регистра, старший байт

0х02        Адрес первого регистра, младший байт

0х00        Количество регистров, старший байт

0х02        Количество регистров, младший байт

0x65        Контрольная сумма, младший байт

0xCB       Контрольная сумма, старший байт

 

Ответ: 01 03 04 42 95 F7 4C B9 A2, где

0х01        Адрес устройства

0х03        Код функции

0х04        Количество байт данных

0х42        Мгновенный расход, старший байт 1

0х95        Мгновенный расход, байт 2

0хF7        Мгновенный расход, байт 3

0х4C       Мгновенный расход, младший байт 4

0xB9       Контрольная сумма, младший байт

0xA2       Контрольная сумма, старший байт

 

Мгновенный расход в процентах ВПИ (регистр 0х0002 и 0x0003): 0х4295F74C, что равно «74,983» в десятеричной системе счисления

 

Считывание для расходомера с адресом «2» мгновенного расхода в единицах измерения, процентах ВПИ, а также единицы измерения прибора

Запрос: 02 03 00 14 00 05 C5 FE, где

0х02        Адрес устройства

0х03        Код функции

0х00        Адрес первого регистра, старший байт

0х14        Адрес первого регистра, младший байт

0х00        Количество регистров, старший байт

0х05        Количество регистров, младший байт

0xC5       Контрольная сумма, младший байт

0xFE        Контрольная сумма, старший байт

 

Ответ: 02 03 0A 3F 66 56 16 42 B3 F3 41 00 02 88 A6, где

0х02        Адрес устройства

0х03        Код функции

0х0A       Количество байт данных

0х3F        Мгновенный расход в единицах, старший байт 1

0х66        Мгновенный расход в единицах, байт 2

0х56        Мгновенный расход в единицах, байт 3

0х16        Мгновенный расход в единицах, младший байт 4

0х42        Мгновенный расход в процентах, старший байт 1

0хB3       Мгновенный расход в процентах, байт 2

0хF3        Мгновенный расход в процентах, байт 3

0х41        Мгновенный расход в процентах, младший байт 4

0x00        Единица измерения расхода, старший байт

0x02        Единица измерения расхода, младший байт

0x88        Контрольная сумма, младший байт

0xA6       Контрольная сумма, старший байт

 

Мгновенный расход в единицах расхода (регистр 0х0014 и 0x0015): 0х3F665616, что равно «0,899751» в десятеричной системе счисления

Мгновенный расход в процентах ВПИ (регистр 0х0016 и 0x0017): 0х42B3F341, что равно «89,9751» в десятеричной системе счисления

Единица измерения расхода (регистр 0х0018): 0х0002, что соответствует «н.л/мин» (см. таблицу регистров)

Таким образом, прибор дает показания расхода: 0,899751 н.л/мин или 89,9751 % ВПИ.

 

Продолжение читайте в статье «Работа расходомеров Line Tech в сети RS-485 по протоколу Modbus-RTU (продолжение)»

Получить консультацию