这是一个使用 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 类来定期读取线圈的值,并更新界面。

Python PyQt Modbus TCP 线圈读取示例

原文地址: https://www.cveoy.top/t/topic/ndbI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录