Sysmac Studio – PLC Omron

Sysmac Studio – PLC Omron

La Omron Corporation è una azienda con sede a Kyoto, in Giappone. Oltre a dedicarsi alla produzione e vendita di apparecchiature mediche, sistemi automobilistici e componenti elettronici, si dedica anche alla produzione di apparecchiature riservate al mondo dell’automazione industriale come: sensori, interruttori, componenti di sicurezza, relè, componenti di controllo, apparecchiature di monitoraggio dell’energia elettrica, alimentatori e PLC.

Questi ultimi, i PLC (Programmable Logic Controller) sono computer digitali industriali rinforzati e adattati per il controllo dei processi di produzione come dispositivi robotici, linee di assemblaggio, o qualsiasi attività che richieda un controllo di alta affidabilità e facilità di programmazione e diagnosi dei guasti. Inizialmente sviluppati per il settore automobilistico, sono stati poi adottati anche come controllori di automazione ad alta affidabilità da poter utilizzare in ambienti difficili come quello industriale. I PLC sono un esempio di sistema real-time in quanto sono in grado di garantire che una elaborazione (acquisizione dei segnali in input, esecuzione del programma e restituzione dei segnali in output) termini entro un periodo di tempo (o scadenza) specifico.

Ambiente di sviluppo:

Sysmac Studio venduto dalla Omron, offre un ambiente di sviluppo integrato per i controllori serie NJ / NX / NY. Conforme alle norme IEC 61131-3, Sysmac Studio offre un sistema di programmazione basato su Diagrammi Ladder (ausilio grafico per la programmazione dei PLC), linguaggi di programmazione tipo Strucured Text (Linguaggio di alto livello con una sintassi simile a quella del PASCAL), funzioni e blocchi di funzioni. Oltre alla possibilità di interfacciarsi con i controllori della Omron, permette di sviluppare software per il controllo e la monitorizzazione delle macchine tramite HMI (Human–Machine Interface) della seria NA sempre della Omron.
Per chi fosse alle prime armi, la casa produttrice permette il download dell’intero software per un periodo di prova di 30 giorni, nei quali si ha la possibilità di esercitarsi seguendo lo studio dei vari manuali disponibili in rete. Inoltre l’ambiente di sviluppo permette di ricreare l’hardware tramite il suo simulatore di controllori.

Sbocchi lavorativi:

In Italia, come nel resto d’Europa, esistono molte opportunità di lavoro per chi é in grado di programmare i PLC. Normalmente vengono offerti contratti a tempo indeterminato, possibilitá di breve trasferte all’estero e la conoscenza dell’inglese. Lo stipendio varia dai 1500 ai 3000 euro al mese e spesso non viene richiesta un grado di istruzione superiore al diploma. Esistono molte scuole, sia private che pubbliche, abilitate all’insegnamento in materia di automazione industriale. Quindi se avete in mente di investire tempo e denaro in una formazione che possa dare uno sbocco lavorativo certo, il mondo dell’automazione industriale e della programmazione dei PLC potrebbe fare per voi. Inoltre, la Omron vende il Kit motion control per macchine compatte piú formazione tecnica gratuita ad un prezzo accessibile, con il quale potrete tranquillamente imparare a programmare i PLC da casa con dei corsi ufficiali online.

Link:

Snap! 4 Arduino – Progetto Orologio Binario con Firmata Library

Snap! 4 Arduino – Progetto Orologio Binario con Firmata Library

 

Snap4Arduino è un progetto laterale al linguaggio di programmazione visuale chiamato Snap! (leggi l’articolo) che come obbiettivo si prefigge strumento per l’insegnamento delle materie tecnologiche dalla scuola primaria in poi. Avviato nel 2013 dal gruppo di ricerca Edutec di Citilab (Cornellà, Barcellona) ha subito ricevuto una grande acclamazione tra gli utenti tanto che da allora viene utilizzato anche in contesti artistici ed universitari. Ha ricevuto contributi da progetti quali Phiro (india), First Makers (Chile), ROKIT Brick (South Korea) i quali hanno basato le loro soluzioni software modificando la versione originale di Snap4Arduino. Dal 2016 fino ad agosto 2017 è stato sostenuto e sviluppato presso Arduino.org ed oggi è in via di sviluppo in forma indipendente.

