PySide6.QtSerialBus.QModbusServer

class QModbusServer

QModbusServer 类是用于接收和处理 Modbus 请求的接口。更多

PySide6.QtSerialBus.QModbusServer 的继承图

继承自: QModbusTcpServer, QModbusRtuSerialServer

概要

方法

虚拟方法

信号

注意

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

详细描述

Modbus网络可以有多个Modbus服务器。Modbus服务器由QModbusClient表示的Modbus客户端进行读写。QModbusServer与Modbus后端通信,为用户提供方便的API。

class Option

每个Modbus服务器都有一组与之关联的值,每个值都有其自己的选项。

通用选项(及相关类型)包括:

常量

描述

QModbusServer.DiagnosticRegister

服务器的诊断寄存器。quint16

QModbusServer.ExceptionStatusOffset

服务器的异常状态字节偏移量。quint16

QModbusServer.DeviceBusy

标志,表示服务器正在处理一个长时间的程序命令。quint16

QModbusServer.AsciiInputDelimiter

Modbus ASCII 消息结束分隔符。char

QModbusServer.ListenOnlyMode

用于设置服务器的仅监听模式的标志。此功能通常仅由Modbus串行设备支持。bool

QModbusServer.ServerIdentifier

服务器的标识符,不是服务器地址。quint8

QModbusServer.RunIndicatorStatus

服务器的运行指示灯状态。 quint8

QModbusServer.AdditionalData

服务器的附加数据。 QByteArray

QModbusServer.DeviceIdentification

服务器的物理和功能描述。QModbusDeviceIdentification

用户选项:

常量

描述

QModbusServer.UserOption

第一个可用于用户特定目的的选项。

对于用户选项,由开发者决定使用哪些类型,并确保组件在访问和设置值时使用正确的类型。

__init__([parent=None])
Parameters:

父对象QObject

使用指定的parent构建一个Modbus服务器。

data(newData)
Parameters:

newDataQModbusDataUnit

Return type:

布尔

返回由newData给出的寄存器范围内的值。

newData 必须提供有效的寄存器类型、起始地址和值计数。返回的 newData 将包含与给定范围相关的寄存器值。

如果 newData 包含有效的寄存器类型但起始地址为负数,则返回整个寄存器映射,并且 newData 会适当调整大小。

另请参阅

setData()

data(table, address, data)
Parameters:
Return type:

布尔

读取存储在Modbus服务器中的数据。Modbus服务器有四个表(table),每个表都有一个唯一的address字段,用于从所需字段读取data。有关不同表的更多信息,请参见RegisterType。如果地址超出映射范围或寄存器类型未定义,则返回false

另请参阅

RegisterType setData()

dataWritten(table, address, size)
Parameters:

当Modbus客户端向Modbus服务器写入一个或多个数据字段时,会发出此信号。该信号包含有关已写入字段的信息:

  • 注册类型 (table) 已被写入,

  • address 写入的第一个字段的地址,

  • 以及从address开始写入的连续字段的size

当由于值没有变化而导致要写入的字段没有改变时,不会发出信号。

processPrivateRequest(request)
Parameters:

请求QModbusPdu

Return type:

QModbusResponse

此函数应由自定义Modbus服务器实现。如果给定的request不是标准的Modbus请求,则由processRequest()调用。

重写此函数允许处理Modbus应用协议规范1.1b中未指定的附加功能代码和子功能代码。重新实现应再次调用此函数,以确保自定义Modbus实现未处理的所有未知功能代码返回异常响应。

此默认实现返回一个带有request功能代码和错误代码设置为非法功能的QModbusExceptionResponse

另请参阅

processRequest()

processRequest(request)
Parameters:

请求QModbusPdu

Return type:

QModbusResponse

处理一个Modbus客户端request并返回一个Modbus响应。此函数根据请求的性质返回一个QModbusResponseQModbusExceptionResponse

此函数的默认实现处理了Modbus应用协议规范1.1b中定义的所有标准Modbus功能码。规范中未包含的所有其他Modbus功能码将转发到processPrivateRequest()

标准Modbus功能码请求的默认处理可以通过重新实现此函数来覆盖。覆盖必须处理相关的请求类型并返回适当的QModbusResponse。常见的原因可能是过滤掉数据值的功能码请求,以限制读/写访问以及在特定实现中不需要的功能码,例如以太网或Modbus Plus传输层上的串行线路诊断。其他所有请求类型应转发到此默认实现。

注意

此函数不应被重写以提供非标准Modbus请求类型的自定义实现。

processesBroadcast()
Return type:

布尔

如果传输层需要处理广播,子类应该实现这个函数。如果当前处理的请求是广播请求,实现应该返回true;否则返回false。默认实现总是返回false

注意

此函数的返回值仅在processRequest()processPrivateRequest()内部有意义,否则它只能表明最后处理的请求是一个广播请求。

readData(newData)
Parameters:

newDataQModbusDataUnit

Return type:

布尔

读取由newData给出的寄存器范围中的值,并将数据写回newData。如果newData0newData范围超出地图范围或registerType()不存在,则返回true表示成功,否则返回false

注意

实现从不同于默认的后备存储读取的子类,还需要实现 setMap()writeData()

另请参阅

setMap() writeData()

