Properly parse current
This commit is contained in:
parent
5bf6b286b6
commit
0f3f70c991
@ -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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user