@@ -96,11 +96,12 @@ 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
103103 :param count: The number of coils to read
104+ :param unit: Modbus slave unit ID
104105 :param kwargs:
105106 :returns: List of register values
106107 """
@@ -109,107 +110,114 @@ def read_coils(self, address, count=1, **kwargs):
109110 return {"function_code" : resp .function_code , "bits" : resp .bits }
110111 return ExtendedRequestSupport ._process_exception (resp )
111112
112- def read_discrete_inputs (self , address , count = 1 , ** kwargs ):
113+ def read_discrete_inputs (self , address , count = 1 , unit = 0 , ** kwargs ):
113114 """Read `count` number of discrete inputs starting at offset `address`.
114115
115116 :param address: The starting address to read from
116117 :param count: The number of coils to read
118+ :param unit: Modbus slave unit ID
117119 :param kwargs:
118120 :return: List of bits
119121 """
120122 resp = super ().read_discrete_inputs ( # pylint: disable=no-member
121- address , count , ** kwargs
123+ address , count , unit , ** kwargs
122124 )
123125 if not resp .isError ():
124126 return {"function_code" : resp .function_code , "bits" : resp .bits }
125127 return ExtendedRequestSupport ._process_exception (resp )
126128
127129 @handle_brodcast
128- def write_coil (self , address , value , ** kwargs ):
130+ def write_coil (self , address , value , unit = 0 , ** kwargs ):
129131 """Write `value` to coil at `address`.
130132
131133 :param address: coil offset to write to
132134 :param value: bit value to write
135+ :param unit: Modbus slave unit ID
133136 :param kwargs:
134137 :return:
135138 """
136- resp = super ().write_coil (address , value , ** kwargs ) # pylint: disable=no-member
139+ resp = super ().write_coil (address , value , unit , ** kwargs ) # pylint: disable=no-member
137140 return resp
138141
139142 @handle_brodcast
140- def write_coils (self , address , values , ** kwargs ):
143+ def write_coils (self , address , values , unit = 0 , ** kwargs ):
141144 """Write `value` to coil at `address`.
142145
143146 :param address: coil offset to write to
144147 :param values: list of bit values to write (comma separated)
148+ :param unit: Modbus slave unit ID
145149 :param kwargs:
146150 :return:
147151 """
148152 resp = super ().write_coils ( # pylint: disable=no-member
149- address , values , ** kwargs
153+ address , values , unit , ** kwargs
150154 )
151155 return resp
152156
153157 @handle_brodcast
154- def write_register (self , address , value , ** kwargs ):
158+ def write_register (self , address , value , unit = 0 , ** kwargs ):
155159 """Write `value` to register at `address`.
156160
157161 :param address: register offset to write to
158162 :param value: register value to write
163+ :param unit: Modbus slave unit ID
159164 :param kwargs:
160165 :return:
161166 """
162167 resp = super ().write_register ( # pylint: disable=no-member
163- address , value , ** kwargs
168+ address , value , unit , ** kwargs
164169 )
165170 return resp
166171
167172 @handle_brodcast
168- def write_registers (self , address , values , ** kwargs ):
173+ def write_registers (self , address , values , unit = 0 , ** kwargs ):
169174 """Write list of `values` to registers starting at `address`.
170175
171176 :param address: register offset to write to
172177 :param values: list of register value to write (comma separated)
178+ :param unit: Modbus slave unit ID
173179 :param kwargs:
174180 :return:
175181 """
176182 resp = super ().write_registers ( # pylint: disable=no-member
177- address , values , ** kwargs
183+ address , values , unit , ** kwargs
178184 )
179185 return resp
180186
181- def read_holding_registers (self , address , count = 1 , ** kwargs ):
187+ def read_holding_registers (self , address , count = 1 , unit = 0 , ** kwargs ):
182188 """Read `count` number of holding registers starting at `address`.
183189
184190 :param address: starting register offset to read from
185191 :param count: Number of registers to read
192+ :param unit: Modbus slave unit ID
186193 :param kwargs:
187194 :return:
188195 """
189196 resp = super ().read_holding_registers ( # pylint: disable=no-member
190- address , count , ** kwargs
197+ address , count , unit , ** kwargs
191198 )
192199 if not resp .isError ():
193200 return {"function_code" : resp .function_code , "registers" : resp .registers }
194201 return ExtendedRequestSupport ._process_exception (resp )
195202
196- def read_input_registers (self , address , count = 1 , ** kwargs ):
203+ def read_input_registers (self , address , count = 1 , unit = 0 , ** kwargs ):
197204 """Read `count` number of input registers starting at `address`.
198205
199206 :param address: starting register offset to read from to
200207 :param count: Number of registers to read
208+ :param unit: Modbus slave unit ID
201209 :param kwargs:
202210 :return:
203211 """
204212 resp = super ().read_input_registers ( # pylint: disable=no-member
205- address , count , ** kwargs
213+ address , count , unit , ** kwargs
206214 )
207215 if not resp .isError ():
208216 return {"function_code" : resp .function_code , "registers" : resp .registers }
209217 return ExtendedRequestSupport ._process_exception (resp )
210218
211219 def readwrite_registers (
212- self , read_address , read_count , write_address , write_registers , ** kwargs
220+ self , read_address , read_count , write_address , write_registers , unit = 0 , ** kwargs
213221 ):
214222 """Read `read_count` number of holding registers.
215223
@@ -220,6 +228,7 @@ def readwrite_registers(
220228 :param read_count: Number of registers to read
221229 :param write_address: register offset to write to
222230 :param write_registers: List of register values to write (comma separated)
231+ :param unit: Modbus slave unit ID
223232 :param kwargs:
224233 :return:
225234 """
@@ -228,25 +237,27 @@ def readwrite_registers(
228237 read_count = read_count ,
229238 write_address = write_address ,
230239 write_registers = write_registers ,
240+ unit = unit ,
231241 ** kwargs ,
232242 )
233243 if not resp .isError ():
234244 return {"function_code" : resp .function_code , "registers" : resp .registers }
235245 return ExtendedRequestSupport ._process_exception (resp )
236246
237247 def mask_write_register (
238- self , address = 0x0000 , and_mask = 0xFFFF , or_mask = 0x0000 , ** kwargs
248+ self , address = 0x0000 , and_mask = 0xFFFF , or_mask = 0x0000 , unit = 0 , ** kwargs
239249 ):
240250 """Mask content of holding register at `address` with `and_mask` and `or_mask`.
241251
242252 :param address: Reference address of register
243253 :param and_mask: And Mask
244254 :param or_mask: OR Mask
255+ :param unit: Modbus slave unit ID
245256 :param kwargs:
246257 :return:
247258 """
248259 resp = super ().mask_write_register ( # pylint: disable=no-member
249- address = address , and_mask = and_mask , or_mask = or_mask , ** kwargs
260+ address = address , and_mask = and_mask , or_mask = or_mask , unit = unit , ** kwargs
250261 )
251262 if not resp .isError ():
252263 return {
@@ -279,13 +290,14 @@ def read_device_information(self, read_code=None, object_id=0x00, **kwargs):
279290 }
280291 return ExtendedRequestSupport ._process_exception (resp )
281292
282- def report_slave_id (self , ** kwargs ):
293+ def report_slave_id (self , unit = 0 , ** kwargs ):
283294 """Report information about remote slave ID.
284295
296+ :param unit: Modbus slave unit ID
285297 :param kwargs:
286298 :return:
287299 """
288- request = ReportSlaveIdRequest (** kwargs )
300+ request = ReportSlaveIdRequest (unit , ** kwargs )
289301 resp = self .execute (request ) # pylint: disable=no-member
290302 if not resp .isError ():
291303 return {
0 commit comments