@@ -62,16 +62,16 @@ void ModbusClient::end()
6262 }
6363}
6464
65- void ModbusClient::setId (int id )
65+ int ModbusClient::readCoil (int address )
6666{
67- modbus_set_slave (_mb, id );
67+ return readCoil ( 0x00 , address );
6868}
6969
70- int ModbusClient::readCoil (int address)
70+ int ModbusClient::readCoil (int id, int address)
7171{
7272 uint8_t value;
7373
74- if (readCoils (address, &value, 1 ) < 0 ) {
74+ if (readCoils (id, address, &value, 1 ) < 0 ) {
7575 return -1 ;
7676 }
7777
@@ -80,6 +80,13 @@ int ModbusClient::readCoil(int address)
8080
8181int ModbusClient::readCoils (int address, uint8_t values[], int nb)
8282{
83+ return readCoils (0x00 , address, values, nb);
84+ }
85+
86+ int ModbusClient::readCoils (int id, int address, uint8_t values[], int nb)
87+ {
88+ modbus_set_slave (_mb, id);
89+
8390 if (modbus_read_bits (_mb, address, nb, values) < 0 ) {
8491 return 0 ;
8592 }
@@ -88,10 +95,15 @@ int ModbusClient::readCoils(int address, uint8_t values[], int nb)
8895}
8996
9097int ModbusClient::readDiscreteInput (int address)
98+ {
99+ return readDiscreteInput (0x00 , address);
100+ }
101+
102+ int ModbusClient::readDiscreteInput (int id, int address)
91103{
92104 uint8_t value;
93105
94- if (!readDiscreteInputs (address, &value, 1 )) {
106+ if (!readDiscreteInputs (id, address, &value, 1 )) {
95107 return -1 ;
96108 }
97109
@@ -100,6 +112,13 @@ int ModbusClient::readDiscreteInput(int address)
100112
101113int ModbusClient::readDiscreteInputs (int address, uint8_t values[], int nb)
102114{
115+ return readDiscreteInputs (0x00 , address, values, nb);
116+ }
117+
118+ int ModbusClient::readDiscreteInputs (int id, int address, uint8_t values[], int nb)
119+ {
120+ modbus_set_slave (_mb, id);
121+
103122 if (modbus_read_input_bits (_mb, address, nb, values) < 0 ) {
104123 return 0 ;
105124 }
@@ -108,10 +127,15 @@ int ModbusClient::readDiscreteInputs(int address, uint8_t values[], int nb)
108127}
109128
110129long ModbusClient::readHoldingRegister (int address)
130+ {
131+ return readHoldingRegister (0x00 , address);
132+ }
133+
134+ long ModbusClient::readHoldingRegister (int id, int address)
111135{
112136 uint16_t value;
113137
114- if (!readHoldingRegisters (address, &value, 1 )) {
138+ if (!readHoldingRegisters (id, address, &value, 1 )) {
115139 return -1 ;
116140 }
117141
@@ -120,6 +144,13 @@ long ModbusClient::readHoldingRegister(int address)
120144
121145int ModbusClient::readHoldingRegisters (int address, uint16_t values[], int nb)
122146{
147+ return readHoldingRegisters (0x00 , address, values, nb);
148+ }
149+
150+ int ModbusClient::readHoldingRegisters (int id, int address, uint16_t values[], int nb)
151+ {
152+ modbus_set_slave (_mb, id);
153+
123154 if (modbus_read_registers (_mb, address, nb, values) < 0 ) {
124155 return 0 ;
125156 }
@@ -128,10 +159,15 @@ int ModbusClient::readHoldingRegisters(int address, uint16_t values[], int nb)
128159}
129160
130161long ModbusClient::readInputRegister (int address)
162+ {
163+ return readInputRegister (0x00 , address);
164+ }
165+
166+ long ModbusClient::readInputRegister (int id, int address)
131167{
132168 uint16_t value;
133169
134- if (!readInputRegisters (address, &value, 1 )) {
170+ if (!readInputRegisters (id, address, &value, 1 )) {
135171 return -1 ;
136172 }
137173
@@ -140,6 +176,13 @@ long ModbusClient::readInputRegister(int address)
140176
141177int ModbusClient::readInputRegisters (int address, uint16_t values[], int nb)
142178{
179+ return readInputRegisters (0x00 , address, values, nb);
180+ }
181+
182+ int ModbusClient::readInputRegisters (int id, int address, uint16_t values[], int nb)
183+ {
184+ modbus_set_slave (_mb, id);
185+
143186 if (modbus_read_input_registers (_mb, address, nb, values) < 0 ) {
144187 return 0 ;
145188 }
@@ -149,6 +192,13 @@ int ModbusClient::readInputRegisters(int address, uint16_t values[], int nb)
149192
150193int ModbusClient::writeCoil (int address, uint8_t value)
151194{
195+ return writeCoil (0x00 , address, value);
196+ }
197+
198+ int ModbusClient::writeCoil (int id, int address, uint8_t value)
199+ {
200+ modbus_set_slave (_mb, id);
201+
152202 if (modbus_write_bit (_mb, address, value) < 0 ) {
153203 return 0 ;
154204 }
@@ -158,6 +208,13 @@ int ModbusClient::writeCoil(int address, uint8_t value)
158208
159209int ModbusClient::writeCoils (int address, const uint8_t values[], int nb)
160210{
211+ return writeCoils (0x00 , address, values, nb);
212+ }
213+
214+ int ModbusClient::writeCoils (int id, int address, const uint8_t values[], int nb)
215+ {
216+ modbus_set_slave (_mb, id);
217+
161218 if (modbus_write_bits (_mb, address, nb, values) < 0 ) {
162219 return 0 ;
163220 }
@@ -167,6 +224,13 @@ int ModbusClient::writeCoils(int address, const uint8_t values[], int nb)
167224
168225int ModbusClient::writeHoldingRegister (int address, uint16_t value)
169226{
227+ return writeHoldingRegister (0x00 , address, value);
228+ }
229+
230+ int ModbusClient::writeHoldingRegister (int id, int address, uint16_t value)
231+ {
232+ modbus_set_slave (_mb, id);
233+
170234 if (modbus_write_register (_mb, address, value) < 0 ) {
171235 return 0 ;
172236 }
@@ -176,6 +240,13 @@ int ModbusClient::writeHoldingRegister(int address, uint16_t value)
176240
177241int ModbusClient::writeHoldingRegisters (int address, const uint16_t values[], int nb)
178242{
243+ return writeHoldingRegisters (0x00 , address, values, nb);
244+ }
245+
246+ int ModbusClient::writeHoldingRegisters (int id, int address, const uint16_t values[], int nb)
247+ {
248+ modbus_set_slave (_mb, id);
249+
179250 if (modbus_write_registers (_mb, address, nb, values) < 0 ) {
180251 return 0 ;
181252 }
@@ -185,6 +256,13 @@ int ModbusClient::writeHoldingRegisters(int address, const uint16_t values[], in
185256
186257int ModbusClient::maskWriteRegister (int address, uint16_t andMask, uint16_t orMask)
187258{
259+ return maskWriteRegister (0x00 , address, andMask, orMask);
260+ }
261+
262+ int ModbusClient::maskWriteRegister (int id, int address, uint16_t andMask, uint16_t orMask)
263+ {
264+ modbus_set_slave (_mb, id);
265+
188266 if (modbus_mask_write_register (_mb, address, andMask, orMask) < 0 ) {
189267 return 0 ;
190268 }
@@ -194,6 +272,13 @@ int ModbusClient::maskWriteRegister(int address, uint16_t andMask, uint16_t orMa
194272
195273int ModbusClient::writeAndReadRegisters (int writeAddress, const uint16_t writeValues[], int writeNb, int readAddress, uint16_t readValues[], int readNb)
196274{
275+ return writeAndReadRegisters (0x00 , writeAddress, writeValues, writeNb, readAddress, readValues, readNb);
276+ }
277+
278+ int ModbusClient::writeAndReadRegisters (int id, int writeAddress, const uint16_t writeValues[], int writeNb, int readAddress, uint16_t readValues[], int readNb)
279+ {
280+ modbus_set_slave (_mb, id);
281+
197282 if (modbus_write_and_read_registers (_mb, writeAddress, writeNb, writeValues, readAddress, readNb, readValues) < 0 ) {
198283 return 0 ;
199284 }
0 commit comments