- 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
服务器诊断寄存器。
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
第一个可用于用户自定义目的的选项。
对于用户选项,由开发者决定使用哪种类型,并确保组件在访问和设置值时使用正确的类型。
使用指定的
parent
构造Modbus服务器。- data(newData)#
- 参数
newData –
QModbusDataUnit
- 返回类型:
bool
返回由
newData
给定的寄存器范围内的值。newData
必须提供一个有效的寄存器类型、起始地址和值计数。返回的newData
将包含与给定范围相关的寄存器值。如果
newData
包含有效的寄存器类型,但起始地址为负,则返回整个寄存器映射,且newData
的大小合适。另请参阅
- data(table, address, data)
- 参数
table –
RegisterType
address – int
data –
quint16
- 返回类型:
bool
读取存储在Modbus服务器中的数据。Modbus服务器有四个表(
table
),每个表都有一个唯一的address
字段,用于从中读取所需的字段data
。有关不同表的信息,请参阅RegisterType
。如果地址超出了映射范围或寄存器类型未定义,则返回false
。另请参阅
- dataWritten(table, address, size)#
- 参数
table –
RegisterType
address – 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 –
RegisterType
address – 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()
信号。