Тип данных Modbus Word
Обновлено: 21.11.2024
Для чего он используется?
Modbus — это открытый протокол, что означает, что производители могут бесплатно встраивать его в свое оборудование без уплаты роялти. Он стал очень распространенным протоколом, широко используемым многими производителями во многих отраслях. Modbus обычно используется для передачи сигналов от контрольно-измерительных приборов обратно на главный контроллер или систему сбора данных.
Как это работает
Modbus передается по последовательным линиям между устройствами. Простейшей установкой будет один последовательный кабель, соединяющий последовательные порты на двух устройствах, ведущем и ведомом. Данные отправляются в виде последовательности единиц и нулей, называемых «битами». Каждый бит передается как напряжение. Нули передаются как положительные напряжения, а единицы как отрицательные. Биты отправляются очень быстро. Типичная скорость передачи составляет 9600 бод/с ("бит в секунду").
Что такое шестнадцатеричный формат?
При устранении неполадок может быть полезно увидеть фактически передаваемые необработанные данные. Длинные строки из единиц и нулей трудно читать, поэтому биты объединяются и отображаются в шестнадцатеричном формате. Каждый блок из 4 битов представлен одним из шестнадцати символов от 0 до F.
0000 = 0 0100 = 4 1000 = 8 1100 = C
0001 = 1 0101 = 5 1001 = 9 1101 = D
0010 = 2 0110 = 6 1010 = A 1110 = E
0011 = 3 0111 = 7 1011 = В 1111 = F
Каждый блок из 8 бит (называемый байтом) представлен одной из 256 пар символов от 00 до FF.
Как данные хранятся в стандартном Modbus?
Информация хранится на ведомом устройстве в четырех разных таблицах. В двух таблицах хранятся дискретные значения включения/выключения (катушки), а в двух — числовые значения (регистры). Катушки и регистры имеют таблицу только для чтения и таблицу для чтения и записи. Каждая таблица имеет 9999 значений. Каждой катушке или контакту соответствует 1 бит, и ему назначается адрес данных от 0000 до 270E. Каждый регистр состоит из 1 слова = 16 бит = 2 байта и также имеет адрес данных от 0000 до 270E.
Номера катушек/регистров | Адреса данных | Тип | Таблица Название | |
---|---|---|---|---|
1-9999 | от 0000 до 270E | Чтение-Запись | Дискретные выходные катушки td> | |
10001-19999 | от 0000 до 270E | Только чтение | Контакты дискретного ввода | tr>|
30001-39999 | 0000–270E | Только чтение | Регистры аналогового ввода | |
40001-49999 | 0000–270E | Чтение-Запись | Регистры хранения аналогового вывода |
Код функции | Действие | Имя таблицы | ||
---|---|---|---|---|
01 (01 hex) | Чтение | Дискретные выходные катушки | ||
05 (05 hex) | Запись Одинарная | Дискретная выходная катушка | ||
15 (0F hex) | Многократная запись | Дискретные выходные катушки< /td> | ||
02 (02 hex) | Чтение | Контакты дискретного ввода | ||
04 (04 hex) | Чтение | Регистры аналогового ввода | ||
03 (03 hex) | Чтение | Регистры хранения аналогового вывода | ||
06 (06 hex) | Запись Singlead | Регистр хранения аналогового вывода | ||
16 (10 hex) | Запись нескольких | регистров хранения аналогового вывода |
Адреса данных | Чтение | Запись одиночного | Запись нескольких | th> |
---|---|---|---|---|
Дискретные выходные катушки 0xxxx | FC01 | FC05 | FC15 | |
Контакты дискретного ввода 1xxxx | FC02 | Н/Д | Н/Д | |
Регистры аналогового ввода 3xxxx | FC04 | Н/Д | Н/Д | |
Регистры хранения аналогового вывода 4xxxx | FC03 | FC06 | FC16 |
Что такое типы данных?
Пример для FC03 показывает, что регистр 40108 содержит AE41, который преобразуется в 16-битное 1010 1110 0100 0001 Отлично! Но что это значит? Ну, это может означать несколько вещей.
У Chipkin есть решения Modbus практически для любой ситуации. Мы являемся экспертами в области связи Modbus RTU/TCP и предлагаем широкий спектр продуктов Modbus:
В статье обсуждаются некоторые типичные трудности, возникающие при обработке 32-битных типов данных через Modbus RTU, и предлагается практическая помощь в решении этих проблем.
Протокол Modbus «точка-точка» является популярным выбором для связи RTU хотя бы по той причине, что это простое удобство. Сам протокол управляет взаимодействием каждого устройства в сети Modbus, тем, как устройство устанавливает известный адрес, как каждое устройство распознает свои сообщения и как основная информация извлекается из данных. По сути, протокол является основой всей сети Modbus.
Однако такое удобство не обходится без некоторых сложностей, и протокол сообщений Modbus RTU не является исключением. Сам протокол разрабатывался на базе устройств с 16-битной длиной регистра. Следовательно, при реализации 32-битных элементов данных требовалось особое внимание. Эта реализация остановилась на использовании двух последовательных 16-битных регистров для представления 32 битов данных или, по существу, 4 байтов данных. Именно в этих 4 байтах данные с плавающей запятой одинарной точности могут быть закодированы в сообщение Modbus RTU.
Важность порядка байтов
Modbus сам по себе не определяет тип данных с плавающей запятой, но общепризнано, что он реализует 32-битные данные с плавающей запятой с использованием стандарта IEEE-754. Однако в стандарте IEEE нет четкого определения порядка байтов полезных данных. Поэтому самое важное при работе с 32-битными данными — адресация данных в правильном порядке.
Например, число 123456,00, определенное в стандарте IEEE 754 для 32-разрядных чисел с плавающей запятой одинарной точности, выглядит следующим образом:
Различный порядок следования байтов оказывает существенное влияние. Например, упорядочивание 4 байтов данных, представляющих 123456,00, в последовательности «BA D C», известное как «перестановка байтов». При интерпретации как тип данных с плавающей запятой IEEE 744 результат совершенно другой:
Упорядочивание одних и тех же байтов в последовательности «C D A B» известно как «перестановка слов». Опять же, результаты резко отличаются от исходного значения 123456,00:
Кроме того, как «перестановка байтов», так и «перестановка слов» по существу изменят последовательность байтов в целом, чтобы получить еще один результат: р>
Очевидно, что при использовании сетевых протоколов, таких как Modbus, необходимо уделять особое внимание порядку байтов памяти при их передаче, также известному как «порядок байтов».
Определение порядка байтов
Сам протокол Modbus объявлен как протокол с обратным порядком байтов согласно Спецификации прикладного протокола Modbus, версия 1.1.b:
«Modbus использует представление «big-Endian» для адресов и элементов данных. Это означает, что при передаче числового значения, превышающего один байт, первым отправляется старший байт». |
Big-Endian — наиболее часто используемый формат сетевых протоколов. Он настолько распространен, что его также называют "сетевым порядком".
Учитывая, что протокол сообщений Modbus RTU является обратным порядком байтов, для успешного обмена 32-битным типом данных через сообщение Modbus RTU необходимо учитывать порядок байтов как ведущего, так и ведомого устройства. Многие ведущие и ведомые устройства RTU позволяют выбирать определенный порядок байтов, особенно в случае устройств, имитируемых программным обеспечением. Нужно просто убедиться, что все блоки имеют одинаковый порядок байтов.
Как правило, порядок следования байтов определяется семейством микропроцессоров устройства. Как правило, стиль big-Endian (сначала сохраняется старший байт, а затем младший байт) обычно встречается в ЦП, разработанных с процессором Motorola. Стиль Little-Endian (сначала сохраняется младший байт, а затем старший байт) обычно встречается в ЦП, использующих архитектуру Intel. Вопрос о том, какой стиль считать «обратным», зависит от личных предпочтений.
Однако, если порядок байтов и порядок следования байтов нельзя настроить, вам придется определить, как интерпретировать байт. Это можно сделать, запросив известное значение с плавающей запятой у ведомого устройства. Если возвращается невозможное значение, т. е. число с двузначным показателем степени или подобное, порядок байтов, скорее всего, потребует изменения.
Практическая помощь
Драйверы FieldServer Modbus RTU предлагают несколько перемещений функций, которые обрабатывают 32-разрядные целые числа и 32-разрядные значения с плавающей запятой. Что еще более важно, эти перемещения функций учитывают все различные формы последовательности байтов. В следующей таблице показаны перемещения функции FieldServer, которые копируют два соседних 16-битных регистра в 32-битное целое число.
В следующей таблице показаны перемещения функции FieldServer, которые копируют два соседних 16-битных регистра в 32-битное значение с плавающей запятой:
В следующей таблице показаны перемещения функции FieldServer, которые копируют одно 32-битное значение с плавающей запятой в два соседних 16-битных регистра:
Учитывая перемещение различных функций FieldServer, правильная обработка 32-разрядных данных зависит от правильного выбора. Обратите внимание на следующее поведение этих функций FieldServer, перемещаемых с известным десятичным значением с плавающей запятой одинарной точности, равным 123456,00:
Обратите внимание, что другой порядок байтов и слов требует использования соответствующей функции перемещения FieldServer. После выбора правильного перемещения функции данные могут быть преобразованы в обоих направлениях.
Из множества преобразователей шестнадцатеричного числа в число с плавающей запятой и калькуляторов, доступных в Интернете, очень немногие позволяют манипулировать порядком байтов и слов. Одну такую утилиту можно скачать ЗДЕСЬ. Утилита представляет десятичное значение с плавающей запятой 123456,00 следующим образом:
Затем можно поменять местами байты и/или слова, чтобы проанализировать, какие потенциальные проблемы порядка следования байтов могут существовать между ведущим и ведомым устройствами Modbus RTU.
16-битный адрес регистра в шестнадцатеричном формате. Адрес — это данные, используемые во фрейме Modbus.
16-битный номер регистра в десятичном формате. Регистрация = Адрес + 1
Количество 16-битных регистров, которые необходимо прочитать/записать для доступа к полной информации
Является ли регистр доступным только для чтения ( R/RW ) или для чтения и записи ( RW ).
Шкала 1 означает, что значение регистра является правильным с указанной единицей измерения.
Шкала 10 означает, что регистр содержит значение, умноженное на 10. Таким образом, фактическое значение равно значению регистра, деленному на 10.
Шкала 0,1 означает, что регистр содержит значение, умноженное на 0,1. Таким образом, фактическое значение равно значению регистра, умноженному на 10.
Информационная единица измерения:
“-”: единица измерения не соответствует выраженному значению.
“D”: устройство зависит от подключенного устройства.
Тип данных кодирования (см. таблицу типов данных ниже).
Диапазон допустимых значений для переменной, обычно подмножество того, что позволяет формат. Для данных типа BITMAP содержимое этого домена равно «-».
Значение по умолчанию для переменной
Экономия при отключении питания шлюза PowerTag Link:
“Y”: значение регистра сохраняется.
“N”: значение потеряно.
Код функций, которые можно использовать в реестре.
Код, указывающий типы устройств, для которых доступен реестр.
Информация о реестре и применимых ограничениях.
Типы данных
16-битное целое число со знаком (1 слово)
16-битное целое число без знака (1 слово)
32-битное целое число со знаком (2 слова)
-2 147 483 648. +2 147 483 647
32-битное целое число без знака (2 слова)
<р>0. 4 294 967 29564-битное целое число со знаком (4 слова)
-9 223 372 036 854 775 808. 9 223 372 036 854 775 807
64-битное целое число без знака (4 слова)
от 0 до 18 446 744 073 709 600 000
32-битное значение (2 слова)
Таблица символов ASCII
16-битное поле (1 слово)
Данные типа Float32: одинарная точность с плавающей запятой со знаковым битом, 8-битная экспонента, 23-битная мантисса (положительное и отрицательное нормализованное вещественное число)
Для данных типа ASCII порядок передачи символов в словах (16-битных регистрах) следующий:
Символ n как наименее значимый
Символ n + 1 как наиболее значимый
Все регистры (16 бит или 2 байта) передаются с кодировкой Big Endian:
Старший байт передается первым.
Младший байт передается вторым.
32-битные переменные, сохраненные в двух 16-битных словах (например, счетчики потребления), имеют формат Big Endian:
Сначала передается самое значимое слово, затем наименее значимое.
64-битные переменные, сохраненные в четырех 16-битных словах (например, даты), имеют формат Big Endian:
Самое значимое слово передается первым и так далее.
ДАТАВРЕМЯ
DATETIME – это тип данных, используемый для кодирования даты и времени в соответствии со стандартом IEC 60870-5.
От 0x00 (00) до 0x7F (127) соответствуют годам с 2000 по 2127
Например, 0x0D (13) соответствует 2013 году.
Прямая битовая адресация
Адресация разрешена для зон типа BITMAP с функциями 1, 2, 5 и 15.
Адрес первого бита составляется следующим образом: (адрес регистра x 16) + номер бита.
Этот режим адресации характерен для Schneider Electric.
Пример: для функций 1, 2, 5 и 15 следует адресовать бит 3 регистра 0x0078; поэтому битовый адрес равен 0x0783.
Пример кадров Modbus
Количество байтов
Адрес Modbus ссылки PowerTag
Читает n выходных или внутренних слов
Адрес счетчика потребления с адресом 14050 в десятичной системе счисления.
Количество слов
Читает 44 16-битных регистра.
Количество байтов
Адрес Modbus ссылки PowerTag
Читает n выходных или внутренних слов
Количество байтов
Количество прочитанных байтов
Значение прочитанных слов
Читает 44 16-битных регистра
Регистрация Modbus
Адрес регистра номер n равен n-1. Таблицы, подробно описанные в следующих частях этого документа, содержат как номера регистров (в десятичном формате), так и соответствующие адреса (в шестнадцатеричном формате). Например, адрес регистра 3000 — 0x0BB7 (2999).
ПРИМЕЧАНИЕ. Чтобы узнать описание регистров каждого связанного устройства (как их использовать), распечатайте отчет о регистрах Modbus в формате PDF с помощью программного обеспечения EcoStruxure Power Commission (см. Интерактивную справку EcoStruxure Power Commission). ). Этот отчет дает динамическую информацию обо всех регистрах, которые потенциально могут быть интегрированы в системы контроля, включая описание каждого регистра.
Показать QR-код для этой страницы
Было ли это полезно?
Контактная информация
Юридическая информация
Бренд Schneider Electric и любые товарные знаки Schneider Electric SE и ее дочерних компаний, упомянутые в этом руководстве, являются собственностью Schneider Electric SE или ее дочерних компаний. Все другие бренды могут быть товарными знаками соответствующих владельцев.
Это руководство и его содержимое защищены применимыми законами об авторском праве и предназначены только для информационных целей. Никакая часть этого руководства не может быть воспроизведена или передана в любой форме и любыми средствами (электронными, механическими, фотокопированием, записью или иным) для любых целей без предварительного письменного разрешения Schneider Electric.
Schneider Electric не предоставляет никаких прав или лицензий на коммерческое использование руководства или его содержимого, за исключением неисключительной и личной лицензии на ознакомление с ним на условиях «как есть». Изделия и оборудование Schneider Electric должны устанавливаться, эксплуатироваться, обслуживаться и обслуживаться только квалифицированным персоналом.
Поскольку стандарты, спецификации и дизайн время от времени меняются, информация, содержащаяся в этом руководстве, может быть изменена без предварительного уведомления.
Насколько это разрешено применимым законодательством, Schneider Electric и ее дочерние компании не несут никакой ответственности за любые ошибки или упущения в информационном содержании этого материала или последствия, возникающие в результате или в результате использования информации, содержащейся в этом документе. .
Часто задаваемые вопросы
Что такое Modbus?
Modbus — это протокол последовательной связи, разработанный Modicon и опубликованный Modicon� в 1979 году для использования с его программируемыми логическими контроллерами (ПЛК). Проще говоря, это метод, используемый для передачи информации по последовательным линиям между электронными устройствами. Устройство, запрашивающее информацию, называется ведущим устройством Modbus, а устройства, предоставляющие информацию, — ведомыми устройствами Modbus. В стандартной сети Modbus имеется один ведущий и до 247 ведомых, каждый из которых имеет уникальный адрес ведомого от 1 до 247. Главный также может записывать информацию в ведомые.
Для чего он используется?
Modbus — это открытый протокол, что означает, что производители могут бесплатно встраивать его в свое оборудование без уплаты роялти. Он стал стандартным протоколом связи в промышленности и в настоящее время является наиболее доступным средством подключения промышленных электронных устройств. Он широко используется многими производителями во многих отраслях промышленности. Modbus обычно используется для передачи сигналов от контрольно-измерительных приборов обратно на главный контроллер или систему сбора данных, например, систему, которая измеряет температуру и влажность и передает результаты на компьютер. Modbus часто используется для соединения управляющего компьютера с удаленным терминалом (RTU) в системах диспетчерского управления и сбора данных (SCADA). Существуют версии протокола Modbus для последовательных линий (Modbus RTU и Modbus ASCII) и для Ethernet (Modbus TCP).
Как это работает?
Modbus передается по последовательным линиям между устройствами.Простейшей установкой будет один последовательный кабель, соединяющий последовательные порты на двух устройствах, ведущем и ведомом.
Данные отправляются в виде последовательности единиц и нулей, называемых битами. Каждый бит передается как напряжение. Нули передаются как положительные напряжения, а единицы как отрицательные. Биты отправляются очень быстро. Типичная скорость передачи составляет 9600 бод (бит в секунду).
Что такое шестнадцатеричный формат?
При устранении неполадок может быть полезно увидеть фактически передаваемые необработанные данные. Длинные строки из единиц и нулей трудно читать, поэтому биты объединяются и отображаются в шестнадцатеричном формате. Каждый блок из 4 бит представлен одним из шестнадцати символов от 0 до F .
0000 = 0 | 0100 = 4 | 1000 = 8 | 1100 = C |
0001 = 1 | 0101 = 5 | 1001 = 9< /td> | 1101 = D |
0010 = 2 | 0110 = 6 | 1010 = A | 1110 = E |
0011 = 3 | 0111 = 7 | 1011 = B | 1111 = F тд> |
Код функции | < td align="center">ДействиеИмя таблицы | ||
01 ( 01 hex) | Чтение | Дискретные выходные катушки | |
05 (05 hex) td> | Запись одиночного | Дискретная выходная катушка | |
15 ( 0F hex ) | Запись нескольких | Дискретные выходные катушки | |
02 ( 02 hex) | Чтение | Контакты дискретного ввода | |
04 (04 hex) | Чтение | Регистры аналогового ввода | |
03 ( 03 hex) | Чтение | Регистры хранения аналогового выхода | |
06 ( 06 hex) | Запись одного | Регистр хранения аналогового выхода | 16 ( 10 hex) | Запись нескольких | Регистры хранения аналогового вывода | < /tr> таблица>
Адреса данных | Чтение | Запись одного | Запись нескольких |
Дискретные выходные катушки 0xxxx | FC01 | FC05 | FC15 |
Дискретные входные контакты 1xxxx | FC02 | Нет данных | Нет данных |
Регистры аналогового ввода 3xxxx | FC04 | Нет данных | Нет данных |
Аналоговый выход Регистры хранения 4xxxx | FC03 | FC06 | FC16 |