MBM_FC16_HoldingRegWrN() - Modbus-M
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.