Счетчик modbus: Мониторинг электроэнергии со счетчиком Eastron SDM220-Modbus / Хабр

Мониторинг электроэнергии со счетчиком Eastron SDM220-Modbus / Хабр

Хочу рассказать про опыт подключения электросчетчика Eastron SDM220-Modbus и получения данных с него.

В целом ничего сложного нет, счетчик имеет стандартный интерфейс RS485 и поддерживает протокол Modbus.



Счетчик был куплен на aliexpress.
Для подключения был использован USB-RS485 адаптер собственного производства на базе FT232RL и SP485, но должно работать и с любым другим адаптером.

При подключении питания счетчик показывает текущие настройки, в том числе и скорость соединения, по умолчанию стояла скорость 2400, несмотря на то, что в даташине написана 9600. Я менял ее на 9600. Для этого нужно зажать на 3 сек. кнопку с угловой стрелкой, выбрать нужную настройку, изменить ее и и выйти из настроек зажав кнопку с круговыми стрелками.

Чтобы получить данные с устройства, нужно через адаптер usb-RS485 отправить в виртуальный com-порт 8-байтовый запрос:

Например, 01-04-00-00-00-02-71-CB

Где 01 — адрес устройства, виден на самом счетчике, по умолчанию — 1
04 — код операции, чтение регистра данных
00-00 — номер регистра, в этом регистре, например, хранится значение напряжения
00-02 — количество ячеек для чтения (2 байта)
71-CB — контрольная сумма по алгоритму CRC-16

Если все верно, в ответ прийдет сообщение вида:

Например, 01-04-04-43-4C-A1-C5-96-14
Где 01 — адрес
04 — код ответа на запрос
04 — кол-во байт ответа
43-4С-A1-C5 — возвращенное значение float в формате IEEE 754 в обратном порядке, т.е. значение должно быть C5-A1-4C-43
96-14 — контрольная сумма CRC-16

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


Красным шрифтом пишется запрос, синим — ответ, зеленым — декодированное значение, коричневым результаты опроса всех регистров.

Для работы нужен .NET Framework 3.0, в списке нужно выбрать com-порт, к которому подключился преобразователь RS485

Саму программу, а также документацию на счетчик можно скачать на нашем сайте megadevices.com.ua

Планы на будущее — прикрутить ESP8266 и организовать передачу данных на Народный мониторинг

ABB Счетчик 1-фазный акт. энергии,многотарифный, кл. точности 1,прямого вкл. 5(80)А, Modbus, тип E31 412-200

ABB Счетчик 1-фазный акт. энергии,многотарифный, кл. точности 1,прямого вкл. 5(80)А, Modbus, тип E31 412-200

Ищете Электросчетчик недорого? Обратите внимание на товар «ABB Счетчик 1-фазный акт. энергии,многотарифный, кл. точности 1,прямого вкл. 5(80)А, Modbus, тип E31 412-200». В интернет-магазине Амперкин ру вы можете купить данную позицию с артикулом 2CMA105937R1000 по цене 4245.48 ₽/шт. Добавьте товар в корзину и оформите заказ прямо сейчас!

Производитель:
ABB
Серия:
E31

Счетчик 1-фазный акт. энергии,многотарифный, кл. точности 1,прямого вкл. 5(80)А, Modbus, тип E31 412-200

Обратиться за консультацией можно по телефону:

или отправив письменное сообщение на e-mail:

+7 (495) 363-51-53 [email protected]

Sdm120-Modbus одна фаза DIN RS485 Modbus Квтч счетчик электроэнергии

ОднафазамногофункциональныйDIN Modbus энергиидозаторSDM120-Modbus

SDM120 энергиивметрахс синейобратнойсторонойсподсветкойЖК-экрандлясчитыванияпрефект»используютсядляизмеренияоднофазныекакжилые, полезностиипромышленногоприменения.Устройствоизмеряетиотображаетразличныеважныеэлектрическихпараметрови коммуникационныйпортRS485 длядистанционногоуправленияимониторинга.Bi-directional измеренияэнергииделаетустройство подходитдлясолнечныхфотоэлектрическихэнергетическихдозирования.ВкомпактнаяконструкцияиустановканаправляющихDin обеспечивает простоеиэкономичноерешениедлявашегодозирующийспроса.

L.Мерыквтч, Kvarh, КВТ, Квар, КВА, PF, Гц, dmd, V, ит.д. 

2.Di-directional измеренияIMP & EXP

3.Дваимпульсныхвыходов

4.RS485 Modbus

5.Din креплениятопливораспределительнойрампы 

6.45прямогоподключения

7.болеечемна1 класса точности 

Согласноспецификации

Номинальноенапряжение( ) ООН

Рабочеенапряжение

230 Вперем.тока

176-276Впеременноготока

Отсутствиекороткогозамыканиявозможности
— Выдерживатьнапряжениепеременноготока
-Импульснапряжениявыдержать

4 квдляминут

6кв-1.2мкскривой

Основныетекущие( Ib ) 5A
Макс.номинальныйток45A
РабочийдиапазонCurret

0,4%Ib~Imax

Выдерживатьперегрузкипотоку

20Imax для0,01 s

Рабочаячастота

50~60Гц

Выходнойчастотыпульса

1000/2000англ./Квтч

Типсвязи

RS485

ПротоколобменаданнымиПротоколModbus RTU




Контактнаяинформация 

ЭлектрическийDESON ГРУППЫCo.,Ltd.
ДжоЯн/ Mamager припослепродажномобслуживании
 YueQing XIRENDANG промышленнойзоны, , , , P.R ВэньчжоуЧжецзян. Китая325604
Телефон: +86 577 61609710                      Факс: +86 577 61713067
ДлямобильныхПК: 13868793667                      Cndeson.En.Made-in-china.Com +86 сайта:
 

Однофазный интеллектуальный счетчик (протокол Modbus)

Большинство электросчетчиков, используемых в повседневной жизни, однофазные, а трехфазные счетчики используются в основном в промышленных целях. Сегодня мы представим корпус подключения однофазных интеллектуальных счетчиков (протокол Modbus).

1. Используйте продукт
Шлюз умных коллекций Haichuang Box
Сервер последовательного порта (Shanghai ZLAN, 4 порта ZLAN5443A)
интеллектуальный счетчик Modbus (однофазный счетчик рельсов XT mini RS485 220 В DDS5188)

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

Три, конфигурация продукта
Шлюз умных коллекций Haichuang Box
Последовательный сервер (Shanghai ZLAN, 4 порта ZLAN5443A). См. руководство и средства тестирования, предоставленные производителем оборудования.
Минимальная версия руководства по тестированию
Интеллектуальный счетчик Modbus (однофазный счетчик рельсов XT mini RS485, 220 В, DDS5188) См. руководство, предоставленное производителем оборудования
1P485 однофазный многофункциональный (многофункциональный MODBUS-RTU)
В-четвертых, адрес регистра устройства.

Подробную информацию см. В руководстве по эксплуатации оборудования Однофазное многофункциональное устройство 1P485 (многофункциональное устройство MODBUS-RTU) .docx

Пятый, развертывание и отладка проекта
Откройте платформу визуальной разработки интеллектуального шлюза сбора данных Haichuang Box на рабочем столе и войдите в визуальный редактор. В этом руководстве необходимо использовать следующие узлы, перетащите их в столбец узлов слева, чтобы использовать

inject периодически запускает временную метку ввода или соответствующий символ

Modbus используется для чтения данных устройства протокола связи Modbus.

debug используется для отладки вывода узла

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

Конфигурация узла:
inject настроен на периодическое срабатывание, в основном используется при запуске процесса, конкретная конфигурация выглядит следующим образом

Modbus необходимо установить соответствующий порт и ip в настройках соответствующего устройства последовательного сервера, выбрать Modbus-TCP в качестве протокола и Telnet (прозрачный режим передачи) в качестве режима связи. Ярлыков и правил обработки данных достаточно, детали конфигурации следующие

debug выводит результаты отладки в окно отладки справа без конфигурации
Развертывание и отладка:
После настройки процесса в соответствии с приведенным выше руководством нажмите «Развернуть». После успешного развертывания программа начнет работать, и соответствующие результаты будут выведены в окне отладки. Результаты отладки следующие

Пять, пример
Приведенный выше учебник можно быстро повторно использовать, скопировав приведенный ниже код. Во вновь созданном процессе щелкните строку меню в правой части интерфейса — Импорт — Буфер обмена, вставьте приведенный ниже код в текстовое поле и нажмите ОК. Быстро использовать повторно

[
{
“id”: “f13c5ed7.d04f1”,
“type”: “debug”,
“z”: “7ab58a83.afdcb4”,
“name”: “”,
“active”: true,
“tosidebar”: true,
“console”: false,
“tostatus”: false,
“complete”: “false”,
“x”: 720,
“y”: 340,
“wires”: []
},
{
“id”: “518a69cb.f1d9e8”,
“type”: “iot-modbus”,
“z”: “7ab58a83.afdcb4”,
“name”: “”,
“server”: “688cd686.999e98”,
“fc”: “InputRegister”,
“columns”: [
{
“Key”: “dy”,
«Метка»: «Напряжение»,
“Address”: “0”,
“Quantity”: “2”,
“Arithmetic”: “%s.toFixed(2)”,
“ValueType”: “FloatBE”
},
{
“Key”: “dl”,
«Ярлык»: «Текущий»,
“Address”: “8”,
“Quantity”: “2”,
“Arithmetic”: “%s.toFixed(2)”,
“ValueType”: “FloatBE”
},
{
“Key”: “gl”,
«Метка»: «Активная мощность»,
“Address”: “18”,
“Quantity”: “2”,
“Arithmetic”: “%s.toFixed(2)”,
“ValueType”: “FloatBE”
},
{
“Key”: “ys”,
«Метка»: «Коэффициент мощности»,
“Address”: “42”,
“Quantity”: “2”,
“Arithmetic”: “%s.toFixed(2)”,
“ValueType”: “FloatBE”
},
{
“Key”: “pl”,
«Ярлык»: «Частота»,
“Address”: “54”,
“Quantity”: “2”,
“Arithmetic”: “%s.toFixed(2)”,
“ValueType”: “FloatBE”
},
{
“Key”: “zdl”,
«Метка»: «Общая активная мощность»,
“Address”: “256”,
“Quantity”: “2”,
“Arithmetic”: “%s.toFixed(2)”,
“ValueType”: “FloatBE”
}
],
“x”: 540,
“y”: 340,
“wires”: [
[
“f13c5ed7.d04f1”
]
]
},
{
“id”: “93e73185.c6074”,
“type”: “inject”,
“z”: “7ab58a83.afdcb4”,
“name”: “”,
“topic”: “”,
“payload”: “”,
“payloadType”: “date”,
“repeat”: “30”,
“crontab”: “”,
“once”: false,
“onceDelay”: 0.1,
“x”: 390,
“y”: 340,
“wires”: [
[
“518a69cb.f1d9e8”
]
]
},
{
“id”: “688cd686.999e98”,
“type”: “iot-modbus-client”,
“z”: “”,
“name”: “”,
“clienttype”: “Modbus-TCP”,
“host”: “192.168.7.191”,
“post”: “4196”,
“tcptype”: “Telnet”,
“serialport”: “COM1”,
“serialtype”: “RTU-Buffered”,
“baudrate”: “9600”,
“databits”: “8”,
“stopbits”: “1”,
“parity”: “None”,
“unitid”: “3”,
“timeout”: “2000”,
“connectiondelay”: “100”
}
]

Счетчик 1-фазный акт. энергии,многотарифный, кл. точности 1,прямого вкл. 5(80)А, Modbus, тип E31 412-200

Счетчик 1-фазный акт. энергии,многотарифный, кл. точности 1,прямого вкл. 5(80)А, Modbus, тип E31 412-200

Макс. ток (Imax), А:80
Номин. ток (In), А:80
Частота, Гц:50…50
Количество фаз:1-фазный (-ая)
Тип тарифа:Многотарифный
Тип электроэнергии:Активная мощность
Тип интерфейса:Порт RS-485
Степень защиты (IP):IP20
Тип счетчика:Электронный
Тип индикации:Цифровой (-ая)
Подходит для::Учета потребления и поставки (двунаправл.)
Модель/исполнение:Прямого включения
Способ монтажа:DRA (на DIN-рейку)

Счетчик 1-фазный акт. энергии,многотарифный, кл. точности 1,прямого вкл. 5(80)А, Modbus, тип E31 412-200 арт: 2CMA105937R1000 приобрести оптом в интернет — магазине Электро ОМ


Характеристики

Количество фаз

Модель/исполнение

Прямого включения

Способ монтажа

DRA (на DIN-рейку)

Степень защиты (IP)

Тип индикации

Тип интерфейса

Многотарифный

Нет отзывов о данном товаре.

Написать отзыв

Ваш отзыв:

Примечание: HTML разметка не поддерживается! Используйте обычный текст.

Отправить отзыв

Заказать товар:

Через форму заказа на сайте

По телефонам:

Отправить на заявку на электронную почту:

Мы осуществляем отправку по РФ — СДЭК, Деловые линии, КИТ, Собственным транспортом (2 и 5 тн) 

Бесплатная доставка по Екатеринбургу при сумме от 3000 руб — карта в разделе оплата и доставка

Счетчик импульсов 8 каналов modbus в Самаре (Счетчики импульсов)

Цена: 1 ₽

за 1 ед.


  • Минимальный заказ — 1 ед.;
  • Предложение добавлено 01.07.2021;
  • Уникальный идентификатор — 13623663;
  • Количество просмотров — 41;
Выбираете, где выгоднее заказать услугу или купить товар? “Счетчик импульсов 8 каналов modbus”, 1 ₽. В данный момент предложение в наличии.

