Vai al contenuto
PLC Forum


Snap 7 Python Logo siemens


Messaggi consigliati


Inserita:

devi fare in modo che la tua applicazione sia libera cioè che puoi gestire pulsanti e tutto il resto e mandare messaggi al logo e questo lo puoi fare nel main thread che viene lanciato quando parte l'applicazione.Ogni programma crea un processo ed ogni processo ha un thread principale .

Poi con un thread secondario gestisci la lettura in modo asincrono per evitare di bloccare l'applicazione.Metti che non arriva niente si blocca tutto per cui thread per la lettura.

Poi c'e' un altro problema , almeno in C#, che in realtà no ne' un problema di linguaggio ma di gestione dei threads. i controlli che sui , ossia pulsanti , finestrelle etc , sono create nel thread principale e non possono essere usate da altri thread.Per cui devi creare un delegato legato ad un evento , questo sempre in .NET , ma anche in java di JVM o Dalvik machine in android. Stessa cosa in C++ .Adesso io python lo uso raramente, è potente e molto utile in campo scientifico etc però lavoro prevalentemente in C/C++, C# e Java su linux o android. Se mi mandi in pvt la tua mail di mando degli appunti che trattano il multithreading in python .

comunque meglio python 50 miliardi di volte del basic o VB 

 

Inserita:

ciao walter cerco di mandarti una mail in privato ma mi dice che non puoi ricevere i messaggi..

  • 3 weeks later...
Inserita:

non riesco a capire dove sbaglio. 

sto cercando di monitorare un uscita attraverso il Thread di python

quando avvio il programma  tipo questo:

 

class Valore(Thread):    
    def __init__(self):        
        Thread.__init__ (self)
        self.daemon = True
        self.start()        
    def run(self):
        while True:            
            plc=snap7.client.Client()
            plc.connect("192.168.1.102",0,1)
            area = 0x82                                   
            start = 0

            length = 1                                     
            bit = 1                                        
            data = plc.read_area(area,0,start,length)             
            plc.read_area(area,0,start,length)
            print ("read1Q1:",get_bool(data,0,bit))
            time.sleep(1)         
        
Valore()
 

riesco a fare circa 10 letture dopo di che ottengo questo tipo di errore:

 

ERROR:snap7.common:b' ISO : An error occurred during recv TCP : Connection timed out'
Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python3.4/threading.py", line 920, in _bootstrap_inner
    self.run()
  File "/home/pi/salav3.py", line 45, in run
    plc.connect("192.168.1.102",0,1)
  File "/usr/local/lib/python3.4/dist-packages/snap7/client.py", line 25, in f
    check_error(code, context="client")
  File "/usr/local/lib/python3.4/dist-packages/snap7/common.py", line 65, in check_error
    raise Snap7Exception(error)
snap7.snap7exceptions.Snap7Exception: b' ISO : An error occurred during recv TCP : Connection timed out'

  • 1 year later...
Inserita:

ciao, sono molto interessato a questa cosa .   Poi sei riuscito a farlo funzionare bene ? 

Inserita:

Se in un anno non ha dato notizie è inutile chiedere.

  • Livio Orsini locked this discussione
Ospite
Questa discussione è chiusa alle risposte.
×
×
  • Crea nuovo/a...