Добрый день!
Скорее всего неправильно читаете, число действительно должно расти только вверх. Можете прислать максимально подробные настройки ПО, которым читаете?
Формат данных у нас U64, little-endian. Это значит 4 регистра Modbus подряд, начиная с номера, который написан в документации.
Евгений, прикрепляю архив. В нём исходник, которым читаем девайс и лог результатов.
Message part: F467007400000000
Message part: F4F3007400000000
Message part: F57D007400000000
Message part: F608007400000000
Message part: F692007400000000
Message part: F720007400000000
Message part: F7AD007400000000
Message part: F839007400000000
Message part: F8C4007400000000
Message part: F94F007400000000
Message part: F9DA007400000000
это сырые данные регистра 0x1244 (S energy L1)
тут little endian, и видно как скачут (зизгазом) значения второго байта (а он старший)
Ага, я понял в чём дело, кажется. Little-endian в данном случае - это порядок слов, а не байт. Порядок байт в 16-битном слове (регистре) задаётся стандартом Modbus и является big-endian.
Т.е. значение у вас будет такое:
F9DA007400000000 = 0xF9DA + (0x0074 << 16) + (0x0000 << 32) + (0x0000 << 48) = 0x74f9da
дальше конвертируем в Ватты (В*А):
0x74f9da * 3.125e-05 = 239.5668125
а если магнитик на него положить, вниз не, не пойдет?