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

FreeBSD Manual Pages

  
 
  

home | help
MODBUS_RTU_SET_RTS(3)	       libmodbus Manual		 MODBUS_RTU_SET_RTS(3)

NAME
       modbus_rtu_set_rts - set	the RTS	mode in	RTU

SYNOPSIS
       int modbus_rtu_set_rts(modbus_t *ctx, int mode)

DESCRIPTION
       The modbus_rtu_set_rts()	function shall set the Request To Send mode to
       communicate on a	RS485 serial bus. By default, the mode is set to
       MODBUS_RTU_RTS_NONE and no signal is issued before writing data on the
       wire.

       To enable the RTS mode, the values MODBUS_RTU_RTS_UP or
       MODBUS_RTU_RTS_DOWN must	be used, these modes enable the	RTS mode and
       set the polarity	at the same time. When MODBUS_RTU_RTS_UP is used, an
       ioctl call is made with RTS flag	enabled	then data is written on	the
       bus after a delay of 1 ms, then another ioctl call is made with the RTS
       flag disabled and again a delay of 1 ms occurs. The MODBUS_RTU_RTS_DOWN
       mode applies the	same procedure but with	an inverted RTS	flag.

       This function can only be used with a context using a RTU backend.

RETURN VALUE
       The function shall return 0 if successful. Otherwise it shall return -1
       and set errno to	one of the values defined below.

ERRORS
       EINVAL
	   The libmodbus backend isn't RTU or the mode given in	argument is
	   invalid.

EXAMPLE
       Enable the RTS mode with	positive polarity.

	   modbus_t *ctx;
	   uint16_t tab_reg[10];

	   ctx = modbus_new_rtu("/dev/ttyS0", 115200, 'N', 8, 1);
	   modbus_set_slave(ctx, 1);
	   modbus_rtu_set_serial_mode(ctx, MODBUS_RTU_RS485);
	   modbus_rtu_set_rts(ctx, MODBUS_RTU_RTS_UP);

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

	   rc =	modbus_read_registers(ctx, 0, 7, tab_reg);
	   if (rc == -1) {
	       fprintf(stderr, "%s\n", modbus_strerror(errno));
	       return -1;
	   }

	   modbus_close(ctx);
	   modbus_free(ctx);

SEE ALSO
       modbus_rtu_get_rts(3)

AUTHORS
       The libmodbus documentation was written by StA(C)phane Raimbault
       <stephane.raimbault@gmail.com>

libmodbus v3.1.6		  03/01/2021		 MODBUS_RTU_SET_RTS(3)

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | EXAMPLE | SEE ALSO | AUTHORS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=modbus_rtu_set_rts&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help