Arduino come PLC ?

Ricordo che quando studiavo il PLC, mi veniva sempre ricordato il ciclo di funzionamento su cui si basava:

1- Accensione PLC

2 - Lettura ingressi con successiva memorizzazione nel relativo stack

3 - Esecuzione del codice

4 - Scrittura sulla memoria delle uscite (in base a ciò che usciva dal codice.....)

5 - Scrittura delle uscite e ritorno al punto 1

Pertanto gli ingressi e le uscite vengono letti/scritti una sola volta per ciclo, favorendo la "coerenza" dell'intero codice.

.....Arduino non ha certamente le memorie dedicate agli ingressi/uscite......ma funziona alla stessa maniera?

Quando e quante volte legge gli ingressi/uscite?

L'Arduino esegue 2 Funzioni generali:
All'inizio dopo l' accensione o un reset la funzione setup()
e finito quella la funzione loop() che una volta terminato la ripete in eterno.
Dentro la funzione loop() puoi mettere tutte le letture entrate, setaggio uscite e elaborazioni dati che vuoi.
Ciao Uwe

io penso che l'unico problewma per usare arduino come un plc che io ho individuato e la quastione dei temporizzatore che con un plc sono facili da settare ed usare io a scuola utilizzavo i siemens S5 programmati in l'AWL. mentre per arduino o si usa il delay ma il programma si ferma o si usa il millis() ma è un po' + laborioso.

concordo ..con la gestione tempo .. se no un orologio esterno ...
per il resto i tempi di risposta di un plc sono immediati e si posssono usare sistemi HD/SW ad "events" rapidi, mentre arduido, ma qui posso sbagliare, deve ciclare tutto il programma per attivare un evento.
tutto ... rimane importante per processi rapidi .... reazzioni chimiche, laser, o altro .. per processi più lenti ... si può tranquillamente usare (con gli accorgimenti di tempo detti prima)

be anche il plc per cambiare le uscite attende la fine di tutto il programma
per evitare continui sfarfallamenti delle uscite.
almeno questo è quallo che mi è stato spiegato a scuola.
poi ripeto io sono rimasto ai vecchi S5 della siemens visto che scuola c'erano . ma nonj èesiste una libreria o funzione che funziona come i temporizzatori del plc?

che con solo 2/3 istruzioni AWL erano settati ed utilizzabili

Ci sono sitemi plc ... con hw/sw che nn ciclano ogni volta ....
ma comunque ... Arduino .... è veloce.... quindi ......

Grazie per le risposte ragazzi.

tutti i PLC hanno la medesima caratteristica di "coerenza":

  • Leggono gli ingressi UNA SOLA VOLTA prima di eseguire il codice (in questo modo l'ingresso X rimane con lo stesso valore per tutto il programma). Percui, per esempio, se nella riga 1 l'ingresso X ha un valore pari a 115, lo avrà anche nella riga 2, 6,....10....100000

  • Dopo aver elaborato il programma, il PLC scrive UNA SOLA VOLTA le uscite, che manterranno lo stesso valore fino alla fine del prossimo ciclo.

La domanda è sempre la stessa: Arduino ha anche questa caratteristica di coerenza, oppure legge/scrive gli ingressi/uscite DURANTE l'esecuzione del codice?

Dipende esclusivamente da quello che gli dici di fare, se lo programmi per leggere e scrivere in testa e in coda all'esecuzione della logica... lo farà :wink:

Ciao

Dipende esclusivamente da quello che gli dici di fare, se lo programmi per leggere e scrivere in testa e in coda all'esecuzione della logica... lo farà

...mmm, questo avalla l'ipotesi che Arduino legga gli ingressi ad ogni istruzione di analogRead() o digitalRead().....anche più volte in uno stesso ciclo...

Questo vale anche per gli OUTPUT? Ovvero Arduino può settare le uscite durante l'esecuzione del codice? Oppure attende di aver completato la lettura del programma?

dipende come fai il programma... se gli dai
dato1=digitalRead(1) esempio 115

dato1 sarrà sempre uguale a 115 per tutto il ciclo ...
se alla riga 60xxx0 tu fai
dato1=digitalRead(1) (120) dato1 prenderà il nuovo valore (120)
ovvio per gli output digital o analogic Write (...,...)

Adesso è più chiaro.

Deduco che in questo caso Arduino è abbastanza flessibile: se avessi bisogno di una memoria coerente di ingressi ed uscite, potrei ugualmente crearla.

Grazie