Snap4Arduino è completamente gratuito e disponibile al download dal sito http://snap4arduino.rocks/ e, una volta installato, l’ambiente di sviluppo è apparentemente simile a quello di Snap! tranne che per un nuovo menù di funzioni chiamato “Arduino”. Al suo interno troviamo le funzioni per la connessione e la disconnessione dalla scheda, le funzioni di comando sui pin digitali, analogici e servo ed infine, le funzioni di lettura dei valori sui pin digitali e analogici. Tali funzioni sono in grado di comandare e comunicare con la maggior parte delle schede Arduino.

Requisito essenziale per comunicare con la scheda, è di aver installato su di essa il programma StandardFirmata con il quale abilitiamo la scheda a comunicare direttamente con l’ambiente di sviluppo.

Passi da seguire per installare la StandardFirmata su di una scheda Arduino:

  1. Se non lo avete ancora fatto, scaricare ed installare l’ambiente di sviluppo seguendo le istruzioni nel sito  http://www.arduino.cc/en/Main/Software
  2. Aprire Arduino IDE e cliccare su “File → Examples → Firmata → StandardFirmata”  
  3. Connettere la scheda alla porta USB del computer
  4. Dal menù strumenti “Tools → Board:”, selezionare la versione della scheda posseduta e la porta alla quale è stata connessa.
  5. Per inviare il programma StardardFirmata alla scheda, accedere al menù “Sketch → Upload:”
  6. Ora Snap4Arduino può interagire direttamente con la scheda.

Cosa è e cosa fa Firmata:

Firmata è un protocollo di comunicazione basato su formato MIDI, che abilita la trasmissione e la ricezione di dati e comandi dal vostro computer ad un microcontrollore. Basicamente potrebbe fornire l’accesso a tutti i microcontrollori esistenti anche se, per ora, l’implementazione più completa è quella dedicata alle schede Arduino. Inoltre possiede una vastissima lista di librerie scritte nei più svariati linguaggi di programmazione come python, perl, php, java e molti altri.

Nel caso specifico di Snap4Arduino, una volta connesso in modo appropriato alla scheda, è possibile interagire con i componenti elettronici presenti sulla scheda direttamente dall’ambiente di sviluppo, senza dover effettuare l’upload del codice. Si ottiene quindi un accesso completo all’Hardware, che ci permette di testare dal vivo il codice a cui stiamo lavorando. Questo consente agli sviluppatore di risparmiare tempo per il debugging, in quanto non vi è una fase di compilazione esplicita ed ogni modifica del codice viene verificata in modo istantaneo sulla scheda. Inoltre questa caratteristica aiuta molto l’aspetto educativo in quanto, lo studente, acquista la percezione di totale controllo dell’hardware e quindi si può concentrare unicamente sullo studio del suo progetto.

L’unico problema fin’ora riscontrato durante l’utilizzo di Firmata è la sua bassa velocità di esecuzione del programma. Arduino è un sistema embedded che esegue il codice al suo interno al massimo della velocità consentita. Inviare dati e comandi dal nostro computer attraverso l’utilizzo del protocollo Firmata, significa che al tempo di esecuzione del programma, dobbiamo aggiungere tutto il carico dei programmi che sono in quel momento eseguiti dal Computer che si sta utilizzando.

Una volta che il nostro programma è stato testato ed è funzionante, per poter aumentare le sue prestazioni e per poter utilizzare la scheda Arduino come sistema embedded, e quindi isolato dal computer, dobbiamo fare l’upload del nostro codice all’interno della scheda.

