MBM_FC03_HoldingRegRd() - Modbus-M
This function is called from YOUR application code to read 16-bit holding registers from a Modbus slave.
Prototype
CPU_INT16U MBM_FC03_HoldingRegRd (MODBUS_CH *pch, CPU_INT08U slave_node, CPU_INT16U start_addr, CPU_INT16U *p_reg_tbl, CPU_INT16U nbr_regs);
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’ that you desire to read the registers from. This can be a number between 1 and 255 but needs to match the number assigned to the slave node.
start_addr
specifies the start address of the holding registers. This can be from 0 to 65535. Note that the start address must be a number lower than MODBUS_CFG_FP_START_IX
(of the slave) if you intend to have floating-point registers (i.e you set MODBUS_CFG_FP_EN
to DEF_ENABLED
in mb_cfg.h
in the slave).
p_reg_tbl
is a pointer to an array of unsigned 16 bit values that will receive the value of all the registers you are reading. The size of the array needs to be at least nbr_regs
. Note that you can ‘cast’ the unsigned values to signed values. As far as the Modbus protocol is concerned, it sends and receives 16 bit values and the interpretation of what these values mean is application specific.
nbr_regs
specifies the number of registers you want to read from the slave.
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
MODBUS_CFG_FP_START_IX
corresponds to that of the slave.
Called By
Your Modbus master application.