class QModbusServer#

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

Inheritance diagram of PySide6.QtSerialBus.QModbusServer

继承自: QModbusTcpServerQModbusRtuSerialServer

概述#

方法#

虚方法#

信号#

注意

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

详细描述#

Modbus网络可以拥有多个Modbus服务器。Modbus服务器通过代表Modbus客户端的QModbusClient进行读写操作。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])#
参数

parentQObject

使用指定的 parent 构造Modbus服务器。

data(newData)#
参数

newDataQModbusDataUnit

返回类型:

bool

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

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

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

另请参阅

setData()

data(table, address, data)
参数
返回类型:

bool

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

另请参阅

RegisterType setData()

dataWritten(table, address, size)#
参数

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

  • 写入的寄存器类型(table),

  • address 为第一个已写入字段的位置,

  • 以及从 address 开始连续字段的大小。

如果由于值未改变而要写入的字段没有变化,则不会发出此信号。

processesBroadcast()#
返回类型:

bool

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

注意

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

readData(newData)#
参数

newDataQModbusDataUnit

返回类型:

bool

读取由 newData 给定的寄存器范围内的值,并将数据写回 newData。在成功时返回 true,如果 newData0newData 范围超出映射范围或寄存器类型不存在,返回 false

注意

实现从不同后端存储读取的子类还需要实现 setMap()writeData()

另请参阅

setMap() writeData()

serverAddress()#
返回类型:

int

获取此 Modbus 服务器实例的地址。

另请参阅

setServerAddress()

setData(table, address, data)#
参数
返回类型:

bool

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

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

setData(unit)
参数

unitQModbusDataUnit

返回类型:

bool

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

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

另请参阅

data()

setMap(map)#
参数

map – 类型为 .QModbusDataUnit.RegisterType 的键和 QModbusDataUnit 类型的值的字典

返回类型:

bool

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

如果在连接之前没有调用此函数,则会设置一个默认寄存器,其中条目为0。

注意

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

setServerAddress(serverAddress)#
参数

serverAddress – int

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

另请参阅

serverAddress()

setValue(option, value)#
参数
  • option – int

  • value – object

返回类型:

bool

设置 optionnewValue 并返回成功时为 true;否则为 false

注意

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

描述

诊断寄存器

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

异常状态偏移

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

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

设备忙

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

Ascii输入分隔符

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

侦听仅模式

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

服务器标识符

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

运行指示器状态

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

AdditionalData

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

DeviceIdentification

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

UserOption

将用户选项的值设置为 newValue

注意

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

另请参阅

value()

value(option)#
参数

option – int

返回类型:

对象

返回 option 的值或一个无效的 QVariant(如果该选项未被设置)。

Option

描述

诊断寄存器

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

异常状态偏移

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

设备忙

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

Ascii输入分隔符

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

侦听仅模式

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

服务器标识符

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

运行指示器状态

返回服务器的运行指示器状态。这些数据作为 ReportServerId 函数代码的附加信息使用。

AdditionalData

返回服务器的附加数据。这些数据作为 ReportServerId 函数代码的附加信息使用。

DeviceIdentification

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

UserOption

返回用户选项的值。

注意

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

另请参阅

setValue()

writeData(unit)#
参数

unitQModbusDataUnit

返回类型:

bool

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

注意

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