Passaggi per esportare un progetto da Snap4Arduino dentro una scheda Arduino

  1. Se si ha in mente di creare un progetto che poi dovrà essere eseguito in solitaria sulla scheda, dovete cominciare obbligatoriamente tutto un nuovo progetto cliccando su “File → New Arduino translatable project”. Noterete subito che vi sarà una riduzione delle funzioni a cui potrete accedere, questo perchè molte delle funzioni che esistono in Snap! non possono essere tradotte nel linguaggio di programmazione che interagisce con la scheda, chiamato Processing
  2. È possibile connettersi ad una scheda Arduino e lavorare in modo dinamico. Ma per tradurre il codice in uno Sketch di Arduino, è necessario iniziare lo script con la bandiera verde. Così facendo otterrete un file con estensione .ino il quale, aprendolo con Arduino IDE, potrete caricare sulla scheda.

Orologio Binario a notazione binaria pura:

Anche se è solo un gadget che potremmo trovare in vendita su geek.wish.com, e che  ha uno scopo puramente estetico (perché incomprensibile per la maggior parte delle persone), ho sempre desiderato possedere un orologio con notazione binaria e, invece di comprarlo, ho deciso di costruirmelo da solo con una scheda Arduino UNO. Premetto che ciò che sto per mostrare è la prima parte di questo progetto, in quanto ho intenzioni di aggiungere un pulsante (che attualmente non ho) per poter modificare l’ora,  ed un Buzzer per generare dei suoni (tipo sveglia).

Schema elettrico:

Andando sul sito http://fritzing.org/home/, potrete scaricare il programma open source per la progettazione di sistemi elettronici EDA – Electronic Design Automation, che fornisce strumenti per progettare e produrre sistemi elettronici, dai circuiti stampati ai circuiti integrati, con il quale ho disegnato il circuito elettrico per il mio prototipo.

Lista componenti:

  1. Scheda Arduino UNO
  2. 6 LED rossi 2~2.5V (per i secondi)
  3. 6 LED gialli 2~2.5V (per i minuti)
  4. 5 LED blu 3.5~4V ( per le ore)
  5. 17 resistenze da 220Ω

Il codice per realizzare questo progetto, é stato scritto su Snap4Arduino 1.2.4

In questa versione, quando si lavora ad un progetto che poi dovrà essere esportato in formato Sketch, si possono usare solo variabili locali e si possiede un numero limitato di funzioni. Per questo motivo ho cercato di scrivere un codice il più semplice possibile utilizzando solo strutture if/else, operatori, porte logiche e variabili di tipo intero e booleano e, ovviamente, una struttura qui chiamata “forever” per far eseguire il programma all’infinito.

Ed ecco il risultato:

Ore Minuti Secondi
32 1 1
16  1 1 1
8  0 1 1
4  1 0 0
2  1 1 0
1  1 1 0
decimale: 23 : 59 : 56

Link:

miniBloq

miniBloq

miniBloq è un linguaggio di programmazione visuale open source in fase di sviluppo per Multiplo ™, Arduino ™ e dispositivi fisici di calcolo e robot. Minibloq nasce nel 1997 quando lo sviluppatore Juliàn da Silva Gillig pubblica Minibloques, una versione gratuita ma non aperta, utilizzata nelle scuole elementari e medie in Argentina.

Tra maggio e giugno del 2011, miniBloq partecipa ad una raccolta fondi su KickStarter  con il progetto chiamato “Minibloq: graphical programming environment for Arduino” raggiungendo e oltrepassando di molto il traguardo di 4.300$.

Non ho compreso a quale versione del programma fossero quando hanno lanciato la raccolta fondi, fatto è che gli obiettivi proposti erano molti e le persone gli hanno effettivamente dato fiducia. Ad oggi però, ancora non esiste la versione 1.0 e molti degli obiettivi proposti (tra i quali il miglioramento della GUI) non sono stati ancora raggiunti.

