Come creare un progetto di automazione di esempio in CODESYS

Di Aharon Etengoff

Contributo di Editori nordamericani di DigiKey

L'adozione di una nuova piattaforma di automazione può implicare curve di apprendimento ripide e sollevare preoccupazioni sulla scelta obbligata di un unico fornitore, anche per esigenze future. CODESYS affronta queste sfide con un ambiente di sviluppo indipendente dall'hardware basato sulla norma IEC 61131-3. Offre un flusso di lavoro unificato per la programmazione, la mappatura degli I/O, la visualizzazione e la distribuzione su più piattaforme hardware.

Questo articolo mostra come creare un progetto di automazione completo in CODESYS, dalla configurazione iniziale al test di esecuzione. I lettori configureranno l'albero del dispositivo, mapperanno i canali di I/O, programmeranno la logica in testo strutturato, definiranno le visualizzazioni, si collegheranno a un ambiente di runtime e applicheranno strategie di debug per verificare il funzionamento. Oltre alle istruzioni pratiche, l'articolo evidenzia le best practice per l'organizzazione del progetto, la gestione della libreria e la distribuzione sicura.

Sebbene l'esercitazione utilizzi il simulatore integrato di CODESYS per l'accessibilità, lo stesso flusso di lavoro si applica alle piattaforme hardware disponibili presso DigiKey, come i PLC abilitati per CODESYS, i controller industriali Raspberry Pi (come EdgeBox-RPI-200 di Seeed) e gli HMI con runtime integrato. Alla fine, i lettori avranno un quadro chiaro per creare un'applicazione di automazione funzionante in CODESYS, con una visione delle tecniche che supportano la scalabilità e l'affidabilità in ambienti industriali.

Impostazione del progetto

Il primo passo consiste nel creare un nuovo progetto nel sistema di sviluppo CODESYS. Dall'elenco dei modelli, selezionare Standard Project e assegnare un nome descrittivo, ad esempio MotorControlDemo. Quando viene richiesto un dispositivo, scegliere CODESYS Control Win V3, che fornisce un runtime basato su Windows per la simulazione senza hardware dedicato. Ciò consente di testare l'intero flusso di lavoro prima di distribuirlo su piattaforme quali PLC o moduli industriali Raspberry Pi.

Il progetto si apre con una struttura ad albero dei dispositivi, che organizza i controller, i canali di I/O e i collegamenti di comunicazione. In questo esempio, l'albero contiene un oggetto controller, ingressi digitali per i pulsanti di avvio e arresto e uscite digitali per un motore e una spia luminosa. Per collegare questi segnali alla logica di controllo, dichiarare variabili booleane come StartButton, StopButton, MotorOn e LampOn nell'elenco delle variabili globali o nell'editor del programma. Nella simulazione, l'alternanza di questi valori imita il comportamento dell'hardware. Sull'hardware, si legano direttamente ai punti di I/O fisici.

Immagine delle dichiarazioni di variabili booleane per gli I/O di controllo motoriFigura 1: Dichiarazioni di variabili booleane per l'I/O di controllo motori. (Immagine per gentile concessione dell'autore)

La denominazione chiara e coerente in questa fase è consigliata per ridurre al minimo il lavoro di debug e semplificare la scalabilità quando si aggiungono nuove funzioni o dispositivi.

Logica di programmazione

Una volta definita la struttura del progetto, il passo successivo è l'implementazione della logica di controllo in testo strutturato (ST), uno dei linguaggi IEC 61131-3 supportati da CODESYS. ST utilizza una sintassi simile al linguaggio Pascal che combina leggibilità e potenza espressiva, supportando una chiara implementazione di routine sequenziali e di logica basata sugli stati.

Il progetto dimostrativo richiede un semplice blocco di avvio/arresto: premendo il pulsante di avvio si eccitano il motore e la lampada, mentre premendo il pulsante di arresto si diseccitano entrambi. Questo è espresso in ST come illustrato nella Figura 2.

Immagine dell'implementazione di testo strutturato della logica del blocco di avvio/arrestoFigura 2: Implementazione di testo strutturato della logica del blocco di avvio/arresto. (Immagine per gentile concessione dell'autore)

Questo esempio illustra i fondamenti di ST, compresi gli enunciati condizionali, la logica booleana e l'assegnazione di variabili. Poiché le variabili sono state definite durante la fase di impostazione del progetto, si riferiscono direttamente ai canali di I/O, creando un ponte tra i segnali hardware e l'esecuzione del programma.

Per i progetti più grandi, l'organizzazione è fondamentale. Il codice di inizializzazione può impostare gli stati predefiniti, mentre le attività cicliche monitorano gli ingressi e pilotano le uscite. I blocchi funzione e le librerie aiutano a incapsulare la logica, a ridurre la ridondanza e a migliorare la leggibilità. Lo stesso codice ST sviluppato in simulazione può essere successivamente implementato sull'hardware reso disponibile da DigiKey, come i PLC o i PAC compatti, con modifiche minime. Questa portabilità rafforza il valore di CODESYS come ambiente indipendente dall'hardware. In particolare, separare l'inizializzazione, il monitoraggio ciclico e la gestione degli errori è una best practice che migliora la leggibilità e garantisce un'esecuzione prevedibile quando si prevede l'espansione di un progetto.

