Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
modbus_send_raw_request_tid()			 modbus_send_raw_request_tid()

Name
       modbus_send_raw_request_tid - send a raw	request	with a specific	trans-
       action id

Synopsis
       int modbus_send_raw_request_tid(modbus_t	*ctx, const uint8_t *raw_req, int raw_req_length, int tid);

Description
       The modbus_send_raw_request_tid() function shall	send a request via the
       socket  of  the	context	 ctx. This function must be used for debugging
       purposes	because	you have to take care to make a	valid request by hand.
       The function only adds to the message, the header or  CRC  of  the  se-
       lected backend, so raw_req must start and contain at least a slave/unit
       identifier  and	a function code. This function can be used to send re-
       quest not handled by the	library.

       The tid paramter	enables	one to specify a transaction identifier.

       The public header of libmodbus provides	a  list	 of  supported	Modbus
       functions  codes,  prefixed  by	MODBUS_FC_  (eg.  MODBUS_FC_READ_HOLD-
       ING_REGISTERS), to help build of	raw requests.

Return value
       The function shall return the full message length, counting  the	 extra
       data  relating to the backend, if successful. Otherwise it shall	return
       -1 and set errno.

Example
       modbus_t	*ctx;
       /* Read 5 holding registers from	address	1 */
       uint8_t raw_req[] = { 0xFF, MODBUS_FC_READ_HOLDING_REGISTERS, 0x00, 0x01, 0x0, 0x05 };
       int req_length;
       uint8_t rsp[MODBUS_TCP_MAX_ADU_LENGTH];

       ctx = modbus_new_tcp("127.0.0.1", 502);
       if (modbus_connect(ctx) == -1) {
	   fprintf(stderr, "Connection failed: %s\n", modbus_strerror(errno));
	   modbus_free(ctx);
	   return -1;
       }

       req_length = modbus_send_raw_request(ctx, raw_req, 6 * sizeof(uint8_t), 0);
       modbus_receive_confirmation(ctx,	rsp);

       modbus_close(ctx);
       modbus_free(ctx);

See also
        modbus_receive_confirmation <modbus_receive_confirmation.md>

						 modbus_send_raw_request_tid()

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=modbus_send_raw_request_tid&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help