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

Rispondere a