Introduzione alla programmazione in PLC IDE con Finder OPTA

Guida per iniziare a programmare Finder OPTA in Arduino PLC IDE.

Guide and Tutorial | Introduzione alla programmazione in PLC IDE con Finder OPTA

Introduzione alla programmazione in PLC IDE con Finder OPTA

Guida per iniziare a programmare Finder OPTA in Arduino PLC IDE.

Panoramica

Questo tutorial offre un'introduzione alla programmazione PLC in Arduino PLC IDE con Finder OPTA. All’interno della guida scoprirai quali linguaggi di programmazione sono compatibili con Arduino PLC IDE e come utilizzarli in modo efficace.

Di cosa avrai bisogno

Prima di iniziare, assicurati di avere:

  • PLC Finder OPTA (x1)
  • Cavo USB-C (x1)
  • Arduino PLC IDE correttamente installato sul tuo computer.

Se non hai ancora attivato la licenza per il dispositivo Finder OPTA, segui questa guida per completare l'attivazione.

In questo tutorial si presume che tu abbia già familiarità con alcuni concetti di base, trattati nella guida “Primi passi con Finder OPTA e PLC IDE”. Se non l’hai ancora consultata, ti consigliamo di seguirla prima di procedere: ti fornirà le fondamenta necessarie per comprendere al meglio i passaggi descritti in seguito.

Lo standard IEC-61131-3

Lo standard IEC-61131-3 definisce un framework per la programmazione PLC, consentendo agli sviluppatori di scrivere codice in un formato uniforme, indipendentemente dal produttore dell'hardware.

IEC-61131-3 include cinque linguaggi di programmazione che possono essere utilizzati singolarmente o combinati all'interno dello stesso progetto:

  • Structured Text (ST)
  • Instruction List (IL)
  • Ladder Diagram (LD)
  • Sequential Function Chart (SFC)
  • Functional Block Diagram (FBD)

Arduino PLC IDE supporta tutti questi linguaggi, consentendo di combinarli nello stesso progetto e di farli interagire utilizzando variabili condivise.

Vedremo degli esempi pratici per ogni tipo di linguaggio, implementeremo la stessa funzione di contatore in ogni linguaggio. Prima di fare ciò dobbiamo creare delle variabili che ci serviranno per implementare il contatore.

Preparazione delle variabili e del Watch

In questo tutorial useremo delle variabili globali in modo da non doverle ricreare per ogni linguaggio. Se vuoi saperne di più sulle variabili globali e locali segui questa guida.

Per la funzione di contatore useremo due variabili, una viene usata come contatore che accumula il valore di conteggio, l'altra viene usata come incremento costante:

  • cnt: variabile con valore iniziale 0, viene usata per contenere il valore aggiornato del contatore.
  • addition: variabile con valore iniziale 1, il campo Attributo deve essere impostato su CONSTANT per segnalare che il valore è costante.

Per aggiungere le variabili accedi alla sezione Progetto > Global_vars. Imposta il valore iniziale della variabile cnt di default premendo sulla casella corrispondente.

Var Zero

Per inserire una nuova variabile premi il tasto destro e clicca su Inserisci.

Add Constant

Si creerà una nuova riga in tabella, modifica i seguenti valori:

  • Nome: addition.
  • Tipo: INT, deve essere di tipo intero.
  • Valore iniziale: 1.
  • Attributo: CONSTANT, indica che il valore è costante.

Set Value

A questo punto salva le modifiche premendo il pulsante Salva in alto a sinistra.

Save

Per monitorare la variabile di conteggio e capire se il suo valore sta incrementando, dobbiamo preparare il Watch. Se vuoi avere più informazioni su questo strumento segui questa guida.

Mostra la sezione del Watch selezionando Vista > Finestre Strumenti > Watch.

Watch

Per aggiungere la variabile al Watch trascina l'elemento cnt dalla lista delle variabili globali nello spazio del Watch.

Drag New Var

In alternativa, clicca su Inserisci nuovo elemento e scegli la variabile cnt dalla lista di variabili proposte.

Insert Watch

