OOP nell’automazione

La programmazione orientata ad oggetti (Object-Oriented Programming) è un paradigma di programmazione usato da anni nello sviluppo software che permette di modellare elementi del mondo reale attraverso la definizione di classi. Le istanze generate dalle classi prendono il nome generico di oggetti.

Tre sono i meccanismi che devono essere supportati da un linguaggio di programmazione perché si possa definire ad oggetti:

-l’incapsulamento

-l’ereditarietà

-il polimorfismo.

Se anni fa la programmazione ad oggetti era esclusivo appannaggio dell’informatica oggi è entrata a pieno titolo nell’automazione.

La programmazione secondo lo standard IEC61131-3 prevede la possibilità di creare blocchi funzionali da utilizzare attraverso le sue istanze. Questo modello è stato esteso da CODESYS con l’aggiunta di metodi, proprietà, eredità e polimorfismo. In questo modo, sono stati supportati tutti i meccanismi della programmazione ad oggetti permettendo di sviluppare codice OOP per automazione.

Lo sviluppo di applicazioni tramite OOP può portare molti benefici ma la sola conoscenza della sintassi non è sufficiente: è necessario pensare ad una architettura software dove i meccanismi OOP ci aiutino realmente a scrivere meno, isolare i problemi, confinare le dipendenze.

Un’architettura tipica può essere quella descritta nell’immagine.

Un Function block base (Dispositivo), realizza le funzionalità base e generiche di una categoria di dispositivi (Motori, sensori o attuatori). Da questo FB sono derivati altri FB che re-implementano alcune funzioni, che differiscono da quelle base per la natura diversa dei dispositivi. Il programma principale comanda ed interroga tutti i dispositivi della stessa categoria allo stesso modo non curandosi delle differenze implementative. Queste saranno risolte dalla OOP.

I vantaggi?

  • Si affrontano le differenze tra dispositivi solo negli specifici FB (DispositivoA, DispositivoB, …)
  • Il codice in PLC_PRG è indipendente dalle differenze tra dispositivi
  • Sostituendo un dispositivo con un altro il codice di PLC_PRG non cambia.
  • L’aggiunta di un nuovo dispositivo comporta la sola scrittura di un nuovo FB derivato dal FB Dispositivo.

In CODESYS, anche non scrivendo una sola riga di codice OOP, si beneficia della sua potenza. La gestione dei servodriver, ad esempio, è implementata in OOP con una architettura simile a quella appena vista. Il codice che scriviamo per muovere gli assi è indipendente dal tipo e dal costruttore di servodriver. Possiamo sostituire in pochi minuti un driver con un altro cambiando semplicemente la configurazione degli assi e ricompilando l’applicazione. La magia la esegue la programmazione ad oggetti.

L’argomento può essere approfondito tramite il corso CODESYS di OOP.


Commenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *