@@ -130,6 +130,14 @@ def sync_execute(self, no_response_expected: bool, request: ModbusPDU) -> Modbus
130130 return ExceptionResponse (0xff )
131131 try :
132132 response = self .sync_get_response (request .dev_id , request .transaction_id )
133+ if response .dev_id != request .dev_id :
134+ raise ModbusIOException (
135+ f"ERROR: request uses device id={ request .dev_id } but received { response .dev_id } ."
136+ )
137+ if response .transaction_id != request .transaction_id :
138+ raise ModbusIOException (
139+ f"ERROR: request uses transaction id={ request .transaction_id } but received { response .transaction_id } ."
140+ )
133141 response .retries = count_retries
134142 return response
135143 except asyncio .exceptions .TimeoutError :
@@ -170,8 +178,12 @@ async def execute(self, no_response_expected: bool, request: ModbusPDU) -> Modbu
170178 self .count_until_disconnect = self .max_until_disconnect
171179 if response .dev_id != request .dev_id :
172180 raise ModbusIOException (
173- f"ERROR: request ask for id={ request .dev_id } but got id= { response .dev_id } , CLOSING CONNECTION ."
181+ f"ERROR: request uses device id={ request .dev_id } but received { response .dev_id } ."
174182 )
183+ if response .transaction_id != request .transaction_id :
184+ raise ModbusIOException (
185+ f"ERROR: request uses transaction id={ request .transaction_id } but received { response .transaction_id } ."
186+ )
175187 response .retries = count_retries
176188 return response
177189 except asyncio .exceptions .TimeoutError :
0 commit comments