In questo modo avremo il Watch già pronto per monitorare la variabile cnt e controllare se i programmi scaricati su Finder OPTA funzionano.

Structured Text (ST)

Il Structured Text (ST) è un linguaggio di programmazione testuale simile al C, progettato per implementare logiche complesse in modo leggibile e strutturato. Il codice che implementa un contatore in ST è il seguente:

cnt := cnt + addition;

Questa istruzione aggiorna la variabile cnt sommando al suo valore attuale una costante (o variabile) addition. Copia il codice e incollalo nella voce main del menu ad albero nella sezione Progetto.

ST code

Successivamente, compila il codice utilizzando il pulsante Compile PLC project in alto a sinistra.

Compile

Adesso connettiti al dispositivo e scarica il codice su Finder OPTA premendo il pulsante Download PLC code.

Download Code

Ti verrà chiesto se desideri procedere con il reset delle variabili, premi per confermare

Confirm

Apri la finestra di Watch per verificare che il valore del contatore aumenti correttamente. Se il valore non è visibile, premi su Avvia/Arresta Watch.

Var Check

Se il valore di cnt si incrementa, significa che il programma di conteggio scritto in ST è stato caricato correttamente su Finder OPTA ed è in esecuzione senza errori.

Instruction List (IL)

Instruction List (IL) è un linguaggio di programmazione testuale compatto, simile ad Assembly. È particolarmente adatto per operazioni sequenziali e logiche semplici, utilizzando comandi diretti e sintassi lineare.

Un esempio di contatore in IL è il seguente:

LD cnt
ADD addition
ST cnt

Nel dettaglio:

  • LD cnt carica il valore della variabile cnt nello stack dell’unità logica.
  • ADD addition somma a questo valore quello della variabile addition.
  • ST cnt salva il risultato nuovamente nella variabile cnt.

Prima di procedere, elimina il programma precedente per evitare conflitti sulle variabili globali: fai clic con il tasto destro sul programma creato in precedenza e seleziona Delete program.

Delete Program

Ti verrà chiesto di confermare la cancellazione, premi .

Confirm

Adesso aggiungi il nuovo programma IL, per farlo premi il tasto destro sul nome del progetto e seleziona Aggiungi > Nuovo Programma.

Add IL Program

Imposta il linguaggio IL e assegna il programma al task di tipo Fast per aumentare la frequenza di esecuzione del programma. Se vuoi sapere di più sul funzionamento dei task segui questa guida.

IL Program

Copia il codice mostrato in precedenza ed inseriscilo nella voce main_IL del menu ad albero nella sezione Progetto.

IL Code

Adesso compila il programma premendo il tasto Compile PLC project in alto a sinistra.

Compile

Effettua la connessione a Finder OPTA e scarica il programma sul PLC premendo il pulsante Download PLC code.

Download Code

A questo punto il programma sta eseguendo su Finder OPTA, controlla il Watch come fatto precedentemente e verifica che il valore di cnt stiamo aumentando.

Watch

Se il contatore si aggiorna come previsto, il programma IL è stato caricato ed eseguito correttamente su Finder OPTA.

Ladder Diagram (LD)

Il Ladder Diagram (LD) è un linguaggio di programmazione basato su linee e blocchi, utilizzato per rappresentare logiche di controllo in modo visivo.

In un Ladder Diagram, ogni linea rappresenta un flusso di corrente virtuale che procede da sinistra a destra. Il flusso deve attraversare tutti i blocchi intermedi, come porte logiche (AND, OR), prima di raggiungere il lato destro, dove si trova una bobina (coil).

Se il flusso supera con successo tutti i blocchi intermedi, la bobina viene attivata, eseguendo l'azione associata, come ad esempio chiudere un contatto Normally-Open (NO) o attivare un relè.

Nel nostro caso, per scrivere una semplice funzione di conteggio, non servono i componenti contatto e coil. Useremo un blocco ADD a cui collegeremo le variabili degli addendi e quella del risultato.

Come prima cosa elimina i programmi creati in precedenza come mostrato di sopra e creane uno nuovo in linguaggio LD e assegnalo ad un task di tipo Fast. Il nuovo programma apparirà come nell'immagine seguente.