La versione 0.83 attualmente disponibile, che ho personalmente testato, presenta un ambiente a mio parere stabile ma molto scomodo e poco intuitivo. La scelta delle icone che rappresentano i “blocchi” sono poco comprensibili e la loro dimensione, quando vengono inseriti nell’area di sviluppo, risulta a mio parere inappropriata alla programmazione. Con il comando Mouse wheel + Ctrl: Zoom in / Zoom out, è possibile  ingrandire e rimpicciolire i blocchi presenti nell’area di sviluppo ma non sembra risolvere il problema, solo cambia la loro dimensione e questa pratica di rimpicciolire i blocchi può solo aiutare la navigazione del codice ma non la sua comprensione.

Un’altro problema è la rappresentazione delle strutture di controllo, in quanto l’unica via per riconoscere dove inizia e finisce una struttura è osservando la posizione dei blocchi e quindi la loro indentazione. Però l’indentazione è una soluzione di leggibilità tipica dei linguaggi puramente testuali, dove si cerca in tutti i modi di migliorare la leggibilità del testo anche attraverso colori e dimensioni. Nel caso di Scratch e Snap!, l’indentazione viene usata in modo marginale, in quanto il codice contenuto all’interno di una struttura di controllo viene letteralmente avvolto dalla stessa. Questo approccio permette di avere la percezione che il codice è effettivamente contenuto ed eseguito al suo interno e, se il fine è quello di educare i giovani alla programmazione, credo sia indispensabile alleggerire la lettura e la comprensione del codice.

Anche se vi sono molti altri problemi legati all’ambiente di sviluppo, credo non sia necessario sottolinearli in quanto stiamo parlando di una versione in corso d’opera che spero di vedere un giorno conclusa.

Parlando invece degli aspetti positivi su cui investirei, ho trovato molto utile l’accesso agli esempi suddivisi secondo l’hardware utilizzato, mi piace che si possa fare un confronto diretto tra il codice sviluppato graficamente ed il codice in formato testuale e trovo importante avere una lista ragguardevole di possibili piattaforme hardware da poter utilizzare.

Hardware supportato:

  • AERobot v1.0
  • Arduino Leonardo
  • Arduino Mega 2560 o Mega ADK
  • Arduino Uno
  • DuinoBot Kids v1.x.HID
  • DuinoBot v1.x -> 2.3 HID
  • DuinoBot c2.3.CDC
  • miniSim v0.2
  • Pi-Bot v1.0
  • RedBoard
  • RedBot v1.0
  • Seeeduino 328/Arduino Duemilanove
  • Seeeduino Mega 1280 / Arduino Mega
  • Sparki v1.0
  • Ta-Bot v1.0

In casa, l’unico Hardware ora a mia disposizione per testare le funzionalità di miniBloq, è una scheda Arduino Uno, delle resistenze e tanti LED. La mia iniziale intenzione era quella di poter scrivere un programma per costruire un orologio binario. Dopo però essermi reso conto che l’unico tipo di variabile disponibile è di tipo float, che le uniche strutture di controllo sono if/else, while e for, che non si può lavorare con gli array, che non vi è il modulo per calcolare il resto e che l’unico modo per poter inserire nel codice questi elementi era quello di scriverli a mano, decisi di desistere con il mio progetto e di testare alcuni esempi tra i quali quello che vedete nell’animazione che si chiama 310.FiveLEDs.

In conclusione, credo che attualmente miniBloq sia ad un ottimo punto di partenza per la creazione di un IDE che possa un giorno raggiungere i livelli di altri ambienti di sviluppo come Snap!, ma penso che per ora sia più utile come banco test dove poter improvvisare alcune semplici automazioni.

 

Link:

OutSystems

OutSystems

OutSystems è una piattaforma usata da aziende di tipo PaaS – Platform as a service che necessitano di gestire velocemente applicazioni mobili o web. Compatibile con qualsiasi dispositivo di ultima generazione, le applicazioni create vengono distribuite in locale o attraverso forme ibride di condivisione dei dati.

