QT PLC 通过ModBus_RTU 串口通信

编译器:QT
PLC测试工具:ModScan32.exe
依赖文件:libmodbus
编写流程:
1.打开端口;
2.设置从地址(device id)
3.建立连接
4.设置应答延时
5.读/写 数据
6.关闭modbus端口
7.释放modbus资源
具体代码如下:
.pro文件需要依赖:
LIBS += -Ldll -lws2_32
头文件包含:
#include"modbus.h"
头文件定义:
modbus_t *mb;
源文件的读取或写函数:
uint16_t tab_reg[64]={0};
//1-打开端口
mb = modbus_new_rtu("com4",9600,'N',8,1);
//2-设置从地址 device id
modbus_set_slave(mb,1);
//3-建立连接
modbus_connect(mb);
//4-设置应答延时
timeval t;
//秒
t.tv_sec = 0;
//微秒
t.tv_usec = 50000;//1000ms
modbus_set_response_timeout(mb,&t);
//5-循环读
int num = 0;
memset(tab_reg,0,64*2);
//写入寄存器
uint16_t iData[10] = {0xAA,0xBB,0xCC,0xDD,0xEE,0xFF,6,7,8,9};
int iRet = modbus_write_registers(mb,2,10,iData);
qDebug() << "写入数据的值为" << iRet;
//6-读寄存器设置:寄存器地址、数量、数据缓冲
int regs=modbus_read_registers(mb, 2, 10, tab_reg);
num++;
int i;
for(i=0; i<<span style=" color:#000080;">10; i++)
{
qDebug() << (tab_reg[i]) << '\t';
}
关闭函数:
//断开连接
//7-关闭modbus端口
modbus_close(mb);
//8-释放modbus资源
modbus_free(mb);
ModScan32.exe 查看是否通过软件将寄存器的值进行修改
http://s8/mw690/001XGUSKzy7ixTNHRlR37&690PLC通过ModBus_RTU 串口通信" TITLE="QT PLC 通过ModBus_RTU 串口通信" />
http://s2/mw690/001XGUSKzy7ixVayC5j91&690PLC通过ModBus_RTU 串口通信" TITLE="QT PLC 通过ModBus_RTU 串口通信" />
前一篇:QT 实现软件的自动重启
后一篇:QTextEdit 快速插值