Properly parse current

This commit is contained in:
Jasper Blanckenburg 2023-02-01 21:55:24 +01:00
parent 5bf6b286b6
commit 0f3f70c991

View File

@ -11,6 +11,7 @@ from .temperatures import N_SENSORS
from PySide6.QtCore import QObject, Signal, Slot, Qt from PySide6.QtCore import QObject, Signal, Slot, Qt
from pymodbus.client import ModbusSerialClient from pymodbus.client import ModbusSerialClient
from pymodbus.payload import BinaryPayloadDecoder, Endian
MODBUS_BAUDRATE = 115200 MODBUS_BAUDRATE = 115200
VOLTAGE_ADDRESS = 0x00 VOLTAGE_ADDRESS = 0x00
@ -19,7 +20,7 @@ SLAVE_UNIT_ID = 0x02
NUM_CELLS = 3 NUM_CELLS = 3
VOLTAGE_QUANT = 1 / 10000.0 VOLTAGE_QUANT = 1 / 10000.0
CURRENT_QUANT = 1 / (500 * 72e-6) CURRENT_QUANT = 1 / (10000 * 500 * 72e-6)
THRESH_UV = 2.5 THRESH_UV = 2.5
THRESH_OV = 4.2 THRESH_OV = 4.2
@ -155,15 +156,11 @@ class BMSEvalBoard(BMS):
print(f"ERROR READING CURRENT: {result}", file=sys.stderr) print(f"ERROR READING CURRENT: {result}", file=sys.stderr)
continue continue
assert len(result.registers) == 6 assert len(result.registers) == 6
self._data.current = ( dec = BinaryPayloadDecoder.fromRegisters(result.registers, Endian.Big)
(result.registers[0] << 16) | result.registers[1] self._data.current = dec.decode_32bit_int() * CURRENT_QUANT
) * CURRENT_QUANT
self._data.current_integrated = ( self._data.current_integrated = (
(result.registers[2] << 48) dec.decode_64bit_int() * CURRENT_QUANT * 0.05 / 3600
| (result.registers[3] << 32) )
| (result.registers[4] << 16)
| result.registers[5]
) * CURRENT_QUANT
self.dataUpdated.emit(self._data) self.dataUpdated.emit(self._data)
@Slot(list) @Slot(list)