Un ambiente di sviluppo visivo come OutSystems, offre una moltitudine di strumenti necessari alla creazione ed alla modifica rapida di applicazioni mobili e web senza il bisogno di scrivere codice.

OutSystems permette di:

  • Modellare le interfacce utente
  • Descrivere la logica e i processi aziendali
  • Accedere e strutturare i database
  • Utilizzare strumenti di integrazione (dati esterni tipo fogli di calcolo)
  • Abilitare servizi Web
  • Gestione degli utenti e dei loro livelli di accesso
  • Gestione delle attività di pianificazione

OutSystems fa parte dei software definiti DevOps – Development Operation che rappresentano una metodologia di sviluppo dedicata alla comunicazione, collaborazione e integrazione tra sviluppatori e operatori IT – Information Technology. Un software di tipo DevOps aiuta le aziende che hanno bisogno di frequenti rilasci, collaudi e  aggiornamenti dei loro applicativi.

I programmatori hanno a disposizione vari SDK – Software Development Kit  per creare componenti da poter integrare con applicazioni esterne o con i database. Per fare alcuni esempi, esistono delle procedure guidate per automatizzare l’integrazione ai database o per poter accedere alle librerie API di terze parti come SAP.

OutSystems nasce nel 2001 a Lisbona (Portogallo) e, dopo vari investimenti da parte delle banche portoghesi che hanno reso effettivamente possibile lo sviluppo di tale progetto, oggi la OutSystems ha sede in Atlanta (USA) ed è considerata una soluzione per molti piani di vendita, marketing e innovazione in tutto il mondo.

Attraverso il loro sito, e dopo aver creato un account, si può scaricare l’ambiente di sviluppo gratuitamente (che in questo momento è alla versione 10), seguire il primo tutorial di 5 minuti chiamato “Build a Mobile App in 5 min” con il quale poter creare passo passo una primissima applicazione funzionante ed online. Dopo questa breve esperienza ci si accorge che si è effettivamente di fronte a qualcosa di complesso ma allo stesso tempo molto funzionale e user friendly. Il tutorial in sé non risulta difficile, ma gli argomenti che vengono affrontati sono tanti e si è continuamente trasportati da un menù ad un’altro, da una pagina ad un’altra per poi vedere finita e funzionante la propria applicazione.

Una volta completato il tutorial, mi sono trovato di fronte ad uno schermo bianco senza un’idea di un nuovo progetto da sperimentare, questo perché effettivamente OutSystems è un ambiente di sviluppo che mira esclusivamente allo sviluppo di determinate funzioni. A questo proposito sono andato alla ricerca di manuali e supporto didattico. Sul sito, sotto la voce “LEARN” esiste tutto il materiale necessario suddiviso in percorsi di studio che partono da un livello principiante fino ad esperto. Viene offerto gratuitamente sia materiale video che di testo molto esaustivo e dettagliato. Inoltre vengono offerte delle lezioni in classe e la possibilità di effettuare degli esami per ottenere delle certificazioni.

 

Licenze:

Basta una breve occhiata alla pagina che introduce i prezzi e le edizioni, per comprendere chi è il fruitore finale di questa piattaforma. Esiste anche la licenza di tipo Free, con la quale si può accedere a tutta la documentazione per imparare ad utilizzare il loro ambiente di sviluppo e magari creare un progetto con un limitato numero di utenti e capacità.

Lavoro:

Dato che OutSystems mira alle grandi e medie imprese, mi sono messo alla ricerca di offerte di lavoro dove si prevedono conoscenze come sviluppatore certificato OutSystems. Prendendo come riferimento il sito Indeed, ho riscontrato una netta differenza tra le ricerche effettuate in Italia e quelle, ad esempio, nel Regno Unito. Cercando su www.it.indeed.com la parola chiave “OutSystems”, il sito non genera nessun risultato. Su www.indeed.co.uk invece vengono generate almeno due pagine di annunci di lavoro situati per la maggioranza a Londra. La figura professionale che sembrerebbe essere la più indicata, che tra le sue conoscenze necessita di competenze o certificazioni inerenti ad OutSystems, è l’IT Business Analyst.

