class QModbusPdu#

QModbusPdu 是一个抽象容器类,包含存储在 Modbus ADU 中的功能码和有效负载。详情...

继承: QModbusRequest

概要#

方法#

虚函数#

注意

这份文档可能包含自动从C++转换为Python的代码片段。我们欢迎对片段翻译的贡献。如果您发现翻译问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述#

该类提供了访问由Modbus应用程序协议规范1.1b定义的原始Modbus协议数据包的功能。

ExceptionCode#

此枚举描述了由Modbus错误代码定义的所有可能的错误条件。它们由服务器在响应请求时检查适当的错误条件后设置,并且必须由客户端解码以操作异常代码。

常量

描述

QModbusPdu.IllegalFunction

功能码不支持设备。

QModbusPdu.IllegalDataAddress

查询中接收到的数据地址不是Modbus服务器的允许地址。

QModbusPdu.IllegalDataValue

请求数据字段中包含的值不是Modbus服务器允许的值。

QModbusPdu.ServerDeviceFailure

在服务器尝试执行请求的操作时发生了不可恢复的错误。

QModbusPdu.Acknowledge

与编程命令一起专用。

QModbusPdu.ServerDeviceBusy

服务器正在处理长时间运行的程序命令。

QModbusPdu.NegativeAcknowledge

服务器无法执行查询中接收到的程序功能。此代码在编程请求失败时返回。客户端应从服务器请求诊断或错误信息。

QModbusPdu.MemoryParityError

表示扩展文件区未能通过一致性检查。与功能代码20和21一起使用。异常代码不涉及传输线的奇偶校验设置,而仅涉及服务器的内部文件记录内存。

QModbusPdu.GatewayPathUnavailable

表示网关无法为处理请求从输入端口到输出端口分配内部通信路径。

QModbusPdu.GatewayTargetDeviceFailedToRespond

表示网关后面的目标设备没有获得响应。通常这意味着目标设备未在网络中在线。

QModbusPdu.ExtendedException

这是按照Modbus规范定义的扩展异常。通常此代码用于描述其他方式描述的异常。

class FunctionCode#

定义了服务器所需的函数码和隐式操作类型。并非所有Modbus设备都能处理相同的函数码集合。

常量

描述

QModbusPdu.Invalid

由默认构造函数设置,请勿使用。

QModbusPdu.ReadCoils

请求从设备读取一个或多个继电器的状态。

QModbusPdu.ReadDiscreteInputs

请求从设备读取一个或多个离散输入的状态。

QModbusPdu.ReadHoldingRegisters

请求从设备读取一个或多个保持寄存器的状态。

QModbusPdu.ReadInputRegisters

请求从设备读取一个或多个输入寄存器的状态。

QModbusPdu.WriteSingleCoil

请求在设备上写入单个继电器。

QModbusPdu.WriteSingleRegister

请求在设备上写入单个保持寄存器。

QModbusPdu.ReadExceptionStatus

请求设备上的八个异常状态输出口的状态。

QModbusPdu.Diagnostics

用于提供一系列测试,以检查客户端服务器通信系统或检查内部

QModbusPdu.GetCommEventCounter

请求从设备的通信事件计数器中获取状态字和事件计数。

QModbusPdu.GetCommEventLog

请求从设备获取状态字、事件计数、消息计数和事件字节字段。

QModbusPdu.WriteMultipleCoils

请求在设备上写入一个或多个继电器。

QModbusPdu.WriteMultipleRegisters

请求在设备上写入一个或多个保持寄存器。

QModbusPdu.ReportServerId

请求设备的类型、当前状态和其他特定信息。

QModbusPdu.ReadFileRecord

请求读取文件记录。

QModbusPdu.WriteFileRecord

请求写入文件记录。

QModbusPdu.MaskWriteRegister

请求使用AND或OR掩码以及寄存器的当前内容组合来修改指定保持寄存器的内容。

QModbusPdu.ReadWriteMultipleRegisters

请求设备上一个或多个保持寄存器的状态,同时在设备上写入一个或多个保持寄存器。

QModbusPdu.ReadFifoQueue

请求读取远程设备中第一个访问第一个(FIFO)队列的寄存器内容。

QModbusPdu.EncapsulatedInterfaceTransport

请参阅Modbus规范的附件A。

QModbusPdu.UndefinedFunctionCode

请勿使用。

__init__()#

构建一个无效的 QModbusPdu

__init__(code, newData)
参数:

构建一个带有函数码设置为 code 和有效载荷设置为 dataQModbusPdu 。数据已期望存储为大端字节顺序。

__init__(arg__1)
参数:

arg__1QModbusPdu

构建一个 QModbusPdu,它是 other 的副本。

data()#
返回类型:

QByteArray

返回 PDU 的有效负载,不包括功能码。有效负载以大端字节顺序存储。

参见

setData()

dataSize()#
返回类型:

int

返回 PDU 的数据大小,不包括功能码。

exceptionCode()#
返回类型:

ExceptionCode

返回响应的异常码。

functionCode()#
返回类型:

FunctionCode

返回 PDU 的功能码。

isException()#
返回类型:

bool

如果 PDU 包含异常码,则返回 true;否则返回 false。

isValid()#
返回类型:

bool

如果 PDU 有效,则返回 true;否则返回 false。

一个 PDU 被认为是有效的,如果消息代码在 1 到 255 的十进制范围内,并且 PDU 的复合大小(功能码 + 数据)不超过 253 字节。默认构建的 PDU 无效。

setData(newData)#
参数:

newDataQByteArray

将 PDU 的功能有效负载设置为 data。期望数据已在大端字节序中存储。

参见

data()

setFunctionCode(code)#
参数:

codeFunctionCode

将 PDU 的功能码设置为 code

size()#
返回类型:

int

返回 PDU 的完整大小,包括功能码和数据大小。