Ladder Program

Adesso dobbiamo aggiungere un blocco logico, per farlo vai nella sezione Library Tree, se non la vedi clicca su Vista > Finestre strumenti > Library Tree. Clicca sulla voce Operators and blocks poi su Aritmetica, vedrai comparire diverse tipologie di blocchi logici.

Add Block

Per aggiungere un blocco al tuo programma clicca sul nome del blocco desiderato, ADD nel nostro caso e trascinalo sul componente contatto a sinistra nel programma. In alternativa puoi cliccare con il tasto destro e selezionare l'opzione Nuovo Blocco, filtrare per Operatori e selezionare il blocco ADD dalla lista.

Drag Add Block

Una volta aggiunto il blocco, elimina i componenti contatto e coil cliccandoci sopra con il tasto destro e selezionando la voce Elimina; come detto in precedenza, non servono per il nostro esempio.

Delete Coil

A questo punto è necessario associare le variabili ai pin del blocco funzione, per il blocco ADD le variabili di input sono sul lato sinistro del blocco, quella di output è sul lato destro. Per collegare le variabili ai pin clicca sul pin di interesse, si aprirà una finestra da cui è possibile accedere ad un pulsante Sfoglia indicato da tre puntini.

Link Pin

Dalla lista scegli la variabile da associare al pin selezionato.

Var List

Una volta completata l'associazione, il tuo programma LD deve apparire come nella schermata seguente. Ricordati di associare cnt e addition come input e di nuovo cnt come output.

Program Overview

Salva il progetto.

Save

Procedi alla compilazione del programma premendo il pulsante Compile PLC project in alto a sinistra.

Compile

Connettiti a Finder OPTA e scarica il codice sul PLC premendo Download PLC code.

Download Code

Apri il Watch e monitora il valore della variabile cnt.

Watch

Se il contatore si aggiorna come previsto, il programma LD è stato caricato ed eseguito correttamente su Finder OPTA.

Sequential Function Chart (SFC)

SFC è un linguaggio che consente di scrivere programmi PLC in modo visivo, seguendo una logica simile a un diagramma di flusso. I programmi SFC sono composti da blocchi che eseguono operazioni specifiche, seguiti da transizioni che determinano il passaggio al passo successivo.

È importante notare che il linguaggio SFC non può interagire direttamente con gli output del dispositivo. Per controllare le uscite è necessario utilizzare azioni, ovvero script scritti in altri linguaggi.

In questa sezione vedremo come scrivere un contatore in SFC. Prima di tutto elimina i programmi creati precedentemente e aggiungine uno nuovo impostando il linguaggio su SFC e assegnandolo al task Fast.

Sfc Program

Creare un’azione

Un’azione è un blocco di codice, scritto in un altro linguaggio - ad esempio ST -, che viene eseguito quando attivato da uno step nel diagramma SFC.

Per creare una nuova azione clicca con il tasto destro sulla voce del nuovo programma e seleziona Nuova Azione.

New Action

A questo punto seleziona il linguaggio di interesse, nel nostro caso useremo ST, e nomina la nuova azione.

St Action

Per accedere al codice dell'azione appena creata naviga nella voce di menu del programma SFC, espandi la voce Azioni e clicca sul nome dell'azione.

St Code

In questo modo puoi inserire il codice ST che preferisci, per il nostro esempio, inseriamo lo stesso codice che abbiamo visto precedentemente per la sezione del linguaggio ST. Copia il codice seguente e inseriscilo nel programma come in figura.

cnt := cnt + addition;

Save

Dopo averlo inserito, salva il progetto.

Programma SFC

Un programma SFC segue una sequenza precisa:

Passo0 → Transizione0 → Passo1 → Transizione1 → … → Salto
  • Un Passo rappresenta un'azione da eseguire.
  • Una Transizione indica quando passare allo step successivo, in base al risultato dell’azione precedente.
  • Un Salto serve per collegarsi a un altro step nel diagramma. Se vuoi creare un ciclo, usa un Jump per tornare allo step iniziale chiamato Init.

