Python PyQt Modbus TCP 线圈读取示例
这是一个使用 PyQt5 和 pymodbus 库实现 Modbus TCP 读取线圈内容的简单示例。
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout
from PyQt5.QtCore import Qt, QTimer
from pymodbus.client.sync import ModbusTcpClient
class ModbusWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.coil_labels = []
self.coil_values = []
# 建立 Modbus TCP 客户端
self.client = ModbusTcpClient('127.0.0.1', port=502)
# 读取线圈的数量
self.coil_count = 10
# 读取线圈的起始地址
self.coil_addr = 0
# 建立线性布局
layout = QVBoxLayout()
# 创建一个标签来显示线圈的值
for i in range(self.coil_count):
label = QLabel()
self.coil_labels.append(label)
self.coil_values.append(False)
layout.addWidget(label)
self.setLayout(layout)
# 开始读取线圈的值
self.read_coils()
def read_coils(self):
# 读取线圈的值
response = self.client.read_coils(self.coil_addr, self.coil_count)
# 更新线圈的值
for i in range(self.coil_count):
value = response.bits[i]
self.coil_values[i] = value
self.coil_labels[i].setText(f'{i+1}: {value}')
# 延迟 500 毫秒,然后再次读取线圈的值
QTimer.singleShot(500, self.read_coils)
if __name__ == '__main__':
app = QApplication([])
widget = ModbusWidget()
widget.show()
app.exec_()
在这个示例中,我们首先建立了一个 Modbus TCP 客户端,并读取了 10 个线圈的值。然后,我们使用 PyQt5 创建了一个简单的用户界面,用于显示每个线圈的值。最后,我们使用 PyQt5 的 QTimer 类来定期读取线圈的值,并更新界面。
原文地址: https://www.cveoy.top/t/topic/ndbI 著作权归作者所有。请勿转载和采集!