Описание товара

Универсальное устройство для подсчета импульсных сигналов, с возможностью контроля линии связи. Регистрация формы сигналов производится АЦП с возможностью подстройки уровней регистрации.
Количество каналов — 8
Напряжение питание — 9…32В
Интерфейс RS485 (Modbus RTU)
Встроенный аккумулятор со схемой заряда для поддержания работы устройства и хранения данных.

Характеристики счетчика импульсов 8 каналов modbus


Товары, похожие на Счетчик импульсов 8 каналов modbus

Обращаем ваше внимание на то, что торговая площадка BizOrg.su носит исключительно информационный характер и ни при каких условиях не является публичной офертой.
Заявленная компанией 3SD (ТриЭсДи), ООО цена товара «Счетчик импульсов 8 каналов modbus» (1 ₽) может не быть окончательной ценой продажи. Для получения подробной информации о наличии и стоимости указанных товаров и услуг, пожалуйста, свяжитесь с представителями компании 3SD (ТриЭсДи), ООО по указанным телефону или адресу электронной почты.

MODBUS: Счетчик импульсов Веб-регистратор данных

Счетчик импульсов Веб-регистратор данных может подсчитывать импульсы на цифровых входах (2 по умолчанию с возможностью расширения).

Через веб-интерфейс можно просмотреть значения счетчика, изменить вес импульса и ввести смещение в случае несоосности или последовательного монтажа после установки счетчика.

Все данные отображаются через веб-интерфейс или доступны через соединение MODBUS TCP (по запросу также через MODBUS RTU).

В сочетании с фотоприемником используется для регистрации сумматоров счетчиков электроэнергии, оснащенных оптическим импульсом.

Регистратор данных в качестве дополнительного функционала можно заказать с экономией времени счетчиков в CSV-файле во внутренней памяти или на SD-карте. Файлы можно загрузить с помощью функции FTP-сервера. Версия -L

 

  6 ДВ ЭТН 22 ДВ 2 DI ETH-L 18 DI ETH-L
Интернет против против против против
Modbus TCP против против против против
Modbus RTU на порт RS232 на порт RS232 на порту RS485 на порту RS485
Файл входа в систему (SD-карта)     против против

 

Версия SD-карты может отправлять данные на удаленный FTP-сервер с фиксированным шагом времени

Особенности

  • Электропитание через клеммный разъем для источника питания 10 ~ 30 В постоянного тока
  • Конфигурация через веб-интерфейс
  • Монтаж на DIN-рейку
  • Рабочая температура: от -20 до +70°С
  • Температура хранения: от -40° до +80°С
  • Размеры и вес Размеры: 22.5 мм Д x 101 мм Ш x 120 мм В
  • Вес: 150 г
  • Сертификаты CE, RoHS

Удаленный LPC 0,1 мкм (выход MODBUS) » Счетчики жидких частиц » LWS

  LPC 0,1 мкм (MODBUS) LPC 0,1 мкм (4-20 мА) LPC 0,2 мкм (MODBUS) LPC 0,2 мкм (4-20 мА) LPC 0,3 мкм (MODBUS) LPC 0,3 мкм (4-20 мА) LPC 0,5 мкм (MODBUS) ЛПК 0.5 мкм (4-20 мА)

Технические характеристики

Диапазон размеров 0,1 – 0,5 мкм 0,1 – 0,5 мкм 0,2 – 2,0 мкм 0,2–2,0 мкм 0,3 – 3,0 мкм 0,3 – 3,0 мкм 0,5 – 100,0 мкм 0,5 – 100,0 мкм
Размер канала Стандарт: 0,1, 0,2, 0,3, 0,5 мкм Стандарт: 0,1, 0,2 мкм;
Дополнительно: 0.1, 0,3 мкм; 0,1, 0,5 мкм
Стандарт: 0,2, 0,3, 0,5, 1,0 мкм; 0,2, 0,5, 1,0, 2,0 мкм Стандарт: 0,2, 0,3 мкм
Дополнительно: 0,2, 0,5 мкм; 0,2, 1,0 мкм; 0,2, 2,0 мкм
Стандарт: 0,3, 0,5, 0,7, 1,0 мкм; 0,3, 0,5, 1,0, 3,0 мкм Стандарт: 0,3, 0,5 мкм
Дополнительно: 0,3, 0,7 мкм; 0,3, 2,0 мкм; 0,3, 3,0 мкм
Стандарт: 0,5, 0,7, 1,0, 2,0 мкм; 0,5, 1,0, 2,0, 3,0 мкм; 0,5, 1,0, 2,0, 5,0 мкм Стандарт: 0,5, 1,0 мкм
Дополнительно: 0,5, 2,0 мкм; 0,5, 5.0 мкм
Лазерный источник Лазерный диод
Расход 100 мл/мин
Калибровка Отслеживаемый NIST
Хранение данных Вращающийся буфер, 2000 записей Вращающийся буфер, 2000 записей Вращающийся буфер, 2000 записей Вращающийся буфер, 2000 записей
Режимы связи RS-232 через RJ45 к ПК, RS485/Modbus RS-232 через RJ45 к ПК, 4-20 мА RS-232 через RJ45 к ПК, RS485/Modbus RS-232 через RJ45 к ПК, 4-20 мА RS-232 через RJ45 к ПК, RS485/Modbus RS-232 через RJ45 к ПК, 4-20 мА RS-232 через RJ45 к ПК, RS485/Modbus RS-232 через RJ45 к ПК, 4-20 мА
Светодиодные индикаторы Питание, обслуживание, отбор проб Питание и обслуживание Питание, обслуживание, отбор проб Питание, Сервис Питание, обслуживание, отбор проб Питание, обслуживание, отбор проб Питание, обслуживание, отбор проб Питание, обслуживание, отбор проб
Вспомогательное программное обеспечение LMS Express, Express RT и RT+, LMSNet
Предел концентрации 64 000 имп/мл при 5% погрешности совпадения 4000 импульсов/мл при 5% ошибки совпадения
Внешний аварийный выход Нормально разомкнутый сухой контакт, номинал 0–60 В переменного/постоянного тока, 1 А
Корпус Нержавеющая сталь
Входное/выходное соединение пробы 1/4″ Flaretek™
Температура образца 32–302 °F (0–150 °C)
Давление пробы 150 фунтов на квадратный дюйм
Материалы смачиваемой поверхности Кварц, ПТФЭ, ПФА
Мощность 24 В пост. тока
Размеры 5.7 дюймов (Д) x 5,2 дюйма (Ш) x 3 дюйма (В) [14,47 x 13,2 x 7,6 см]
Вес 3,5 фунта (1,58 кг)

Условия окружающей среды

Эксплуатация от 50°F до 104°F (от 10°C до 40°C) / от 20% до 95% без конденсации
Хранение от 14°F до 122°F (от -10°C до 50°C) / до 98% без конденсации

Аксессуары

В комплекте Руководство по эксплуатации на компакт-диске; Источник питания; чистящий раствор Micro90®; пробоотборная трубка; Прокладка кабеля; Щетка для чистки Руководство по эксплуатации на компакт-диске; Источник питания; щеточка для чистки проточной кюветы; раствор Micro90®; трубка. Руководство по эксплуатации на компакт-диске; Источник питания; чистящий раствор Micro90®; пробоотборная трубка; Прокладка кабеля; комплект для развальцовки; Щетка для чистки Руководство по эксплуатации на компакт-диске; Источник питания; трубки; щеточка для чистки проточной кюветы; Решение Micro90® Руководство по эксплуатации на компакт-диске; Источник питания; чистящий раствор Micro90®; пробоотборная трубка; Прокладка кабеля; комплект для развальцовки; Щетка для чистки Руководство по эксплуатации на компакт-диске; Источник питания; трубки; щеточка для чистки проточной кюветы; Решение Micro90® Руководство по эксплуатации на компакт-диске; Источник питания; чистящий раствор Micro90®; пробоотборная трубка; Прокладка кабеля; комплект для развальцовки; Щетка для чистки Руководство по эксплуатации на компакт-диске; Источник питания; трубки; щеточка для чистки проточной кюветы; Решение Micro90®
Дополнительно Печатное руководство по эксплуатации; Сетевой адаптер; адаптер беспроводной сети; Устройство управления потоком; комплект для развальцовки; Развальцовочные гайки; Подставка LPC с креплением для расходомера; Расходомер LPC — алюминий; Расходомер LPC — Teflon™ PFA; ДИСТАНЦИОННЫЙ монтажный кронштейн; СДО Экспресс, Экспресс РТ; Программное обеспечение LMSNet Печатное руководство по эксплуатации; Устройство управления потоком; пробоотборная трубка; Прокладка кабеля; комплект для развальцовки; Развальцовочные гайки; Подставка LPC с креплением для расходомера; Расходомер LPC — алюминий; Расходомер LPC — Teflon™ PFA; Дистанционный монтажный кронштейн. Печатное руководство по эксплуатации; Сетевой адаптер; адаптер беспроводной сети; Устройство управления потоком; комплект для развальцовки; Развальцовочные гайки; Подставка LPC с креплением для расходомера; Расходомер LPC — алюминий; Расходомер LPC — Teflon™ PFA; ДИСТАНЦИОННЫЙ монтажный кронштейн; ПО LMS Express, Express RT; Программное обеспечение LMSNet Печатное руководство по эксплуатации; Устройство управления потоком; пробоотборная трубка; Прокладка кабеля; комплект для развальцовки; Развальцовочные гайки; Подставка LPC с креплением для расходомера; Расходомер LPC — алюминий; Расходомер LPC — Teflon™ PFA; Дистанционный монтажный кронштейн. Печатное руководство по эксплуатации; Сетевой адаптер; адаптер беспроводной сети; Устройство управления потоком; комплект для развальцовки; Развальцовочные гайки; Подставка LPC с креплением для расходомера; Расходомер LPC — алюминий; Расходомер LPC — Teflon™ PFA; ДИСТАНЦИОННЫЙ монтажный кронштейн; ПО LMS Express, Express RT; Программное обеспечение LMSNet Печатное руководство по эксплуатации; Устройство управления потоком; пробоотборная трубка; Прокладка кабеля; комплект для развальцовки; Развальцовочные гайки; Подставка LPC с креплением для расходомера; Расходомер LPC — алюминий; Расходомер LPC — Teflon™ PFA; Дистанционный монтажный кронштейн. Печатное руководство по эксплуатации; Сетевой адаптер; адаптер беспроводной сети; Устройство управления потоком; комплект для развальцовки; Развальцовочные гайки; Подставка LPC с креплением для расходомера; Расходомер LPC — алюминий; Расходомер LPC — Teflon™ PFA; ДИСТАНЦИОННЫЙ монтажный кронштейн; ПО LMS Express, Express RT; Программное обеспечение LMSNet Печатное руководство по эксплуатации; Устройство управления потоком; пробоотборная трубка; Прокладка кабеля; комплект для развальцовки; Развальцовочные гайки; Подставка LPC с креплением для расходомера; Расходомер LPC — алюминий; Расходомер LPC — Teflon™ PFA; Дистанционный монтажный кронштейн.

Modbus RTU упрощается благодаря подробным описаниям и примерам

Из этой статьи вы узнаете о протоколе Modbus RTU, который широко используется в системе управления технологическими процессами.

Комплектация:

Описание протокола Modbus RTU

Modbus — протокол связи основан на архитектуре ведущий-ведомый. Для передачи данных используются интерфейсы RS-485, RS-422, RS-232, а также сети Ethernet TCP/IP (протокол Modbus TCP).

Сообщение Modbus RTU состоит из адреса устройства SlaveID, функционального кода, специальных данных в зависимости от функционального кода и CRC контрольной суммы.

SlaveID Код функции Специальные данные CRC

Если вы отбросите адрес SlaveID и контрольную сумму CRC, вы получите PDU, блок данных протокола.

SlaveID — адрес устройства, может принимать значение от 0 до 247, адреса от 248 до 255 зарезервированы.

Данные в модуле хранятся в 4-х таблицах.

Две таблицы доступны только для чтения, а две — для чтения и записи.

9999 значений размещены в каждой таблице.

чтение-запись
НОМЕР РЕГИСТРА АДРЕС РЕГИСТРА HEX ТИП ИМЯ ТИП
1-9999 0000 до 270E Read-Weight дискретных выходов
10001-19999 0000 до 270E READ Дискретный ввод контакты Di
30001-39999 0000 до 270018 0000 до 270E READ Аналоговый входные регистры AI
40001-49999 0000 до 270E Read-White Аналоговый выходной вывод удержания реестров AO

Сообщение Modbus использует адрес регистра.

Например, первый регистр регистра держателей АО имеет номер 40001, но его адрес равен 0000.

Разница между этими двумя величинами является «смещением».

Каждая таблица имеет свое смещение соответственно: 1, 10001, 30001 и 40001.

Ниже приведен пример запроса Modbus RTU на получение значения AI регистров временного хранения из регистров #40108-40110 с адресом устройства 17.

11 03 006B 0003 7687

7 7 11 8 7 006B 0003 017 7 0003 8 7 7687
Адрес плавеного устройства (17 =

11 гекса)

функциональный код функциональной код
Адрес первого (40108-40001 = 107 = 6b hex)
Количество необходимых регистров (чтение 3 регистров от 40108 до 40110)
CRC CHRC

В ответ на устройство Modbus RTU Slave получаем:

11 03 06 АЕ41 5652 4340 49АД

Где:

