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

  • Post author:
  • Post category:其他


本文简单介绍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,起始地址,数据个数,存储的容器);//将容器的数据依次写入寄存器



版权声明:本文为qq_45220555原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。