QModbusRtuSerialServer Class

QModbusRtuSerialServer 类表示使用串行端口与 Modbus 客户端通信的 Modbus 服务器。更多

头文件: #include <QModbusRtuSerialServer>
CMake: find_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmake: QT += serialbus
Qt 6.2
继承: QModbusServer

公共函数

QModbusRtuSerialServer(QObject *parent = nullptr)
virtual ~QModbusRtuSerialServer()
(since 6.2) int interFrameDelay() const
(since 6.2) void setInterFrameDelay(int microseconds)

重新实现的公共函数

virtual bool processesBroadcast() const override

重新实现的受保护函数

virtual void close() override
virtual bool open() override
virtual QModbusResponse processRequest(const QModbusPdu &request) override

详细说明

通过 Modbus 进行通信需要在单个 Modbus 客户端实例和多个 Modbus 服务器之间进行交互。该类通过串行端口提供 Modbus 服务器实现。

由于多个 Modbus 服务器实例可同时与一个 Modbus 客户端交互(使用串行总线),因此服务器由serverAddress() 标识。

成员函数文档

[explicit] QModbusRtuSerialServer::QModbusRtuSerialServer(QObject *parent = nullptr)

使用指定的parent 构建 QModbusRtuSerialServer。serverAddress 预设值为1

[virtual noexcept] QModbusRtuSerialServer::~QModbusRtuSerialServer()

销毁QModbusRtuSerialServer 实例。

[override virtual protected] void QModbusRtuSerialServer::close()

重新实现:QModbusDevice::close().

[since 6.2] int QModbusRtuSerialServer::interFrameDelay() const

返回两个连续 Modbus 消息之间静默间隔的微秒数。

此函数在 Qt 6.2 中引入。

另请参阅 setInterFrameDelay().

[override virtual protected] bool QModbusRtuSerialServer::open()

重新实现:QModbusDevice::open().

注意: 调用该函数时,现有的缓冲数据将从串行端口移除。

[override virtual protected] QModbusResponse QModbusRtuSerialServer::processRequest(const QModbusPdu &request)

重实现:QModbusServer::processRequest(const QModbusPdu &request).

处理request 指定的 Modbus 客户端请求并返回 Modbus 响应。

Modbus函数QModbusRequest::EncapsulatedInterfaceTransport 与 MEI 类型 13 (0x0D) CANopen 通用参考会被过滤掉,因为它通常只适用于 Modbus TCP 或 Modbus 串行 ASCII。

向 RTU 串行服务器发出的请求将得到带有异常代码 QModbusExceptionResponse::IllegalFunction 的 Modbus 异常响应。

[override virtual] bool QModbusRtuSerialServer::processesBroadcast() const

重实现:QModbusServer::processesBroadcast() const.

[since 6.2] void QModbusRtuSerialServer::setInterFrameDelay(int microseconds)

设置两个连续 Modbus 信息之间的静默间隔时间microseconds 。默认情况下,类实现将使用根据 Modbus 规范预先计算的值。活动或运行中的连接不会受到这种延迟变化的影响。

注意: 如果microseconds 设置为-1 或microseconds 小于预先计算的延迟时间,则该预先计算值将用作帧延迟时间。

此函数在 Qt 6.2 中引入。

另请参阅 interFrameDelay() 。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.