Значение бита старшего регистра 7 11 7 7 Адрес устройства 8 (17 = 11 Hex) 7 03 8 7 7 06 7 AE 7 41 8
SLAVEID
BYTES Далее (6 байтов) BYTE COUNT
(AE Hex) Регистрация Знако (AO0)
Младший бит регистра (41 шестнадцатеричный) Значение регистра Lo (AO0)
56 Значение старшего бита регистра (9018) 9017 Hi (AO1)
52 Младший бит регистра (52 шестн.) Значение регистра Lo (AO1)
7 07 43 Значение верхнего регистра бита 8 (43 гекса) Регистрация Знако (AO2) 40

(40 гг.) Регистрация Значение Lo (AO2) 7 49 7 7 CRC 7 7 CRC Value Lo

Аналоговый выход AO0 имеет значение AE 41 HEX или 44609 в десятичной системе.

Регистр аналогового выхода AO1 имеет значение 56 52 HEX или 22098 в десятичной системе.

Регистр аналогового выхода AO2 имеет значение 43 40 HEX или 17216 в десятичной системе.

Значение AE 41 HEX составляет 16 бит 1010 1110 0100 0001, может принимать другое значение в зависимости от типа представления.

Значение регистра 40108 в сочетании с регистром 40109 дает 32-битное значение.

Пример представления.

295 AE41 7522 AE41
Просмотреть тип 2 Просмотреть тип Value Пример в Hex
16-битный unsigned integer 0 до 65535 AE41 44 60017
16-битный подписанный целое число -32768 до 32767 AE41 -20 -20 927
Два персонажа ASCII 2 CHAR AE41 ® AE41 ® AE 40018
Discrete ON / OFF Value 0 и 1 0001 0001
32-битовое целое число без знака 0 до 42 5652 2
32-разрядное целое число -2147483648 до 2147483647 5652 -1371449774
32 -битное число одинарной точности IEEE с плавающей запятой от 1,2·10−38 до 3,4×10+38 AE41 5652 -4.395978 E-11
четырехсимвольная строка ASCII 4 символа AE41 5652 ® A V R

Назад к содержанию

Что такое команды Modbus RTU?

Вот таблица с кодами чтения и записи регистров Modbus RTU.

2 Тип доступа 900 17 Сил множественные катушки
Код функции
Что делает функция Value Тип доступа
01 (0x01) чтение Состояние Чтение катушки дискретных READ
02 (0x02 ) прочитайте Di прочитанные входные статус CHARETE READ
03 (0x03) Read Ao Read Holders Registers 16 бит READ
04 (0x04) Читать ai Read Input Регит 160018 Читать
05 (0x05) Написать один DO Force One Coil дискретных Написать
06 (0x06) Написать один AO Preset Single Register 16 бит Write
15 (0x0F) Множественная запись DO дискретные Написать Написать
16 (0x10) Несколько AO Recording Preset Многократные реестры 16-бит Написать

Назад к содержимому

Как отправить команду Modbus RTU для чтения дискретного вывода? Команда 0x01

Эта команда используется для считывания значений цифровых выходов DO.

Запрос PDU указывает начальный адрес первого регистра DO и последующее количество требуемых значений DO. В PDU значения DO адресуются, начиная с нуля.

Значения DO в ответе находятся в одном байте и соответствуют значению битов.

Значения битов определяются как 1 = ВКЛ и 0 = ВЫКЛ.

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

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

Пример DO-запроса с 20 по 56 для адреса SlaveID устройства 17. Адрес первого регистра будет 0013 hex=19, т.к. счет ведется с 0 адреса (0014 hex=20, -1 нулевое смещение= получаем 0013 hex = 19).

2 RASTE
BYTE BYTE PROQUE BYTE
(Hex) Имя поля (Hex) Имя поля
11 Адрес устройства 11 Адрес устройства
01 01 функциональный код 01 функциональный код
00 Адрес первого регистра Привет BYTES 05 Количество байтов более
13 Адрес первого Зарегистрироваться Lo Bytes CD Регистрация Значение 27-20 (1100 1101)
00 Количество регистров Привет BYTES 6B Регистрация Значение DO 35-28 (0110 1011)
25 Количество регистров Младшие байты B2 Значение регистра DO 43-36 (1011 0010)
0E Checksu m crc 0e 0e Register Value DO 51-44 (0000 1110)
84 CRC 1B Регистрация Значение DO 56-52 (0001 1011)
45 Checksum CRC
E6 Контрольная сумма CRC

Выходные состояния DO 27-20 показаны как значения байта CD hex или в двоичной системе 1100 1101.

В регистре DO 56-52 запрошено 5 бит справа, а остальные биты заполнены нулями до полного байта ( 000 1 1011 ).

2 битов
каналов
DO 53 DO 52
0 0 0 1 1 0 1 1
Hex 1B

Назад к содержанию

Как отправить команду Modbus RTU для считывания цифрового входа? Команда 0x02

Эта команда используется для считывания значений цифровых входов DI.

Пример DI-запроса из регистров с #10197 по 10218 для устройства SlaveID с адресом 17. Адрес первого регистра будет 00C4 hex=196, т.к. Account ведется с 0 адреса.

2 RASTE 18 90 Содержание

Как отправить команду Modbus RTU для считывания аналогового выхода? Команда 0x03

Эта команда используется для считывания значений аналоговых выходов AO.

Пример запроса AO из регистров с #40108 по 40110 для SlaveID устройства с адресом 17. Адрес первого регистра будет 006B hex=107, т.к. Account ведется с 0 адреса.

BYTE BYTE PROQUE BYTE
(Hex) Имя поля (Hex) Имя поля
11 Адрес устройства 11 Адрес устройства
02 02 функциональный код 02
00 Адрес первого регистра Привет BYTES 03 Количество байтов более
C4 Адрес первого Зарегистрироваться LO BYTES AC Register Value Di 10204-10197 (1010 1100)
00 Количество реестров Привет BYTES DB Register Value Di 10212-10205 (1101 1011)
16 Количество регистров Младшие байты 35 Значение регистра DI 10218-10213 (0011 0101)
BA 90 018 Контрольная сумма CRC 20 Контрольная сумма CRC
A9 Контрольная сумма CRC 18 Контрольная сумма CRC
2 RASTE 9001 7 Регистрация Значение Lo # 40109
BYTE BYTE PROQUE BYTE
(Hex) Имя поля (Hex) Имя поля
11 Адрес устройства 11 Адрес устройства
03 03 функциональный код 03 функциональный код
00 Адрес первого регистра Привет BYTES 06 Количество байтов Подробнее
6B Адрес первого Зарегистрироваться Lo Bytes AE Register Value Hi # 40108
00 Количество реестров Привет BYTES 41 Register Value Lo # 40108
03 Количество регистров Lo Bytes 56 Значение регистра Hi #40109
76 Контрольная сумма CRC 52
87 CRC CRC 43 Регистрация Значение Привет # 40110
40 40

0
49
49 CRC
AD Контрольная сумма CRC

Назад к содержанию

Как отправить команду Modbus RTU для чтения аналогового входа? Команда 0x04

Эта команда используется для считывания значений аналоговых входов AI.

Пример ИИ запроса из регистра #30009 на SlaveID устройства адрес 17. Адрес первого регистра 0008 hex=8, т.к. Account ведется с 0 адреса.

2 RASTE
BYTE BYTE PROQUE BYTE
(Hex) Имя поля (Hex) Имя поля
11 Адрес устройства 11 Адрес устройства
04 04 функциональный код 04
00 Адрес первого регистра Привет BYTES 02 Количество байтов Подробнее
08 Адрес первого Зарегистрироваться Lo Bytes 00 Регистрация значения Привет # 300017
00
00 Количество регистров Привет BYTES 0A Регистрация Значение Lo # 30009
01 Количество регистров Lo Bytes F8 Контрольная сумма CRC
B2 Контрольная сумма CRC F4 Контрольная сумма C RC
98 Контрольная сумма CRC

Назад к содержанию

Как отправить команду Modbus RTU для записи дискретного вывода? Команда 0x05

Эта команда используется для записи одного значения цифрового выхода DO.

Значение FF 00 hex устанавливает выход в положение ON.

Значение 00 00 hex отключает выход.

Все другие значения недействительны и не будут затронуты выходным значением.

Нормальным ответом на такой запрос является эхо (повторный запрос в ответе), которое возвращается после изменения состояния DO.

Пример записи DO с регистром #173 для адреса SlaveID устройства 17. Адрес регистра будет 00AC hex=172, т.к. Account ведется с 0 адреса.

2 RASTE
BYTE BYTE PROQUE BYTE
(Hex) Имя поля (Hex) Имя поля
11 Адрес устройства 11 Адрес устройства
05 05 функциональный код 05 функциональный код
00 Адрес первого регистра Привет BYTES 00 Адрес первого регистра Привет BYTES
AC Адрес Из первого регистра BYTES AC AC Адрес первого регистра BYTES
FF Значение Hi Bytes FF Значение Hi Bytes
00 Значение Lo Bytes 00 Значение Lo байт
4E Контрольная сумма CRC 4E Ch ecksum CRC
8B Контрольная сумма CRC 8B Контрольная сумма CRC

Состояние выхода DO173 изменилось с ВЫКЛ на ВКЛ.

Вернуться к содержанию

Как отправить команду Modbus RTU для записи аналогового выхода? Команда 0x06

Эта команда используется для записи одного значения аналогового выхода AO.

Пример записи в АО с регистром #40002 для адреса SlaveID устройства 17. Адрес первого регистра будет 0001 hex=1, т.к. учет ведется с 0 адреса.

2 RASTE
BYTE BYTE PROQUE BYTE
(Hex) Имя поля (Hex) Имя поля
11 Адрес устройства 11 Адрес устройства
06 06 функциональный код 06 функциональный код
00 Адрес первого регистра Привет BYTES 00 Адрес первого регистра Привет BYTES
01 Адрес Первый регистр Lo Bytes 01 Адрес первого регистра BYTES
00 Значение Hi Bytes 00 Значение Hi Bytes
03 Значение Lo Bytes 03 Значение Lo байт
9A Контрольная сумма CRC 9A Ch ecksum CRC
9B Контрольная сумма CRC 9B Контрольная сумма CRC

Вернуться к содержанию

Как отправить команду Modbus RTU для записи нескольких дискретных контактов? Команда 0x0F

Эта команда используется для записи нескольких значений цифрового выхода DO.

Пример записи в несколько ДО с регистрами с #20 по #29 для адреса SlaveID устройства 17. Адрес регистра будет 0013 hex=19, т.к. Account ведется с 0 адреса.

2 RASTE 9001 7 02 3 900 Возвращает количество записанных ответов.

Вернуться к содержанию

Как отправить команду Modbus RTU для записи нескольких аналоговых выходов? Команда 0x10

Эта команда используется для записи нескольких значений аналогового выхода AO.

Пример записи в несколько АО с регистрами #40002 и #40003 для адреса SlaveID устройства 17. Адрес первого регистра будет 0001 hex=1, т.к. Account ведется с 0 адреса.

BYTE BYTE PROQUE BYTE
(Hex) Имя поля (Hex) Имя поля
11 Адрес устройства 11 Адрес устройства
0F 0F функциональный код 0F функциональный код
00 Адрес первого регистра Привет BYTES 00 Адрес первого регистра Привет BYTES
13 Адрес Из первого регистра BYTES 13 13 Адрес первого регистра BYTES
00 Количество реестров Привет BYTES 00 Количество записанных регистров Hi Bytes
0A Количество регистры Младшие байты 0A Количество записанных регистров Младшие байты
Количество байтов Подробнее 26 CHRC CRC
CD BYTE Value Do 27-20 (1100 1101) 99 CULTSUM CRC
01 BYTE DO 29 -28 (0000 0001)
BF Контрольная сумма CRC
0B Контрольная сумма CRC
2 RASTE 9001 7 04
BYTE BYTE PROQUE BYTE
(Hex) Имя поля (Hex) Имя поля
11 Адрес устройства 11 Адрес устройства
10 10 функциональный код 10
00 Адрес первого регистра Привет BYTES 00 Адрес первого регистра Привет BYTES
01 Адрес Первый регистр Lo Bytes 01 Адрес первого регистра BYTES
00 Количество реестров Привет BYTES 00 Количество записанных реестров Привет BYTES
02 Количество регистры Младшие байты 02 Количество записанных регистров Младшие байты
Количество байтов более 12 Контрольная сумма CRC
00 Значение Привет 40002 98 Контрольная сумма CRC
0A Значение Lo 40002
01 Value Hi 40003
02 Value Lo 40003
C6 CHRC
F0
F0 CRC CRC

Вернуться к содержанию

Какие ошибки запроса Modbus?

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

Ответ будет содержать измененный код функции, старший бит будет равен 1.

Пример:

2 Функциональный код ошибки в ответ 3
Это было Это стало
Функциональный код по запросу
01 (01 Hex) 0000 0001 129 (81 Hex) 1000 0001
02 (02 hex) 0000 0010 130 (82 hex) 100017 0010
03 (03 hex) 0000 0011 131 (83 hex) 1000 0011
04 (04 hex) 0000 0100 132 ( 84 hex) 1000 0100
05 (05 шестнадцатеричных) 0000 0101 133 (85 шестнадцатеричных) 1000 0101
06 (06 hex) 0000 0110 134 (86 шестнадцатеричных) 1000 0110
15 (0f hex) 0000 1111 143 (8f hex) 100017 1111
16 (10 шестигранников) 0001 0000 144 (90 шестигранника) 1001 0000

Запрос и реагирование пробы с ошибкой:

2 BYTE
BYTE BYTE BYTE BYTE
(Hex) Имя поля (Hex) Имя поля
0A Адрес устройства 0A Адрес устройства
01 01 функциональный код 81 функциональный код с измененным битом
04 адрес первого регистра Привет BYTES 02 код ошибки
A1 адрес Первый регистр lo bytes B0 CRC
00 00 53 53
01 Количество регистров Lo Bytes
AC Контрольная сумма CRC
63 Контрольная сумма CRC

