Python odwołanie do metody z modułu zewnętrznego w Tkinker buttom command

0

Witam,
Proszę o pomoc w moim projekcie komunikacji z PLC z poziomu Pythona. Poniższy kod działa dobrze:

main.py

import S71200
from time import sleep
import snap7
from snap7.util import *
import struct

plc = S71200.S7_200("192.168.1.51",1000,0301)
plc.writeMem('QX0.7',True)
plc.writeMem('QX0.7',False)
print plc.getMem()

W konsoli otrzymuję komunikat o połączeniu ze sterownikiem S 400 siemens i zmieniam wartość wyjścia Q 0.7.

Jeśli użyję przycisku z Tkinker niestety nie jest widziana metoda z modułu S71200.

main.py

from Tkinter import *
import S71200
import _tkinter
from time import sleep
import snap7
from snap7.util import *
import struct

def Pressed():
plc.writeMem('QX0.4',True)

def Pressed1():
plc.writeMem('QX0.4',False)

def Connect():
plc = S71200.S7_200("192.168.1.51",1000,0301)

def DissConnect():
plc.disconnect()

root = Tk() #main window
button = Button(root, text = 'On', command = Pressed)
button.pack(pady=20, padx = 20)

button1 = Button(root, text = 'Off', command = Pressed1)
button1.pack(pady=20, padx = 20)

button2 = Button(root, text = 'Conn', command = Connect)
button2.pack(pady=20, padx = 20)

button3 = Button(root, text = 'Diss', command = DissConnect)
button3.pack(pady=20, padx = 20)

root.mainloop()

Co robię źle że w konsoli dostaję błędy o braku deklaracji zmiennej PLC ?

Marek Wojciechowski

0

Dawaj kod w znaczniki(?), bo teraz nic nie widac

//
jesli w funkcji tworzysz jakas zmienna np 'plc' to po wyjsciu z niej ta zmienna jest 'usuwana' wiec np stworz ta zmienna poza funkcjami
poczytaj -> 'local variables'

1 użytkowników online, w tym zalogowanych: 0, gości: 1