Venerdì 30/12/2016 Piergiorgio Pancino a scritto
I PLC sono microcontrollori e come tali non utilizzano thread. Il ciclo viene gestito in pratica con una programmazione asincrona, semplicemente ripetuto in maniera banale: 1) Controllo tutti gli ingressi 2) Eseguo le operazioni di elaborazione (AND OR e controllo delle temporizzazioni) 4) Attivo le uscite interessate Per gestire le temporizzazioni in maniera semplice basta fare un confronto con il tempo, ad esempio nel seguente codice eseguo operazioni varie a due intervalli di tempo prestabiliti: mio_intervallo_1 = 1 # 1 secondo mio_intervallo_2 = 1 # 0.5 second1 orario_partenza_evento_1 = time.time() orario_partenza_evento_2 = time.time() while(True) if (time.time() - orario_partenza_evento_1 > mio_intervallo_1): eseguo_quello_che_voglio_1() orario_partenza_evento_1 = time.time() if (time.time() - orario_partenza_evento_2 > mio_intervallo_2): eseguo_quello_che_voglio_2() orario_partenza_evento_2 = time.time() Tutti i vari controlli Chiaramente più la complessità del programma cresce, più tempo ci vorrà tra una scansione e l'altra, se tu vuoi effettuare esattamente N controlli al secondo puoi introdurre uno sleep alla fine di ogni ciclo e rallentare l'esecuzione del programma. Per completezza c'è da dire che esistono anche gli interrupt, ma in questo caso non ne vedo la necessità. Piergiorgio Pancino Grazie per la spiegazione tecnica, nel frattempo ho provato ad usare il confronto con la temporizzazione. Vorrei provare a creare una classe specifica e poi istanziare gli oggetti temporizzatori ogni volta che né ho necessita. Viceversa era interessante l’utilizzo dei trend e gli eventi generati dalla variazione dello stato degli ingressi. Al fine di eseguire ad esempio un contatore veloce che conti degli impulsi in ingresso. Grazie per la collaborazione Attilio Menegon
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python