pycharm调用pyqt5做界面,调用smap7与西门子S7-200 smart通讯,做一个小插件

1.调用pyqt5做界面,        ip标签 ,IP输入框,链接按钮,6个标签, 6个输入框,一个写入按钮,一个退出按钮

2.在IP输入框,输入IP地址,点击链接按钮,链接至PLC,链接成功或失败,弹出提示框。连接成功读取PLC  vb100开始的六个字节的值写入对应的六个输入框。在6个输入框中写入要修改的值,点击写入按钮,将6个输入框的内容写入VB100开始的连续的6个字节。(输入为整数)写入成功或失败,弹出提示框。

3.点击退出按钮,断开链接,关闭窗口

# -*- coding: utf-8 -*-

from PyQt5.QtWidgets import *

import snap7


class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("一线IP:192,168.10.12      二线IP:192.168.10.11")
        self.resize(500, 500)
        self.initUI()

    def initUI(self):
        #  IP地址输入框
        self.ipLineEdit = QLineEdit(self)
        self.ipLineEdit.move(50, 50)
        self.ipLineEdit.resize(300, 30)

        #  连接按钮
        self.connectButton = QPushButton("连接", self)
        self.connectButton.move(370, 50)
        self.connectButton.clicked.connect(self.onConnectClick)

        #  标签和输入框
        self.label1 = QLabel("水泥2间隔时间", self)
        self.label2 = QLabel("水泥2运行时间", self)
        self.label3 = QLabel("水泥4间隔时间", self)
        self.label4 = QLabel("水泥4运行时间", self)
        self.label5 = QLabel("煤灰2间隔时间", self)
        self.label6 = QLabel("煤灰2运行时间", self)
        self.lineEdit1 = QLineEdit(self)
        self.lineEdit2 = QLineEdit(self)
        self.lineEdit3 = QLineEdit(self)
        self.lineEdit4 = QLineEdit(self)
        self.lineEdit5 = QLineEdit(self)
        self.lineEdit6 = QLineEdit(self)

        self.label1.move(50, 100)
        self.label2.move(50, 150)
        self.label3.move(50, 200)
        self.label4.move(50, 250)
        self.label5.move(50, 300)
        self.label6.move(50, 350)

        self.lineEdit1.move(250, 100)
        self.lineEdit2.move(250, 150)
        self.lineEdit3.move(250, 200)
        self.lineEdit4.move(250, 250)
        self.lineEdit5.move(250, 300)
        self.lineEdit6.move(250, 350)

        #  写入按钮
        self.writeButton = QPushButton("写入", self)
        self.writeButton.move(50, 400)
        self.writeButton.clicked.connect(self.onWriteClick)

        #  退出按钮
        self.exitButton = QPushButton("退出", self)
        self.exitButton.move(370, 400)
        self.exitButton.clicked.connect(self.close)

        self.show()

    def onConnectClick(self):
        ip = self.ipLineEdit.text()
        try:
            self.client = plc_connect(ip, 2)
            self.readData()
            QMessageBox.information(self, "连接成功", "连接成功!")
        except:
            QMessageBox.warning(self, "连接失败", "连接失败,请检查IP地址、网络连接是否正常!")

    def onWriteClick(self):
        try:
            self.wrideData()
            QMessageBox.information(self, "写入成功", "写入成功!")
        except:
            QMessageBox.warning(self, "写入失败", "写入失败,请检查PLC连接是否正常!")

    def readData(self):
        data1 = str(read_VB(self.client, 100))
        data2 = str(read_VB(self.client, 101))
        data3 = str(read_VB(self.client, 102))
        data4 = str(read_VB(self.client, 103))
        data5 = str(read_VB(self.client, 104))
        data6 = str(read_VB(self.client, 105))

        self.lineEdit1.setText(data1)
        self.lineEdit2.setText(data2)
        self.lineEdit3.setText(data3)
        self.lineEdit4.setText(data4)
        self.lineEdit5.setText(data5)
        self.lineEdit6.setText(data6)

    def wrideData(self):
        data1 = self.lineEdit1.text()
        data2 = self.lineEdit2.text()
        data3 = self.lineEdit3.text()
        data4 = self.lineEdit4.text()
        data5 = self.lineEdit5.text()
        data6 = self.lineEdit6.text()

        wride_VB(self.client, 100, data1)
        wride_VB(self.client, 101, data2)
        wride_VB(self.client, 102, data3)
        wride_VB(self.client, 103, data4)
        wride_VB(self.client, 104, data5)
        wride_VB(self.client, 105, data6)


def plc_connect(ip, type, rack=0, slot=1):
    client = snap7.client.Client()
    client.set_connection_type(type)
    client.connect(ip, rack, slot)
    return client


def plc_con_close(client):
    client.disconnect()


def read_VB(client, offset):
    vb_data = client.db_read(1, offset, 1)
    return vb_data[0]


def wride_VB(client, offset, data):
    data = int(data)
    temp = hex(int(data))[2:]
    if data < 0 or data > 255:
        print('请输入0-255之间的数')

    else:
        if data < 16:
            temp = '0' + temp
        client.db_write(1, offset, bytes.fromhex(temp))


if __name__ == "__main__":
    app = QApplication([])
    window = MainWindow()
    app.exec_()
    plc_con_close(window.client)

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小白作工控

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

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

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

打赏作者

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

抵扣说明:

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

余额充值