libmodbus库

Modbus设备可分为主站(poll)和从站(slave)。主站只有一个,从站有多个,主站向各从站发送请求帧,从站给予响应。在使用TCP通信时,主站为client端,主动建立连接;从站为server端,等待连接。

所需的libmobus API(server端)

1、使用modbus_new_tcp创建一个modbus的上下文,ip地址为开发板自身的ip

modbus_t *ctx = modbus_new_tcp(const char *ip_address, int port); //开发板ip自行修改,port常用502

2、地址映射,其中 nb_registers 寄存器存储传输的数据

modbus_mapping_t* modbus_mapping_new(int nb_bits, int nb_input_bits, int nb_registers, int nb_input_registers);

3、监听连接

int socket = modbus_tcp_listen(modbus_t *ctx, int nb_connection);
modbus_tcp_accept(modbus_t *ctx, int *s);

4、阻塞接收数据

modbus_reply会自动解析modbus请求并做响应

modbus_reply(modbus_t *ctx, const uint8_t *req,int req_length, modbus_mapping_t *mb_mapping);

 

下载编译参考 使用libmodbus-tcp进行数据传输 - wangxiaobei2019 - 博客园 (cnblogs.com)

posted @ 2023-09-21 18:07  夕西行  阅读(414)  评论(0编辑  收藏  举报