[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