Пояснение ион кодов ошибок

01 КОД ФУНКЦИИ ПРИНЯТ, НЕ МОЖЕТ БЫТЬ ОБРАБОТАН.
02 Адрес данных, указанный в запросе, недоступен.
03 Значение, содержащееся в поле данных запроса, является недопустимым.
04 Произошла неисправимая ошибка, когда подчиненное устройство пыталось выполнить запрошенное действие.
05 Ведомый принял запрос и обрабатывает его, но это занимает много времени. Этот ответ предотвращает создание хостом ошибки тайм-аута.
06 Подчиненное устройство занято обработкой команды. Мастер должен повторить сообщение позже, когда ведомый будет освобожден.
07 Ведомое устройство не может выполнить программную функцию, указанную в запросе. Этот код возвращается при неудачном запросе программы с использованием функций с номерами 13 или 14. Ведущий должен запросить диагностическую информацию или информацию об ошибках у ведомого.
08 Ведомое устройство обнаружило ошибку четности при чтении расширенной памяти.Мастер может повторить запрос, но обычно в таких случаях требуется ремонт.

Вернуться к содержанию

Программы для работы с протоколом Modbus RTU

Ниже перечислены программы, облегчающие работу с Modbus.

DCON Utility Pro с поддержкой Modbus RTU, ASCII, DCON. Скачать

Modbus Master Tool с поддержкой Modbus RTU, ASCII, TCP. Скачать

Клиент Modbus TCP с поддержкой Modbus TCP.Скачать

Назад к содержанию

Оборудование с поддержкой Modbus RTU

Назад к содержанию

Подробное описание протокола Modbus — NI

PDU и код, который его обрабатывает, составляют основу Спецификации прикладного протокола Modbus. Эта спецификация определяет формат PDU, различные концепции данных, используемые протоколом, использование функциональных кодов для доступа к этим данным, а также конкретную реализацию и ограничения каждого функционального кода.

Формат Modbus PDU определяется как код функции, за которым следует соответствующий набор данных. Размер и содержание этих данных определяются кодом функции, а размер всего PDU (код функции и данные) не может превышать 253 байта. Каждый код функции имеет определенное поведение, которое подчиненные устройства могут гибко реализовать в зависимости от желаемого поведения приложения. Спецификация PDU определяет основные концепции доступа к данным и манипулирования ими; однако ведомое устройство может обрабатывать данные способом, который явно не определен в спецификации.

Доступ к данным в Modbus и модели данных Modbus

Данные, доступные для Modbus, обычно хранятся в одном из четырех банков данных или диапазонов адресов: катушки, дискретные входы, регистры временного хранения и входные регистры. Как и в большинстве спецификаций, названия могут различаться в зависимости от отрасли или приложения. Например, регистры временного хранения могут называться выходными регистрами, а катушки могут называться цифровыми или дискретными выходами. Эти банки данных определяют тип и права доступа к содержащимся данным.Ведомые устройства имеют прямой доступ к этим данным, которые размещаются локально на устройствах. Данные, доступные для Modbus, обычно представляют собой подмножество основной памяти устройства. Напротив, ведущие устройства Modbus должны запрашивать доступ к этим данным с помощью различных функциональных кодов. Поведение каждого блока описано в таблице 1.

 

Блок памяти Тип данных Главный доступ Подчиненный доступ
Катушки Булево значение Чтение/запись Чтение/запись
Дискретные входы Булево значение Только для чтения Чтение/запись
Регистры хранения Слово без знака Чтение/запись Чтение/запись
Входные регистры Слово без знака Только для чтения Чтение/запись

Таблица 1. Блоки модели данных Modbus

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

Блоки полностью концептуальны. Они могут существовать как отдельные адреса памяти в данной системе, но они также могут перекрываться. Например, катушка один может находиться в том же месте в памяти, что и первый бит слова, представленного регистром хранения номер один.Схема адресации полностью определяется ведомым устройством, и его интерпретация каждого блока памяти является важной частью модели данных устройства.

Адресация модели данных

Спецификация определяет каждый блок как содержащий адресное пространство до 65 536 (2 16 ) элементов. В определении PDU Modbus определяет адрес каждого элемента данных в диапазоне от 0 до 65 535. Однако каждый элемент данных пронумерован от 1 до n, где n имеет максимальное значение 65 536.То есть катушка 1 находится в блоке катушек по адресу 0, а регистр хранения 54 находится по адресу 53 в разделе памяти, который ведомое устройство определило как регистры хранения.

Полные диапазоны, разрешенные спецификацией, не обязательно должны быть реализованы данным устройством. Например, устройство может решить не реализовывать катушки, дискретные входы или входные регистры, а вместо этого использовать только регистры временного хранения со 150 по 175 и с 200 по 225. Это вполне приемлемо, и недопустимые попытки доступа будут обрабатываться посредством исключений.

Диапазоны адресации данных

Хотя спецификация определяет разные типы данных как существующие в разных блоках и назначает каждому типу локальный диапазон адресов, это не обязательно приводит к интуитивно понятной схеме адресации для целей документирования или понимания доступной по Modbus памяти данного устройства. Чтобы упростить обсуждение расположения блоков памяти, была введена схема нумерации, которая добавляла префиксы к адресу рассматриваемых данных.

Например, вместо ссылки на элемент как на регистр временного хранения 14 по адресу 13, руководство по устройству будет ссылаться на элемент данных по адресу 4014, 40014 или 400014. В каждом случае первое указанное число равно 4 для представления регистров временного хранения, а адрес указывается с использованием оставшихся чисел. Разница между 4XXX, 4XXXX и 4XXXXX зависит от адресного пространства, используемого устройством. Если используются все 65 536 регистров, следует использовать нотацию 4XXXXX, поскольку она допускает диапазон от 400 001 до 465 536.Если используется только несколько регистров, обычной практикой является использование диапазона от 4001 до 4999.

В этой схеме адресации каждому типу данных назначается префикс, как показано в таблице 2.

 

Блок данных Префикс
Катушки 0
Дискретные входы 1
Входные регистры 3
Регистры хранения 4

Таблица 2. Префиксы диапазона данных

Катушки существуют с префиксом 0. Это означает, что ссылка 4001 может относиться либо к регистру хранения один, либо к катушке 4001. По этой причине во всех новых реализациях рекомендуется использовать 6-значную адресацию с ведущими нулями, и это следует учитывать. в документации. Таким образом, регистр хранения номер один имеет номер 400 001, а катушка 4001 — номер 004 001.

Начальные значения адреса данных

Разница между адресами памяти и справочными номерами дополнительно усложняется индексацией, выбранной данным приложением.Как упоминалось ранее, первый регистр хранения имеет нулевой адрес. Как правило, ссылочные номера имеют один индекс, что означает, что начальное значение заданного диапазона равно единице. Таким образом, 400 001 буквально транслируется в регистр временного хранения 00001, который находится по адресу 0. Некоторые реализации предпочитают начинать свои диапазоны с нуля, что означает, что 400 000 преобразуется в регистр временного хранения по нулевому адресу. Таблица 3 демонстрирует эту концепцию.

Адрес Регистрационный номер Номер (1-индексный, стандартный) Номер (0-индексация, альтернативный)
0 1 400001 400000
1 2 400002 400001
2 3 400003 400002

Таблица 3. Схемы индексации регистров

 

Диапазоны с одним индексом широко распространены и настоятельно рекомендуются. В любом случае начальное значение для каждого диапазона должно быть указано в документации.

Большие типы данных

Стандарт Modbus предоставляет относительно упрощенную модель данных, которая не включает дополнительные типы данных, кроме беззнакового слова и битового значения. Хотя этого достаточно для некоторых систем, где значения битов соответствуют соленоидам и реле, а значения слов соответствуют немасштабированным значениям АЦП, этого недостаточно для более продвинутых систем.В результате многие реализации Modbus включают типы данных, которые пересекают границы регистров. Модуль регистрации данных и диспетчерского управления (DSC) NI LabVIEW и KEPServerEX определяют ряд типов ссылок. Например, строки, хранящиеся в регистре временного хранения, имеют стандартную форму (400 001), но за ними следуют десятичное число, длина и порядок байтов строки (400 001,2H, двухсимвольная строка в регистре временного хранения 1, где старший байт соответствует к первому символу строки).Это необходимо, поскольку каждый запрос имеет конечный размер, поэтому мастер Modbus должен знать точные границы строки, а не искать длину или разделитель, например NULL.

Бит доступа

В дополнение к разрешению доступа к данным, которые пересекают границу регистра, некоторые ведущие устройства Modbus поддерживают ссылки на отдельные биты в регистре. Это выгодно, так как позволяет устройствам комбинировать данные каждого типа в одном и том же диапазоне памяти без необходимости разбивать двоичные данные на катушки и дискретные входные диапазоны.Обычно на это ссылаются с помощью десятичной точки и битового индекса или числа, в зависимости от реализации. То есть первый бит в первом регистре может быть 400 001,00 или 400 001,01. В любой документации рекомендуется указывать используемую схему индексации.

Порядок байтов данных

Мультирегистровые данные, такие как значения с плавающей запятой одинарной точности, могут быть легко переданы в Modbus путем разделения данных на два регистра. Поскольку это не определено стандартом, порядок следования байтов (или порядок байтов) этого разделения не определен.Хотя каждое беззнаковое слово должно быть отправлено в сетевом порядке байтов (с обратным порядком байтов), чтобы соответствовать стандарту, многие устройства меняют порядок байтов для многобайтовых данных. На рис. 2 показан необычный, но достоверный пример этого.

Рис. 2. Замена порядка байтов для многословных данных

Мастер должен понять, как ведомый хранит информацию в памяти, и правильно ее декодировать. Рекомендуется, чтобы документация отражала порядок слов, используемый системой.Порядок следования байтов также можно добавить в качестве параметра конфигурации системы с базовыми функциями кодирования и декодирования, если требуется гибкость в реализации.

Струны

Строки

могут быть легко сохранены в регистрах Modbus. Для простоты в некоторых реализациях требуется, чтобы длина строки была кратна двум, а любое дополнительное пространство заполнялось нулевыми значениями. Порядок байтов также является переменной при взаимодействии строк. Строковый формат может включать или не включать NULL в качестве конечного значения. В качестве примера этой изменчивости некоторые устройства могут хранить данные, как показано на рисунке 3.

Рисунок 3. Изменение порядка байтов в строках Modbus

Понимание функциональных кодов

В отличие от модели данных, которая может значительно различаться от устройства к устройству, функциональные коды и их данные явно определены стандартом. Каждая функция следует шаблону. Во-первых, ведомое устройство проверяет входные данные, такие как код функции, адрес данных и диапазон данных. Затем он выполняет запрошенное действие и отправляет ответ, соответствующий коду.Если какой-либо шаг в этом процессе терпит неудачу, запросчику возвращается исключение. Переносом данных для этих запросов является PDU.

БРП Modbus

PDU состоит из однобайтового функционального кода, за которым следует до 252 байтов данных, специфичных для функции.

Рисунок 4. Modbus PDU

Функциональный код является первым элементом, подлежащим проверке. Если код функции не распознается устройством, получившим запрос, оно отвечает исключением.Если код функции принят, ведомое устройство начинает декомпозировать данные в соответствии с определением функции.

 

Поскольку размер пакета ограничен 253 байтами, устройства ограничены в количестве передаваемых данных. Наиболее распространенные функциональные коды могут передавать от 240 до 250 байт фактических данных из подчиненной модели данных, в зависимости от кода.

Выполнение ведомой функции

Как определено моделью данных, разные функции определены для доступа к разным концептуальным блокам данных.Обычная реализация заключается в том, чтобы коды обращались к статическим ячейкам памяти, но доступны и другие варианты поведения. Например, функциональный код 1 (чтение катушек) и 3 (чтение регистров временного хранения) могут обращаться к одному и тому же физическому месту в памяти. Напротив, функциональный код 3 (чтение регистров хранения) и 16 (запись регистров хранения) может обращаться к совершенно разным местам в памяти. Таким образом, выполнение кода каждой функции лучше всего рассматривать как часть определения подчиненной модели данных.

Независимо от фактического поведения все подчиненные устройства должны следовать простой диаграмме состояний для каждого запроса.На рис. 5 показан пример этого для кода 1, считывание катушек.

Рис. 5. Чтение диаграммы состояния катушек из спецификации протокола Modbus

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

Хотя диапазоны статических адресов показаны на приведенной выше диаграмме состояний, потребности реальных систем могут привести к тому, что они будут несколько отличаться от определенных значений.В некоторых случаях ведомые устройства не могут передать максимальное количество байтов, определенное протоколом. То есть вместо того, чтобы разрешить мастеру запрашивать входные данные 0x07D0, он может ответить только 0x0400. Точно так же модель данных подчиненного устройства может определять диапазон допустимых значений катушки как адрес от 0 до 500. Если ведущий делает запрос на 125, начиная с адреса 0, это нормально, но если ведущий делает тот же запрос, начиная с адреса 400, последняя катушка будет иметь адрес 525, который находится за пределами допустимого диапазона для этого устройства и приведет к исключению 02, как определено диаграммой состояний.

Коды стандартных функций

Определение каждого стандартного кода функции находится в спецификации. Даже для наиболее распространенных функциональных кодов неизбежно возникают несоответствия между функциями, включенными на ведущем устройстве, и тем, что может выполнять ведомое устройство. Чтобы решить эту проблему, ранние версии спецификации Modbus TCP определяли три класса соответствия. Официальная спецификация испытаний на соответствие Modbus не ссылается на эти классы, а вместо этого определяет соответствие для каждой функции; однако они все же могут быть удобны для понимания.Рекомендуется, чтобы любая документация соответствовала спецификации испытаний и определяла их соответствие тем кодам, которые они поддерживают, а не устаревшим классификациям.