Prima di iniziare, premi il tasto destro e controlla che l'opzione Autoconnessione sia abilitata, questa funzione ti permette di collegare i blocchi automaticamente dopo l'aggiunta.

Autoconnection

Per aggiungere una transizione premi il tasto destro e seleziona Oggetto > Nuovo > Transizione. Oppure puoi usare la barra strumenti SFC che viene mostrata selezionando Vista > Barra degli strumenti > SFC.

New Transition

Collega la transizione all'output del blocco Init. Le transizioni sono richieste dopo ogni blocco di azione Passo, per il nostro esempio ci basta usare una semplice transizione fissata a True.

True Transition

Adesso aggiungi un blocco Salto, questo blocco permette di ricollegare il flusso ad un blocco già esistente.

New Jump

Associa il nuovo blocco al blocco Init in modo da permettere al programma di ripartire da capo.

Jump To Init

Nei blocchi azione puoi impostare due modalità di esecuzione:

  • Codice P (Pulse): l’azione viene eseguita una sola volta ogni volta che il blocco si attiva.
  • Codice N (Normal not stored): l’azione viene eseguita in modo continuativo, a ogni ciclo del PLC, finché il blocco rimane attivo.

Nel nostro esempio utilizzeremo il Codice N, così da poter osservare l’incremento costante del valore di cnt. Per impostare questa modalità, seleziona il blocco Init, aggiungi o modifica l’azione e assegna ad essa il Codice N.

N Code Counter

A questo punto salva, compila il progetto, connettiti a Finder OPTA e scarica il codice sul PLC con Download PLC code.

Download Code

Apri il Watch e inizia a monitorare la variabile cnt.

Watch

Se il contatore si aggiorna come previsto, il programma SFC è stato caricato ed eseguito correttamente su Finder OPTA.

Functional Block Diagram (FBD)

FBD è un linguaggio che consente di scrivere programmi PLC utilizzando una rappresentazione grafica basata su blocchi funzionali. In FBD non esiste un flusso sequenziale rigido: i blocchi vengono eseguiti simultaneamente a ogni ciclo di scansione del PLC, in base alle connessioni tra ingressi e uscite.

Ogni blocco rappresenta una specifica funzione logica o matematica. Ad esempio, aggiungendo un blocco Add, si esegue l’operazione di somma a ogni ciclo di esecuzione.

Per implementare un contatore in FBD è molto semplice, inizia eliminando i programmi creati nei passaggi precedenti e aggiungine uno nuovo al progetto selezionando il linguaggio FBD e assegnandolo al task di tipo Fast.

FBD Program

A questo punto i passaggi sono molto simili a quelli visti nella sezione dedicata al programma LD. Aggiungi un blocco di tipo ADD trascinandolo dalla sezione Library Tree oppure usando il menu del tasto destro.

Add Block

Associa le variabili di interesse come visto in precedenza: gli input cnt e addition a sinistra del blocco, l'output cnt a destra del blocco. Per farlo ti basterà fare doppio clic sull'estremità dei connettori del blocco ADD. Una volta configurati, i pin appariranno come in seguito.

Program Configuration

A questo punto salva, compila il progetto, connettiti a Finder OPTA e scarica il codice sul PLC con Download PLC code.

Download Code

Apri il Watch e inizia a monitorare la variabile cnt.

Watch

Se il contatore si aggiorna come previsto, il programma FBD è stato caricato ed eseguito correttamente su Finder OPTA.

Integrazione con gli sketch Arduino

Oltre ai linguaggi standard, PLC IDE consente di integrare anche sketch Arduino, permettendo di combinare la programmazione PLC con il codice C++. Questa integrazione avviene attraverso variabili condivise, che consentono di far comunicare il codice IEC-61131-3 con gli sketch Arduino.

In questo modo, è possibile — ad esempio — riutilizzare la logica PLC esistente e arricchirla con codice C++ per implementare funzionalità avanzate. Questo approccio permette di espandere un sistema esistente senza doverne riprogettare la logica di base.

