# Считывание регистра по Modbus

**URL:** <https://support.wirenboard.com/t/schityvanie-registra-po-modbus/11859>\
**Category:** Без категории\
**Created:** [July 7, 2022, 11:39am UTC](https://support.wirenboard.com/t/schityvanie-registra-po-modbus/11859 "2022-07-07T11:39:45Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![e.volkov](https://support.wirenboard.com/user_avatar/support.wirenboard.com/e.volkov/32/11176_2.png) [@e.volkov](https://support.wirenboard.com/u/e.volkov)\
**Post date:** [July 7, 2022, 11:39am UTC](https://support.wirenboard.com/t/schityvanie-registra-po-modbus/11859/1 "2022-07-07T11:39:45Z")

</div>

Добрый день.  
Контроллером Wiren Board 6 считываю показания электросчётчиков Энергомера 301.  
Далее эту информацию считываю по сети по Modbus (тестово с помощью ModBus poll).  
Считывается 1 регистр 16 бит. Максимальное значение регистра 65535.  
Что будет после того как значение накопленной энергии на счётчике Энергомера достигнет значения больше 65535?  
Как считывать значение больше?  
Уже сейчас я не могу по ModBus считать например серийный номер того же счётчика Энергомера так как он значительно больше (127204367).

 ![Снимок](https://support.wirenboard.com/uploads/default/original/2X/f/f668bd58e02f04883b72c8aa00a77f95935557a4.png)  
 ![Снимок2](https://support.wirenboard.com/uploads/default/original/2X/3/372ceabab89c3f626e087b0992137ce8a18ae2ef.png)

---

<div class="post-metadata">

**Author:** ![Explorerol](https://avatars.discourse-cdn.com/v2/letter/e/7ab992/32.png) [@Explorerol](https://support.wirenboard.com/u/Explorerol)\
**Post date:** [July 7, 2022, 12:07pm UTC](https://support.wirenboard.com/t/schityvanie-registra-po-modbus/11859/2 "2022-07-07T12:07:54Z")

</div>

Здравствуйте!

> [@e.volkov](#):
>
> Считывается 1 регистр 16 бит. Максимальное значение регистра 65535.

Предполагаю, что данные должны храниться в нескольких 16-битных регистрах. То есть нужно для энергии выбрать тип данных, например, u32 (32-битное целое без знака) или u64 (64-битное целое без знака). Нужно уточнить по документации.  
Какой именно регистр (параметр) хотите считать?

> [@e.volkov](#):
>
> Уже сейчас я не могу по ModBus считать например серийный номер того же счётчика Энергомера так как он значительно больше (127204367).

Серийный номер счетчика хранится как строка.  
 ![image](https://support.wirenboard.com/uploads/default/original/2X/f/f2de2034f16da53474f5d43c4844eb1483a5368c.png)

Теперь драйвер контроллера Wirenboard строки тоже умеет считывать (новая версия доступна в релизе testing). Для этого нужно выбрать в параметрах пользовательского регистра формат “String” и количество символов для чтения:

 ![image](https://support.wirenboard.com/uploads/default/original/2X/3/3bbd31f2d3926a9c916b8ec0ffc395609ab63ded.png)

---

<div class="post-metadata">

**Author:** ![e.volkov](https://support.wirenboard.com/user_avatar/support.wirenboard.com/e.volkov/32/11176_2.png) [@e.volkov](https://support.wirenboard.com/u/e.volkov)\
**Post date:** [July 7, 2022, 12:29pm UTC](https://support.wirenboard.com/t/schityvanie-registra-po-modbus/11859/4 "2022-07-07T12:29:53Z")

</div>

Сам WirenBoard6 из Энергомеры 301 по своему собственному шаблону считывает серийный номер очень хорошо

 ![Снимок3](https://support.wirenboard.com/uploads/default/original/2X/5/547ea01d05b5a6396b9d3ef0ec59e07182e457e3.png)  
 ![Снимок4](https://support.wirenboard.com/uploads/default/original/2X/d/d6c6fa9a036213d7df5ad9f11944b01280334454.png)  
 ![Снимок5](https://support.wirenboard.com/uploads/default/original/2X/c/cf3a1b9137d931a0010d23e35fcb874670101eb1.png)

Проблема в считывании регистра из WirenBoard6 Modbus poll-ом.  
В WirenBoard6 для считывания из вне выделен только один регистр для значения серийного номера

 ![Снимок6](https://support.wirenboard.com/uploads/default/original/2X/8/8a4a1a71104419dac466f003972efa21a8542a91.png)

---

<div class="post-metadata">

**Author:** ![Explorerol](https://avatars.discourse-cdn.com/v2/letter/e/7ab992/32.png) [@Explorerol](https://support.wirenboard.com/u/Explorerol)\
**Post date:** [July 7, 2022, 2:00pm UTC](https://support.wirenboard.com/t/schityvanie-registra-po-modbus/11859/5 "2022-07-07T14:00:04Z")

</div>

Штатный шаблон для счетчика использует протокол МЭК (не modbus). А Modbus Poll использует Modbus.  
В документации на счетчик на странице 134 есть таблица Modbus-регистров, ориентируйтесь на нее: [http://www.energomera.ru/documentations/product/ce304s32\_v6\_re.pdf](http://www.energomera.ru/documentations/product/ce304s32_v6_re.pdf)

---

<div class="post-metadata">

**Author:** ![e.volkov](https://support.wirenboard.com/user_avatar/support.wirenboard.com/e.volkov/32/11176_2.png) [@e.volkov](https://support.wirenboard.com/u/e.volkov)\
**Post date:** [July 8, 2022, 6:41am UTC](https://support.wirenboard.com/t/schityvanie-registra-po-modbus/11859/6 "2022-07-08T06:41:53Z")

</div>

Добрый день.  
Мне кажется недопонимание какое-то.

Счётчики Энергомера 301 подключены по RS485 к контроллеру WB6 и опрашивается по протоколу МЭК с помощью шаблона. В WB6, в меню “устройства” я вижу данные со счётчиков (кВт\*ч, серийный номер счётчика и т.д.). Всё отлично.

А уже внешней SCADA я хочу опросить контроллер WB6 по Modbus TCP. Для тестирования я использую ПО Modbuspoll. Адреса регистров modbus для считывания из контроллера WB6 я беру со страницы “Настройки” - “Конфигурационные файлы” - “Шлюз MQTT - Modbus RTU/TCP slave” - “ID данных Modbus” - “Начальный адрес”.

Например.  
Я хочу по Modbus TCP считать значение серийного номера счётчика из контроллера WB6.  
В контроллере WB6, на странице “Устройства” я вижу серийный номер счётчика 8840103472224  
 ![1](https://support.wirenboard.com/uploads/default/original/2X/f/faf3172147c9f7d838e877cfd66c33b31f29ae88.png)

На странице “Настройки” - “Конфигурационные файлы” - “Шлюз MQTT - Modbus RTU/TCP slave” я беру адрес Modbus устройства (“ID данных Modbus”) - 127 и адрес регистра (“Начальный адрес”) - 51418 этой точки данных.

 ![2](https://support.wirenboard.com/uploads/default/original/2X/b/b19a5abcec2f20517bda7ea2dd9b4a708281020e.png)

В программе Modbuspoll я задаю адрес устройства и адрес регистра.

 ![3](https://support.wirenboard.com/uploads/default/original/2X/8/80249f652b2778d6e27a4fc19ea91639a97155ba.png)

Но в ответ получаю переполненную ячейку (65535 или шестнадцать единичек в двоичном). Т.е. число 8840103472224 просто не помещается в 16битную ячейку.  
 ![4](https://support.wirenboard.com/uploads/default/original/2X/1/1b44f549a21511a6351babb3f0ecdc4b41da19e6.png)

---

<div class="post-metadata">

**Author:** ![e.volkov](https://support.wirenboard.com/user_avatar/support.wirenboard.com/e.volkov/32/11176_2.png) [@e.volkov](https://support.wirenboard.com/u/e.volkov)\
**Post date:** [July 8, 2022, 6:42am UTC](https://support.wirenboard.com/t/schityvanie-registra-po-modbus/11859/7 "2022-07-08T06:42:38Z")

</div>

При обращении таким же способом к любой ячейке памяти в которой изначально известно что число меньше 65535, я получаю верный ответ.  
 ![5](https://support.wirenboard.com/uploads/default/original/2X/e/e339419c6f8229e82f861741eee129a63e7da488.png)

 ![6](https://support.wirenboard.com/uploads/default/original/2X/6/6ef2a89ca333f4d64d16c16519f2f7ab83ede553.png)  
 ![7](https://support.wirenboard.com/uploads/default/original/2X/a/a7ac999eee24fd70bc03758578799a01489f411f.png)  
 ![8](https://support.wirenboard.com/uploads/default/original/2X/a/a7e506ed03c6b2a3c012936d9052e8e3ced91f53.png)

Подскажите что я делаю не так и как решить мою задачу.

заранее спасибо

---

<div class="post-metadata">

**Author:** ![Explorerol](https://avatars.discourse-cdn.com/v2/letter/e/7ab992/32.png) [@Explorerol](https://support.wirenboard.com/u/Explorerol)\
**Post date:** [July 8, 2022, 7:45am UTC](https://support.wirenboard.com/t/schityvanie-registra-po-modbus/11859/8 "2022-07-08T07:45:51Z")

</div>

> [@e.volkov](#):
>
> А уже внешней SCADA я хочу опросить контроллер WB6 по Modbus TCP.

Вот теперь стало понятно.

> [@e.volkov](#):
>
> При обращении таким же способом к любой ячейке памяти в которой изначально известно что число меньше 65535, я получаю верный ответ.

Давайте сначала попробуем считать значение Total A energy. В конфигурации mbgate задайте такие параметры:

 ![image](https://support.wirenboard.com/uploads/default/original/2X/5/5e031c8fb0ea6f8e0a3e93240e450d6f023b5780.png)

В конфигурации ModbusPoll нужно задать в настройках опроса Quantity = 2 (2 регистра по 16 бит). А в таблице опроса выбрать тип float. При этом может потребоваться подобрать нужный порядок байт и слов.

---

<div class="post-metadata">

**Author:** ![e.volkov](https://support.wirenboard.com/user_avatar/support.wirenboard.com/e.volkov/32/11176_2.png) [@e.volkov](https://support.wirenboard.com/u/e.volkov)\
**Post date:** [July 11, 2022, 7:27am UTC](https://support.wirenboard.com/t/schityvanie-registra-po-modbus/11859/9 "2022-07-11T07:27:11Z")

</div>

сработало  
спасибо огромное

---

<div class="post-metadata">

**Author:** ![system](https://support.wirenboard.com/uploads/default/original/2X/5/5ac90dc8a7bdff486d3494a19ec6aaa6f6cc5d36.png) [@system](https://support.wirenboard.com/u/system)\
**Post date:** [July 18, 2022, 7:28am UTC](https://support.wirenboard.com/t/schityvanie-registra-po-modbus/11859/10 "2022-07-18T07:28:11Z")

</div>

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.
