C++客户端Modbus通信(TCP主站)

本文介绍了在Qt中使用C++进行modbus通信的步骤,包括配置环境、建立TCP连接、设置slave、读写数据等关键操作。由于Qt自带的QModbus在创建线程时存在问题,作者选择了qtmodbus库来实现。文中详细阐述了modbus通信的每个阶段,并给出了具体的代码示例。
摘要由CSDN通过智能技术生成

本文简单介绍Qt使用外部modbus通信C++编程流程
modbus中文手册:https://blog.csdn.net/qq_23670601/article/details/82155378
Qtmodbus较为方便,建议无特殊情况可以使用qtmodbus,为何不使用Qt自带QModbus呢?原因是我在编写modbus主站的时候需要创建一个线程监听从站的数据,创建线程的时候出现为不同线程的父线程创建子线程的报错,个人解决不了。

modbus通信编程流程

1.搭建modbus环境
在pro工程项目中添加头文件所在路径,lib库

2.建立连接

//创建modbus对象
modbus_t  *modbus;
//建立tcp连接
modbus = modbus_new_tcp(ip地址,端口号);
//设置slave
int  ret  =  modbus_set_slave(modbus,slave号);//错误返回-1,正确返回0;
//进行连接
ret = modbus_connect(modbus);//错误返回-1,正确返回0;
//设置响应延迟,第三个参数是最迟的时间,1000为1ms不是1s;
ret = modbus_response_timeout(modbus,0,900000);

中文操作手册上并没有找到设置slave的,但是这个确实要设置,不然只能连接不可以通信只是我没有找到,可能不是很细心,slave一般设置为1,市面上的modbus调试工具上面可以查看

3.接收/发送数据

//读数据
ret  = modbus_read_registers(modbus,起始地址,数据个数,存储的容器);//读取的数据存储在容器中,错误返回-1
//写数据
ret = modbus_write_registers(modbus,起始地址,数据个数,存储的容器);//将容器的数据依次写入寄存器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值