[Python] R: Logica PLC
Attilio Menegon
attilio.menegon a tecnoemmesnc.it
Lun 9 Gen 2017 12:59:45 CET
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
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20170109/67ca7541/attachment.html>
Maggiori informazioni sulla lista
Python