OpenPLC Editor consente di scrivere programmi PLC per il runtime OpenPLC. I programmi sono scritti secondo lo standard IEC 61131-3. L’editor è molto semplice da usare e supporta tutti e cinque i linguaggi definiti nello standard: Ladder Logic (LD), Function Block Diagram (FBD), Instruction List (IL), Structured Text (ST) e Sequential Function Chart (SFC).
Se avete scaricato la versione Windows di OpenPLC, l’editor viene installato automaticamente con OpenPLC runtime, nel caso comunque abbiate necessità di prelevare solo l’editor questo il link:
OpenPLC Editor v1.0 for Windows
Installazione Windows
Effettuate il download, scompattare il file zip, doppio clic su OpenPLC Editor.
Installazione Linux
Aprite il terminale e digitate le seguenti quattro linee di comando
sudo apt-get install git git clone https://github.com/thiagoralves/OpenPLC_Editor cd OpenPLC_Editor ./install.sh
Quando l’installazione termina troverete un collegamento all’applicazione dal menù delle applicazioni.
Realizziamo il primo programma
Per illustrare il funzionamento riprenderò il medesimo esempio presente sul sito di riferimento e sul medesimo circuito realizzeremo altre semplici automazioni.
Gli esempi proposti presuppongono una conoscenza di base sulla programmazione in Ladder Logic (LD).
Sono necessari:
- OpenPLC
- N.2 pulsanti normalmente aperti
- N. 1 LED
Per semplicità di utilizzo per gli studenti, lavoreremo a bassa tensione, 5V cc.
Si realizzi il seguente circuito:
Osservazioni
- +V è la tensione positiva del vostro dispositivo, +5V per Arduino, +3,3V per Raspberry Pi e +24V per un impianto industriale.
- Pulsante1 e Pulsante2 sono due pulsanti, R1 and R2 sono due resistori di pull-down che possono essere scelti con valori tra 1K Ohm a 10K Ohm. Se utilizzate un PLC industriale i resistori di pull-down sono integrati all’interno del dispositivo pertanto i pulsanti Pulsante1 e Pulsante2 possono essere collegati direttamente agli ingressi dello slave, nel nostro caso trattandosi di una scheda Arduino saranno: %IX100.0 e %IX100.1.
- Fate attenzione che su Raspberry Pi, i primi due ingressi (%IX0.0 e %IX0.1) sono negati direttamente nell’hardware e ciò potrebbe causare qualche confusione, quindi per mantenere le stesse funzionalità del circuito indicato sopra potete, nel LADDER, usare contatti negati, oppure più semplicemente potete utilizzare due ingressi diversi come %IX0.2 e %IX0.3.
Per realizzare un nuovo programma aprite OpenPLC Editor e fate clic su File -> Nuovo
Verrà mostrata una finestra che vi permetterà di selezionare dove salvare il programma. In realtà ciò che andrete a salvare non sarà un solo file, ma una collezione di file inseriti all’interno di una cartella che avrà come nome il nome del progetto che avete scelto.
Verrà mostrata inoltre una nuova finestra in cui verrà chiesto di creare un nuovo POU (Program Organization Unit). Il POU viene utilizzato per memorizzare tutto il codice che andrete a scrivere nel progetto. Una volta selezionata la posizione, OpenPLC Editor creerà il progetto con le impostazioni e le configurazioni predefinite e aprirà una nuova finestra di dialogo che vi chiederà di creare una nuova POU .
Esistono tre tipi di POU:
- Programma – codice dell’applicazione che combina ingressi, uscite, funzioni e blocchi funzione
- Funzione: codice utente riutilizzabile che restituisce un valore restituito.
- Blocco funzione: codice utente riutilizzabile che può mantenere il suo stato (istanza)
Per questa lezione realizziamo un POU di tipo programma, pertanto, inserite il nome del programma e scegliete come linguaggio il LADDER (LD). Ricordate che che il nome del programma non potrà contenere spazi e caratteri speciali.
Quando create un nuovo programma, l’editor OpenPLC crea automaticamente: configurazione, risorse attività e istanze, tutti questi elementi indicheranno a OpenPLC cosa farà il vostro programma. Per modificare i singoli elementi fate doppio clic su Res0 nel pannello di sinistra.
La finestra principale visualizzerà un campo di immissione per le variabili globali in alto (che vi consente di creare variabili globali per il vostro programma), una finestra Tasks (Attività) e una finestra Istances (Istanze). Potete creare nuove attività facendo clic sul segno più verde all’interno della finestra Tasks.
Per questo programma non andremo a creare nuove attività, tuttavia tale operazione potrebbe servire nel caso in cui si desidera far eseguire OpenPLC su hardware diverso (vedremo più avanti alcuni esempi).
I programmi per PLC sono eseguiti in modo ciclico dalla prima istruzione all’ultima e poi si ripetono. Il task Interval indica la frequenza con cui verrà chiamato il ciclo del programma. Il valore predefinito è 20 ms, il che significa che il programma verrà eseguito una volta ogni 20 ms. Il tempo ciclo di loop può essere impostato dall’utente, tenete in conto però che se scegliete un ciclo di loop molto basso, come ad esempio 1 ms, il programma potrebbe occupare il 100% delle risorse della CPU provocando un non corretto funzionamento del programma. Un valore di default ottimale per tutte le piattaforme è 50 ms.
Potete ora iniziare a programmare in LADDER clic sul nome del programma nel pannello di sinistra per aprire l’editor. La parte superiore dello schermo è riservata alle variabili. La parte centrale viene utilizzata per il diagramma. Iniziamo aggiungendo alcune variabili. Fare clic sul segno più verde e aggiungere tre variabili:
Nome | Class | Type | Location |
Pulsante1 | Local | BOOL | %IX100.0 |
Pulsante2 | Local | BOOL | %IX100.1 |
Lampada | Local | BOOL | %QX100.0 |
Si vuole realizzare la seguente automazione: ogni volta che viene premuto Pulsante1, la Lampada si accende e rilasciando Pulsante1 la Lampada rimane accesa. La pressione del Pulsante2 permette di spegnere la Lampada.
Per svolgere questa funzione dobbiamo implementare un’autoritenuta sulla bobina che comanda la lampada.
Bisognerà realizzare il seguente programma:
Per creare questo circuito, iniziamo aggiungendo una barra di alimentazione sinistra facendo clic sull’icona della barra di alimentazione nella barra degli strumenti.
Per impostare due punti di alimentazione, regolate la dimensione della barra di alimentazione allungandola oppure aggiungendo il numero di punti di connessione nella pannello: Power Rail Properties, nel nostro caso 2.
Aggiungiamo i contatti facendo clic sul pulsante del contatto sulla barra degli strumenti o facendo clic con il pulsante destro del mouse sulla finestra dell’editor vuota e selezionando Aggiungi -> Contatto.
Nella finestra che compare, sotto il parametro “Variabile”, seleziona Pulsante1 per associare il nuovo contatto alla variabile Pulsante1. Il contatto verrà inserito nell’area di lavoro.
Ripetere il procedimento indicato sopra per aggiungere altri due contatti, uno associato al Pulsante2 e l’altro associato alla Lampada. Per il contatto Pulsante2, selezionare Negato come modificatore. Infine aggiungete una bobina associata alla variabile Lampada facendo clic sul pulsante della bobina sulla barra degli strumenti in alto oppure clic con il pulsante destro del mouse sulla finestra dell’editor vuota e selezionando Aggiungi -> bobina. Aggiungete una barra di alimentazione destra per chiudere il circuito.
Il passaggio finale consiste nel collegare tutti i componenti trascinando le loro estremità per formare una linea. Collegare il lato sinistro del Pulsante1 e dei contatti Lampada con la barra di alimentazione sinistra. Collegare il lato destro di Pulsante1 con Pulsante2, il lato destro di Pulsante2 con la bobina Lampada e il lato destro della bobina Lampada con la barra di alimentazione destra. Disegnare il circuito dei contatti Lampada in parallelo collegando il lato destro del contatto Lampada con Pulsante2:
Avviamo la simulazione della nostra simulazione facendo clic sulla barra in alto.Quando fate clic sul pulsante di “Avvia”, il vostro progetto viene compilato utilizzando un processo simile a OpenPLC Runtime. Se ci sono errori nel programma, la compilazione fallirà e sarete avvisati della tipologia degli errori nel pannello Console nella parte inferiore dello schermo. Se la compilazione va a buon fine OpenPLC Editor inizierà a eseguire il codice.
All’avvio del programma la Lampada risulta spenta, quando si preme Pulsante1 anche per un piccolo istante, il circuito accende la Lampada (in quanto non viene premuto anche Pulsante2). Una volta accesa, il contatto della bobina Lampada bypassa il Pulsante1 sul circuito per accendersi continuamente anche dopo che Pulsante1 non viene più premuto. Per spegnere la Lampada premere Pulsante2. Poiché Pulsante2 è un contatto negato, una volta premuto aprirà il circuito, spegnendo quindi la Lampada. In altro modo possiamo dire che premendo Pulsante2, la bobina Lampada non viene più alimentata ed il suo contatto commuta, pertanto la Lampada si spegnerà.
Per visualizzare il vostro codice in esecuzione in modo interattivo, fare clic su Debug instance nel pannello di sinistra. Si aprirà una nuova finestra in cui potrete vedere il flusso elettrico del programma. Le linee in verde indica attivazione (passaggio di corrente), mentre le linee in nero non sono attivate (non passa corrente).
È possibile forzare l’attivazione o la disattivazione di un contatto o di una bobina facendo clic con il pulsante destro del mouse su di esso e selezionando Force True o Force False. Provate a forzare Pulsante1 su True (vero) e osservate il percorso del flusso di corrente verso la bobina Lampada. Quindi forzare Pulsante1 di nuovo su false e verificare che Lampada sia ancora attivato a causa del circuito di latch (autoritenuta).
Un’operazione utilissima è l’utilizzo del Debugger per l’analisi delle variabili in tempo reale del vostro programma in esecuzione, quindi oltre a visualizzare graficamente il flusso elettrico sul circuito, potete anche visualizzare il valore delle variabili durante l’esecuzione dal pannello Debugger sul lato destro dello schermo. Potete aggiungere variabili al pannello Debugger facendo clic sull’icona degli occhiali davanti a ciascuna variabile dal pannello a sinistra. Inoltre, facendo doppio clic su una variabile nel pannello Debugger è possibile visualizzare lo stato in tempo reale delle variabili.
Dopo aver realizzato il vostro programma, l’ultimo passaggio consiste nella salvataggio del file compilato che verrà successivamente eseguito da OpenPLC Runtime. Il clic sul pulsante Generate program, nella barra degli strumenti, causa la compilazione e una successiva richiesta di salvataggio del file sul computer, il file avrà estensione .st. Per l’esecuzione del programma da parte di OpenPLC Runtime sugli apparati reali, sarà necessario caricare mediante interfaccia web il programma e mandare in esecuzione il PLC, vedremo questa procedura nella prossima lezione.
Buona Automazione a tutti 🙂
lavoro apprezzabile credo che lo condividerò con gli studenti
Grazie 🙂