Vai al contenuto
PLC Forum


Manipolare le eccezioni su python-snap7


Messaggi consigliati

Buongiorno a tutti, non riesco a capire come gestire le eccezioni generate per esempio dalla mancanza di connessione al plc; ho trovato la funzione get_connected() che mi restituisce true nel caso sia collegato e penso false nel caso non sia collegato, ma non ho potuto verificarlo poiché viene generata un eccezione del tipo TCP di snap7;  è possibile manipolare le eccezioni in maniera tale che se viene persa la connessione o per il cavo o per altri motivi, si ritenta nuovamente la connessione senza far terminare il programma con l'eccezione ? 

 

Grazie mille,

Gianluca

 

Link al commento
Condividi su altri siti


Premetto che non conosco python e che non ho (com'è giusto che sia) nessun controllo sui fork o sui wrapper di terze parti del progetto.

 

La libreria di per se non genera eccezioni, tutte le funzioni ritornano un numero intero identificativo del codice di errore, 0 se è tutto ok.

Sarà che ho un modo "anziano" di vedere la programmazione, formato con l'assembler ed il c/pascal quando le eccezioni non esistevano, ma secondo me chiamare un "raise" ogni qualvolta qualcosa non è andato per il verso giusto per poi dover trappolare l'eccezione nel codice è una str...ta.

 

I codici di errore si testano e si prendono le decisioni in modo programmatico, bisognerebbe trappolare solo gli errori del sistema operativo o delle librerie runtime.

Detto questo, per un client TCP/IP (quindi anche per Snap7) non c'è modo di capire se il cavo è scollegato finquando una transazione non genera un errore.

quì trovi qualche informazione aggiuntiva con un piccolo esempio in C# su come gestire comunicazione/errori/riconnessioni.

 

Ti consiglio innanzitutto di modificare la funzione check_error() in common.py e quindi di far ritornare alle funzioni python il codice di errore da testare.

Anche tutti quei logger.info() danno tanto di robaccia "vintage", cosa loggare deve essere deciso a livello di applicazione non in una libreria d'interfaccia.

 

Link al commento
Condividi su altri siti

  • 4 weeks later...

Buonasera a tutti

Vorrei anche io utilizzare la libreria snap7 in pythin 3.5 ma non riesco ad importarla.

Mi sapete dire che istruzione utilizzare?

Import snap7.dll mi da sempre errore.

 

Grazie mille

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...