Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

modbus_write_and_read_registers(3) [debian man page]

MODBUS_WRITE_AND_REA(3) 					 Libmodbus Manual					   MODBUS_WRITE_AND_REA(3)

NAME
modbus_write_and_read_registers - write and read many registers in a single transaction SYNOPSIS
int modbus_write_and_read_registers(modbus_t *ctx, int write_addr, int write_nb, const uint16_t *src, int read_addr, int read_nb, const uint16_t *dest); DESCRIPTION
The modbus_write_and_read_registers() function shall write the content of the write_nb holding registers from the array src to the address write_addr of the remote device then shall read the content of the read_nb holding registers to the address read_addr of the remote device. The result of reading is stored in dest array as word values (16 bits). You must take care to allocate enough memory to store the results in dest (at least nb * sizeof(uint16_t)). The function uses the Modbus function code 0x17 (write/read registers). RETURN VALUE
The modbus_write_and_read_registers() function shall return the number of read registers if successful. Otherwise it shall return -1 and set errno. ERRORS
EMBMDATA Too many registers requested, Too many registers to write SEE ALSO
modbus_read_registers(3) modbus_write_register(3) modbus_write_registers(3) AUTHORS
The libmodbus documentation was written by Stephane Raimbault <stephane.raimbault@gmail.com[1]> NOTES
1. stephane.raimbault@gmail.com mailto:stephane.raimbault@gmail.com libmodbus 3.0.3 05/26/2012 MODBUS_WRITE_AND_REA(3)

Check Out this Related Man Page

MODBUS_MAPPING_NEW(3)						 Libmodbus Manual					     MODBUS_MAPPING_NEW(3)

NAME
modbus_mapping_new - allocate four arrays of bits and registers SYNOPSIS
modbus_mapping_t modbus_mapping_new(int nb_bits, int nb_input_bits, int nb_registers, int nb_input_registers);* DESCRIPTION
The modbus_mapping_new() function shall allocate four arrays to store bits, input bits, registers and inputs registers. The pointers are stored in modbus_mapping_t structure. All values of the arrays are initialized to zero. If it isn't necessary to allocate an array for a specific type of data, you can pass the zero value in argument, the associated pointer will be NULL. This function is convenient to handle requests in a Modbus server/slave. RETURN VALUE
The modbus_mapping_new() function shall return the new allocated structure if successful. Otherwise it shall return NULL and set errno. ERRORS
ENOMEM Not enough memory EXAMPLE
/* The fist value of each array is accessible from the 0 address. */ mb_mapping = modbus_mapping_new(BITS_ADDRESS + BITS_NB, INPUT_BITS_ADDRESS + INPUT_BITS_NB, REGISTERS_ADDRESS + REGISTERS_NB, INPUT_REGISTERS_ADDRESS + INPUT_REGISTERS_NB); if (mb_mapping == NULL) { fprintf(stderr, "Failed to allocate the mapping: %s ", modbus_strerror(errno)); modbus_free(ctx); return -1; } SEE ALSO
modbus_mapping_free(3) AUTHORS
The libmodbus documentation was written by Stephane Raimbault <stephane.raimbault@gmail.com[1]> NOTES
1. stephane.raimbault@gmail.com mailto:stephane.raimbault@gmail.com libmodbus 3.0.3 05/26/2012 MODBUS_MAPPING_NEW(3)
Man Page