Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This function is called from YOUR application code to write to multiple 16-bit holding registers on a Modbus slave.

Prototype

CPU_INT16U  MBM_FC16_HoldingRegWrN (MODBUS_CH  *pch, 
                                    CPU_INT08U  slave_node,
                                    CPU_INT16U  slave_addr,
                                    CPU_INT16U *p_reg_tbl,
                                    CPU_INT16U  nbr_reg);

Arguments

pch

is a pointer to the channel (returned by MB_CfgCh()). This pointer specifies onto which channel the Modbus master will be communicating on. Of course, ‘pch’ must have been configured as a Master when you configured the channel.

slave_node

specifies the slave ‘node address’ of the holding registers you want to change. This can be a number between 1 and 255 but needs to match the number assigned to the slave node.

slave_addr

specifies the start address of the holding registers that you want to change. This can be from 0 to 65535.

p_reg_tbl

is an array of values corresponding to the desired values of the holding registers in the slave. If the holding registers you are changing are signed values, simply cast the value to unsigned. Modbus reads and writes 16-bit values and doesn’t really care about the sign.

nbr_reg

specifies the number of registers you want to change. Of course the array pointed to by p_reg_tbl must contain the corresponding number of values.

Returned Value

MODBUS_ERR_NONE

If the call was successful.

MODBUS_ERR_RX

If a response was not received from the slave within the timeout specified for this channel (see MB_CfgCh()).

MODBUS_ERR_SLAVE_ADDR

If the transmitted slave address doesn't correspond to the received slave address

MODBUS_ERR_FC

If the transmitted function code doesn't correspond to the received function code

MODBUS_ERR_BYTE_COUNT

If the expected number of bytes to receive doesn't correspond to the number of bytes received.

Notes / Warnings

None

Called By

Your Modbus master application.