Sommario:
- Passaggio 1: Introduzione
- Fase 2: Descrizione della Real Board:
- Passaggio 3: quale sequenza programmare? SFC e diagramma di stato
- Passaggio 4: Programmazione con Arduino IDE 1.6.X
- Passaggio 5: Programmazione con YAKINDU
- Passaggio 6: controllalo con AdvancedHMI
- Passaggio 7: controllalo con Unigo Evolution
- Passaggio 8: conclusione
Video: Arduino PLC 32 I/O+Macchina a stati+SCADA o HMI: 8 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:03
Tanti modi per programmare, controllare e supervisionare un sistema industriale con arduino.
Passaggio 1: Introduzione
In questo tutorial mi occuperò di:
2 metodi per programmare un arduino collegato ad una sorta di macchina inclusi pulsanti, interruttori e led
1- Il primo metodo con l'IDE arduino 1.6.x utilizzando la libreria SM (State Machine)
2-Il secondo metodo che utilizza Yakindu, un progetto di editor di diagrammi di stato creato con l'ambiente eclipse: disegna la tua macchina a stati e genera il codice da trasferire sulla scheda Arduino.
In associazione con
2 modi di supervisionare la macchina con uno SCADA o un HMI virtuale in esecuzione:
1- sotto Android 4.4: Unigo Evolution, un'app gratuita senza codice solo elementi da posizionare su uno schermo e modbus TCP
2-sotto Windows 8: un progetto gratuito AdvancedHMI che necessita di Visual Studio 2013, nessun codice ed elementi da posizionare su uno schermo e modbus TCP
Quindi disegni le tue sequenze funzionali con un SFC (in automazione: Sequential Function Chart), lo traduci in un diagramma di stato (molto più vicino), lo programmi (Yakindu o Arduino SM lib) e poi lo supervisioni con uno SCADA (Unigo Android o AdvancedHMI Windows).
Fase 2: Descrizione della Real Board:
Lo schema:
Ho usato una scheda Arduino UNO, non un clone perché Yakindu non può inviare alcun programma a nessun clone, solo una scheda UNO e Mega.
Potrei avere 32 I/O digitali con 2 expander SPI come MCP23S17 (2x16 I/O) e altre 2 uscite analogiche a 12 bit (analogiche reali non filtrate PWM) con 2 DAC SPI come MCP4921.
Non ho disegnato lo shield ethernet ma ti serve per supervisionare il tuo sistema: quindi i pin 4, 10, 11, 12 e 13 non devono essere usati per nient'altro e ovviamente i pin 0 e 1 solo per RX TX.
Le foto reali della scheda:
Sono necessari 8 pulsanti:
- 4 per la modalità manuale: una per luce su ogni led
- 1 per arresto di emergenza: se premuto si è in modalità normale, rilascio: emergenza
- 1 per modalità automatica che avvia l'accensione e lo spegnimento sequenziale di ogni led, se rilasciato: modalità manuale, per comandare ogni led senza sequenza
- 1 per RUN in modalità automatica
- 1 per STOP in modalità automatica
4 led per simulare quello che vuoi (relè, valvola…)
Do il nome di ogni pulsante e led che ho usato nei programmi.
Passaggio 3: quale sequenza programmare? SFC e diagramma di stato
Ho creato un SFC molto semplice per descrivere cosa dovrebbe fare il sistema.
Sono necessari 3 SFC:
- SFCsecu per attivare o disattivare la modalità di emergenza, è l'SFC master che lancia gli altri
- Manuale automatico SFC lanciato da SFCsecu, puoi raggiungere la modalità automatica o la modalità manuale
- SFC run stop, scansione e memorizzazione se qualcuno ha premuto DCY (RUN) o FCY (STOP)
Questi SFC sono in esecuzione in pseudo-multistaking.
Quindi li traduco in un diagramma di stato:
- una macchina principale (Emergenza) che lancia altri 2 schiavi
- uno schiavo per la scansione e la memorizzazione di DCY e FCY
- uno schiavo per raggiungere la modalità automatica o manuale
Altra cosa: premendo DCY si può pilotare l'uscita analogica con un trimer virtuale su scada, premendo FCY le uscite analogiche scendono a 0V.
Il diagramma di stato ti aiuta a programmare l'arduino.
Passaggio 4: Programmazione con Arduino IDE 1.6. X
Ti do il codice per tradurre i diagrammi precedenti. Avevo bisogno di 3 librerie aggiuntive che ti do anche io.
Avrai anche bisogno della tabella degli indirizzi per capire quali pin usi per cosa e il modbus registra gli indirizzi corrispondenti.
Passaggio 5: Programmazione con YAKINDU
Prima scarica la versione gratuita del progetto 2.9 (non pro) su:
www.itemis.com/en/yakindu/state-machine/
Quindi segui il tutorial in dotazione: ci sono alcune modifiche rispetto all'ultima volta che ho scaricato il programma, solo per i nomi delle diverse parti del file "xxxconnector.cpp" da completare.
Le foto: il disegno della macchina a stati, la vista della cartella nel progetto e le sue librerie importate da arduino, la vista di "xxxconnector.cpp" per fare il collegamento tra le transizioni/gli stati e gli ingressi/uscite reali del bordo o degli SCADA.
Ti do il progetto che dovrai solo importare nel tuo spazio di lavoro creato automaticamente.
Vengono inoltre forniti: le librerie necessarie da importare in Yakindu e alcune modifiche da eseguire descritte nel tutorial.
Passaggio 6: controllalo con AdvancedHMI
Scarica prima Visual studio Express 2013 o più su:
www.microsoft.com/fr-fr/download/details.a…
Quindi scarica il progetto AdvancedHMI su:
sourceforge.net/projects/advancedhmi/?SetF…
Vi do le foto dello SCADA che ho disegnato (con i relativi indirizzi dei registri modbus) e programmato senza codice, il progetto modificato e un breve tutorial.
Passaggio 7: controllalo con Unigo Evolution
Hai bisogno di un dispositivo Android con Android 4.4 (kit kat) e uno schermo da 7 pollici.
Ti metto le foto dello SCADA che ho disegnato (e i relativi indirizzi dei registri modbus) e un breve tutorial per usare Unigo, nessun codice necessario, una cartella che contiene immagini di luci industriali e pulsanti da mettere nella cartella UniGOPictures creata sul tuo interno SD dall'app e dal progetto.
Passaggio 8: conclusione
È stato un compito enorme mettere insieme 2 diversi modi di programmare e 2 diversi modi di supervisionare. All'inizio è difficile essere abituati alle abilità di entrambi i modi. Ma ora funziona e una volta capito, ora puoi controllare sistemi più complicati.
Molte grazie a molti tutorial in tutto il mondo, ad Archie (AdvancedHMI), a RenéB2 (Yakindu) e a Mikael Andersson (Unigo Evolution) e agli sviluppatori di librerie arduino che mi hanno permesso di realizzare un progetto così "tecnologico".
Sans eux j'aurais peut être souffert d'un sentiment d'incomplétude infinie pour l'éternité. J'exagère un peu.
Istruttori felici.