Python PyQt5+pylogix制作上位操作画面与AB PLC进行数据交互

本文介绍了如何使用Python PyQt5和pylogix库创建一个上位机操作界面,与Rockwell AB PLC进行数据交互。通过Qt Designer设计界面,实现PLC连接、数据采集、启停控制、参数设置等功能,提供了一种在自动化项目中替代HMI的解决方案。
摘要由CSDN通过智能技术生成

Python pylogix系列文章目录

一、Python Pylogix 读写Rockwell AB PLC变量数据
二、Python pylogix 读写AB PLC常用方法实例
三、Python pylogix 对AB PLC进行数据采集的思路总结
四、Python PyQt5+pylogix制作上位操作画面与AB PLC进行数据交互



Python PyQt5+pylogix制作上位操作画面与AB PLC进行数据交互

前言

Python PyQt5介绍

PyQt5是一个用于创建桌面应用程序的Python库,它可以让开发者使用Python语言来创建功能强大的图形用户界面(GUI)应用程序。PyQt5提供了丰富的功能和工具,使得开发者能够轻松地设计和开发各种类型的应用程序,包括窗口应用程序、工具栏应用程序、游戏和多媒体应用程序等。

Python Pylogix介绍

Pylogix是一个基于Python的库,它提供了一组用于与Rockwell PLC通信的API。它支持多种通信协议,包括Ethernet/IP和ControlLogix,因此可以与多种不同类型的Rockwell PLC进行通信。

Rockwell AB PLC实例

以下PLC程序逻辑为,按下启停按钮后变频器以设定频率及时间控制电动机正、反向往复运转,直至再次按下启停按钮,电动机停止运行。
在这里插入图片描述

本文将介绍使用Python PyQt5制作一个上位操作画面,基于pylogix通信API接口与AB PLC进行通信,实现对变频器启动\停止控制及运行数据展示等功能。

效果预览
在这里插入图片描述

PyQt5 上位画面制作

在PyQt5中,我们可以使用Qt Designer来设计界面。Qt Designer是一个可视化的界面设计工具,可以帮助我们快速创建界面。我们可以添加按钮、标签、输入框等控件,并设置它们的属性和布局。
操作画面布局
在这里插入图片描述
Top部分
用于PLC时间显示、画面标题、通信设置。

运行数据
实时显示Armorstart变频器运行时频率、电流、功率、电压、模式等数据。

状态
实时显示Armorstart变频器准备就绪、故障、跳闸、正反转等信号点状态。

操作
控制Armorstart变频器启动\停止,频率、正反转时间设置等操作。

操作记录
记录与PLC建立连接,控制Armorstart变频器的启停的记录等。

上位画面交互逻辑编写

在Qt Designer中将界面设计完成后,使用pyuic工具将.ui文件转换为.py文件。然后,我们可以在生成的.py文件中添加按钮、标签、输入框等控件逻辑代码,实现与PLC交互的具体功能。

添加程序入口

import sys
#程序入口,程序从此处启动PyQt设计的窗口
if __name__ =='__main__' :
    app =QtWidgets.QApplication(sys.argv)
    MainWindow=QtWidgets.QMainWindow()   #创建窗口
    ui=Ui_MainWindow()               #创建PyQt设计的窗口
    ui.setupUi(MainWindow)               #初始化设置
    MainWindow.show()                    #显示窗口
    sys.exit(app.exec_())                #程序关闭时退出进程

通信设置逻辑

输入PLC通信IP地址后,点击连接按钮检测到通信正常,每500ms采集一次PLC时间、信号状态、运行数据等tag值,并在画面中刷新。
连接按钮映射

'-----------------------连接按钮设置-----------------------------------'
        self.pushButton_3 = QtWidgets.QPushButton(self.groupBox_4)
        self.pushButton_3.setGeometry(QtCore.QRect(120, 20, 60, 25))
        self.pushButton_3.setStyleSheet("background-color: rgb(238, 238, 238);")
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_3.clicked.connect(self.connect_to_PLC)

连接按钮具体方法
数据采集在后台进行,避免主线程占用后,其他按钮无法正常操作

    def connect_to_PLC(self):
        IP = self.lineEdit_2.text()
        self.refreshParaValue(IP)
        if self.pushButton_3.text()=='连接':
            self.thread1.is_on = True
            self.thread1.IP = IP
            self.lineEdit_2.setReadOnly(True)
            self.pushButton_3.setText('断开连接')
            self.printf("--" + datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") + " 连接成功--")
            print("--线程开启--")

            self.thread1.start()

        elif self.pushButton_3.text()=='断开连接':
            self.thread1.is_on = False

            self.pushButton_3.setText('连接')
            self.lineEdit_2.setReadOnly(False)
            self.clearAllStatus()
        else:
            msg_box = QMessageBox(QMessageBox.Information, "错误", "无效操作!")
            msg_box.exec_()

后台采集数据线程配置

'-----------------------线程配置-----------------------------------'
        self.thread1 = Thread1()
        self.thread1.signal1.connect(self.printf)#连接至操作记录
        self.thread1.signal2.connect(self.refreshVFDStatusValue)#连接至刷新PLC时间、信号状态、运行数据方法

线程逻辑

class Thread1(QThread):
    signal1 = pyqtSignal(str)
    signal2 = pyqtSignal(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电工学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值