Use new modbus_mapping_new_start_address in unit tests
[libmodbus.git] / doc / modbus_set_slave.txt
blob5088856b049eaa46f8eb18cd7fb35687063f2a3f
1 modbus_set_slave(3)
2 ===================
5 NAME
6 ----
7 modbus_set_slave - set slave number in the context
10 SYNOPSIS
11 --------
12 *int modbus_set_slave(modbus_t *'ctx', int 'slave');*
15 DESCRIPTION
16 -----------
17 The *modbus_set_slave()* function shall set the slave number in the libmodbus
18 context.
20 The behavior depends of network and the role of the device:
22 *RTU*::
23 Define the slave ID of the remote device to talk in master mode or set the
24 internal slave ID in slave mode. According to the protocol, a Modbus device must
25 only accept message holding its slave number or the special broadcast number.
27 *TCP*::
28 The slave number is only required in TCP if the message must reach a device on a
29 serial network. Some not compliant devices or software (such as modpoll) uses
30 the slave ID as unit identifier, that's incorrect (cf page 23 of Modbus
31 Messaging Implementation Guide v1.0b) but without the slave value, the faulty
32 remote device or software drops the requests! The special value
33 `MODBUS_TCP_SLAVE` (0xFF) can be used in TCP mode to restore the default value.
35 The broadcast address is `MODBUS_BROADCAST_ADDRESS`. This special value must be
36 use when you want all Modbus devices of the network receive the request.
39 RETURN VALUE
40 ------------
41 The function shall return 0 if successful. Otherwise it shall return -1 and set
42 errno to one of the values defined below.
45 ERRORS
46 ------
47 *EINVAL*::
48 The slave number is invalid.
51 EXAMPLE
52 -------
53 [source,c]
54 -------------------
55 modbus_t *ctx;
57 ctx = modbus_new_rtu("/dev/ttyUSB0", 115200, 'N', 8, 1);
58 if (ctx == NULL) {
59     fprintf(stderr, "Unable to create the libmodbus context\n");
60     return -1;
63 rc = modbus_set_slave(ctx, YOUR_DEVICE_ID);
64 if (rc == -1) {
65     fprintf(stderr, "Invalid slave ID\n");
66     modbus_free(ctx);
67     return -1;
70 if (modbus_connect(ctx) == -1) {
71     fprintf(stderr, "Connection failed: %s\n", modbus_strerror(errno));
72     modbus_free(ctx);
73     return -1;
75 -------------------
77 AUTHORS
78 -------
79 The libmodbus documentation was written by Stéphane Raimbault
80 <stephane.raimbault@gmail.com>