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
[email protected]
http://lists.python.it/mailman/listinfo/python