[Python] Logica PLC

Attilio Menegon attilio.menegon a tecnoemmesnc.it
Gio 29 Dic 2016 19:29:37 CET


Buonasera a tutti,

Chiedo un chiarimento su un concetto che mi sembra sfuggire.

Volendo realizzare un programma in python che legga e scriva degli I/O tipo
quelli del GPIO del Raspberry, volendo implementare delle logiche tipo PLC,
mi chiedo come si gestiscano le temporizzazioni ed altre situazioni simili.

Mi spiego meglio: il programma nel PLC cicla più volte al secondo dalle 10
alle 100 volte e nel esecuzione porta avanti il controllo di eventuali
eventi temporizzati che avvengono in processi paralleli. L’esempio sono più
funzioni / sottoprogrammi di tipo luci scale temporizzate che vengono
inizializzati da uno o più ingressi (che vanno alti) e devono essere gestite
in modo parallelo ed indipendente ed ogni istanza di funzione processa il
suo temporizzatore in modo indipendente mentre il programma principale
continua a girare in autonomia e quando la temporizzazione termina il
sottoprogramma passa il risultato al programma principale che di conseguenza
aggiorna lo stato delle uscite. In questo caso, io come programmatore mi
devo solo incaricare di impostare in sequenza le istruzioni o lo schema a
contatti,  poi il compilatore fa tutto da solo e mi restituisce l’eseguibile
da scaricare nel PLC.

Vorrei comprendere come implementare in modo corretto tali esecuzioni
parallele in un programma Python che giri su PC.

Attualmente ho visto solo dei piccoli esempi in cui la temporizzazione viene
fata con la funzione sleep che blocca l’esecuzione del programma per il
tempo richiesto e poi il programma riprende e cicla su se stesso, in questo
modo non si possono però eseguire più temporizzazioni contemporaneamente. 

Viceversa penso sia corretto lanciare dei programmi paralleli ogni volta che
viene istanziato una temporizzazione e che questi eseguano in modo
indipendente la temporizzazione con la funzione SLEEP() e al suo termine
restituiscano il risultato aggiornando una variabile del programma
principale che continua nel frattempo a girare ad esempio al l’interno di un
ciclo WHILE infinito.

Quindi chiedo delle dritte su come instanziare questi sottoprogrammi,
recuperarne il risultato e farsi restituire il programma.

 

Ringrazio fin da ora per la collaborazione

 

Attilio Menegon

-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20161229/09f38e44/attachment.html>


Maggiori informazioni sulla lista Python