Configurazione dei dispositivi e della mappatura I/O

Una volta definiti la struttura del progetto e le variabili, il passo successivo consiste nel collegare le variabili all'hardware o all'I/O simulato attraverso la mappatura degli I/O. In CODESYS, se ne occupa la scheda I/O Mapping dell'editor dispositivi, dove ogni canale è abbinato a una variabile di progetto.

Si inizia inserendo un controller e i suoi moduli di I/O nell'albero dei dispositivi. Ad esempio, è possibile aggiungere un modulo con due ingressi e due uscite digitali. Una volta presente un dispositivo con capacità di I/O, si attiva la scheda I/O Mapping, che visualizza una tabella di canali di ingresso e di uscita con colonne per i nomi delle variabili, gli indirizzi e i tipi di dati. Le descrizioni dei dispositivi forniscono in genere nomi e indirizzi predefiniti, che possono essere modificati per adattarli al cablaggio del sistema o alle convenzioni di denominazione.

Nella scheda I/O Mapping, le variabili possono essere mappate ai canali in tre modi: collegando una variabile esistente (ad esempio, StartButton, MotorOn), generando una nuova variabile globale implicita all'interno dell'interfaccia o modificando direttamente gli indirizzi per adattarli ai requisiti del progetto. Le variabili mappate sugli ingressi sono per definizione di sola lettura e ogni variabile può essere mappata su un solo canale.

Negli ambienti di produzione, la mappatura richiede anche attenzione alle specifiche dell'interfaccia elettrica, compresi i livelli di segnale, i valori nominali dei moduli e la messa a terra. Questi fattori esulano dall'ambito di questo tutorial, ma rimangono fondamentali per la distribuzione dell'hardware.

Per la documentazione o la modifica in blocco, le mappature possono essere esportate o importate come file CSV. L'esportazione dei dati di mappatura in CSV è ideale, in quanto fornisce la documentazione per gli audit e un riferimento affidabile per la collaborazione del team.

Visualizzazione e HMI

Una volta stabilita la logica, il passo successivo è la creazione di un'interfaccia utente che controlli e monitorizzi il sistema. CODESYS offre un set di strumenti di visualizzazione integrato, che supporta diverse modalità di distribuzione - WebVisu, TargetVisu e CODESYS HMI - consentendo la visualizzazione su browser web, display locali o dispositivi dedicati.

Nella struttura del dispositivo, sotto il nodo Application, aggiungere un oggetto Visualization Manager, quindi aggiungere uno o più schermi di visualizzazione, come MainVisu. In ogni schermata, trascinare gli elementi dell'interfaccia utente, come pulsanti, spie/indicatori, visualizzazioni di tracce o grafici di tendenza. Questi elementi sono legati a variabili di programma (es., StartButton, LampOn) tramite la finestra di dialogo delle proprietà dell'elemento.

Ad esempio, per visualizzare lo stato del motore, inserire un elemento lampada e impostare il suo collegamento variabile su LampOn. Quando la variabile è VERA, la lampada si accende; quando è FALSA, rimane spenta. Questo legame diretto tra variabili ed elementi offre un'interazione intuitiva in fase di esecuzione.

Opzioni della modalità di distribuzione

Una volta progettata l'interfaccia, il passo successivo è decidere come distribuire la visualizzazione agli operatori o ai sistemi esterni. CODESYS supporta diverse modalità di distribuzione, ciascuna mirata a diverse prestazioni e requisiti di rete:

  • WebVisu: funziona come HTML5 in un browser web, con il dispositivo che funge da server web su HTTP/HTTPS. Offre l'accesso remoto senza un display dedicato.
  • TargetVisu: viene eseguito su un display collegato direttamente al controller o al dispositivo. Efficiente per i sistemi embedded che combinano controllo e HMI in un'unica unità.
  • CODESYS HMI: un'istanza runtime separata dedicata alla visualizzazione, in grado di collegarsi a più controller.

Nella scelta di una modalità di distribuzione, occorre considerare le prestazioni, le esigenze di visualizzazione e la topologia di rete. Sebbene WebVisu sia flessibile, i controller potrebbero dover supportare il server HTTP e carichi aggiuntivi. TargetVisu riduce la latenza di rete, ma richiede il supporto del display locale, mentre la modalità HMI è adatta a sistemi con più controller.

Esempio hardware concreto

Come riferimento hardware, cMT3072XHT 7" HMI di Maple Systems disponibile su DigiKey offre runtime e un display CODESYS integrati, che gli consentono di ospitare direttamente le schermate di visualizzazione create nel progetto.

