Giangi94

Manipolare le eccezioni su python-snap7

2 messaggi in questa discussione

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

 

Condividi questa discussione


Link discussione
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.

 

Condividi questa discussione


Link discussione
Condividi su altri siti

Registrati o accedi per inserire messaggi

Devi essere un utente registrato per lasciare un messaggio. La registrazione è GRATUITA.

Crea un account

Iscriviti alla nostra comunità. È facile!


Registra un nuovo account

Connettiti

Hai già un account? Connettiti qui


Connettiti adesso