@@ -96,7 +96,7 @@ def _process_exception(resp, **kwargs):
9696 }
9797 return err
9898
99- def read_coils (self , address , count = 1 , ** kwargs ):
99+ def read_coils (self , address , count = 1 , unit = 0 , ** kwargs ):
100100 """Read `count` coils from a given slave starting at `address`.
101101
102102 :param address: The starting address to read from
@@ -109,107 +109,114 @@ def read_coils(self, address, count=1, **kwargs):
109109 return {"function_code" : resp .function_code , "bits" : resp .bits }
110110 return ExtendedRequestSupport ._process_exception (resp )
111111
112- def read_discrete_inputs (self , address , count = 1 , ** kwargs ):
112+ def read_discrete_inputs (self , address , count = 1 , unit = 0 , ** kwargs ):
113113 """Read `count` number of discrete inputs starting at offset `address`.
114114
115115 :param address: The starting address to read from
116116 :param count: The number of coils to read
117+ :param unit: Modbus slave unit ID
117118 :param kwargs:
118119 :return: List of bits
119120 """
120121 resp = super ().read_discrete_inputs ( # pylint: disable=no-member
121- address , count , ** kwargs
122+ address , count , unit , ** kwargs
122123 )
123124 if not resp .isError ():
124125 return {"function_code" : resp .function_code , "bits" : resp .bits }
125126 return ExtendedRequestSupport ._process_exception (resp )
126127
127128 @handle_brodcast
128- def write_coil (self , address , value , ** kwargs ):
129+ def write_coil (self , address , value , unit = 0 , ** kwargs ):
129130 """Write `value` to coil at `address`.
130131
131132 :param address: coil offset to write to
132133 :param value: bit value to write
134+ :param unit: Modbus slave unit ID
133135 :param kwargs:
134136 :return:
135137 """
136- resp = super ().write_coil (address , value , ** kwargs ) # pylint: disable=no-member
138+ resp = super ().write_coil (address , value , unit , ** kwargs ) # pylint: disable=no-member
137139 return resp
138140
139141 @handle_brodcast
140- def write_coils (self , address , values , ** kwargs ):
142+ def write_coils (self , address , values , unit = 0 , ** kwargs ):
141143 """Write `value` to coil at `address`.
142144
143145 :param address: coil offset to write to
144146 :param values: list of bit values to write (comma separated)
147+ :param unit: Modbus slave unit ID
145148 :param kwargs:
146149 :return:
147150 """
148151 resp = super ().write_coils ( # pylint: disable=no-member
149- address , values , ** kwargs
152+ address , values , unit , ** kwargs
150153 )
151154 return resp
152155
153156 @handle_brodcast
154- def write_register (self , address , value , ** kwargs ):
157+ def write_register (self , address , value , unit = 0 , ** kwargs ):
155158 """Write `value` to register at `address`.
156159
157160 :param address: register offset to write to
158161 :param value: register value to write
162+ :param unit: Modbus slave unit ID
159163 :param kwargs:
160164 :return:
161165 """
162166 resp = super ().write_register ( # pylint: disable=no-member
163- address , value , ** kwargs
167+ address , value , unit , ** kwargs
164168 )
165169 return resp
166170
167171 @handle_brodcast
168- def write_registers (self , address , values , ** kwargs ):
172+ def write_registers (self , address , values , unit = 0 , ** kwargs ):
169173 """Write list of `values` to registers starting at `address`.
170174
171175 :param address: register offset to write to
172176 :param values: list of register value to write (comma separated)
177+ :param unit: Modbus slave unit ID
173178 :param kwargs:
174179 :return:
175180 """
176181 resp = super ().write_registers ( # pylint: disable=no-member
177- address , values , ** kwargs
182+ address , values , unit , ** kwargs
178183 )
179184 return resp
180185
181- def read_holding_registers (self , address , count = 1 , ** kwargs ):
186+ def read_holding_registers (self , address , count = 1 , unit = 0 , ** kwargs ):
182187 """Read `count` number of holding registers starting at `address`.
183188
184189 :param address: starting register offset to read from
185190 :param count: Number of registers to read
191+ :param unit: Modbus slave unit ID
186192 :param kwargs:
187193 :return:
188194 """
189195 resp = super ().read_holding_registers ( # pylint: disable=no-member
190- address , count , ** kwargs
196+ address , count , unit , ** kwargs
191197 )
192198 if not resp .isError ():
193199 return {"function_code" : resp .function_code , "registers" : resp .registers }
194200 return ExtendedRequestSupport ._process_exception (resp )
195201
196- def read_input_registers (self , address , count = 1 , ** kwargs ):
202+ def read_input_registers (self , address , count = 1 , unit = 0 , ** kwargs ):
197203 """Read `count` number of input registers starting at `address`.
198204
199205 :param address: starting register offset to read from to
200206 :param count: Number of registers to read
207+ :param unit: Modbus slave unit ID
201208 :param kwargs:
202209 :return:
203210 """
204211 resp = super ().read_input_registers ( # pylint: disable=no-member
205- address , count , ** kwargs
212+ address , count , unit , ** kwargs
206213 )
207214 if not resp .isError ():
208215 return {"function_code" : resp .function_code , "registers" : resp .registers }
209216 return ExtendedRequestSupport ._process_exception (resp )
210217
211218 def readwrite_registers (
212- self , read_address , read_count , write_address , write_registers , ** kwargs
219+ self , read_address , read_count , write_address , write_registers , unit = 0 , ** kwargs
213220 ):
214221 """Read `read_count` number of holding registers.
215222
@@ -220,6 +227,7 @@ def readwrite_registers(
220227 :param read_count: Number of registers to read
221228 :param write_address: register offset to write to
222229 :param write_registers: List of register values to write (comma separated)
230+ :param unit: Modbus slave unit ID
223231 :param kwargs:
224232 :return:
225233 """
@@ -228,25 +236,27 @@ def readwrite_registers(
228236 read_count = read_count ,
229237 write_address = write_address ,
230238 write_registers = write_registers ,
239+ unit = unit ,
231240 ** kwargs ,
232241 )
233242 if not resp .isError ():
234243 return {"function_code" : resp .function_code , "registers" : resp .registers }
235244 return ExtendedRequestSupport ._process_exception (resp )
236245
237246 def mask_write_register (
238- self , address = 0x0000 , and_mask = 0xFFFF , or_mask = 0x0000 , ** kwargs
247+ self , address = 0x0000 , and_mask = 0xFFFF , or_mask = 0x0000 , unit = 0 , ** kwargs
239248 ):
240249 """Mask content of holding register at `address` with `and_mask` and `or_mask`.
241250
242251 :param address: Reference address of register
243252 :param and_mask: And Mask
244253 :param or_mask: OR Mask
254+ :param unit: Modbus slave unit ID
245255 :param kwargs:
246256 :return:
247257 """
248258 resp = super ().mask_write_register ( # pylint: disable=no-member
249- address = address , and_mask = and_mask , or_mask = or_mask , ** kwargs
259+ address = address , and_mask = and_mask , or_mask = or_mask , unit = unit , ** kwargs
250260 )
251261 if not resp .isError ():
252262 return {
@@ -279,13 +289,14 @@ def read_device_information(self, read_code=None, object_id=0x00, **kwargs):
279289 }
280290 return ExtendedRequestSupport ._process_exception (resp )
281291
282- def report_slave_id (self , ** kwargs ):
292+ def report_slave_id (self , unit = 0 , ** kwargs ):
283293 """Report information about remote slave ID.
284294
295+ :param unit: Modbus slave unit ID
285296 :param kwargs:
286297 :return:
287298 """
288- request = ReportSlaveIdRequest (** kwargs )
299+ request = ReportSlaveIdRequest (unit , ** kwargs )
289300 resp = self .execute (request ) # pylint: disable=no-member
290301 if not resp .isError ():
291302 return {
0 commit comments