E’ possibile utilizzare una scheda Arduino come slave per espandere gli I/O di un dispositivo hardware su cui funziona OpenPLC. Questa operazione è particolarmente utile se state lavorando con OpenPLC in esecuzione su un computer Windows o Linux, in questo modo collegando una scheda Arduino potremo aggiungere un’interfaccia fisica di gestione degli I/O del nostro PLC.
La scheda Arduino può essere utilizzata solo come dispositivo slave, pertanto è essenziale impostare un host, ovvero avere un OpenPLC Runtime installato su un computer con sistema operativo Windows o Linux, così come visto nelle lezioni precedenti. Vedremo inoltre nella successiva lezione come installare OpenPLC su un computer Raspberry Pi e su un Raspberry Pi 400 ed utilizzare la GPIO come I/O del nostro PLC.
Effettuare l’upload del Firmware su Arduino
Selezionate la versione corretta del firmware (si tratta di uno sketch Arduino che deve essere eseguito) per la scheda che possedete, scompattate e caricatela sulla scheda Arduino:
Aggiungere lo slave ad OpenPLC
Installato il firmware sulla scheda e mantenendo la scheda connessa al computer con cavo USB, avviare il OpenPLC Runtime sul vostro computer, effettuate il login con le vostre credenziali. Accedere al menù “Slave Devices” e clic su “Add new device”:
Compilare tutti i campi, evitare caratteri accentati come ad esempio: ç, é, ó, ñ, selezionare la scheda Arduino utilizzata, la porta COM viene identificata automaticamente, in ogni caso se doveste avere dei problemi vi ricordo che la porta COM a cui è connessa la scheda può essere desunta dall’IDE di Arduino oppure verificando dal vostro sistema operativo, quali sono le periferiche connesse.
Avviate il PLC facendo clic su “Start PLC”. Se all’interno della dashboard di OpnePLC vengono visualizzati messaggi di timeout, non preoccupatevi è una situazione normale, tutte le schede Arduino hanno una funzione di ripristino automatico che riavvia la scheda ogni volta che viene effettuata una nuova connessione USB, quindi una volta che OpenPLC avvia una comunicazione, il primo tentativo di inviare un messaggio alla scheda fallisce perché la scheda Arduino si sta ancora avviando dopo un ripristino. Dopo pochi millisecondi la scheda è completamente operativa, dovreste vedete i LED Tx ed Rx lampeggiare, ciò identifica il funzionamento del sistema.
Mappa dei Pin
Nelle tabelle che seguono è indicata la mappatura dei pin per le schede Arduino Uno e Arduino Mega. La mappatura si riferisce all’ultima versione di OpenPLC, la v3.
Ricordate che, per quanto riguarda le schede Arduino, gli I/O hanno una numerazione che differisce da altri hardware.
Mappatura pin Arduino UNO
input digitali | Arduino Pin | OpenPLC I/O |
2 | %IX100.0 | |
3 | %IX100.1 | |
4 | %IX100.2 | |
5 | %IX100.3 | |
6 | %IX100.4 | |
output digitali | 7 | %QX100.0 |
8 | %QX100.1 | |
12 | %QX100.2 | |
13 | %QX100.3 | |
input analogici | A0 | %IW100 |
A1 | %IW101 | |
A2 | %IW102 | |
A3 | %IW103 | |
A4 | %IW104 | |
A5 | %IW105 | |
output analogici | 9 | %QW100 |
10 | %QW101 | |
11 | %QW102 |
Mappatura pin Arduino MEGA
input digitali | Arduino Pin | OpenPLC I/O |
22 | %IX100.0 | |
24 | %IX100.1 | |
26 | %IX100.2 | |
28 | %IX100.3 | |
30 | %IX100.4 | |
32 | %IX100.5 | |
34 | %IX100.6 | |
36 | %IX100.7 | |
38 | %IX101.0 | |
40 | %IX101.1 | |
42 | %IX101.2 | |
44 | %IX101.3 | |
46 | %IX101.4 | |
48 | %IX101.5 | |
50 | %IX101.6 | |
52 | %IX101.7 | |
14 | %IX102.0 | |
15 | %IX102.1 | |
16 | %IX102.2 | |
17 | %IX102.3 | |
18 | %IX102.4 | |
19 | %IX102.5 | |
20 | %IX102.6 | |
21 | %IX102.7 | |
output digitali | 23 | %QX100.0 |
25 | %QX100.1 | |
27 | %QX100.2 | |
29 | %QX100.3 | |
31 | %QX100.4 | |
33 | %QX100.5 | |
35 | %QX100.6 | |
37 | %QX100.7 | |
39 | %QX101.0 | |
41 | %QX101.1 | |
43 | %QX101.2 | |
45 | %QX101.3 | |
47 | %QX101.4 | |
49 | %QX101.5 | |
51 | %QX101.6 | |
53 | %QX101.7 | |
input analogici | A0 | %IW100 |
A1 | %IW101 | |
A2 | %IW102 | |
A3 | %IW103 | |
A4 | %IW104 | |
A5 | %IW105 | |
A6 | %IW106 | |
A7 | %IW107 | |
A8 | %IW109 | |
A9 | %IW109 | |
A10 | %IW110 | |
A11 | %IW111 | |
A12 | %IW112 | |
A13 | %IW113 | |
A14 | %IW114 | |
A15 | %IW115 | |
output analogici | 2 | %QW100 |
3 | %QW101 | |
4 | %QW102 | |
5 | %QW103 | |
6 | %QW104 | |
7 | %QW105 | |
8 | %QW106 | |
9 | %QW107 | |
10 | %QW108 | |
11 | %QW109 | |
12 | %QW110 | |
13 | %QW111 |
Buon Making (di automazione) a tutti 🙂