Skip to content

Commit 849e179

Browse files
cedricboudinetstephane
authored andcommitted
doc
1 parent 180da3e commit 849e179

File tree

4 files changed

+60
-2
lines changed

4 files changed

+60
-2
lines changed

docs/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ To write and read data in a single operation:
157157
To send and receive low-level requests:
158158

159159
- [modbus_send_raw_request](modbus_send_raw_request.md)
160+
- [modbus_send_raw_request_tid](modbus_send_raw_request_tid.md)
160161
- [modbus_receive_confirmation](modbus_receive_confirmation.md)
161162

162163
To reply to an exception:
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# modbus_send_raw_request_tid
2+
3+
## Name
4+
5+
modbus_send_raw_request_tid - send a raw request with a specific transaction id
6+
7+
## Synopsis
8+
9+
```c
10+
int modbus_send_raw_request_tid(modbus_t *ctx, const uint8_t *raw_req, int raw_req_length, int tid);
11+
```
12+
13+
## Description
14+
15+
The *modbus_send_raw_request_tid()* function shall send a request via the socket of
16+
the context `ctx`. This function must be used for debugging purposes because you
17+
have to take care to make a valid request by hand. The function only adds to the
18+
message, the header or CRC of the selected backend, so `raw_req` must start and
19+
contain at least a slave/unit identifier and a function code. This function can
20+
be used to send request not handled by the library.
21+
22+
The public header of libmodbus provides a list of supported Modbus functions
23+
codes, prefixed by `MODBUS_FC_` (eg. `MODBUS_FC_READ_HOLDING_REGISTERS`), to help
24+
build of raw requests.
25+
26+
## Return value
27+
28+
The function shall return the full message length, counting the extra data
29+
relating to the backend, if successful. Otherwise it shall return -1 and set
30+
errno.
31+
32+
## Example
33+
34+
```c
35+
modbus_t *ctx;
36+
/* Read 5 holding registers from address 1 */
37+
uint8_t raw_req[] = { 0xFF, MODBUS_FC_READ_HOLDING_REGISTERS, 0x00, 0x01, 0x0, 0x05 };
38+
int req_length;
39+
uint8_t rsp[MODBUS_TCP_MAX_ADU_LENGTH];
40+
41+
ctx = modbus_new_tcp("127.0.0.1", 1502);
42+
if (modbus_connect(ctx) == -1) {
43+
fprintf(stderr, "Connection failed: %s\n", modbus_strerror(errno));
44+
modbus_free(ctx);
45+
return -1;
46+
}
47+
48+
req_length = modbus_send_raw_request(ctx, raw_req, 6 * sizeof(uint8_t), 0);
49+
modbus_receive_confirmation(ctx, rsp);
50+
51+
modbus_close(ctx);
52+
modbus_free(ctx);
53+
```
54+
55+
## See also
56+
57+
- [modbus_receive_confirmation](modbus_receive_confirmation.md)

src/modbus.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ static int send_msg(modbus_t *ctx, uint8_t *msg, int msg_length)
220220
return rc;
221221
}
222222

223-
int modbus_send_raw_request_tid(modbus_t *ctx, const uint8_t *raw_req, int raw_req_length, long tid)
223+
int modbus_send_raw_request_tid(modbus_t *ctx, const uint8_t *raw_req, int raw_req_length, int tid)
224224
{
225225
sft_t sft;
226226
uint8_t req[MAX_MESSAGE_LENGTH];

src/modbus.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ MODBUS_API int
258258
modbus_send_raw_request(modbus_t *ctx, const uint8_t *raw_req, int raw_req_length);
259259

260260
MODBUS_API int
261-
modbus_send_raw_request_tid(modbus_t *ctx, const uint8_t *raw_req, int raw_req_length, long tid);
261+
modbus_send_raw_request_tid(modbus_t *ctx, const uint8_t *raw_req, int raw_req_length, int tid);
262262

263263
MODBUS_API int modbus_receive(modbus_t *ctx, uint8_t *req);
264264

0 commit comments

Comments
 (0)