serverAddress()
Return type:

整数

返回此Modbus服务器实例的地址。

另请参阅

setServerAddress()

setData(unit)
Parameters:

单位QModbusDataUnit

Return type:

布尔

newData写入Modbus服务器映射。如果newData的范围超出映射范围,则返回false

如果调用成功,则会发出dataWritten()信号。请注意,当寻址的寄存器未更改时,不会发出信号。这可能发生在newData包含与寄存器完全相同值的情况下。尽管如此,在这种情况下,此函数仍会返回true

另请参阅

data()

setData(table, address, data)
Parameters:
Return type:

布尔

将数据写入Modbus服务器。Modbus服务器有四个表(table),每个表都有一个唯一的address字段,用于将data写入所需的字段。如果地址超出映射范围,则返回false

如果调用成功,则会发出dataWritten()信号。请注意,当data未更改时,不会发出信号。尽管如此,在这种情况下,此函数仍会返回true

setMap(map)
Parameters:

map – 字典,键类型为 .QModbusDataUnit.RegisterType,值类型为 QModbusDataUnit。

Return type:

布尔

设置来自其他ModBus客户端的请求的注册映射结构为map。寄存器值初始化为零。成功时返回true;否则返回false

如果在连接之前未调用此函数,则会设置一个默认的零条目寄存器。

注意

调用此函数将丢弃之前设置的任何寄存器值。

setServerAddress(serverAddress)
Parameters:

serverAddress – int

设置此Modbus服务器实例的地址为serverAddress

另请参阅

serverAddress()

setValue(option, value)
Parameters:
  • option – 整数

  • value – 对象

Return type:

布尔

option设置newValue并在成功时返回true;否则返回false

注意

如果选项的关联类型是quint8quint16,而newValue的类型更大,数据将被截断或转换将失败。

描述

DiagnosticRegister

将服务器的诊断寄存器设置为设备特定编码的newValue。默认预设值为0x0000。寄存器的位值需要设备特定的文档。

ExceptionStatusOffset

将服务器的异常状态字节偏移量设置为newValue,这是线圈中的绝对偏移地址(0x寄存器)。Modbus寄存器表从0x0000h开始。预设的默认值为0x0000,使用类似于Modicon 984 CPU的异常状态线圈(线圈1-8)。

如果线圈寄存器包含存储和检索状态线圈所需的8位,则函数返回true,否则返回false

DeviceBusy

设置一个标志,表示服务器正在处理一个长时间的程序命令。有效值为 0x0000(不忙)和 0xffff(忙)。默认预设值为 0x0000

AsciiInputDelimiter

newValue 将成为未来 Modbus ASCII 消息的消息结束分隔符。默认预设值为 \n

ListenOnlyMode

将服务器的监听状态设置为newValue。如果监听模式设置为true,则消息会被监控但不会发送响应。默认预设值为false

ServerIdentifier

将服务器的制造商标识符设置为newValue。可能的取值范围是0x00到0xff。默认预设值为0x0a

RunIndicatorStatus

将服务器的运行指示器状态设置为newValue。此数据由ReportServerId函数代码用作附录。有效值为0x00(关闭)和0xff(开启)。默认预设值为0xff(开启)。

AdditionalData

将服务器的附加数据设置为newValue。此数据由ReportServerId函数代码用作附录。最大数据大小不能超过249字节,以符合响应消息大小的限制。默认预设值为Qt Modbus Server

DeviceIdentification

设置服务器的物理和功能描述。默认情况下,没有额外的设备识别数据集。

UserOption

将用户选项的值设置为newValue

注意

对于用户选项,开发者需要决定使用哪些类型,并确保组件在访问和设置值时使用正确的类型。

另请参阅

value()

value(option)
Parameters:

option – 整数

Return type:

对象

返回option的值,如果未设置该选项,则返回无效的QVariant

选项

描述

DiagnosticRegister

返回服务器的诊断寄存器值。诊断寄存器包含设备特定的内容,其中每一位都有特定的含义。

ExceptionStatusOffset

返回线圈寄存器中异常状态字节位置的偏移地址。

DeviceBusy

返回一个标志,表示服务器是否正在处理一个长时间的程序命令。

AsciiInputDelimiter

返回Modbus ASCII消息的消息结束分隔符。

ListenOnlyMode

返回服务器的只监听状态。消息被监控但不会发送响应。

ServerIdentifier

返回服务器制造商的标识符代码。这可以是0x00到0xff范围内的任意值。

RunIndicatorStatus

返回服务器的运行指示器状态。此数据由ReportServerId函数代码作为附录使用。

AdditionalData

返回服务器的附加数据。这些数据被ReportServerId函数代码用作附录。

DeviceIdentification

返回服务器的物理和功能描述。

UserOption

返回用户选项的值。

注意

对于用户选项,开发者需要决定使用哪些类型,并确保组件在访问和设置值时使用正确的类型。

另请参阅

setValue()

writeData(unit)
Parameters:

单位QModbusDataUnit

Return type:

布尔

newData写入Modbus服务器映射。成功时返回true,如果newData范围超出映射范围或registerType()不存在,则返回false

注意

实现写入不同于默认后备存储的子类,还需要实现 setMap()readData()。还需要在函数实现中发出 dataWritten() 信号。