- class QModbusServer#
该
QModbusServer类是接收和处理 Modbus 请求的接口。 更多…继承自:
QModbusTcpServer、QModbusRtuSerialServer概述#
方法#
def
__init__()def
data()定义
setData()
虚方法#
定义
readData()定义
setMap()定义
setValue()定义
value()定义
writeData()
信号#
注意
本文档可能包含自动从C++翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译有问题,也可以通过在https://bugreports.qt.io/projects/PYSIDE创建工单来告诉我们
详细描述#
Modbus网络可以拥有多个Modbus服务器。Modbus服务器通过代表Modbus客户端的
QModbusClient进行读写操作。QModbusServer与Modbus后端通信,为用户提供方便的API。- class Option#
每个Modbus服务器都有一组与其相关联的值,每个值都有其自己的选项。
通用选项(及其关联的类型)如下
常数
描述
QModbusServer.DiagnosticRegister
服务器诊断寄存器。
quint16QModbusServer.ExceptionStatusOffset
服务器异常状态字节的偏移量。
quint16QModbusServer.DeviceBusy
标志表示服务器正在处理会话较长的程序命令。
quint16QModbusServer.AsciiInputDelimiter
Modbus ASCII消息结束分隔符。
charQModbusServer.ListenOnlyMode
设置服务器侦听模式的标志。此功能通常仅由Modbus串行设备支持。
boolQModbusServer.ServerIdentifier
服务器的标识符,不是服务器的地址。
quint8QModbusServer.RunIndicatorStatus
服务器的运行指示器。
quint8QModbusServer.AdditionalData
服务器的附加数据。
QByteArrayQModbusServer.DeviceIdentification
服务器的物理和功能描述。
QModbusDeviceIdentification用户选项
常数
描述
QModbusServer.UserOption
第一个可用于用户自定义目的的选项。
对于用户选项,由开发者决定使用哪种类型,并确保组件在访问和设置值时使用正确的类型。
使用指定的
parent构造Modbus服务器。- data(newData)#
- 参数
newData –
QModbusDataUnit- 返回类型:
bool
返回由
newData给定的寄存器范围内的值。newData必须提供一个有效的寄存器类型、起始地址和值计数。返回的newData将包含与给定范围相关的寄存器值。如果
newData包含有效的寄存器类型,但起始地址为负,则返回整个寄存器映射,且newData的大小合适。另请参阅
- data(table, address, data)
- 参数
table –
RegisterTypeaddress – int
data –
quint16
- 返回类型:
bool
读取存储在Modbus服务器中的数据。Modbus服务器有四个表(
table),每个表都有一个唯一的address字段,用于从中读取所需的字段data。有关不同表的信息,请参阅RegisterType。如果地址超出了映射范围或寄存器类型未定义,则返回false。另请参阅
- dataWritten(table, address, size)#
- 参数
table –
RegisterTypeaddress – int
size – int
在Modbus客户端将一个或多个数据字段写入Modbus服务器时,将发出此信号。该信号包含有关已写入字段的详细信息
写入的寄存器类型(
table),address为第一个已写入字段的位置,以及从
address开始连续字段的大小。
如果由于值未改变而要写入的字段没有变化,则不会发出此信号。
- processesBroadcast()#
- 返回类型:
bool
如果传输层应处理广播,子类应实现此函数。实现应返回
true如果当前处理的是广播请求;否则返回false。默认实现总是返回false。注意
此函数的返回值仅在从
processRequest()或processPrivateRequest()返回时才有意义,否则它只能表明最后处理的是广播请求。- readData(newData)#
- 参数
newData –
QModbusDataUnit- 返回类型:
bool
读取由
newData给定的寄存器范围内的值,并将数据写回newData。在成功时返回true,如果newData为0、newData范围超出映射范围或寄存器类型不存在,返回false。- serverAddress()#
- 返回类型:
int
获取此 Modbus 服务器实例的地址。
另请参阅
- setData(table, address, data)#
- 参数
table –
RegisterTypeaddress – int
data – int
- 返回类型:
bool
将数据写入 Modbus 服务器。Modbus 服务器有四个表(
table),每个表都有一个唯一的address字段,用于将data写入期望的字段。如果地址超出映射范围,则返回false。如果调用成功,则会发出
dataWritten()信号。请注意,当data未更改时,不会发出信号。不过在这种情况下,该函数仍然返回true。- setData(unit)
- 参数
unit –
QModbusDataUnit- 返回类型:
bool
将
newData写入 Modbus 服务器映射。如果newData范围超出映射范围,则返回false。如果调用成功,则会发出
dataWritten()信号。请注意,当所指向的寄存器值未更改时,不会发出信号。这可能会发生,当newData包含与寄存器中已存在值完全相同的值时。尽管如此,这种情况下该函数仍然返回true。另请参阅
- setMap(map)#
- 参数
map – 类型为 .QModbusDataUnit.RegisterType 的键和 QModbusDataUnit 类型的值的字典
- 返回类型:
bool
设置从其他 ModBus 客户端请求的注册映射结构为
map。寄存器值以零初始化。成功则返回true;否则返回false。如果在连接之前没有调用此函数,则会设置一个默认寄存器,其中条目为0。
注意
调用此函数将丢弃之前设置的任何寄存器值。
- setServerAddress(serverAddress)#
- 参数
serverAddress – int
将此Modbus服务器实例的地址设置为
serverAddress。另请参阅
- setValue(option, value)#
- 参数
option – int
value – object
- 返回类型:
bool
设置
option的newValue并返回成功时为true;否则为false。注意
如果选项的相关类型是
quint8或quint16,并且newValue的类型更大,则数据将被截断或转换将失败。键
描述
将服务器在设备特定的编码下诊断寄存器的
newValue设置。预设的默认值是0x0000。寄存器的位值需要设备特定的文档。将服务器的异常状态字节偏移设置为
newValue,即线圈中的绝对偏移地址(0x寄存器)。Modbus寄存器表从0x0000h开始。预设的默认值是0x0000,类似于Modicon 984 CPU的异常状态线圈(线圈1-8)。如果线圈寄存器包含存储和检索状态线圈所需的8位,则该函数返回
true;否则返回false。设置一个标记,表示服务器正在处理长时间运行的程序命令。有效值是
0x0000(不忙)和0xffff(忙)。预设的默认值是0x0000。将
newValue设置为未来Modbus ASCII消息的消息结束分隔符。预设的默认值是\n。将服务器的侦听仅状态设置为
newValue。如果侦听仅模式设置为true,则将监视消息,但不会发送响应。预设的默认值是false。将服务器的制造商标识符设置为
newValue。可能的值范围在0x00到 0xff 之间。预设的默认值是0x0a。设置服务器的运行指示器状态为
newValue。此数据作为附加信息由ReportServerId函数代码使用。有效值是0x00(关闭)和0xff(开启)。默认预设值为0xff(开启)。设置服务器的附加数据为
newValue。此数据作为附加信息由ReportServerId函数代码使用。最大数据大小不能超过 249 字节,以符合响应消息大小的限制。默认预设值为Qt Modbus Server。设置服务器的物理和功能描述。默认情况下没有设置额外的设备标识数据。
将用户选项的值设置为
newValue。注意
对于用户选项,由开发者决定使用哪种类型,并确保组件在访问和设置值时使用正确的类型。
另请参阅
- value(option)#
- 参数
option – int
- 返回类型:
对象
返回
option的值或一个无效的QVariant(如果该选项未被设置)。Option
描述
返回服务器的诊断寄存器值。诊断寄存器包含设备特定的内容,其中每个位都代表特定的意义。
返回异常状态字在线圈寄存器中的偏移地址。
返回一个标志,表示服务器是否正在处理长时间程序命令。
返回 Modbus ASCII 消息的结尾消息分隔符。
返回服务器的仅侦听状态。消息会被监听,但不会发送响应。
返回服务器制造商的标识码。这可以是一个范围在
0x00到 0xff 的任意值。返回服务器的运行指示器状态。这些数据作为
ReportServerId函数代码的附加信息使用。返回服务器的附加数据。这些数据作为
ReportServerId函数代码的附加信息使用。返回服务器的物理和功能描述。
返回用户选项的值。
注意
对于用户选项,由开发者决定使用哪种类型,并确保组件在访问和设置值时使用正确的类型。
另请参阅
- writeData(unit)#
- 参数
unit –
QModbusDataUnit- 返回类型:
bool
将
newData写入 Modbus 服务器映射。成功返回true,如果newData范围超出映射范围或 registerType() 不存在则返回false。注意
实现写入不同于默认存储的后备存储的子类,还需要实现
setMap()和readData()。同样需要在函数实现内部发出dataWritten()信号。