Коды класса 0
Коды

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

Код Описание
3 Чтение нескольких регистров
16 Запись нескольких регистров

Таблица 4. Коды класса соответствия 0

Класс 1 Коды
Коды функций класса 1

состоят из других кодов, необходимых для доступа ко всем типам модели данных. В исходном определении этот список включал код функции 7 (исключение чтения). Однако этот код определяется текущей спецификацией как серийный код.

Код Описание
1 Считывание катушек
2 Чтение дискретных входов
4 Чтение входных регистров
5 Запись одиночной катушки
6 Запись одного регистра
7 Чтение статуса исключения (только серийный)

Таблица 5. Коды класса соответствия 1

Класс 2 Коды
Коды функций класса 2

— это более специализированные функции, которые реализуются реже. Например, чтение/запись нескольких регистров может помочь сократить общее количество циклов запроса-ответа, но поведение все еще может быть реализовано с помощью кодов класса 0.

  Код Описание
15 Запись нескольких катушек
20 Чтение записи файла
21 Запись записи файла
22 Регистр записи маски
23 Чтение/запись нескольких регистров
24 Чтение FIFO

Таблица 6. Коды класса соответствия 2

 
Инкапсулированный интерфейс Modbus

Код инкапсулированного интерфейса Modbus (MEI), функция 43, используется для инкапсуляции других данных в пакете Modbus. В настоящее время доступны два номера MEI: 13 (CANopen) и 14 (идентификация устройства).

Функция 43/14 (идентификация устройства) полезна тем, что позволяет передавать до 256 уникальных объектов. Некоторые из этих объектов предопределены и зарезервированы, например, имя поставщика и код продукта, но приложения могут определять другие объекты для передачи как общие наборы данных.

Этот код обычно не используется.

Исключения

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

Исключения передаются в определенном формате пакета.Во-первых, запрашивающему мастеру возвращается функциональный код, равный исходному функциональному коду, за исключением установленного старшего бита. Это эквивалентно добавлению 0x80 к значению исходного кода функции. Вместо обычных данных, связанных с данным ответом функции, ответы об исключении включают один код исключения.

В рамках стандарта четыре наиболее распространенных кода исключений: 01, 02, 03 и 04. Они показаны в таблице 7 со стандартными значениями для каждой функции.

Код исключения Значение
01 Полученный код функции не поддерживается. Чтобы подтвердить исходный код функции, вычтите 0x80 из возвращаемого значения.
02 Запрос пытался получить доступ к недопустимому адресу. В стандарте это может произойти только в том случае, если начальный адрес и запрошенное количество значений превышают 2 16 .Однако некоторые устройства могут ограничивать это адресное пространство в своей модели данных.
03 В запросе были неверные данные. В некоторых случаях это означает, что имело место несоответствие параметров, например, между количеством отправленных регистров и полем «количество байтов». Чаще всего ведущий запрашивает больше данных, чем позволяет подчиненный или протокол. Например, мастер может одновременно считывать только 125 регистров хранения, а устройства с ограниченными ресурсами могут ограничивать это значение еще меньшим количеством регистров.
04 При попытке обработать запрос произошла неисправимая ошибка. Это универсальный код исключения, указывающий, что запрос действителен, но ведомое устройство не может его выполнить.

Таблица 7. Общие коды исключений Modbus

 

Диаграмма состояний для каждого функционального кода должна охватывать как минимум код исключения 01 и обычно включает коды исключений 04, 02, 03, а любые другие определенные коды исключений являются необязательными.

Fernhill Ведомый драйвер SCADA Modbus

Fernhill Ведомый драйвер SCADA Modbus Содержание справки
  1. Fernhill SCADA
  2. Справка
  3. Драйверы
  4. Modbus Slave

Введение

Modbus — это протокол связи для устройств PLC , открыто опубликованный Modicon (теперь часть Schneider Electric). С момента публикации в 1979 году Modbus получил широкое распространение в качестве коммуникационного протокола для ПЛК и других типов устройств.

Драйвер Modbus Slave получает и обрабатывает запросы от драйверов Modbus в других продуктах. Ведомый драйвер Modbus поддерживает следующие варианты протокола Modbus:

Поддерживаемые команды Modbus

Драйвер подчиненного устройства Modbus поддерживает следующие команды Modbus:

Command
Описание 3
02 Чтение ввода вход
03 Read Holdings Registers
04 Read Regive Regeters
05 05 Force One Coil
08 Диагностика
11 Читать счетчик событий Comm
15 Force Многие катушки
16 PRESET Несколько реестров
17 Report Plave ID
22 Mask Chiling Register Register

Команда диагностики (08) поддерживает эти подпункты:

Sub-Function
1 Restart Communication
2 Return Diagnogistic Registrame
10 Прозрачные счетчики и диагностический реестр
11 11 Обратный автобус Count
12
12 Rebly Bus Community )
13 Ошибка исключения на автобусе
14 Обратная величина Count
15 Вернуть раб нет Ответа Количество ответов
16 162932 NAK Count
17 Обратные ведомые подсчеты
18 Обратные Автобусы Catcher Count Count

Фернхилл

SCADA Ведомые теги Modbus

Драйвер ведомого устройства Modbus предоставляет следующие типы тегов для поддержки связи с использованием протокола Modbus:

Дополнительная информация

Протокол Modbus

Описание протокола Modbus.

Fernhill Драйверы SCADA

Для получения информации о других драйверах, доступных в Fernhill SCADA .

Глоссарий

Для значения терминов, используемых в Fernhill SCADA .

Китайский производитель ПЛК, RTU, поставщик Modbus Io

Компания Beijing Tengcon Technology, сначала известная как Beijing Econtrolnet Technology, была основана в 2002 году. Сейчас она состоит из компаний Beijing Econtrolnet, Tengcon Automation и Tengcon Intellitrument.К настоящему времени мы произвели более 100 000 ПЛК и модулей ввода/вывода. Наши продукты работают во многих крупных проектах, например, это газопровод запад-восток, Олимпийские игры 2008 года в Пекине, плотина озера Танцзяшань, нефтяное месторождение …

Компания Beijing Tengcon Technology, сначала известная как Beijing Econtrolnet Technology, была основана в 2002 году. Сейчас она состоит из компаний Beijing Econtrolnet, Tengcon Automation и Tengcon Intellitrument. К настоящему времени мы произвели более 100 000 ПЛК и модулей ввода/вывода.Наши продукты работают во многих крупных проектах, например, это газопровод запад-восток, Олимпийские игры 2008 года в Пекине, запрудное озеро Танцзяшань, скважина на нефтяном месторождении, Baosteel, Yangzi Petrochemical.

Компания Beijing Tengcon Technology насчитывает 40 сотрудников, более 30 процентов из которых заняты исследованиями и разработками. Мы сосредоточены на аппаратных, программных и сетевых исследованиях, нацеленных на производство ведущих устройств и оборудования автоматизации.

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

Положитесь на вычислительное оборудование, программное обеспечение и сетевые технологии, Tengcon Technology, предназначенные для производства основных продуктов и систем промышленной автоматизации. Более 30% сотрудников занимаются исследованиями и разработками, поэтому у нас есть сильные возможности в области исследований и разработок продуктов. Tengcon Technology имеет большой опыт в сборе различных сигналов, особенно в сборе электрических сигналов, поэтому наши продукты очень надежны в плане защиты от помех и молний.

Tengcon Technology усовершенствовала систему управления полной распределенной сетью, в которой система управления построена на основе абсолютно новой теории.Его можно применять для построения SCADA (диспетчерское управление и сбор данных), PLC (программируемый контроллер) и DCS (распределенная система управления).

За 10 лет мы произвели более 100 тысяч изделий, и все они используются на различных промышленных предприятиях и сельскохозяйственных фермах. Благодаря постоянному тестированию клиентов и совершенствованию нашей технологии, продукты Tengcon Technology получили широкое признание различных пользователей за их превосходную сетевую связь, архитектуру, способность защиты от помех и широкую температурную адаптацию.

Введение в Modbus

Резюме

    Протокол Modbus представляет собой стандартный отраслевой метод, который устройства Modbus используют для разбора сообщений. Этот протокол был разработан компанией Modicon, Incorporated для систем промышленной автоматизации и программируемых контроллеров Modicon.
Протокол Modbus представляет собой стандартный отраслевой метод, который устройства Modbus используют для разбора сообщений.Этот протокол был разработан компанией Modicon, Incorporated для систем промышленной автоматизации и программируемых контроллеров Modicon.

Устройства Modbus обмениваются данными, используя метод ведущий-ведомый, при котором только одно устройство (ведущее) может инициировать транзакции (называемые запросами). Другие устройства (подчиненные) отвечают, предоставляя запрошенные данные ведущему устройству или выполняя действие, запрошенное в запросе. Ведомое устройство — это любое периферийное устройство (преобразователь ввода-вывода, клапан, сетевой привод или другое измерительное устройство), которое обрабатывает информацию и отправляет свои выходные данные ведущему устройству с помощью Modbus.Модули ввода/вывода Acromag Series 900MB являются ведомыми устройствами, тогда как типичным ведущим устройством является главный компьютер, на котором запущено соответствующее прикладное программное обеспечение.

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

Запрос ведущего состоит из адреса ведомого (или широковещательного адреса), функционального кода, определяющего запрошенное действие, любых необходимых данных и поля проверки ошибок.Ответ подчиненного устройства состоит из полей, подтверждающих предпринятое действие, любых данных, которые должны быть возвращены, и поля проверки ошибок. Обратите внимание, что и запрос, и ответ включают адрес устройства, код функции, применимые данные и поле проверки ошибок. Если ошибок не возникает, ответ ведомого устройства содержит запрошенные данные. Если в полученном запросе возникает ошибка или если ведомое устройство не может выполнить запрошенное действие, ведомое устройство возвращает сообщение об исключении в качестве своего ответа (см. Исключения Modbus).Поле проверки ошибок кадра сообщения позволяет мастеру подтвердить правильность содержимого сообщения. Кроме того, проверка четности также применяется к каждому передаваемому символу в его кадре данных.

КАРТА РЕГИСТРА MODBUS
Устройства Modbus обычно содержат карту регистров. Функции Modbus работают с регистрами карты регистров для мониторинга, настройки и управления вводом-выводом модуля. Вам следует обратиться к карте регистрации вашего устройства, чтобы лучше понять его работу.Вам также будет полезно обращаться к карте регистров при рассмотрении функций Modbus, описанных далее в этом документе.

Регистры Modbus организованы в ссылочные типы, идентифицируемые по начальному номеру ссылочного адреса:

 
.

«x» после ведущего символа представляет четырехзначный адрес в памяти данных пользователя
Артикул
0xxxx Чтение/запись дискретных выходов или катушек .Ссылочный адрес 0x используется для передачи выходных данных в канал цифрового вывода.
1хххх Чтение дискретных входов . Состояние ВКЛ/ВЫКЛ 1x эталонного адреса управляется соответствующим цифровым входным каналом.
3хххх Чтение входных регистров . Ссылочный регистр 3x содержит 16-битное число, полученное из внешнего источника, например. аналоговый сигнал.
4хххх Чтение/запись регистров вывода или хранения .Регистр 4x используется для хранения 16-битных числовых данных (двоичных или десятичных) или для отправки данных из ЦП в выходной канал.
Начальный символ обычно подразумевается кодом функции и опускается в спецификаторе адреса для данной функции. Начальный символ также идентифицирует тип данных ввода/вывода.

 
Не все функции Modbus работают с регистрами отображения регистров.Например, в отношении модулей Acromag 900MB функции Report Slave ID и Reset Slave не работают с местоположениями на карте регистров.

Обратите внимание, что модули Acromag предоставляют альтернативный метод выполнения сброса, если ваше прикладное программное обеспечение не поддерживает функцию Reset Slave (см. регистр сброса модуля).

РЕЖИМЫ ПОСЛЕДОВАТЕЛЬНОЙ ПЕРЕДАЧИ MODBUS
В стандартных сетях Modbus используется один из двух режимов передачи: режим ASCII или режим RTU.Режим передачи определяет битовое содержимое байтов сообщения, передаваемых по сети, и то, как информация сообщения должна быть упакована в поток сообщений и декодирована. Режим передачи обычно выбирается вместе с другими параметрами связи последовательного порта (скорость передачи данных, четность и т. д.) как часть конфигурации устройства. Некоторые устройства могут поддерживать только один режим или другой. Однако режим передачи и последовательные параметры должны быть одинаковыми для всех устройств, подключенных к сети Modbus.

Режим ASCII
(американский стандартный код для обмена информацией)
В режиме передачи ASCII (американский стандартный код для обмена информацией) каждый байт символа в сообщении отправляется как 2 символа ASCII. Этот режим допускает временные интервалы до секунды между символами во время передачи без возникновения ошибок. Формат каждого байта в режиме ASCII выглядит следующим образом:

Система кодирования Шестнадцатеричный код символов ASCII 0–9 и A–F.Один шестнадцатеричный символ содержится в каждом символе ASCII (7 бит) сообщения.
Бит на байт 1 стартовый бит + 7 бит данных, младший бит отправляется первым + 1 бит для четности/нечетности или без бита для отсутствия четности + 1 стоповый бит, если используется четность, или 2 стоповых бита без четности.
Поле проверки ошибок Проверка продольного резервирования (LRC)

