14
14
from pymodbus .constants import ExcCodes
15
15
from pymodbus .exceptions import ConnectionException as ModbusConnectionException
16
16
from pymodbus .exceptions import ModbusException , ModbusIOException
17
- from pymodbus .pdu import ModbusPDU
17
+ from pymodbus .pdu import ExceptionResponse , ModbusPDU
18
18
from pymodbus .pdu .register_message import (
19
19
WriteMultipleRegistersResponse ,
20
20
WriteSingleRegisterResponse ,
@@ -116,26 +116,28 @@ async def _read_registers(self, register: int, length: int, slave: int) -> Modbu
116
116
await asyncio .sleep (delay )
117
117
118
118
response = await self .client .read_holding_registers (
119
- register , count = length , device_id = slave # pymodbus keyword was renamed
119
+ register ,
120
+ count = length ,
121
+ device_id = slave , # pymodbus keyword was renamed
120
122
)
121
- if isinstance (response , ExcCodes ):
122
- if response == ExcCodes .DEVICE_BUSY :
123
+ if isinstance (response , ExceptionResponse ):
124
+ if response . exception_code == ExcCodes .DEVICE_BUSY :
123
125
message = (
124
126
"Got a SlaveBusy Modbus Exception while reading "
125
127
f"register { register } (length { length } ) from slave { slave } "
126
128
)
127
129
LOGGER .info (message )
128
130
raise AiriosSlaveBusyException (message )
129
131
130
- if response == ExcCodes .DEVICE_FAILURE :
132
+ if response . exception_code == ExcCodes .DEVICE_FAILURE :
131
133
message = (
132
134
"Got a SlaveFailure Modbus Exception while reading "
133
135
f"register { register } (length { length } ) from slave { slave } "
134
136
)
135
137
LOGGER .info (message )
136
138
raise AiriosSlaveFailureException (message )
137
139
138
- if response == ExcCodes .ACKNOWLEDGE :
140
+ if response . exception_code == ExcCodes .ACKNOWLEDGE :
139
141
message = (
140
142
f"Got ACK while reading register { register } (length { length } ) "
141
143
f"from slave { slave } ."
@@ -149,7 +151,7 @@ async def _read_registers(self, register: int, length: int, slave: int) -> Modbu
149
151
)
150
152
LOGGER .warning (message )
151
153
raise AiriosReadException (
152
- message , modbus_exception_code = response
154
+ message , modbus_exception_code = response . exception_code
153
155
)
154
156
155
157
if len (response .registers ) != length :
@@ -199,14 +201,14 @@ async def _write_registers(self, register: int, value: list[int], slave: int) ->
199
201
value ,
200
202
device_id = slave , # pymodbus keyword was renamed
201
203
)
202
- if isinstance (response , ExcCodes ):
204
+ if isinstance (response , ExceptionResponse ):
203
205
message = (
204
206
f"Failed to write value { value } to register { register } : "
205
- f"{ response :02X} "
207
+ f"{ response . exception_code :02X} "
206
208
)
207
209
LOGGER .info (message )
208
210
raise AiriosWriteException (
209
- message , modbus_exception_code = response
211
+ message , modbus_exception_code = response . exception_code
210
212
)
211
213
except ModbusIOException as err :
212
214
message = f"Could not write register, I/O exception: { err } "
0 commit comments