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

Теперь драйвер контроллера Wirenboard строки тоже умеет считывать (новая версия доступна в релизе testing). Для этого нужно выбрать в параметрах пользовательского регистра формат “String” и количество символов для чтения:
Штатный шаблон для счетчика использует протокол МЭК (не modbus). А Modbus Poll использует Modbus.
В документации на счетчик на странице 134 есть таблица Modbus-регистров, ориентируйтесь на нее: http://www.energomera.ru/documentations/product/ce304s32_v6_re.pdf
Добрый день.
Мне кажется недопонимание какое-то.
Счётчики Энергомера 301 подключены по RS485 к контроллеру WB6 и опрашивается по протоколу МЭК с помощью шаблона. В WB6, в меню “устройства” я вижу данные со счётчиков (кВт*ч, серийный номер счётчика и т.д.). Всё отлично.
А уже внешней SCADA я хочу опросить контроллер WB6 по Modbus TCP. Для тестирования я использую ПО Modbuspoll. Адреса регистров modbus для считывания из контроллера WB6 я беру со страницы “Настройки” - “Конфигурационные файлы” - “Шлюз MQTT - Modbus RTU/TCP slave” - “ID данных Modbus” - “Начальный адрес”.
Например.
Я хочу по Modbus TCP считать значение серийного номера счётчика из контроллера WB6.
В контроллере WB6, на странице “Устройства” я вижу серийный номер счётчика 8840103472224

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

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









