@@ -130,6 +130,14 @@ def sync_execute(self, no_response_expected: bool, request: ModbusPDU) -> Modbus
130
130
return ExceptionResponse (0xff )
131
131
try :
132
132
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
+ )
133
141
response .retries = count_retries
134
142
return response
135
143
except asyncio .exceptions .TimeoutError :
@@ -170,8 +178,12 @@ async def execute(self, no_response_expected: bool, request: ModbusPDU) -> Modbu
170
178
self .count_until_disconnect = self .max_until_disconnect
171
179
if response .dev_id != request .dev_id :
172
180
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 } ."
174
182
)
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
+ )
175
187
response .retries = count_retries
176
188
return response
177
189
except asyncio .exceptions .TimeoutError :
0 commit comments