- class QModbusPdu#
QModbusPdu
是一个抽象容器类,包含存储在 Modbus ADU 中的功能码和有效负载。详情...继承:
QModbusRequest
概要#
方法#
def
__init__()
def
data()
def
dataSize()
定义
isValid()
定义
setData()
定义
size()
虚函数#
注意
这份文档可能包含自动从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 –
FunctionCode
newData –
QByteArray
构建一个带有函数码设置为
code
和有效载荷设置为data
的QModbusPdu
。数据已期望存储为大端字节顺序。- __init__(arg__1)
- 参数:
arg__1 –
QModbusPdu
构建一个
QModbusPdu
,它是other
的副本。- data()#
- 返回类型:
返回 PDU 的有效负载,不包括功能码。有效负载以大端字节顺序存储。
参见
- dataSize()#
- 返回类型:
int
返回 PDU 的数据大小,不包括功能码。
- exceptionCode()#
- 返回类型:
返回响应的异常码。
- functionCode()#
- 返回类型:
返回 PDU 的功能码。
- isException()#
- 返回类型:
bool
如果 PDU 包含异常码,则返回 true;否则返回 false。
- isValid()#
- 返回类型:
bool
如果 PDU 有效,则返回 true;否则返回 false。
一个 PDU 被认为是有效的,如果消息代码在 1 到 255 的十进制范围内,并且 PDU 的复合大小(功能码 + 数据)不超过 253 字节。默认构建的 PDU 无效。
- setData(newData)#
- 参数:
newData –
QByteArray
将 PDU 的功能有效负载设置为
data
。期望数据已在大端字节序中存储。参见
- setFunctionCode(code)#
- 参数:
code –
FunctionCode
将 PDU 的功能码设置为
code
。- size()#
- 返回类型:
int
返回 PDU 的完整大小,包括功能码和数据大小。