Имейте в виду, что в режиме ASCII для передачи эквивалентного 8-битного байта в режиме RTU требуется два слова данных (два 7-битных символа).То есть для каждого 4-битного полубайта 8-битного байта RTU требуется один символ ASCII (7 бит). Один байт RTU по существу равен двум байтам в режиме ASCII. Например, значение 6AH отправляется как один 8-битный байт в режиме RTU (0110 1010), но два байта в режиме ASCII, один для ASCII «6» («6″ = 36H = 011 0110), один для ASCII » А» («А» = 41Н = 100 0001). Это делает режим ASCII менее эффективным и менее предпочтительным, чем режим RTU для большинства приложений.

Модули Acromag 900MB не используют режим передачи ASCII, они используют режим RTU, описанный ниже.

Режим RTU
(удаленный терминал)
В режиме RTU (удаленный терминал) каждый 8-битный байт сообщения содержит два 4-битных шестнадцатеричных символа, и сообщение передается непрерывным потоком. Большая эффективная плотность символов увеличивает пропускную способность по сравнению с режимом ASCII при той же скорости передачи данных. Формат каждого байта в режиме RTU выглядит следующим образом:
Система кодирования 8-битный двоичный, шестнадцатеричный 0-9, A-F, два шестнадцатеричных символа в каждом 8-битном поле сообщения.
Бит на байт 1 стартовый бит + 8 бит данных, младший бит отправляется первым + 1 бит для четности/нечетности или без бита для отсутствия четности + 1 стоповый бит, если используется четность, или 2 стоповых бита без четности.
Поле проверки ошибок Проверка циклическим избыточным кодом (CRC)

Модули Acromag Series 900MB используют широко распространенный сетевой протокол Modbus в более эффективном режиме последовательной передачи RTU (Remote Terminal Unit).

ФРЕЙМИРОВАНИЕ СООБЩЕНИЙ MODBUS
Сообщение Modbus помещается в кадр сообщения передающим устройством. Не путайте фрейм сообщения с фреймом данных, состоящим из одного байта (режим RTU) или 7-битного символа (режим ASCII). Кадр сообщения используется для отметки начала и окончания сообщения, позволяя принимающему устройству определить, к какому устройству адресовано, и узнать, когда сообщение завершено. Это также позволяет обнаруживать частичные сообщения и в результате помечать ошибки.Каждое слово этого сообщения (включая фрейм) также помещается в фрейм данных, к которому добавляются стартовый бит, стоповый бит и бит четности. В режиме ASCII размер слова равен 7 битам, а в режиме RTU размер слова равен 8 битам. Таким образом, каждые 8 ​​бит сообщения RTU фактически составляют 11 бит с учетом стартового, стопового и контрольного битов кадра данных (за одним исключением — см. примечание ниже).

Примечание:   Некоторое программное обеспечение Modbus ошибочно интерпретирует «отсутствие четности» как эквивалентное «отсутствию передачи битов».В соответствии со стандартом Modbus отсутствие контроля четности добавляет дополнительный стоповый бит (сохранение 11-битного кадра данных в режиме RTU). Во избежание потенциальной несовместимости модули Acromag 900MB предназначены для приема сообщений без контроля четности и 1  или  2 стоповых бита.

Структура кадра данных зависит от режима передачи (ASCII или RTU). Обратите внимание, что в некоторых других типах сетей и в Modbus Plus сетевой протокол обрабатывает кадрирование сообщений и использует начальный и конечный разделители, специфичные для сети.

Кадры сообщений в режиме ASCII
Сообщения в режиме ASCII начинаются с символа двоеточия «:» (ASCII 3AH) и заканчиваются парой символов возврата каретки (CRLF, ASCII 0DH и 0AH). Единственными допустимыми символами для всех остальных полей являются шестнадцатеричные символы 0-9 и A-F. Напомним, что для представления символа ASCII требуется всего 7 значащих битов. Точно так же «байт» или символ данных режима Modbus ASCII имеет длину всего 7 бит.

Допустимые символы режима ASCII
ASCII Шестигранник ASCII Шестигранник Для передачи в режиме ASCII для каждого символа требуется 7 битов данных.Таким образом, каждый символ составляет 10 бит с учетом начального бита, бита четности и стопового бита кадра данных.
0 30ч : 3АХ
1 31H ЧР 0ДХ
2 32H НЧ 0АХ
3 33H А 41H
4 34ч Б 42H
5 35H С 43H
6 36H Д 44ч
7 37H Е 45H
8 38H Ф 46H
9 39Х    

В режиме ASCII все сетевые устройства постоянно контролируют сеть на наличие символа двоеточия «начало сообщения» (:).Когда оно получено, каждое сетевое устройство декодирует следующее поле, чтобы определить, является ли оно адресуемым устройством. Между символами сообщения могут возникать интервалы до одной секунды, и если этот интервал больше одной секунды, принимающее устройство будет считать, что произошла ошибка, и сообщение будет проигнорировано (устройство возобновляет поиск другого символа начала двоеточия сообщения) .

Кадр сообщения режима ASCII
Начало Адрес Функция Данные ЛРК Конец
1 символ (двоеточие) 2 символа 2 символа N символ 2 символа 2 символа (CRLF)
х х х х х1…хН х х 0D
                   

Обратите внимание, что для каждого отмеченного выше символа требуется код ASCII для 0–9 и A–F, а для этого требуется 7 бит плюс 3 бита для начального бита, бита четности и стопового бита кадра данных.Например, несмотря на то, что LRC представляет собой 8-битное значение, фактически требуется, чтобы в режиме ASCII передавались 2 байта (два 7-битных байта), по одному на каждую цифру.

Обратите внимание, что некоторые контроллеры могут завершать сообщение ASCII после поля LRC без присоединенного CR LF (в этом случае интервал не менее 1 секунды заменяет пару CR LF). Модули

Acromag Series 900MB не поддерживают режим передачи ASCII и используют более эффективный режим RTU, описанный ниже.

Кадры сообщений режима RTU
Сообщения режима RTU начинаются с интервалом молчания не менее 3.5 периодов символов реализованы как кратные периодам символов при скорости передачи данных, используемой в сети (обозначается как t1t2t3t4 ниже). Первое передаваемое поле — это адрес устройства. Допустимые символы, передаваемые для всех полей, представляют собой шестнадцатеричные значения 0-9, A-F.

Время символа:   время, необходимое для передачи одного символа с выбранной скоростью передачи данных. В режиме RTU на символ приходится 11 бит, и это будет 11 битовых времен.Например, при скорости 9600 бод время одного символа составляет 11 битов или 11 бит/символ* 1/9600 бит/с = 1146 мкс/символ.

 
Сетевое устройство постоянно отслеживает сеть, включая интервалы молчания, и когда первое поле (адрес) получено после интервала молчания не менее 3,5 символов, устройство декодирует его, чтобы определить, является ли оно адресованным устройством. После последнего переданного символа аналогичный интервал молчания в 3,5 символа отмечает конец сообщения, и после этого интервала может начинаться новое сообщение.Типичный кадр сообщения показан ниже.

Кадр сообщения RTU

Начало Адрес Функция Данные CRC Конец
т1т2т3т4 8 бит 8 бит nx8 бит 16 бит т1т2т3т4

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

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

КАК СИМВОЛЫ ПЕРЕДАЮТСЯ ПОСЛЕДОВАТЕЛЬНО
Когда сообщения передаются по последовательным сетям Modbus, каждый символ или байт отправляется в порядке от младшего значащего бита (LSB) до старшего значащего бита (MSB), как показано ниже (слева направо):

Обрамление символов RTU (без четности)
Старт 0 1 2 3 4 5 6 7 Стоп Стоп

Обрамление символов RTU (с четностью)
Старт 0 1 2 3 4 5 6 7 Паритет Стоп

Обратите внимание, что дополнительный стоповый бит передается для заполнения рамки символа без контроля четности.Это четко определено в стандарте Modbus, но часто нарушается в промышленности. То есть некоторые программисты интерпретируют «Нет четности» как «Нет бита» и не понимают, что отсутствие четности эквивалентно добавлению еще одного стопового бита. Модули Acromag Series 900MB были разработаны для приема сообщений без контроля четности и с 1 или 2 стоповыми битами, так что это не будет проблемой.

Кадр символов для передачи в режиме ASCII идентичен режиму RTU, за исключением того, что в режиме ASCII используется только 7 бит данных, а не 8 бит для режима RTU, как показано выше.

АДРЕСА MODBUS
Ведущее устройство обращается к определенному ведомому устройству, помещая 8-битный ведомый адрес в поле адреса сообщения (режим RTU). Поле адреса кадра сообщения содержит два символа (в режиме ASCII) или 8 двоичных битов (в режиме RTU). Действительные адреса от 1-247. Когда ведомое устройство отвечает, оно помещает свой собственный адрес в это поле своего ответа, чтобы ведущее устройство знало, какое ведомое устройство отвечает. Адрес 0 зарезервирован для широковещательного адреса, который распознают все ведомые устройства в сети.Некоторые функции не поддерживают широковещательный адрес. Ведомое устройство не отвечает на широковещательное сообщение.

Все адреса данных в сообщениях Modbus имеют ссылку на 0, при этом первое вхождение элемента данных адресуется как нулевой элемент. Кроме того, поле функционального кода уже указывает, с какой группой регистров оно работает (т. е. ссылочные адреса 0x, 1x, 3x или 4x). Например, регистр хранения 40001 адресуется как регистр 0000 в поле адреса данных сообщения.Функциональный код, который работает с этим регистром, определяет операцию «регистра временного хранения», и подразумевается ссылочная группа «4xxxx». Таким образом, регистр временного хранения 40108 фактически адресуется как регистр 006BH (десятичное число 107).

ФУНКЦИИ MODBUS
Поле функционального кода кадра сообщения будет содержать два символа (в режиме ASCII) или 8 двоичных битов (в режиме RTU), которые сообщают подчиненному устройству, какое действие следует предпринять. Допустимые функциональные коды от 1 до 255, но не все коды применимы к модулю, а некоторые коды зарезервированы для использования в будущем.В следующей таблице выделено подмножество стандартных функций Modbus, поддерживаемых модулями Acromag 900MB (также указаны адреса регистров ссылок, с которыми работает эта функция):

Приведенные ниже функции используются для доступа к регистрам, указанным в карте регистров модуля для отправки и получения данных. Команды Report Slave ID и Reset Slave не работают с регистрами карты регистров.
КОД
ФУНКЦИЯ
НОМЕР
01 (01H) Чтение состояния катушки (выход) 0хххх
03 (03H) Чтение регистров хранения 4хххх
04 (04H) Чтение входных регистров 3хххх
05 (05H) Силовая одиночная катушка (выход) 0хххх
06 (06H) Предустановленный одиночный регистр 4хххх
08 (08H) Сброс подчиненного устройства

Скрытый

15 (0FH) Принудительное использование нескольких катушек (выходов) 0хххх
16 (10H) Предустановленные несколько регистров 4хххх
17 (11H) Сообщить об идентификаторе подчиненного устройства

Скрытый


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

Обычный ответ просто повторяет исходный код функции запроса, в то время как ответ исключения возвращает код, эквивалентный исходному коду функции с его старшим значащим битом (MSB), установленным на логическую 1.  Например, команда Read Holding Registers имеет код функции 0000 0011 (03H).

Если ведомое устройство выполняет запрошенное действие без ошибок, оно возвращает тот же код в своем ответе. Однако, если возникает исключение, он возвращает 1000 0011 (83H) в поле кода функции и добавляет уникальный код в поле данных ответного сообщения, которое сообщает ведущему устройству, какой тип ошибки произошел, или причину исключения ( см. Исключения Modbus).

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

В следующих параграфах описываются некоторые функции Modbus, поддерживаемые модулями Acromag 900MB. Чтобы лучше понять Modbus, обратитесь к карте регистров вашего модуля при просмотре этого материала.

Чтение состояния катушки (01)
Эта команда считывает состояние ВКЛ/ВЫКЛ дискретных выходов или катушек (ссылочные адреса 0x) в ведомом устройстве. Для модулей Acromag 900MB его реакция эквивалентна считыванию состояния включения/выключения твердотельных выходных реле или переключателей. Широковещательная передача не поддерживается.

Запрос Read Coil Status указывает начальную катушку (выходной канал) и количество катушек для чтения. Катушки соответствуют дискретным твердотельным реле этого преобразователя и имеют адресацию, начиная с 0 (до 4 катушек, адресуемых как 0-3 для этой модели).Состояние чтения катушки в ответном сообщении упаковано как одна катушка или канал на бит поля данных. Для модулей 900MB состояние выхода обозначается как 1 для ON (проводящий ток) и 0 для OFF (непроводящий). Младший бит первого байта данных соответствует статусу катушки, адресованной в запросе. Остальные катушки следуют последовательно, двигаясь к старшему концу байта. Так как этот пример имеет только 4 выхода, оставшиеся биты байта данных будут установлены в ноль ближе к неиспользуемому старшему концу байта.


Пример запроса состояния чтения катушки
 


В этом примере считывается состояние выходного канала катушек 0–3 на ведомом устройстве 247.
Имя поля Пример значения (шестнадцатеричный)
Адрес подчиненного устройства 247 (F7)
Код функции 1 (01)
Начальный адрес Старший разряд 0 (00)
Младший начальный адрес 0 (00)
Количество точек старшего разряда 0 (00)
Количество точек младшего разряда 4 (04)
Проверка ошибок CRC (LRC в режиме ASCII)

Обратите внимание, что начальный символ ссылочного адреса 0x подразумевается кодом функции и опускается в указанном адресе.В этом примере первый адрес — 00001, указанный через 0000H и соответствующий катушке 0. 

