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学习(二)之Modbus TCP (betheme.net)
下载编译参考 使用libmodbus-tcp进行数据传输 - wangxiaobei2019 - 博客园 (cnblogs.com)
标签:libmodbus,int,ip,nb,mapping,tcp,modbus From: https://www.cnblogs.com/xixixing/p/17720629.html