improve modbus trace
This commit is contained in:
@@ -392,7 +392,7 @@ class Talent(Message):
|
|||||||
elif self.ctrl.is_ind():
|
elif self.ctrl.is_ind():
|
||||||
logger.debug(f'Modbus Ind MsgLen: {modbus_len}')
|
logger.debug(f'Modbus Ind MsgLen: {modbus_len}')
|
||||||
for key, update in self.mb.recv_resp(self.db, self._recv_buffer[
|
for key, update in self.mb.recv_resp(self.db, self._recv_buffer[
|
||||||
self.header_len + hdr_len:]):
|
self.header_len + hdr_len:], self.new_data):
|
||||||
if update:
|
if update:
|
||||||
self.new_data[key] = True
|
self.new_data[key] = True
|
||||||
|
|
||||||
|
|||||||
@@ -434,11 +434,12 @@ class SolarmanV5(Message):
|
|||||||
elif ftype == self.MB_RTU_CMD:
|
elif ftype == self.MB_RTU_CMD:
|
||||||
valid = data[1]
|
valid = data[1]
|
||||||
modbus_msg_len = self.data_len - 14
|
modbus_msg_len = self.data_len - 14
|
||||||
logger.info(f'modbus_len:{modbus_msg_len} accepted:{valid}')
|
logger.debug(f'modbus_len:{modbus_msg_len} accepted:{valid}')
|
||||||
if valid == 1 and modbus_msg_len > 4:
|
if valid == 1 and modbus_msg_len > 4:
|
||||||
logger.info(f'first byte modbus:{data[14]}')
|
logger.info(f'first byte modbus:{data[14]}')
|
||||||
inv_update = False
|
inv_update = False
|
||||||
for key, update in self.mb.recv_resp(self.db, data[14:-2]):
|
for key, update in self.mb.recv_resp(self.db, data[14:-2],
|
||||||
|
self.node_id):
|
||||||
if update:
|
if update:
|
||||||
if key == 'inverter':
|
if key == 'inverter':
|
||||||
inv_update = True
|
inv_update = True
|
||||||
|
|||||||
@@ -93,8 +93,8 @@ class Modbus():
|
|||||||
self.last_len = res[2]
|
self.last_len = res[2]
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def recv_resp(self, info_db, buf: bytearray) -> Generator[tuple[str, bool],
|
def recv_resp(self, info_db, buf: bytearray, node_id: str) -> \
|
||||||
None, None]:
|
Generator[tuple[str, bool], None, None]:
|
||||||
logging.info(f'recv_resp: first byte modbus:{buf[0]} len:{len(buf)}')
|
logging.info(f'recv_resp: first byte modbus:{buf[0]} len:{len(buf)}')
|
||||||
if not self.check_crc(buf):
|
if not self.check_crc(buf):
|
||||||
logging.error('Modbus: CRC error')
|
logging.error('Modbus: CRC error')
|
||||||
@@ -136,8 +136,9 @@ class Modbus():
|
|||||||
name = str(f'info-id.0x{addr:x}')
|
name = str(f'info-id.0x{addr:x}')
|
||||||
update = False
|
update = False
|
||||||
|
|
||||||
info_db.tracer.log(level, f'GEN3PLUS: {name} : {result}{unit}'
|
info_db.tracer.log(level,
|
||||||
f' update: {update}')
|
f'MODBUS({node_id}): {name} : {result}'
|
||||||
|
f'{unit} update: {update}')
|
||||||
|
|
||||||
def check_crc(self, msg) -> bool:
|
def check_crc(self, msg) -> bool:
|
||||||
return 0 == self.__calc_crc(msg)
|
return 0 == self.__calc_crc(msg)
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ def test_build_recv():
|
|||||||
assert pdu == b'\x01\x03\x30\x0e\x00\x02\xaa\xc8'
|
assert pdu == b'\x01\x03\x30\x0e\x00\x02\xaa\xc8'
|
||||||
assert mb.check_crc(pdu)
|
assert mb.check_crc(pdu)
|
||||||
call = 0
|
call = 0
|
||||||
for key, update in mb.recv_resp(mb.db, b'\x01\x03\x04\x01\x2c\x00\x46\xbb\xf4'):
|
for key, update in mb.recv_resp(mb.db, b'\x01\x03\x04\x01\x2c\x00\x46\xbb\xf4', 'test'):
|
||||||
if key == 'grid':
|
if key == 'grid':
|
||||||
assert update == True
|
assert update == True
|
||||||
elif key == 'inverter':
|
elif key == 'inverter':
|
||||||
|
|||||||
Reference in New Issue
Block a user