虽然在以前的文章中多次描述过,那么本文使用开源库libModbus,可得到更好的性能,也可移植到各种平台。
性能:读1次和写1次约各用时2ms。
分别创建了读和写各1个连接指针,用于读100个寄存器和写100个寄存器,读写分离。
客户端: win10
Intel(R) Pentium(R) Gold 8505 1.20 GHz
Intel(R) Ethernet Controller I226
QT6.2.4
服务端:信捷XDH PLC
测试读100次共200ms左右,写100次也共200ms左右。
很容易移植到linux电脑、以及嵌入式系统 。
1.前置条件:
(1)需要头文件8个:
(2)还需要扩展名为.c的4个文件:
(3)把以上代码拷贝如你的项目文件中,并添加进去
(4)还有一个注意事项:在pro文件中需要添加这个:LIBS += -lWs2_32
这行是添加Windows socket库文件
2.代码:
#include "modbus-tcp.h"//或者#include "modbus.h"
//如果是modbus rtu 用下面这行
//#include "modbus-rtu.h"//或者#include "modbus.h"
#include <QElapsedTimer>
//以下可放入你的按钮代码里
uint16_t tab_reg[100]; // 用于保存读取到的寄存器的