PySide6.QtSerialBus.QModbusServer¶
- class QModbusServer¶
QModbusServer
类是用于接收和处理 Modbus 请求的接口。更多…继承自:
QModbusTcpServer
,QModbusRtuSerialServer
概要¶
方法¶
def
__init__()
def
data()
def
serverAddress()
def
setData()
虚拟方法¶
def
processRequest()
def
readData()
def
setMap()
def
setValue()
def
value()
def
writeData()
信号¶
def
dataWritten()
注意
本文档可能包含从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
第一个可用于用户特定目的的选项。
对于用户选项,由开发者决定使用哪些类型,并确保组件在访问和设置值时使用正确的类型。
使用指定的
parent
构建一个Modbus服务器。- data(newData)¶
- Parameters:
newData –
QModbusDataUnit
- Return type:
布尔
返回由
newData
给出的寄存器范围内的值。newData
必须提供有效的寄存器类型、起始地址和值计数。返回的newData
将包含与给定范围相关的寄存器值。如果
newData
包含有效的寄存器类型但起始地址为负数,则返回整个寄存器映射,并且newData
会适当调整大小。另请参阅
- data(table, address, data)
- Parameters:
表格 –
RegisterType
address – int
data –
quint16
- Return type:
布尔
读取存储在Modbus服务器中的数据。Modbus服务器有四个表(
table
),每个表都有一个唯一的address
字段,用于从所需字段读取data
。有关不同表的更多信息,请参见RegisterType
。如果地址超出映射范围或寄存器类型未定义,则返回false
。另请参阅
- dataWritten(table, address, size)¶
- Parameters:
表格 –
RegisterType
address – int
size – int
当Modbus客户端向Modbus服务器写入一个或多个数据字段时,会发出此信号。该信号包含有关已写入字段的信息:
注册类型 (
table
) 已被写入,address
写入的第一个字段的地址,以及从
address
开始写入的连续字段的size
。
当由于值没有变化而导致要写入的字段没有改变时,不会发出信号。
- processPrivateRequest(request)¶
- Parameters:
请求 –
QModbusPdu
- Return type:
此函数应由自定义Modbus服务器实现。如果给定的
request
不是标准的Modbus请求,则由processRequest()
调用。重写此函数允许处理Modbus应用协议规范1.1b中未指定的附加功能代码和子功能代码。重新实现应再次调用此函数,以确保自定义Modbus实现未处理的所有未知功能代码返回异常响应。
此默认实现返回一个带有
request
功能代码和错误代码设置为非法功能的QModbusExceptionResponse
。另请参阅
- processRequest(request)¶
- Parameters:
请求 –
QModbusPdu
- Return type:
处理一个Modbus客户端
request
并返回一个Modbus响应。此函数根据请求的性质返回一个QModbusResponse
或QModbusExceptionResponse
。此函数的默认实现处理了Modbus应用协议规范1.1b中定义的所有标准Modbus功能码。规范中未包含的所有其他Modbus功能码将转发到
processPrivateRequest()
。标准Modbus功能码请求的默认处理可以通过重新实现此函数来覆盖。覆盖必须处理相关的请求类型并返回适当的
QModbusResponse
。常见的原因可能是过滤掉数据值的功能码请求,以限制读/写访问以及在特定实现中不需要的功能码,例如以太网或Modbus Plus传输层上的串行线路诊断。其他所有请求类型应转发到此默认实现。- processesBroadcast()¶
- Return type:
布尔
如果传输层需要处理广播,子类应该实现这个函数。如果当前处理的请求是广播请求,实现应该返回
true
;否则返回false
。默认实现总是返回false
。注意
此函数的返回值仅在
processRequest()
或processPrivateRequest()
内部有意义,否则它只能表明最后处理的请求是一个广播请求。- readData(newData)¶
- Parameters:
newData –
QModbusDataUnit
- Return type:
布尔
读取由
newData
给出的寄存器范围中的值,并将数据写回newData
。如果newData
为0
,newData
范围超出地图范围或registerType()不存在,则返回true
表示成功,否则返回false
。- serverAddress()¶
- Return type:
整数
返回此Modbus服务器实例的地址。
另请参阅
- setData(unit)¶
- Parameters:
单位 –
QModbusDataUnit
- Return type:
布尔
将
newData
写入Modbus服务器映射。如果newData
的范围超出映射范围,则返回false
。如果调用成功,则会发出
dataWritten()
信号。请注意,当寻址的寄存器未更改时,不会发出信号。这可能发生在newData
包含与寄存器完全相同值的情况下。尽管如此,在这种情况下,此函数仍会返回true
。另请参阅
- setData(table, address, data)
- Parameters:
表格 –
RegisterType
address – int
data – 整数
- 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
。另请参阅
- setValue(option, value)¶
- Parameters:
option – 整数
value – 对象
- Return type:
布尔
为
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)¶
- Parameters:
option – 整数
- Return type:
对象
返回
option
的值,如果未设置该选项,则返回无效的QVariant
。选项
描述
返回服务器的诊断寄存器值。诊断寄存器包含设备特定的内容,其中每一位都有特定的含义。
返回线圈寄存器中异常状态字节位置的偏移地址。
返回一个标志,表示服务器是否正在处理一个长时间的程序命令。
返回Modbus ASCII消息的消息结束分隔符。
返回服务器的只监听状态。消息被监控但不会发送响应。
返回服务器制造商的标识符代码。这可以是
0x00
到0xff范围内的任意值。返回服务器的运行指示器状态。此数据由
ReportServerId
函数代码作为附录使用。返回服务器的附加数据。这些数据被
ReportServerId
函数代码用作附录。返回服务器的物理和功能描述。
返回用户选项的值。
注意
对于用户选项,开发者需要决定使用哪些类型,并确保组件在访问和设置值时使用正确的类型。
另请参阅
- writeData(unit)¶
- Parameters:
单位 –
QModbusDataUnit
- Return type:
布尔
将
newData
写入Modbus服务器映射。成功时返回true
,如果newData
范围超出映射范围或registerType()不存在,则返回false
。注意
实现写入不同于默认后备存储的子类,还需要实现
setMap()
和readData()
。还需要在函数实现中发出dataWritten()
信号。