Чтение состояния катушки Пример ответа
Имя поля Пример значения (шестнадцатеричный)
Адрес подчиненного устройства 247 (F7)
Код функции 1 (01)
Число байтов 1 (01)
Данные (катушки 3-0) 10 (0А)
Проверка ошибок CRC (LRC в режиме ASCII)

Подводя итог, состояние катушек 3-0 отображается как значение байта 0A в шестнадцатеричном виде или 00001010 в двоичном виде.Катушка 3 — это пятый бит слева от этого байта, а катушка 0 — это младший бит. Четыре оставшихся бита (к старшему концу) равны нулю. Если читать слева направо, состояние выхода катушек 3..0: ВКЛ-ВЫКЛ-ВКЛ-ВЫКЛ.
Ящик 0 0 0 0 1 0 1 0
Шестигранник 0 А
Катушка нет данных нет данных нет данных нет данных 3 2 1 0

Чтение регистров хранения (03)
Считывает двоичное содержимое регистров временного хранения (4 адреса ссылки) в ведомом устройстве.Широковещательная передача не поддерживается.

Запрос Read Holding Registers указывает начальный регистр и количество регистров для чтения. Обратите внимание, что регистры адресуются, начиная с 0 (регистры 1-16 адресуются как 0-15). Ответное сообщение Read Holding Registers упаковано как два байта на регистр с двоичным содержимым, выровненным по правому краю в каждом байте. Для каждого регистра первый байт содержит старшие биты, а второй байт — младшие биты.

Пример запроса чтения регистра временного хранения
В этом примере считываются регистры хранения 40006…40008 (верхнее предельное значение канала 0, нижнее предельное значение и значение зоны нечувствительности) на ведомом устройстве 247.
Имя поля Пример значения (шестнадцатеричный)
Адрес подчиненного устройства 247 (F7)
Код функции 3 (03)
Начальный адрес Старший разряд 0 (00)
Младший начальный адрес 5 (05)
Количество точек старшего разряда 0 (00)
Количество точек младшего разряда 3 (03)
Проверка ошибок CRC (LRC в режиме ASCII)

Чтение регистра временного хранения Пример ответа
Имя поля Пример значения (шестнадцатеричный)
Адрес подчиненного устройства 247 (F7)
Код функции 3 (03)
Число байтов 6 (06)
Высокий уровень данных (регистр 40006) (3А)
Низкий уровень данных (регистр 40006) 75%=15000 (98)
Высокий уровень данных (регистр 40007) (13)
Низкий уровень данных (регистр 40007) 25%=5000 (88)
Высокий уровень данных (регистр 40008) (00)
Низкий уровень данных (регистр 40008) 1%=200 (С8)
Проверка ошибок CRC (LRC в режиме ASCII)

Подводя итог нашему примеру, содержимое регистра 40006 (2 байта) соответствует верхнему пределу канала 0, равному 75% (15000=3A98H).Содержимое регистра 40007 (2 байта) — это нижний предел канала 0, равный 25% (5000=1388H). Содержимое регистра 40008 представляет собой значение зоны нечувствительности канала 0 (2 байта), равное 1% (200=00C8H).

Чтение входных регистров (04)
Эта команда будет считывать двоичное содержимое входных регистров (3x эталонных адреса) в ведомом устройстве. Широковещательная передача не поддерживается.

Запрос Read Input Registers указывает начальный регистр и количество регистров для чтения.Обратите внимание, что адреса регистров начинаются с 0.  То есть регистры 1–16 адресуются как 0–15. Ответное сообщение чтения входных регистров упаковано как два байта на регистр с двоичным содержимым, выровненным по правому краю в каждом байте. Для каждого регистра первый байт содержит старшие биты, а второй байт — младшие биты.

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

В этом примере считываются входные регистры 30003 и 30004 (входное значение и состояние канала 0) на ведомом устройстве 247.
Имя поля Пример значения (шестнадцатеричный)
Адрес подчиненного устройства 247 (F7)
Код функции 4 (04)
Начальный адрес Старший разряд 0 (00)
Младший начальный адрес 2 (02)
Количество точек старшего разряда 0 (00)
Количество точек младшего разряда 2 (02)
Проверка ошибок CRC (LRC в режиме ASCII)

Чтение входных регистров Пример ответа
Имя поля Пример значения (шестнадцатеричный)
Адрес подчиненного устройства 247 (F7)
Код функции 4 (04)
Число байтов 4 (04)
Высокий уровень данных (регистр 30003) (3Э)
Низкий уровень данных (регистр 30003) 80%=16000 (80)
Высокий уровень данных (регистр 30004) (00)
Низкий уровень данных (регистр 30004) 136 (88)
Проверка ошибок CRC (LRC в режиме ASCII)

Подводя итог нашему примеру, содержимое регистра 30003 (2 байта) представляет собой входное значение канала 1, равное 80% (16000=3E80H).Содержимое регистра 30004 (2 байта) — это флаги состояния канала 0 из 136 (0088H), т.е. помечая превышение верхнего предела.

Одинарная катушка Force (05)
Принудительно включает или выключает одиночную катушку  /выход (ссылочный адрес 0x). При широковещательной передаче (адрес 0) он принудительно использует одну и ту же катушку во всех сетевых ведомых устройствах.

Запрос Force Single Coil указывает адрес ссылки на катушку, которую необходимо принудительно установить, и состояние, в которое она должна быть принудительно переведена. Состояние ВКЛ/ВЫКЛ указывается константой в поле данных запроса.Значение FF00H принудительно включает катушку (т. е. соответствующее твердотельное реле включается или замыкается), а 0000H принудительно выключает катушку (т. е. твердотельное выходное реле выключается или размыкается). Все остальные значения недействительны и не повлияют на катушку.

Обращения к катушкам начинаются с 0 — в нашем примере до 4 катушек имеют адреса от 0 до 3, что соответствует номеру дискретного выходного канала.

Пример принудительного запроса и ответа на одну катушку

В следующем примере дискретный выход 3 принудительно включается на ведомом устройстве 247.
Имя поля Пример значения (шестнадцатеричный)
Адрес подчиненного устройства 247 (F7)
Код функции 5 (05)
Адрес катушки Старший разряд 0 (00)
Младший адрес катушки 3 (03)
Форсировать данные высокого порядка 255 (ТФ)
Форсировать данные младшего разряда 0 (00)
Проверка ошибок CRC (LRC в режиме ASCII)

Ответное сообщение Force Single Coil — это просто эхо (копия) запроса, как показано выше, но возвращенное после выполнения команды Force Coil.Ответ на широковещательные запросы от ведущего устройства не возвращается.

Предустановленный одиночный регистр (06)
Эта команда установит один регистр временного хранения (4 ссылочных адреса) на определенное значение. Эта команда поддерживает широковещательную передачу и будет действовать для установки одного и того же регистра во всех сетевых ведомых устройствах.

Запрос Preset Single Register указывает ссылочный адрес регистра, который необходимо предварительно установить, и предварительно заданное значение. Обратите внимание, что регистры адресуются, начиная с 0 — регистры 1-16 адресуются как 0-15.Ответное сообщение Preset Single Registers является эхом запроса, возвращаемого после того, как содержимое регистра было предварительно задано.

Предустановленный регистр временного хранения Пример запроса (и ответа)
В этом примере скорость передачи 9600 бит/с записывается в регистр хранения 40002 (скорость передачи) на ведомом устройстве 247.
Имя поля Пример значения (шестнадцатеричный)
Адрес подчиненного устройства 247 (F7)
Код функции 6 (06)
Адрес регистра Старший разряд 0 (00)
Младший адрес регистра 1 (01)
Предустановленные данные высокого порядка 0 (00)
Младший разряд предустановленных данных 2 (02)
Проверка ошибок CRC (LRC в режиме ASCII)

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

Несколько катушек Force (15)
Одновременно принудительно включает или выключает последовательность катушек (ссылочные адреса 0x). Эта команда поддерживает широковещательную передачу и будет действовать, чтобы заставить один и тот же блок катушек во всех сетевых ведомых устройствах.

Запрос Force Multiple Coils указывает начальный адрес ссылки на катушку, количество катушек и данные принудительной записи, которые должны быть записаны в порядке возрастания.Состояния ВКЛ/ВЫКЛ определяются содержимым поля данных запроса. Логическая 1 в битовой позиции этого поля требует включения катушки, а логический 0 требует выключения соответствующей катушки.

Неиспользуемые биты в байте данных должны быть установлены в ноль. Обратите внимание, что ссылки на катушки начинаются с 0 — до 4 катушек в этом примере адресуются как 0-3, и это также соответствует номеру дискретного выходного канала.

Пример запроса принудительного использования нескольких катушек
В этом примере выходы 1 и 3 выключаются, а 0 и 2 включаются для катушек 0-3 на ведомом устройстве 247.
Имя поля Пример значения (шестнадцатеричный)
Адрес подчиненного устройства 247 (F7)
Код функции 15 (0F)
Адрес катушки Старший разряд 0 (00)
Младший адрес катушки 0 (00)
Количество катушек высшего порядка 0 (00)
Количество катушек младшего разряда 4 (04)
Число байтов 01
Принудительно высокий уровень данных (первый байт) 5 (05)
Проверка ошибок (LRC или CRC)

Обратите внимание, что начальный символ ссылочного адреса 0x подразумевается кодом функции и опускается в указанном адресе.В этом примере первый адрес — 00001, соответствующий катушке 0 и указанный через 0000H. Таким образом, в этом примере переданный байт данных будет адресован катушкам 3…0, причем младший значащий бит адресует младшую катушку в этом наборе следующим образом (обратите внимание, что четыре неиспользуемых старших бита байта данных установлены в ноль):
Ящик 0 0 0 0 0 1 0 1
Шестигранник 0 5
Катушка нет данных нет данных нет данных нет данных 3 2 1 0

Force Multiple Coil Пример ответа
Имя поля Пример значения (шестнадцатеричный)
Адрес подчиненного устройства 247 (F7)
Код функции 15 (0F)
Адрес катушки Старший разряд 0 (00)
Младший адрес катушки 0 (00)
Количество катушек высшего порядка 0 (00)
Количество катушек младшего разряда 4 (04)
Проверка ошибок (LRC или CRC)

Сообщение нормального ответа Force Multiple Coils возвращает адрес ведомого устройства, код функции, начальный адрес и количество форсированных катушек после выполнения инструкции Force.Обратите внимание, что он не возвращает количество байтов или принудительное значение. Ответ на широковещательные запросы от ведущего устройства не возвращается.

Предустановленные несколько регистров (16)
Предварительно устанавливает блок регистров хранения (4 ссылочных адреса) на определенные значения. Эта команда поддерживает широковещательную передачу и будет действовать для установки одного и того же блока регистров во всех сетевых ведомых устройствах.

Запрос Preset Multiple Registers указывает начальный адрес ссылки на регистр, количество регистров и данные, которые должны быть записаны в порядке возрастания.Обратите внимание, что регистры адресуются, начиная с 0 — регистры 1-16 адресуются как 0-15.


Предустановка нескольких регистров Пример запроса
 

В этом примере записывается новый подчиненный адрес 200, скорость передачи 28800 бит/с и устанавливается четность путем записи в регистры временного хранения с 40001 по 40003 на ведомом устройстве 247 (изменения подчиненного адреса, скорости передачи и четности вступят в силу после следующее программное обеспечение или сброс при включении питания).
Имя поля Пример значения (шестнадцатеричный)
Адрес подчиненного устройства 247 (F7)
Код функции 16 (10)
Начальный регистр старшего разряда 0 (00)
Младший регистр начального разряда 0 (00)
Число регистров старшего разряда 0 (00)
Количество регистров младшего разряда 3 (03)
Старший уровень предустановленных данных (первый регистр) 0 (00)
Низкий уровень предустановленных данных (первый регистр) 200 (С8)
Высокий уровень предустановленных данных (второй регистр) 0 (00)
Низкий уровень предустановленных данных (второй регистр) 5 (05)
Высокий уровень предустановленных данных (третий регистр) 0 (00)
Низкий уровень предустановленных данных (третий регистр) 2 (02)
Проверка ошибок (LRC или CRC)

Предварительно заданные несколько регистров Пример ответа
Имя поля Пример значения (шестнадцатеричный)
Адрес подчиненного устройства 247 (F7)
Код функции 16 (10)
Начальный регистр старшего разряда 0 (00)
Младший регистр начального разряда 0 (00)
Число регистров старшего разряда 0 (00)
Количество регистров младшего разряда 3 (03)
Проверка ошибок (LRC или CRC)

Сообщение нормального ответа Preset Multiple Registers возвращает адрес подчиненного устройства, код функции, начальный номер регистра и количество предварительно установленных регистров после того, как содержимое регистра было предварительно задано.Обратите внимание, что он не повторяет предустановленные значения. Ответ на широковещательные запросы от ведущего устройства не возвращается.

Отчет об идентификаторе подчиненного устройства (17)
Эта команда возвращает модель, серийный номер и номер микропрограммы ведомого устройства Acromag, состояние индикатора «Работа» и любую другую информацию, относящуюся к устройству. Эта команда не обращается к регистрам карты регистров, и широковещательная передача не поддерживается.

Отчет об идентификаторе подчиненного устройства Пример запроса
Командный запрос просто отправляет адрес ведомого устройства и код функции с проверкой ошибок (CRC), как показано здесь:

Имя поля

Пример значения (шестнадцатеричный)
Адрес подчиненного устройства 247 (F7)
Код функции 17 (11)
Проверка ошибок CRC (LRC в режиме ASCII)


Report Slave ID Пример ответа (только для Acromag 900MB)
Имя поля Пример значения (шестнадцатеричный)
Адрес подчиненного устройства 247 (F7)
Код функции 17 (11)
Число байтов 26 (1А)
Идентификатор ведомой модели Acromag




