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
服务器的诊断寄存器。
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)¶
- Parameters:
newData –
QModbusDataUnit- Return type:
布尔
返回由
newData给出的寄存器范围内的值。newData必须提供有效的寄存器类型、起始地址和值计数。返回的newData将包含与给定范围相关的寄存器值。如果
newData包含有效的寄存器类型但起始地址为负数,则返回整个寄存器映射,并且newData会适当调整大小。另请参阅
- data(table, address, data)
- Parameters:
表格 –
RegisterTypeaddress – int
data –
quint16
- Return type:
布尔
读取存储在Modbus服务器中的数据。Modbus服务器有四个表(
table),每个表都有一个唯一的address字段,用于从所需字段读取data。有关不同表的更多信息,请参见RegisterType。如果地址超出映射范围或寄存器类型未定义,则返回false。另请参阅
- dataWritten(table, address, size)¶
- Parameters:
表格 –
RegisterTypeaddress – 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:
表格 –
RegisterTypeaddress – 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()信号。