Содержание
Цифровые расходомеры 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
- Проверка четности: нет
- Адрес в шине: 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).
(*) Данные считываются/записываются в hex-представлении. Для данных с типом Int перевод в hex легко осуществить с помощью стандартного калькулятора Windows (в режиме «Программист»). Для конвертации данных с типом Float имеет смысл воспользоваться он-лайн сервисами (можно найти в поисковиках по запросу «перевод hex во float онлайн»).
(**) символ «н» обозначает нормальные условия: 0°С и 101,325 кПа (абс).
Функции чтения/записи Modbus
Для управления работой расходомеров Line Techиспользуются следующие функции: чтение нескольких последовательных регистров, запись одного регистра и запись нескольких последовательных регистров. Ниже приведены структуры соответствующих запросов, формируемых ведущим устройством, а также структуры ответов, получаемых от ведомого устройства.
Чтение нескольких регистров из таблицы HOLDING REGISTERS, код функции 0×03
Для получения значения контрольной суммы можно воспользоваться он-лайн сервисами (можно найти в поисковиках по запросу «контрольная сумма crc16 modbus онлайн»). Важно учитывать, что контрольная сумма передается младшим байтом вперед. Так для строки с запросом на считывание мгновенного расхода расходомера с адресом «1» («0х010300000002») контрольная сумма CRC16 равна «0х0BC4». Соответственно, полный правильный запрос на чтение расхода будет выглядеть так: 0х010300000002C40B
Запись одного регистра из таблицы HOLDING REGISTERS, код функции 0×06
Ответ
Если команда выполнена успешно, то ведомое устройство возвращает точную копию запроса.
Запись нескольких регистров из таблицы HOLDING REGISTERS, код функции 0×10
Пример: считывание показаний мгновенного расхода
Из таблицы регистров видно, что показания мгновенного расхода можно считывать как в единицах измерения, в которых откалиброван расходомер, так и в процентах ВПИ.
Считывание мгновенного расхода для расходомера с адресом «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 % ВПИ.
Пример: считывание настроек расходомера
Считывание кода единицы измерения для расходомера с адресом «1»
Запрос: 01 03 00 04 00 01 C5 CB, где
0х01 Адрес устройства
0х03 Код функции
0х00 Адрес первого регистра, старший байт
0х04 Адрес первого регистра, младший байт
0х00 Количество регистров, старший байт
0х01 Количество регистров, младший байт
0xC5 Контрольная сумма, младший байт
0xCB Контрольная сумма, старший байт
Ответ: 01 03 02 00 02 39 85, где
0х01 Адрес устройства
0х03 Код функции
0х02 Количество байт данных
0х00 Код единицы измерения, старший байт
0х02 Код единицы измерения, младший байт
0x39 Контрольная сумма, младший байт
0x85 Контрольная сумма, старший байт
Код единицы измерения (регистр 0х0004): 0х0002, что соответствует «н.л/мин» (см. таблицу регистров)
Считывание верхнего предела измерения для расходомера с адресом «1»
Запрос: 01 03 00 05 00 02 D4 A0, где
0х01 Адрес устройства
0х03 Код функции
0х00 Адрес первого регистра, старший байт
0х05 Адрес первого регистра, младший байт
0х00 Количество регистров, старший байт
0х02 Количество регистров, младший байт
0xD4 Контрольная сумма, младший байт
0xA0 Контрольная сумма, старший байт
Ответ: 01 03 04 3F 80 00 00 B9 A2, где
0х01 Адрес устройства
0х03 Код функции
0х04 Количество байт данных
0х3F Верхний предел измерения, старший байт 1
0х80 Верхний предел измерения, байт 2
0х00 Верхний предел измерения, байт 3
0х00 Верхний предел измерения, младший байт 4
0xB9 Контрольная сумма, младший байт
0xA2 Контрольная сумма, старший байт
Верхний предел измерения (регистры 0х0005 и 0x0006): 0х3F800000, что равно «1,0» в десятеричной системе счисления.
С учетом значения регистра 0x0004 (код единицы измерения) получаем, что ВПИ расходомера составляет: 1,0 н.л/мин
Считывание типа прибора для расходомера с адресом «1»
Запрос: 01 03 00 07 00 01 35 CB, где
0х01 Адрес устройства
0х03 Код функции
0х00 Адрес первого регистра, старший байт
0х07 Адрес первого регистра, младший байт
0х00 Количество регистров, старший байт
0х01 Количество регистров, младший байт
0x35 Контрольная сумма, младший байт
0xCB Контрольная сумма, старший байт
Ответ: 01 03 02 00 00 B8 44, где
0х01 Адрес устройства
0х03 Код функции
0х02 Количество байт данных
0х00 Тип расходомера, старший байт
0х00 Тип расходомера, младший байт
0xB8 Контрольная сумма, младший байт
0x44 Контрольная сумма, старший байт
Тип расходомера (регистр 0х0007): 0х0000, что соответствует типу «регулятор» (см. таблицу регистров)
Считывание типа аналогового сигнала для расходомера с адресом «1»
Запрос: 01 03 00 08 00 01 05 CB, где
0х01 Адрес устройства
0х03 Код функции
0х00 Адрес первого регистра, старший байт
0х08 Адрес первого регистра, младший байт
0х00 Количество регистров, старший байт
0х01 Количество регистров, младший байт
0x05 Контрольная сумма, младший байт
0xCB Контрольная сумма, старший байт
Ответ: 01 03 02 00 01 79 84, где
0х01 Адрес устройства
0х03 Код функции
0х02 Количество байт данных
0х00 Тип аналогового сигнала, старший байт
0х01 Тип аналогового сигнала, младший байт
0x79 Контрольная сумма, младший байт
0x84 Контрольная сумма, старший байт
Тип расходомера (регистр 0х0008): 0х0001, что соответствует типу аналогового сигнала «ток» (см. таблицу регистров)
Считывание для расходомера с адресом «2» кода единицы измерения, верхнего предела измерения, типа прибора и аналогового сигнала
Запрос: 02 03 00 18 00 05 05 FD, где
0х02 Адрес устройства
0х03 Код функции
0х00 Адрес первого регистра, старший байт
0х18 Адрес первого регистра, младший байт
0х00 Количество регистров, старший байт
0х05 Количество регистров, младший байт
0x05 Контрольная сумма, младший байт
0xFD Контрольная сумма, старший байт
Ответ: 02 03 0A 00 01 44 3B 80 00 00 04 00 00 FD E4, где
0х02 Адрес устройства
0х03 Код функции
0х0A Количество байт данных
0х00 Код единицы измерения, старший байт 1
0х01 Код единицы измерения, младший байт
0х44 Верхний предел измерения, Старший байт 1
0х3B Верхний предел измерения, байт 2
0х80 Верхний предел измерения, байт 3
0х00 Верхний предел измерения, младший байт 4
0х00 Тип расходомера, старший байт
0х04 Тип расходомера, младший байт
0x00 Тип аналогового сигнала, старший байт
0x00 Тип аналогового сигнала, младший байт
0xFD Контрольная сумма, младший байт
0xE4 Контрольная сумма, старший байт
Код единицы измерения (регистр 0х0018): 0х0001, что соответствует «н.см3/мин» (см. таблицу регистров)
Верхний предел измерения (регистр 0х0019 и 0x001A): 0х443B8000, что равно «750» в десятеричной системе счисления
Таким образом, ВПИ расходомера: 750 н.см3/мин
Тип расходомера (регистр 0х001B): 0х0004, что соответствует типу «измеритель» (см. таблицу регистров)
Тип аналогового сигнала (регистр 0х001C): 0х0000, что соответствует типу аналогового сигнала «напряжение» (см. таблицу регистров)
Пример: задание расхода
Для задания уставки регулятору расхода газа MD через промышленную сеть Modbus необходимо:
· переключить прибор на цифровой источник уставки (регистр 0x0009 для прибора с адресом «1»). При очередном включении питания расходомер всегда переключается на аналоговый источник уставки (значение «0x0000»)
· включить режим регулирования расхода (регистр 0x000A для прибора с адресом «1»)
· задать значение уставки в единицах измерения расхода
Переключенние на цифровой источник уставки для расходомера с адресом «1»
Для переключения расходомера на цифровой источник уставки необходимо в регистр выбора источника (0x0009 для прибора с адресом «1») записать значение «0x0001» (см. таблицу регистров). Можно использовать функцию записи одного регистра 0x06.
Запрос: 01 06 00 09 00 0198 08, где
0х01 Адрес устройства
0х06 Код функции
0х00 Адрес записываемого регистра, старший байт
0х09 Адрес записываемого регистра, младший байт
0х00 Источник уставки, старший байт
0х01 Источник уставки, младший байт
0x98 Контрольная сумма, младший байт
0x08 Контрольная сумма, старший байт
Ответ: 01 06 00 09 00 01 98 08
Включение режима регулирования расхода для расходомера с адресом «1»
Для включения режима регулирования расхода необходимо в соответствующий регистр (0x000A для прибора с адресом «1») записать значение «0x0001» (см. таблицу регистров). Можно использовать функцию записи одного регистра 0x06.
Запрос: 01 06 00 0A 00 01 68 08, где
0х01 Адрес устройства
0х06 Код функции
0х00 Адрес записываемого регистра, старший байт
0х0A Адрес записываемого регистра, младший байт
0х00 Включение режима регулирования, старший байт
0х01 Включение режима регулирования, младший байт
0x68 Контрольная сумма, младший байт
0x08 Контрольная сумма, старший байт
Ответ: 01 06 00 0A 00 01 68 08
Задание значения уставки для расходомера с адресом «1»
Для задания уставки регулятору расхода необходимо в соответствующий регистр (0x000C и 0x000D для прибора с адресом «1») записать значение уставки в единицах измерения расхода (см. таблицу регистров). Например, значение «0,2» в десятеричной системе счисления, что равно «0x3E4CCCCD» в шестнадцатеричном представлении для числа типа Float, 32 бит. Здесь необходимо использовать функцию «0x10», поскольку необходимо записать данные не в один, а уже в два регистра
Запрос: 01 10 00 0С 00 02 04 3E 4C CC CD AB 50, где
0х01 Адрес устройства
0х10 Код функции
0х00 Адрес первого регистра, старший байт
0х0С Адрес первого регистра, младший байт
0x00 Количество записываемых регистров, старший байт
0x02 Количество записываемых регистров, младший байт
0x04 Количество записываемых байтов, старший байт
0х3E Значение уставки, старший байт 1
0х4C Значение уставки, байт 2
0xCC Значение уставки, байт 3
0xCD Значение уставки, младший байт 4
0xAB Контрольная сумма, младший байт
0x50 Контрольная сумма, старший байт
Ответ: 01 10 00 0C 00 02 81 CB, где
0х01 Адрес устройства
0х10 Код функции
0х00 Адрес первого регистра, старший байт
0х0C Адрес первого регистра, младший байт
0х00 Количество записываемых регистров, старший байт
0х02 Количество записываемых регистров, младший байт
0x81 Контрольная сумма, младший байт
0xCB Контрольная сумма, старший байт
Пример: изменение скорости обмена данными
Расходомеры Line Tech серии MDпоставляются с настроенной скоростью передачи данных 38 400 бод. При этом скорость передачи может настраиваться конечным пользователем с использованием цифрового интерфейса. Достаточно задать соответствующее значение регистру с кодом скорости передачи данных (см. таблицу регистров).
Следует отметить, что при выключении питания и последующем включении расходомера его скорость передачи данных сохраняется и НЕ переключается на заводское значение 38 400 бод. Во избежание недоразумений в будущем, следует зафиксировать новое значение скорости передачи данных, установленное для расходомера.
Задание скорости передачи данных для расходомера с адресом «1»
Для задания новой скорости передачи данных расходомера (например, 19 200 бод) необходимо в соответствующий регистр (0x000E для прибора с адресом «1») записать значение «0x0001» (см. таблицу регистров). Можно использовать функцию записи одного регистра 0x06.
Запрос: 01 06 00 0E 00 0129 C9, где
0х01 Адрес устройства
0х06 Код функции
0х00 Адрес записываемого регистра, старший байт
0х0E Адрес записываемого регистра, младший байт
0х00 Код скорости передачи данных, старший байт
0х01 Код скорости передачи данных, младший байт
0x29 Контрольная сумма, младший байт
0xC9 Контрольная сумма, старший байт
В ответ на отправленный запрос будет получен ответ с ошибкой связи. Дело в том, что ведущее устройство сети продолжает коммуникацию на скорости 38 400 бод, а расходомер теперь сконфигурирован для работы на скорости 19 200 бод.
Для продолжения коммуникации с расходомером необходимо изменить скорость обмена данными ведущего устройства на 19 200 бод. После этого можно отправить запрос на считывание скорости передачи данных расходомера.
Запрос: 01 03 00 0E 00 01 E5 C9, где
0х01 Адрес устройства
0х03 Код функции
0х00 Адрес первого регистра, старший байт
0х0E Адрес первого регистра, младший байт
0х00 Количество регистров, старший байт
0х01 Количество регистров, младший байт
0xE5 Контрольная сумма, младший байт
0xC9 Контрольная сумма, старший байт
Ответ: 01 03 02 00 01 79 84, где
0х01 Адрес устройства
0х03 Код функции
0х02 Количество байт данных
0х00 Код скорости передачи данных, старший байт
0х01 Код скорости передачи данных, младший байт
0x79 Контрольная сумма, младший байт
0x84 Контрольная сумма, старший байт
Реализуя управление расходомерами Line Tech серии MD с помощью ПК, можно воспользоваться большим числом уже написанных программ-симуляторов ведущего устройства Modbus-сети. Можно разработать специализированное программное обеспечение самостоятельно, учитывая особенности конкретного приложения. Несомненно, каждый специалист, занимающийся построением промышленных сетей RS485, имеет свои предпочтения. Для тех, кто не так глубоко погружен в данную тематику, можно рекомендовать популярную и удобную программу Modbus Poll, имеющую довольно большой бесплатный пробный период. Она позволяет проверить на практике описанные выше примеры и понять принципы цифровой коммуникации в Modbus-сети.