Le best practice di disegno della visualizzazione includono l'uso di schermate di libreria e interfacce di parametri per creare modelli riutilizzabili. Il progettista dovrebbe inoltre configurare le visualizzazioni degli allarmi e delle tracce in modo da mostrare solo le variabili critiche, riducendo al minimo il carico del controller. Ciò consente di supportare più lingue e la conversione delle unità di misura con elenchi di testo e scalatura variabile. Inoltre, si consiglia di bloccare le posizioni degli elementi con snapline o contenitori per mantenere un layout coerente tra le varie dimensioni dello schermo.

Una volta collegata la visualizzazione, l'applicazione è completamente interattiva. L'utente può avviare e arrestare il motore, monitorare gli indicatori e visualizzare gli stati in tempo reale attraverso l'HMI. Così si completa la fase di visualizzazione e si prepara il progetto per il test di esecuzione.

Distribuzione e test di esecuzione

Una volta completate la programmazione e la visualizzazione, il progetto deve essere distribuito in un ambiente di esecuzione. CODESYS supporta diverse opzioni, dal simulatore integrato Control Win SL ai programmi di runtime con licenza su hardware industriale.

Dal menu Online in Development System, selezionare il dispositivo o il simulatore desiderato e stabilire una connessione. Scaricare il progetto compilato nell'ambiente di esecuzione, con l'IDE che visualizza lo stato di trasferimento ed evidenzia eventuali errori di configurazione. Dopo averlo caricato, portare il controller in modalità RUN per iniziare l'esecuzione.

Il programma di runtime Windows integrato offre una verifica rapida senza hardware, mentre i programmi di runtime CODESYS si eseguono anche su piattaforme Linux embedded come Revolution Pi (RevPi) Connect 4 di KUNBUS, disponibile presso DigiKey. Questo modulo Raspberry Pi industriale open-source dimostra come lo stesso progetto possa essere scalato senza problemi dalla simulazione alla distribuzione sul campo.

Debug e best practice

Oltre al monitoraggio in tempo reale, CODESYS offre un ambiente di debug integrato per perfezionare e affinare i progetti. È possibile impostare ed eseguire manualmente i breakpoint, la logica passo-passo e l'analisi dei flussi di esecuzione. Lo strumento Trace estende la diagnostica registrando le cronologie delle variabili per un'analisi successiva, spesso utilizzata nelle revisioni post-evento.

Per la risoluzione dei problemi, CODESYS può generare variabili di forza (Figura 3) che prevalgono temporaneamente sui segnali mappati.

Immagine della sintassi della convenzione di denominazione delle variabili di forza in CODESYSFigura 3: Sintassi della convenzione di denominazione delle variabili di forza in CODESYS. (Immagine per gentile concessione dell'autore)

Sono particolarmente utili per la messa in funzione o la simulazione di condizioni come la pressione di un pulsante. Quando un segnale di forza è attivo, CODESYS sostituisce il valore forzato al segnale mappato. Poiché la forzatura può interrompere l'esecuzione in tempo reale, deve essere applicata con cautela e solo sui canali già mappati.

L'affidabilità a lungo termine dipende dalla gestione strutturata del progetto. Library Manager supporta la progettazione modulare e il controllo centralizzato delle versioni, mentre i segnaposto definiti garantiscono build coerenti tra i vari target hardware. Il mantenimento di versioni stabili delle librerie riduce i rischi di compatibilità durante la distribuzione o l'aggiornamento.

Oltre a queste garanzie strutturali, anche le best practice quotidiane sono altrettanto importanti. Tra queste, la convalida dei progetti nel simulatore prima di passare all'hardware e l'uso di breakpoint o di forzature in produzione per evitare di interrompere i cicli in tempo reale. È inoltre buona norma archiviare le build e i set di librerie noti per un rapido ripristino di uno stato precedente, documentando al contempo le mappature delle variabili e fornendo collegamenti di visualizzazione per supportare il trasferimento tra i team.

Conclusione

CODESYS accelera il passaggio dalla progettazione alla distribuzione unificando in un unico ambiente la configurazione del progetto, la mappatura degli I/O, la programmazione della logica, la visualizzazione e il debug. Il flusso di lavoro si estende a tutte le piattaforme DigiKey, compresi i PLC abilitati CODESYS, i controller industriali Raspberry Pi e le interfacce HMI, fornendo un quadro pratico per la transizione dall'idea all'automazione scalabile.

DigiKey logo

Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.

Informazioni su questo autore

Image of Aharon Etengoff

Aharon Etengoff

Aharon Etengoff is a technology writer with extensive experience in the semiconductor and telecom sectors. He develops white papers, technical articles, and high-level collateral for leading companies in both industries. His work has appeared in publications such as EE World Online, EV Engineering, and 5G Technology World. Aharon has written about HBM and GDDR memory, interface and security IP, AI-powered EDA tools, chiplets, 3DIC, and 5G wireless networks. Earlier in his career, he was the managing editor of TG Daily, where he led a team covering emerging tech trends.

Informazioni su questo editore

Editori nordamericani di DigiKey