Как декодировать полезную нагрузку из Modbus, используя NodeJS? - PullRequest
0 голосов
/ 25 марта 2020

У меня есть измеритель мощности Шнейдера с RS485 Surport. Я использовал python с pymodbus, чтобы прочитать регистр и декодировать полезную нагрузку из него (успех). Но теперь я хочу сделать это с NodeJS, я могу получить необработанные данные, но я не знаю, как их декодировать, я пробовал какой-то метод, но результат неправильный!

Это мой python код:

from pymodbus.client.sync import ModbusSerialClient as ModbusClient
from pymodbus.constants import Endian
from pymodbus.payload import BinaryPayloadDecoder

def validator(instance):
    if not instance.isError():
        '''.isError() implemented in pymodbus 1.4.0 and above.'''
        decoder = BinaryPayloadDecoder.fromRegisters(
            instance.registers,
            byteorder=Endian.Big, wordorder=Endian.Little
        )   
        return float(decoder.decode_32bit_float())

    else:
        # Error handling.
        return None
validator([5658, 17242]) # Result is 218.1

Когда я использую NodeJS, он возвращает буфер, и я пытался расшифровать с помощью:

let buf = Buffer.from([0xd6, 0xd4, 0x42, 0x47]);

payload = buf.readFloatBE(0);   // It return other float number not 218.1

Может ли каждый помочь мне! Спасибо!

...