首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用PLC Snap7 Python检查连接

用PLC Snap7 Python检查连接
EN

Stack Overflow用户
提问于 2022-11-16 15:42:33
回答 1查看 22关注 0票数 0

我用Snap7库用Python编写了一个程序。我可以读和写不同的变量,没有任何问题。为了完成它,我需要随时检查与PLC的通信。我检查了我可以使用"get_connected()",但这是我想要的,只有当我建立起沟通,但这个get_ .在开始通信后删除连接时,不会更改该值。有人能帮我解决这个问题吗?

代码语言:javascript
运行
复制
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()

我希望有任何变量来获得连接的状态。

EN

回答 1

Stack Overflow用户

发布于 2022-11-16 20:28:08

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

代码语言:javascript
运行
复制
import snap7
IP='192.168.1.71'
Rack = 0
Slot = 1
PLC_Conectado = False
plc = snap7.client.Client()

def ConexionPLC():
    global PLC_Conectado, plc
    try:
        #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:
        if PLC_Conectado:
            plc.destroy()
            plc = snap7.client.Client()
        PLC_Conectado = False
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74463336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档