00. 目录

 

 

01. 概述

QModbusClient类是发送Modbus请求的接口。

QModbusClient API是围绕一个QModbusClient对象构造的,该对象保留其发送的请求的通用配置和设置。一个QModbusClient对于整个Qt应用程序应该足够了。

创建QModbusClient对象后,应用程序可以使用它发送请求。返回的对象用于获取响应于相应请求而返回的任何数据。

QModbusClient具有异步API。当调用完成时对应的槽函数将会被调用,它采用的参数是QModbusReply对象,该对象包含PDU以及元数据(寻址等)。

注意:QModbusClient将接收到的请求排入队列。并行执行的请求数取决于协议。例如,台式机平台上的HTTP协议针对一个主机/端口组合并行发出6个请求。

 Header:  #include <QModbusClient>
 qmake: QT += serialbus 
 Since: Qt 5.8 
 Inherits: QModbusDevice 
 Inherited By: QModbusRtuSerialMaster and QModbusTcpClient

Modbus相关的类
【Qt】QModbusClient类_Modbus协议

02. 开发环境

Windows系统:Windows10

Qt版本:Qt5.15或者Qt6

03. 常用属性

timeout:此属性保存此客户端使用的超时值

返回此QModbusClient实例使用的超时值(以毫秒为单位)。超时由TimeoutError指示。默认值为1000毫秒。

访问函数

 int timeout() const
 void setTimeout(int newTimeout)

通知信号

 void timeoutChanged(int newTimeout)

04. 常用成员方法

QModbusClient :: QModbusClient(QObject * parent = nullptr)
构造函数  
    
[signal] void QModbusClient::timeoutChanged(int newTimeout)
当此QModbusClient实例超时时,将发出此信号。设备的新响应超时将作为newTimeout传递。   
    
int QModbusClient::numberOfRetries() const
返回客户端在请求失败之前将执行的重试次数。默认值设置为3。
    
[virtual protected] bool QModbusClient::processPrivateResponse(const QModbusResponse &response, QModbusDataUnit *data)
将通过自定义Modbus客户端实现来实现。默认实现忽略响应和数据。它始终返回false表示错误。
    
[virtual protected] bool QModbusClient::processResponse(const QModbusResponse &response, QModbusDataUnit *data)
处理Modbus服务器响应并将解码后的信息存储在data中。成功返回true;否则为假。
    
QModbusReply *QModbusClient::sendRawRequest(const QModbusRequest &request, int serverAddress)
发送原始Modbus请求。原始请求可以包含适合Modbus PDU数据部分且具有有效功能代码的任何内容。因此,在发送之前执行的唯一检查就是有效性检查,请参见QModbusPdu :: isValid。如果没有错误发生,该函数将返回一个新的有效QModbusReply ; 否则为nullptr。Modbus网络可能有多个服务器,每个服务器都有一个唯一的serverAddress。
    
QModbusReply *QModbusClient::sendReadRequest(const QModbusDataUnit &read, int serverAddress)
发送到读取由指向的数据的内容的请求的读取。如果没有发生错误,则返回一个新的有效QModbusReply对象,否则返回nullptr。Modbus网络可能有多个服务器,每个服务器都有唯一的serverAddress。
    
QModbusReply *QModbusClient::sendReadWriteRequest(const QModbusDataUnit &read, const QModbusDataUnit &write, int serverAddress)
发送请求以使用Modbus功能代码QModbusPdu :: ReadWriteMultipleRegisters读取read指向的数据的内容并修改write指向的数据的内容。如果没有发生错误,则返回一个新的有效QModbusReply对象,否则返回nullptr。Modbus网络可能有多个服务器,每个服务器都有唯一的serverAddress。
    
QModbusReply *QModbusClient::sendWriteRequest(const QModbusDataUnit &write, int serverAddress)
发送请求以修改write指向的数据内容。如果没有发生错误,则返回一个新的有效QModbusReply对象,否则返回nullptr。Modbus网络可能有多个服务器,每个服务器都有唯一的serverAddress。
    
void QModbusClient::setNumberOfRetries(int number)
设置重试请求失败之前,客户端将执行的次数。默认值设置为3。

注意:新值必须大于或等于0。更改此属性将仅影响新请求,而不影响已计划的请求。
    
void QModbusClient::setTimeout(int newTimeout)
设置超时时间为newTimeout。最小超时为10毫秒。

客户端使用超时来确定它等待服务器响应的时间。如果在要求的超时时间内未收到响应,则设置TimeoutError。

这样的超时持续时间更改不会影响已经激活/正在运行的超时。    

05. 预留

06. 附录