Giangi94

Manipolare le eccezioni su python-snap7

3 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

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

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