上一篇,我们讲述了基于libmodbus库进行主机 modbus通信开发案例,libmodbus协议栈2—— Linux下 modbus RTU master 开发案例,本文介绍一下如何进行从机开发。
我们还是先对开发流程做个梳理:
1. 初始化 modbus 指针
2. 设置从站ID
3. 使用modbus_mapping_new初始化寄存器,返回一个modbus_mapping_t 指针。我们的工程数据只需要存放到
这个指针里,就可以了。
4. 建立连接
5. 调用 modbus_receive 函数,来轮询判断串口的接收数据。该函数不只是负责接收,还有处理,回复。
对于从机开发,modbus_mapping_t数据结构的理解也很重要,具体内容如下:
typedef struct {
int nb_bits;
int start_bits;
int nb_input_bits;
int start_input_bits;
int nb_input_registers;
int start_input_registers;
int nb_registers;
int start_registers;
uint8_t *tab_bits;
uint8_t *tab_input_bits;
uint16_t *tab_input_registers;
uint16_t *tab_registers;
} modbus_mapping_t;
这个 结构体很容易理解,就是包含各种寄存器的个数