22# pylint: disable=missing-type-doc
33import struct
44
5+ from pymodbus .constants import Defaults
56from pymodbus .pdu import ModbusExceptions as merror , ModbusRequest , ModbusResponse
67from pymodbus .utilities import pack_bitstring , unpack_bitstring
78
@@ -11,13 +12,14 @@ class ReadBitsRequestBase(ModbusRequest):
1112
1213 _rtu_frame_size = 8
1314
14- def __init__ (self , address , count , ** kwargs ):
15+ def __init__ (self , address , count , unit = Defaults . UnitId , ** kwargs ):
1516 """Initialize the read request data.
1617
1718 :param address: The start address to read from
1819 :param count: The number of bits after "address" to read
20+ :param unit: Modbus slave unit ID
1921 """
20- ModbusRequest .__init__ (self , ** kwargs )
22+ ModbusRequest .__init__ (self , unit , ** kwargs )
2123 self .address = address
2224 self .count = count
2325
@@ -64,12 +66,13 @@ class ReadBitsResponseBase(ModbusResponse):
6466
6567 _rtu_byte_count_pos = 2
6668
67- def __init__ (self , values , ** kwargs ):
69+ def __init__ (self , values , unit = Defaults . UnitId , ** kwargs ):
6870 """Initialize a new instance.
6971
7072 :param values: The requested values to be returned
73+ :param unit: Modbus slave unit ID
7174 """
72- ModbusResponse .__init__ (self , ** kwargs )
75+ ModbusResponse .__init__ (self , unit , ** kwargs )
7376
7477 #: A list of booleans representing bit values
7578 self .bits = values or []
@@ -133,13 +136,14 @@ class ReadCoilsRequest(ReadBitsRequestBase):
133136
134137 function_code = 1
135138
136- def __init__ (self , address = None , count = None , ** kwargs ):
139+ def __init__ (self , address = None , count = None , unit = Defaults . UnitId , ** kwargs ):
137140 """Initialize a new instance.
138141
139142 :param address: The address to start reading from
140143 :param count: The number of bits to read
144+ :param unit: Modbus slave unit ID
141145 """
142- ReadBitsRequestBase .__init__ (self , address , count , ** kwargs )
146+ ReadBitsRequestBase .__init__ (self , address , count , unit , ** kwargs )
143147
144148 def execute (self , context ):
145149 """Run a read coils request against a datastore.
@@ -177,12 +181,13 @@ class ReadCoilsResponse(ReadBitsResponseBase):
177181
178182 function_code = 1
179183
180- def __init__ (self , values = None , ** kwargs ):
184+ def __init__ (self , values = None , unit = Defaults . UnitId , ** kwargs ):
181185 """Initialize a new instance.
182186
183187 :param values: The request values to respond with
188+ :param unit: Modbus slave unit ID
184189 """
185- ReadBitsResponseBase .__init__ (self , values , ** kwargs )
190+ ReadBitsResponseBase .__init__ (self , values , unit , ** kwargs )
186191
187192
188193class ReadDiscreteInputsRequest (ReadBitsRequestBase ):
@@ -196,13 +201,14 @@ class ReadDiscreteInputsRequest(ReadBitsRequestBase):
196201
197202 function_code = 2
198203
199- def __init__ (self , address = None , count = None , ** kwargs ):
204+ def __init__ (self , address = None , count = None , unit = Defaults . UnitId , ** kwargs ):
200205 """Initialize a new instance.
201206
202207 :param address: The address to start reading from
203208 :param count: The number of bits to read
209+ :param unit: Modbus slave unit ID
204210 """
205- ReadBitsRequestBase .__init__ (self , address , count , ** kwargs )
211+ ReadBitsRequestBase .__init__ (self , address , count , unit , ** kwargs )
206212
207213 def execute (self , context ):
208214 """Run a read discrete input request against a datastore.
@@ -240,12 +246,13 @@ class ReadDiscreteInputsResponse(ReadBitsResponseBase):
240246
241247 function_code = 2
242248
243- def __init__ (self , values = None , ** kwargs ):
249+ def __init__ (self , values = None , unit = Defaults . UnitId , ** kwargs ):
244250 """Initialize a new instance.
245251
246252 :param values: The request values to respond with
253+ :param unit: Modbus slave unit ID
247254 """
248- ReadBitsResponseBase .__init__ (self , values , ** kwargs )
255+ ReadBitsResponseBase .__init__ (self , values , unit , ** kwargs )
249256
250257
251258# ---------------------------------------------------------------------------#
0 commit comments