【问题标题】:Checking connection with PLC Snap7 Python检查与 PLC Snap7 Python 的连接
【发布时间】:2022-11-17 04:28:08
【问题描述】:

我用 Snap7 库用 Python 编写了一个程序。我可以毫无问题地读写不同的变量。为了完成它,我需要一直检查与 PLC 的通信。我检查了我可以使用“get_connected()”,但是只有当我建立通信时这才按我的意愿工作,但是当我开始通信后删除连接时这个 get_ ... 不会改变值。 有人可以帮我解决这个问题吗?

from tkinter import *
import snap7

IP='192.168.1.71'
Rack = 0
Slot = 1
PLC_Conectado = False
plc = snap7.client.Client()



tk = Tk()

def Conexion():
    if not plc.get_connected():
        try:
            plc.connect(IP,Rack,Slot)
        except:
            print("Error")
    print("Conexion:", plc.get_connected())
    tk.after(5, Conexion)

Conexion()

tk.mainloop()

我想要任何变量以获得连接状态

【问题讨论】:

  • 如果不是 plc.get_connected(): 到 if plc.get_connected():

标签: connection snap7


【解决方案1】:

我可以找到解决办法。使用此代码,程序会在 plc 再次出现时重新建立连接。

import snap7

IP='192.168.1.71'
Rack = 0
Slot = 1
PLC_Conectado = False
plc = snap7.client.Client()

def ConexionPLC():
    global PLC_Conectado, plc
    plc = snap7.client.Client()
    if not plc.get_connected() or plc.get_cpu_state() == 'S7CpuStatusUnknown' :
        
        try:
            plc.connect(IP,Rack,Slot)
            if plc.get_connected() and plc.get_cpu_state() != 'S7CpuStatusUnknown':
                PLC_Conectado = True
            else: 
                PLC_Conectado = False
        except:
            PLC_Conectado = False
    if not PLC_Conectado:
        plc.destroy()

【讨论】:

    猜你喜欢
    • 2016-02-28
    • 1970-01-01
    • 2022-10-08
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 2019-09-01
    相关资源
    最近更新 更多