Здравствуйте! прошу уточнить “Суммарную реактивную/активную мощность” (адрес Modbus 4872/4864) можно считать только в формате u64little endian или есть возможность считать данные с помощью 1 или 2х бит (U16 или U32)? Устройство сбора и передачи данных не позволяет считать более 2-х бит
Добрый день.
Предположу по контексту что вопрос касается измерителя Трёхфазный счётчик электроэнергии WB-MAP3E — Wiren Board
Но эти регистры имеют разрядность в 32 бита:
Разрядность в 64 имеют регистры, например 0x1200.
Если их читать в несколько запросов - то данные могут быть неконсистентны, так как (могут) быть изменены между чтениями.
Но некоторые пользователи именно так и поступают, мирясь с возможными неточностями данных.
А что за устройство используете?
Здравствуйте! Стоит задача опросить данные счетчики (Modbus RTU, RS485) и выдать протоколами МЭК104 (Server, Etherenet) и Modbus RTU (Slave, RS485). Для данных целей в проект заложили устройво SM160-02М для сбора, обработки, хранения, преобразования и обмена информацией с серверами сбора. При создании Модбас карты в конфигураторе SM разработчик предлагает настроить опрос только 1 или 2х регистров.
Возник вопрос как считать данные со счетчика и передать по МЭК 104, который по ГОСТ можно передавать максимум 32 бита. WB-MAP3E выдает значения СУММАРНОЙ ПРЯМОЙ АКТИВНОЙ/РЕАКТИВНОЙ ЭНЕРГИИ (в сообщении выше опечатка) регистры 4608 и 4640 в формате U64. Прошу уточнить единственная возможность передать данные это считать в несколько запросов по 32 бита?
Передаваемое по протоколу значение не имеет прямого отношения к читаемому с измерителя, оно уже (как правило) преобразовано в системные единицы.
Как по мне - проще (ну и дешевле) поставить вместо SM160-02М контроллер который уже имеет как шлюз 104 так и готовые шаблоны под устройства.
Но если такой возможности нет - то при чтении регистров отдельно, разными запросами данные будет в момент переполнения младшего разряда неконсистентны.
То есть например если прочитать два регистра в момент 0x0000 0000 ffff 0000 → 0x0000 0001 0000 0000 то можно получить 0x0000 0001 ffff 0000 если сначала читать младшую часть а потом старшую. И это даст почти двукратный ложный “пик”.
Это можно обойти добавив анализ значений, но путь добавляет сложности: Не могу настроить WB-MAP3E - #32 от пользователя jk3141