Мощность на WB-MAP3E

Помогите разобраться.
Настройки:


Странные значения приходят.

Добрый день.
Из того что вижу на картинке - читаете с 0х1302 три регистра.
Но в [таблице](htt, s://wirenboard.com/wiki/WB-MAP3E_Data_Registers) указан для 0х1302 размер в 32, big endian, со знаком.
Немного не понимаю зачем читать три регистра.

исправил
но результат странный

Опишите пожалуйста что делает операция “DWORD to integer (swap regs)”
Если хотите узнать реальное значение - прочитайте из устройства регистры 0х1302 и 0х1303
Старшая часть, с битом знака, - в 0х1303
Младшая - в 0х1302
Есть пример

Если хотите узнать реальное значение - прочитайте из устройства регистры 0х1302 и 0х1303

можете подсказать, как через командную строку под linux сделать такой запрос?
у меня rasberry pi

Да, вот инструкция:
https://wirenboard.com/wiki/Modbus-client#Настольный_компьютер_с_Linux

Аргументы командной строки

с этим и не могу разобраться

Пример чтения двух регистров:

export DEV_PORT=/dev/ttyRS485-1; export DEV_ADDR=98; modbus_client -mrtu -pnone -s2 $DEV_PORT -a$DEV_ADDR -t0x03 -r0х1302 -c2

Адрес и порт - поменяйте на свои.

Да, вот инструкция:
https://wirenboard.com/wiki/Modbus-client#Настольный_компьютер_с_Linux

не устанавливается

pi@raspberrypi:/var/cache/apt/archives $ sudo apt install modbus-utils_1.2_amd64.deb
Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package modbus-utils_1.2_amd64.deb
E: Couldn’t find any package by glob ‘modbus-utils_1.2_amd64.deb’
E: Couldn’t find any package by regex ‘modbus-utils_1.2_amd64.deb’

Опишите пожалуйста что делает операция “DWORD to integer (swap regs)”

public static function bytes2unsignedInt($values, $swapregs, $endianness = 0) {
$data = array();
$int = 0;
// Set the array to correct form
$data = self::checkData($values);
// Combine bytes
$int = self::combineBytes($data, $swapregs, $endianness);
// Convert the value
return self::dword2unsignedInt($int);
}

Вы ввели команду установки пакета из репозитория, вам же нужно скачать пакет на компьютер, перейти в папку с ним и выполнить
sudo apt install ./modbus-utils_1.2_amd64.deb
Отличие от вашей команды — у вас нет символов ./ перед именем пакета, которые указывают локальный путь к пакету.

pi@raspberrypi:/var/cache/apt/archives $ sudo apt install ./modbus-utils_1.2_amd64.deb
Reading package lists… Done
Building dependency tree
Reading state information… Done
Note, selecting ‘modbus-utils:amd64’ instead of ‘./modbus-utils_1.2_amd64.deb’
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
modbus-utils:amd64 : Depends: libc6:amd64 (>= 2.7) but it is not installable
Depends: libmodbus5:amd64 (>= 3.0.2) but it is not installable
E: Unable to correct problems, you have held broken packages.

Судя по названиям вызываемых, (насколько я помню php) dword2unsignedInt тут возвращается беззнаковое. А должно быть со знаком.
Ну и что происходит в combineBytes() - тоже непонятно.
Откуда исходник?

Не установлен libc6 и libmodbus5, как написано.

Откуда исходник?
Это модуль modbus под majordomo.
modbus.class.php (14.9 КБ)
modbusdevices_edit.inc.php (7.1 КБ)
modbusdevices_search.inc.php (1.4 КБ)
ModbusMaster.php (36.2 КБ)
ModbusMasterTcp.php (1.2 КБ)
ModbusMasterUdp.php (1.2 КБ)
PhpType.php (7.3 КБ)

Вряд ли проконсультирую по majordomo. Совсем мало опыта с этой системой.
но в PhpType есть

 private static function dword2signedInt($value) {
        if ((0x80000000 & $value) != 0) {
            return -(0x7FFFFFFF & ~$value)-1;
        } else {
            return (0x7FFFFFFF & $value);
        }
    } 

То есть 2 регистра со знаком можно преобразовать.