0 (00H) = 924MB-0900; 1 (01H) = 913MB-0900
2 (02Н) = 914МБ-0900; 3 (03H) = 917MB-0900
4 (04Н) = 918МБ-0900; 5 (05H) = 901MB-0900
6 (06Н) = 902МБ-0900; 7 (07H) = 903MB-0900
8 (08Н) = 904МБ-0900; 9 (09H) = 905MB-0900
10 (0AH) = 906 МБ-0900; 11 (0BH) = 932MB-0900
12 (0CH) = 934MB-0900; 13 (0DH) = 942MB-0900
Состояние индикатора работы (ВКЛ) 255 (ТФ)
Микропрограмма Строка данных ASCII (поле данных) «АКРОМАГ, 9300-043А, 942МБ-0900,»
(41 43 52 4F 4D 41 47 2C 39 33 30 30 2D 30 34 33 41 2C 39 34 32 4D 42 2D 30 39 30 30 2CH)
Строка ASCII серийного номера (уникальная для каждого модуля) Шесть номеров + версия «123456A»
(31 32 33 34 35 36 41Н)
Контроль ошибок CRC


Сброс подчиненного устройства (08)
Эта команда используется для запуска сброса модуля, и ее действие эквивалентно сбросу модуля при включении питания.Обратите внимание, что для модулей Acromag 900MB изменения скорости передачи данных, адреса ведомого устройства и контроля четности инициируются после сброса.

Команда Reset Slave использует подфункцию 01 (Restart Communications) стандартной диагностической команды Modbus (08) для выполнения сброса и не работает с местоположением на карте регистров. Широковещательная передача не поддерживается. Подождите несколько секунд после сброса, чтобы повторно установить связь с модулем.

Пример запроса сброса ведомого устройства и отраженного ответа
Запрос Reset Slave просто отправляет адрес подчиненного устройства, код функции, код подфункции и данные (данные игнорируются и просто возвращаются обратно) с проверкой ошибок (CRC), как показано здесь.

Имя поля

Пример значения (шестнадцатеричный)
Адрес подчиненного устройства 247 (F7)
Код функции 08 (08)
Подфункция Старший байт 0 (00)
Младший байт подфункции 1 (01)
Старший байт поля данных 0 (00)
Младший байт поля данных 0 (00)
Проверка ошибок CRC (LRC в режиме ASCII)

Ответ Reset Slave — это просто эхо-подтверждение, которое возвращается за до , когда сброс выполняется.

Модули Acromag 900MB обеспечивают альтернативный метод сброса посредством записи в регистр сброса модуля (см. карту регистров конкретного устройства) для программного обеспечения Modbus, которое не поддерживает функцию сброса ведомого устройства.

ПОЛЕ ДАННЫХ MODBUS
Поле данных предоставляет подчиненному устройству любую дополнительную информацию, необходимую подчиненному устройству для выполнения действия, указанного функциональным кодом. Данные формируются из нескольких байтов символов (пара символов ASCII в режиме ASCII) или двух шестнадцатеричных цифр в режиме RTU в диапазоне 00H-FFH.Поле данных обычно включает в себя адреса регистров, значения счетчиков и записанные данные. Для некоторых сообщений это поле может не существовать (имеет нулевую длину), так как не для всех сообщений требуются данные.

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

Поддерживаемые типы данных
(модули Acromag 900MB)
Доступ ко всем значениям ввода-вывода осуществляется через 16-битные входные регистры или 16-битные регистры хранения (см. карту регистров).Входные регистры содержат информацию, доступную только для чтения. Например, текущее входное значение, считанное из канала, или состояния группы цифровых входов. Регистры хранения содержат информацию для чтения/записи, которая может быть данными конфигурации или выходными данными. Например, верхнее предельное значение функции сигнализации, работающей на входе, или выходное значение для выходного канала.

Значения ввода/вывода модулей Acromag 900MB представлены следующими простыми типами данных для температуры, процента и дискретного включения/выключения.

Сводка типов данных, используемых модулями 900 МБ
Типы данных Описание
Значение счета 16-разрядное целое число со знаком, представляющее число АЦП, число ЦАП, значение времени или частоту в диапазоне от –32768 до +32767.
Значение счета 16-разрядное целое число без знака, представляющее счет АЦП, счет ЦАП, значение времени или частоту в диапазоне от 0 до 65535.
Процент 16-разрядное целое число со знаком с разрешением 0,005 %/мл. бит. ±20000 используется для представления ±100%. Например, -100%, 0% и +100% представлены десятичными значениями –20000, 0 и 20000 соответственно. Полный диапазон составляет от –163,84% (-32768 десятичных знаков) до +163,835% (+32767 десятичных знаков).
Температура 16-разрядное целое число со знаком с разрешением 0,1 °C/мл. бит. Например, значение 12059 эквивалентно 1205.9°C, значение –187 равно –18,7°C. Максимально возможный диапазон температур составляет от –3276,8°C до +3276,7°C.
Дискретный Дискретное значение обычно обозначается одним битом 16-битного слова. Номер/позиция бита обычно соответствует номеру дискретного канала для этой модели. Если не указано иное для выходов, бит 1 означает, что соответствующий выход закрыт или включен, бит 0 означает, что выход открыт или выключен. Для входов значение 1 означает, что вход находится в высоком состоянии (обычно >> 0 В), а значение 0 указывает, что вход находится в низком состоянии (около 0 В).

ПРОВЕРКА ОШИБКИ MODBUS
В сетях Modbus используются два метода проверки ошибок: проверка четности кадра символа данных (четность, нечетность или отсутствие четности) и проверка кадра в кадре сообщения (проверка циклическим избыточным кодом в режиме RTU или проверка продольным избыточным кодом в режиме ASCII).

Проверка четности
Устройство Modbus может быть настроено на четную или нечетную четность или на отсутствие проверки четности.Это определяет, как устанавливается бит четности кадра данных символа.

Если выбрана проверка четности или нечетности, подсчитывается количество битов 1 в части данных каждого символьного кадра. Каждый символ в режиме RTU содержит 8 бит. Затем бит четности будет установлен на 0 или 1, чтобы получить четное (четность) или нечетное (нечетность) общее количество битов 1.

Например, если символьный кадр RTU содержит следующие восемь битов данных: 1100 0011, то, поскольку общее количество битов 1 равно 4 (уже четное число), бит четности кадра будет равен 0, если выбрана четная четность.Если используется нечетная четность, то бит четности будет установлен в 1, что сделает общее количество битов нечетным (пять).

При передаче сообщения бит четности вычисляется и применяется к кадру данных каждого передаваемого символа (каждые 7 битов в режиме ASCII или каждые 8 ​​битов в режиме RTU). Принимающее устройство подсчитывает количество битов 1 в части данных кадра и устанавливает флаг ошибки, если подсчет отличается от полученного. Таким образом, проверка четности может обнаружить ошибку только в том случае, если во время передачи из символьного кадра берется или отбрасывается нечетное количество битов.Например, если используется нечетная четность и из символа отбрасываются две единичные биты, результат все равно будет нечетным числом единичных битов, и ошибка четности не будет обнаружена. Обратите внимание, что все устройства в сети Modbus должны использовать одинаковую четность. Если проверка на четность не выбрана, бит четности не передается и проверка на четность не выполняется. Однако дополнительный стоповый бит передается для заполнения рамки символа для выбора без четности.

Проверка продольного резервирования LRC (только в режиме ASCII)
В режиме передачи ASCII кадр символа включает поле LRC в качестве последнего поля, предшествующего символам CRLF.Это поле содержит два символа ASCII, которые представляют собой результат вычисления продольной избыточности для всех полей, кроме начального двоеточия и пары символов, заканчивающихся CR LF.

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

Значение LRC вычисляется путем сложения последовательных 8-битных байтов сообщения и отбрасывания битов переноса для получения 8-битного результата (не включая начальный символ двоеточия или конечные символы CR LF). Затем возьмите дополнение до двух этого 8-битного результата, вычтя его из FFH (дополнение до единицы) и добавив 1, чтобы получить дополнение до двух. Полученное 8-битное значение (2 символа ASCII) затем передается в сообщении с первым символом старшего разряда, за которым следует символ младшего разряда.Например, если 8-битное значение LRC равно A1H (1010 0001), старший символ LRC равен A, и он предшествует младшему символу LRC, равному 1, в кадре данных непосредственно перед символами CR LF.

Модули Acromag 900MB не поддерживают режим ASCII и не используют проверку ошибок LRC. Эти модули используют более эффективный режим RTU и проверку ошибок CRC, как описано ниже.

Проверка ошибок CRC (только режим RTU)  
Кадры сообщений режима RTU включают метод проверки ошибок, основанный на проверке циклическим избыточным кодом (CRC).Поле проверки ошибок кадра сообщения содержит 16-битное значение (два 8-битных байта), которые содержат результат вычисления Циклической проверки избыточности (CRC), выполненного для содержимого сообщения.

Значение CRC вычисляется передающим устройством и добавляется к сообщению в качестве последнего поля в сообщении — сначала добавляется младший байт, а затем старший байт. Таким образом, старший байт CRC является последним байтом, отправляемым в сообщении. Приемное устройство вычисляет CRC во время приема сообщения и сравнивает вычисленное значение с полученным в поле CRC.Если два значения различаются, возникает ошибка.

CRC запускается путем предварительной загрузки 16-битного регистра CRC во все единицы. Последовательные 8-битные байты сообщения (только 8-битные биты данных в каждом символе — без стартовых, стоповых битов или битов четности) применяются к текущему содержимому регистра, и каждый 8-битный символ обрабатывается с помощью исключающего ИЛИ. с содержимым реестра. Результат исключающего ИЛИ сдвигается в направлении младшего значащего бита (LSB) CRC, при этом ноль помещается в старший значащий бит (MSB).Затем извлекается и проверяется младший бит. Если младший бит равен 1, к регистру применяется исключающее ИЛИ с предустановленным фиксированным значением. Если младший бит равен 0, исключающее ИЛИ не выполняется.

Этот процесс повторяется до тех пор, пока не будет выполнено 8 сдвигов. После последнего (восьмого) сдвига следующий 8-битный байт подвергается операции исключающее ИЛИ с текущим содержимым регистра, и процесс повторяется еще для 8 сдвигов, как описано выше. Окончательное содержимое регистра CRC после применения всех байтов сообщения является значением CRC.

ИСКЛЮЧЕНИЯ MODBUS
Если в модуль отправлен код неподдерживаемой функции, то в поле данных ответного сообщения будет возвращен код исключения 01 (недопустимая функция). Если регистр временного хранения записан с недопустимым значением, то в ответном сообщении будет возвращен код исключения 03 (недопустимое значение данных).

Коды исключений Modbus
Код Исключение Описание
01 Недопустимая функция Код функции, полученный в запросе, недопустим или недействителен.
02 Недопустимый адрес данных Адрес данных, полученный в запросе, не является допустимым адресом для ведомого устройства или недействителен.
03 Недопустимое значение данных Значение, содержащееся в поле данных запроса, не является допустимым значением для ведомого устройства или является недопустимым.
04 Сбой ведомого устройства Произошла неисправимая ошибка, когда ведомое устройство пыталось выполнить запрошенное действие.
05 Подтвердить Ведомое устройство приняло запрос и обрабатывает его, но для этого требуется много времени. Этот ответ возвращается, чтобы предотвратить возникновение ошибки тайм-аута в ведущем устройстве.
06 Ведомое устройство занято Ведомое устройство занято обработкой длительной программной команды. Ведущий должен повторно передать сообщение позже, когда ведомый освободится.
07 Отрицательное подтверждение Ведомое устройство не может выполнить программную функцию, полученную в запросе. Этот код возвращается при неудачном запросе программирования с использованием функционального кода 13 или 14 (коды не поддерживаются этой моделью). Ведущий должен запросить диагностическую информацию у ведомого.
08 Ошибка четности памяти Подчиненное устройство попыталось прочитать расширенную память, но обнаружило ошибку четности в памяти.Мастер может повторить запрос, но может потребоваться обслуживание на ведомом устройстве.

В нормальном ответе ведомое устройство повторяет код функции исходного запроса в поле функции ответа. Все функциональные коды имеют старший значащий бит (msb), установленный на 0 (их значения ниже 80H). В ответе об исключении ведомое устройство устанавливает старший бит кода функции в 1 в возвращаемом ответе (т. е. ровно на 80H выше, чем обычно) и возвращает код исключения в поле данных.Это используется ведущим приложением для распознавания ответа об исключении и направления проверки поля данных на наличие применимого кода исключения.

О MODBUS Эта статья предоставлена ​​Acromag, Inc. Автором статьи является Брюс Сайбурт, инженер Acromag. В статье описывается работа Modbus и упоминаются модули ввода-вывода Acromag Series 900MB. Для получения более подробной информации о Modbus вы также можете обратиться к «Справочному руководству Modicon Modbus», PI-MBUS-300 Rev J, которое можно загрузить с www.modicon.com.

Acromag производит линейку модулей ввода/вывода, поддерживающих Modbus через RS485. Посетите их веб-сайт www.acromag.com, чтобы получить самую свежую информацию об этих и других продуктах Acromag.
Об авторе

Брюс Сайбурт, инженер Acromag  

Для получения дополнительной информации нажмите здесь

Вам понравилась эта замечательная статья?

Ознакомьтесь с нашими бесплатными электронными информационными бюллетенями, чтобы прочитать больше замечательных статей.

0 comments on “Счетчик modbus: Мониторинг электроэнергии со счетчиком Eastron SDM220-Modbus / Хабр

Добавить комментарий

Ваш адрес email не будет опубликован.