Senza trarre conclusioni affrettate, e forse fuori contesto, vorrei concludere questo articolo con il dire che, come lo è per la suite delle applicazioni Office, un giorno sarà indispensabile anche in Italia avere delle elevate competenze riguardo ambienti di sviluppo come quello di OutSystems, o più nello specifico saranno necessarie competenze riguardo le varie applicazioni di sviluppo software o gli ambienti chiamati BPM development (BPM – Business process management) di cui OutSystems fa parte. Questo perché, data la tendenza del mercato che obbliga le imprese ad accelerare i propri processi aziendali, è ormai di comune accordo che strumenti come OutSystems siano necessari per definire, ottimizzare, monitorare ed integrare tutte le fasi utili al miglioramento del business aziendale.

Link:

Alcune immagini del tutorial:

Snap!

Snap!

Snap! è un linguaggio di programmazione visuale orientato agli oggetti di tipo drag-and-drop ispirato a Scratch, che implementa moltissime funzioni e strumenti che permettono di creare vere e proprie applicazioni.

Snap! marca gli stessi principi educativi di Scratch (leggi l’articolo) dando la possibilità agli sviluppatori di lavorare in un ambiente di sviluppo più professionale dove poter testare le proprie abilità informatiche. È ovvio che le conoscenze richieste per poter accedere agli strumenti offerti devono essere più profonde rispetto a quanto previsto dal team di Scratch.

In questo articolo parleremo delle differenze fondamentali tra Scratch e Snap! e forniremo i link di riferimento per poter accedere al materiale necessario.

Le  funzionalità aggiuntive che troviamo in Snap! Sono:

  • First class lists – Dalla versione 4.0.5 vengono introdotte le First class lists (classi primitive per gli “array”), questo rende possibile l’utilizzo delle liste bidimensionali su Snap! (array 2D).
  • First Class function or procedures – Secondo gli autori Brian HarveyJens Mönig (il creatore prima di BYOB e poi di Snap!) “l’idea della programmazione orientata agli oggetti viene spesso insegnata in modo da sembrare come se fosse necessario uno speciale linguaggio di programmazione orientato all’oggetto. Del resto, qualsiasi linguaggio che comprenda le funzioni tra le proprie classi primitive consente agli oggetti di essere implementati in forma esplicita; questo è un utile esercizio per aiutare a demistificare gli oggetti.” Come in Scratch, esistono 3 tipi differenti di funzioni: i Command type, i Reporter type e i Predicate type, solo che in Snap! vengono trattati come “Fisrt Class”.
  • Javascript – Permette di inserire del codice Javascript all’interno del programma, controllandone però le funzioni e limitando la condivisione del progetto per evitare la diffusione di eventuali malware.
  • Build Your Own Blocks (BYOB), possibilità di creare delle nuove strutture di controllo.L’immagine precedente mostra una struttura di controllo di tipo “for” creata utilizzando gli strumenti che troviamo all’interno del Block Editor.

Quando ho cominciato ad utilizzare Snap!, credevo di lavorare in un ambiente di sviluppo semplicemente migliorato rispetto a quello che viene messo a disposizione per Scratch. In effetti vi sono molti più strumenti per poter lavorare in modo veloce, ad esempio in Scratch non è possibile copiare una variabile direttamente dall’area di sviluppo o di correggere una modifica appena fatta premendo Ctrl+Z. Però Snap! non solo un ambiente di sviluppo “migliore”, bensì permette di creare veri stand-alone, i quali possono anche interfacciarsi con device esterni come Arduino o Raspberry Pi.

Di seguito dei link che vi aiuteranno ad entrare nel mondo di Snap!:

Pagina 1 di 212