In questa sezione vedremo come far comunicare uno sketch Arduino con un programma ST. Scriveremo un contatore in C++ che comunica con il codice ST in modo da poter controllare che la variabile si aggiorni correttamente.

Elimina i programmi scritti in precedenza, creane uno nuovo in linguaggio ST e assegnalo al task Fast. È necessario aggiungere una variabile condivisa che possa essere accessibile sia dallo sketch che dal programma ST. Le variabili condivise sono suddivise in due tipologie:

  • Input: le variabili di input vengono utilizzate per passare un valore dal programma PLC allo sketch e sono accessibili con il prefisso PLCIn.
  • Output: le variabili di output vengono utilizzate per passare un valore dallo sketch al programma PLC e sono accessibili con il prefisso PLCOut.

In questo caso avremo bisogno di utilizzare una varibile di output che viene aggiornata dallo sketch. Per aggiungere una variabile di output vai nella sezione Risorse, espandi Shared variables e seleziona la voce Outputs. Comparirà una lista vuota, clicca sul pulsante Aggiungi e rinomina la variabile appena aggiunta come di seguito.

Shared Outputs

Ora scriviamo il codice C++ che implementa la logica del contatore. Definiamo innanzitutto una variabile costante – addition_cpp – utilizzata come incremento. All’interno della funzione loop(), aggiorniamo la variabile condivisa cnt_cpp sommando il valore di addition_cpp ad ogni ciclo. Ricorda che le variabili di output condivise sono accessibili dallo sketch tramite il prefisso PLCOut. Inseriamo inoltre un delay di 1 secondo nel ciclo, in modo da rendere facilmente osservabile l’incremento della variabile durante il monitoraggio.

Copia il codice che trovi in seguito e incollalo nella pagina di Sketch all'interno della sezione Risorse.

const int addition_cpp = 1;

void setup()
{
}

void loop()
{
    PLCOut.cnt_cpp += addition_cpp;
    delay(1000);
}

Sketch

A questo punto non ti resta che scrivere un semplice programma ST che sostituisca il valore della variabile globale cnt con il valore aggiornato di cnt_cpp. Di seguito il codice da incollare all'interno del programma, segui il procedimento indicato nella sezione dedicata al linguaggio ST.

cnt := cnt_cpp;

ST Program

Salva il progetto, compilalo, connettiti a Finder OPTA e scarica il codice sul PLC. Poi apri il Watch e inizia a monitorare la variabile cnt.

Watch

Se il contatore si aggiorna come previsto, lo sketch è stato caricato e comunica correttamente con il programma ST.

Aggiungere una libreria allo sketch

Come già anticipato, PLC IDE permette di combinare la programmazione PLC con il codice C++.

Se vuoi aggiungere una libreria allo sketch, vai alla scheda Risorse e fare clic su Libraries, sotto la voce Sketch.

Sketch Libraries

Con la finestra Sketch Libraries aperta, fai clic su Aggiungi e verrà aggiunta una riga alla lista. Inserisci manualmente nome e versione della libreria, verificabili nella documentazione della libreria stessa disponibile. In questo esempio aggiungiamo la libreria ArduinoHttpClient, il numero di versione e la sua documentazione si trovano a questo link.

Add Libraries

Una volta aggiunta la libreria al progetto non resta che includerla nel codice, per farlo clicca sulla voce Sketch del menu Risorse e inserisci la seguente riga in testa al codice:

#include <ArduinoHttpClient.h>

Sketch Editor

In questo modo la libreria è utilizzabile in tutto il codice dello sketch.

Nota: attualmente, PLC IDE può includere solo librerie indicizzate pubblicamente sul sito di Arduino.

Conclusione

In questo tutorial abbiamo esplorato le potenzialità di Arduino PLC IDE con Finder OPTA, mostrando come configurare variabili globali e creare programmi di esempio nei cinque linguaggi IEC-61131-3 (ST, IL, LD, SFC e FBD). Abbiamo inoltre illustrato come integrare uno sketch Arduino C++ tramite variabili condivise, ampliando così le funzionalità del PLC con codice C++.