Piattaforme software Quasi tutte le piattaforme software si sono sforzate di rendere le tecnologie Web gestibili in modo semplice:.NET o Java sono già predisposte per la tecnologia Web Le moderne piattaforme software come .NET di Microsoft o Java sono già predisposte per la tecnologia Web, perciò i controllori con interfaccia operatore possono essere collegati al mondo dei PC in modo semplice e senza l’aggiunta di driver software o OPC server. Grazie a potenti ‘tool’ software e a una significativa varietà di funzioni, le piattaforme software possono accedere a campi applicativi nuovi nell’ambito dei progetti d’automazione. Quasi tutte le piattaforme software affermate hanno intrapreso notevoli sforzi per rendere le tecnologie Web gestibili in modo semplice. Le componenti di automazione, che supportano anch’esse le tecnologie Web, possono facilmente dialogare con il mondo dei PC. È infatti facile collegare i controllori con interfaccia operatore con i PC e tramite questi farli comunicare con l’intero mondo Windows o Linux senza bisogno di software aggiuntivi, driver o altre unità. Cosa sono le piattaforme software? Il termine ‘piattaforme software’ è estremamente ampio e poco preciso. In modo molto semplificato, si può intendere sotto questo termine una piattaforma su cui possono essere eseguiti specifici programmi software. In prima analisi, una piattaforma può essere vista come un hardware progettato secondo determinate norme (ad esempio, i PC); tuttavia, in questo caso sarebbe più corretto parlare di piattaforma hardware. Quando non si vuole inventare tutto da soli o programmare faticosamente delle applicazioni, si possono utilizzare funzioni standard, già programmate in precedenza. Un sistema operativo presenta un insieme di funzioni di base, quindi può essere visto come una piattaforma software. I sistemi operativi permettono sostanzialmente di disaccoppiare i programmi applicativi dallo specifico hardware: un programma Windows funziona su qualsiasi calcolatore su cui sia installato il sistema operativo Windows, indipendentemente dal costruttore del PC. Se si vogliono poi sviluppare dei programmi eseguibili su diversi sistemi operativi, ecco che il termine piattaforma software diventa più comprensibile. Java è una piattaforma software in grado di funzionare su svariati sistemi operativi. Una JVM (Java Virtual Machine) costituisce in questo contesto l’elemento di collegamento tra il programma Java e il sistema operativo. Se una JVM è stata installata sul calcolatore, i programmi Java possono essere eseguiti direttamente senza necessità di ricompilarli. Il trucco sta nel fatto che i programmi Java non vengono compilati per uno specifico sistema operativo o per una specifica piattaforma hardware, ma vengono convertiti in un codice intermedio indipendente, al posto del codice macchina specifico della CPU. Questo codice intermedio viene eseguito attraverso la JVM sul sistema di destinazione. In questo modo, viene garantita l’indipendenza di Java dalle varie piattaforme, per cui i programmi Java possono funzionare indifferentemente su Windows, Linux/Unix, Macintosh ecc. In realtà, il concetto di codice intermedio nella tecnologia PLC viene applicato già da decenni con successo e costituisce una delle ragioni che hanno assicurato continuità e disponibilità a lungo termine della tecnologia PLC. Con .NET Microsoft offre una piattaforma software costruita secondo gli stessi principi di Java; tuttavia, essa è orientata al sistema operativo Windows. Con .NET è possibile realizzare programmi per i vari sistemi operativi ‘desktop’, come Windows 2000/XP/Vista e Windows CE, SmartPhones e PocketPC. Programmare con Visual-Basic su .NET Una piattaforma software possiede ampie librerie di funzioni e potenti tool di programmazione. I principi solitamente seguiti dalla moderna programmazione sono quelli dell’‘object oriented’: la piattaforma software .NET offre linguaggi object oriented come C++ e Visual-Basic. Nel caso dello sviluppo software object oriented non si parla tanto di ‘librerie’ di funzioni, ma piuttosto di ‘classi’. La piattaforma .NET offre delle librerie di classi che rendono semplice l’utilizzo della tecnologia PC/Windows. Indipendentemente dal fatto che vengano utilizzate tecnologie multimediali, come video e audio, oppure un database, con .NET e Visual-Basic si possono eseguire, nell’ambito di un progetto di automazione, operazioni che vanno al di là della semplice visualizzazione. Grazie alla struttura .NET le applicazioni possono essere create sia per le varianti Windows desktop (Windows 2000/XP/Vista), sia per apparecchiature basate su Windows CE, come i Web panel. Così le applicazioni .NET possono essere eseguite indifferentemente su un PC da ufficio o sul pannello di comando (Windows CE/XP). In particolare, Microsoft propone l’impiego di Visual Studio 2005 come tool software per la creazione di applicazioni .NET. Con esso l’interfaccia grafica di un’applicazione Windows può essere creata con pochi ‘clic’ di mouse, tramite componenti predefinite; vaste possibilità di ‘debugging’ completano il tool. Una versione dell’ambiente di sviluppo Visual Studio 2005 Express può essere scaricata gratuitamente dal sito Internet (www.microsoft.com/germany/msdn/vstudio/products/express/download.mspx). In Internet si è anche creata una folta comunità (‘community’) per quanto riguarda .NET e VisualBasic. Per qualsiasi tipo di problema si può così trovare supporto gratuito, a livello avanzato e professionale ed è anche possibile trovare parti di programma già definite o ‘ritagli’ (‘snippets’) da inserire direttamente nel programma. Ecco alcuni siti Web orientati alla funzionalità .NET: www.codeguru.com,www.codeproject.com, www.vbarchiv.net, www.vb-fun.de. Caricare dei contenuti Web con Java e .NET In passato, non era semplice dal punto di vista tecnico accedere alle pagine Web; con Java e .NET tutto questo è cambiato radicalmente. Entrambe le piattaforme software offrono classi, con l’ausilio delle quali il caricamento di una pagina Web è un vero ‘gioco da ragazzi’. Nel caso di .NET, con la classe ‘WebRequest’ è possibile caricare liberamente da Internet un file con solo quattro istruzioni: ‘ definire gli oggetti per l’accesso al Web Dim wReq As WebRequest Dim wResp As WebResponse ‘ Accedere alla pagina Web wReq = WebRequest.Create (‘http://192.168.0.230/demo.html’) ‘ Selezionare/leggere la risposta wResp = wReq.GetResponse() Dopo l’esecuzione, il contenuto della pagina Web caricata dal server con indirizzo IP 192.168.0.230, ‘demo.html’, si trova nella variabile ‘wResp’ e può essere elaborato a piacimento. In Java, la cosa avviene con altrettanta facilità. Perché il caricamento semplice di contenuti Web per i progetti di automazione sia così importante diventa chiaro quando si analizza il metodo con il quale si accede ai dati di un PLC con interfaccia operatore. CGI: la chiave per un PLC con interfaccia operatore CGI (Common Gateway Interface) è una tecnologia Web standard spesso utilizzata sui Web server. Essa definisce un’interfaccia su un Web server che permette di eseguire degli ‘script’ o delle applicazioni sul server stesso. Il risultato di questi file eseguibili viene trasferito al client richiedente (browser) tipicamente sottoforma di pagine Html. È diventata ormai prassi comune caricare i file eseguibili tramite CGI in una directory ‘cgi-bin’. Un lancio CGI è costituito da un indirizzo Internet, dall’indicazione della directory CGI (‘cgi-bin’) e dal file eseguibile desiderato. Se al file eseguibile devono essere trasmessi dei parametri, ciò avviene tramite l’inserimento di un ‘?’, seguito dai parametri in questione. Più parametri vengono separati da un segno ‘+’. I controllori PCD di Saia-Burgess Controls dispongono di un Web server con interfaccia CGI, attraverso la quale si può accedere a tutti i dati del controllore. In questo modo, gli ingressi/uscite, le ‘merker-word’, i ‘data block’ ecc. possono essere liberamente selezionati e modificati. È anche possibile leggere i dati con l’applicazione CGI ‘readVal.exe’ e scrivere i dati con ‘writeVal.exe’. Per utilizzare questa tecnologia è sufficiente un semplice browser: se si inserisce nella riga contenente l’indirizzo del browser l’URL http://192.168.0.230/cgi-bin/readVal.-exe?PDP,,MW100,d, appare nella finestra del browser il valore aggiornato della merker-word 100 (in formato decimale) del controllore con l’indirizzo IP 192.168.0.230. Al comando CGI vero e proprio ‘readVal.exe’ segue come parametro, separato da un ‘?’, un tag utilizzato per l’indirizzamento dei dati PLC. Quest’ultimo è composto da un’identificazione generica dei dati di processo (PDP), dai dati PLC desiderati (MW100 = merker-word 100) e da un formato (d = decimale). Se si desidera impostare la merker-word al valore 1.234, si può utilizzare l’URL http://192.168.0.230/cgibin/write-Val.-exe?-PDP,,MW100,d+--1234. Qui, in aggiunta, il valore da scrivere (1.234) viene separato con un ‘+’, indicato come un secondo parametro. Oltre alle basilari funzioni CGI per la lettura e la scrittura di singoli dati PLC, i controllori PCD offrono la possibilità di richiedere e/o modificare più valori in contemporanea con un unico accesso/telegramma. A questo scopo, vengono definiti una sola volta con un’ulteriore funzione CGI i ‘record’ che specificano i dati PLC desiderati. Una volta definiti, questi possono essere consultati con un’unica chiamata e trasferiti con un unico telegramma. In questo modo, anche grandi quantità di dati possono essere trasferite in maniera flessibile e senza appesantire la comunicazione. Con lo stesso metodo si possono acquisire i dati PLC da Java e dalle applicazioni .NET. Nella classe WebRequest in .NET è già incluso tutto ciò che serve per comunicare con un PLC. All’atto del lancio, WebRequest deve semplicemente essere trasmesso il comando CGI desiderato in termini di URL, ed ecco che i dati desiderati diventano disponibili all’interno della propria applicazione Visual-Basic. In questo modo, per una comunicazione tra PLC e PC o pannello di comando non sono necessari driver speciali, OPC server o schede hardware aggiuntive: tutto può essere eseguito con le ‘utility’ fornite da Windows. Inoltre, tutto funziona sempre allo stesso modo, indipendentemente dal fatto che un Web panel sia direttamente collegato alla macchina con il PLC, che un PC da ufficio voglia accedere alla rete intranet o che si debba effettuare un intervento di manutenzione a distanza via Internet. di Peter Steib