3690
правок
Строка 77: | Строка 77: | ||
Регистры ввода допускают только чтение (например, текущее значение температуры). Регистры хранения поддерживают как чтение, так и запись (для хранения настроек). В настоящее время во многих устройствах, в частности в устройствах Wiren Board, эти регистры не разделяются. Команды на чтение регистра хранения N и регистра ввода N обратятся к одному и тому же значению в адресном пространстве устройства. | Регистры ввода допускают только чтение (например, текущее значение температуры). Регистры хранения поддерживают как чтение, так и запись (для хранения настроек). В настоящее время во многих устройствах, в частности в устройствах Wiren Board, эти регистры не разделяются. Команды на чтение регистра хранения N и регистра ввода N обратятся к одному и тому же значению в адресном пространстве устройства. | ||
===Адреса | === Адреса регистров === | ||
Регистры в стандарте Modbus адресуются с помощью 16-битных адресов. Адресация начинается с нуля. Адрес регистра, таким образом, может принимать значения от 0 до 65535. | |||
Адресные пространства регистров, также называемые таблицами иди блоками, могут быть различны для всех четырёх типов регистров. Это значит, что значения регистров с одинаковым адресом, но разным типом, в общем случае разные. | |||
Например, при чтении регистра флагов (coil) номер 42, регистра дискретного входа (Discrete), регистров ввода и хранения (Input и Holding) с теми же адресами, можно получить четыре разных значения. | |||
==== Нестандартная адресация ==== | |||
В документации на некоторые, особенно старые, устройства адреса элементов (регистров) указываются в формате, не соответсвующем стандарту. В этом формате тип элемента кодируется первой цифрой адреса, а адресация начинается не с нуля. | |||
Например, регистр хранения с адресом 0 может записываться как 40001 или 400001, а Coil с адресом 0 как 000001. | |||
В таблица перевода адресов в стандартный формат показаны диапазоны для двух разных нестандартных типов указания адресов и соответствующие им типы данных и диапазоны стандартных адресов. | |||
{|class="wikitable" align="center" | {|class="wikitable" align="center" | ||
! | ! Тип данных || Стандартные адреса || Стандартные адреса (hex) || Нестандартные адреса (5 цифр) || Нестандартные адреса (6 цифр) | ||
|- | |- | ||
! | ! Флагов (Coils) | ||
| 0 || | | 0-65535 || 0x0000 - 0xFFFF || 00001 - 09999 || 000001 - 065536 | ||
|- | |- | ||
! | ! Дискретных входов (Discrete) | ||
| | | 0-65535 || 0x0000 - 0xFFFF || 10001 - 19999 || 100001 - 165536 | ||
|- | |||
! Регистры входов (Input Registers) | |||
| 0-65535 || 0x0000 - 0xFFFF || 30001 - 39999 || 300001 - 365536 | |||
|- | |- | ||
! Регистры хранения (Holding Registers) | ! Регистры хранения (Holding Registers) | ||
| 0-65535 || 0x0000 - 0xFFFF || 40001 - 49999 || 400001 - 465536 | |||
| | |||
|} | |} | ||
Признаки использования нестандартной адресации: | |||
* Адреса записываются в десятичном формате | |||
* Во всех адресах пять или шесть цифр | |||
* Адреса с не-дискретными данными (показния датчиков и т.п.) начинаются на 30 или 40 | |||
Часто рядом с нестандартными адресами указываются и адреса соответствующие стандарту, обычно в шестнадцатеричном формате. | |||
Стоит отметить, что физически в пакете данных передаются адреса в стандартном формате, независимо от способа представления их в документации. | |||
==== Пример описания регистров в документации ==== | |||
<!--T:26--> | <!--T:26--> | ||
В готовых шаблонах устройств контроллера Wiren Board 5 есть шаблон для однофазного счетчика электроэнергии SDM220 (/usr/share/wb-mqtt-serial/templates/config-sdm220.json). В документации от производителя "Eastron SDM | В готовых шаблонах устройств контроллера Wiren Board 5 есть шаблон для однофазного счетчика электроэнергии SDM220 (/usr/share/wb-mqtt-serial/templates/config-sdm220.json). В документации от производителя "Eastron SDM |