Collezione Riviste Anno 2003 -

download Collezione Riviste Anno 2003 -

If you can't read please download the document

description

Contacts:Mobile +39 335-1880035MSN: [email protected] | SKYPE: intellisystem_technologiesemail: [email protected]: http://www.intellisystem.it Facebook https://www.facebook.com/intellisystemLinkedin https://www.linkedin.com/in/cristianrandieriTwitter https://twitter.com/C_RandieriResearchGate: http://www.researchgate.net/profile/Cristian_Randieri Academia.edu: https://unict.academia.edu/CristianRandieri YouTube Channel: https://www.youtube.com/c/intellisystemit Google+: https://plus.google.com/+IntellisystemItPrefazioneIntellisystem Technologies è da sempre presente in riviste prestigiose di carattere nazionale ed estero, presentando sempre nuove idee prodotti e soluzioni all'avanguardia per divulgare le nuove tecnologie. Il presente volume rappresenta la raccolta completa di tutte le pubblicazioni della nostra azienda inerenti l’anno 2003.Presentazione AziendaIntellisystem Technologies nasce nel 2000 come engineering office per apportare un contributo concreto allo sviluppo ed alla diffusione di sistemi che riescano ad interagire con l'uomo per soddisfare quanto più possibile le sue necessità. Nel 2003 diviene una società il cui obiettivo fondamentale è la progettazione, lo sviluppo e la commercializzazione di soluzioni Hi-Tech inerenti problematiche di tipo informatico, elettronico, di telecomunicazioni e di qualsiasi altra disciplina che necessiti di un continuo supporto alle nuove tecnologie.La nostra filosofia è quella di indirizzare a tutti le nuove tecnologie presenti sul mercato e di abbinarle al rigore scientifico, espandendo così in tutte le direzioni gli apporti di utilità che da essa ne possono derivare. La ricerca scientifica è il piedistallo su cui poggia l'intento di evoluzione della nostra azienda, completandosi e complementandosi sinergicamente con attività collaterali di Sviluppo, Diffusione, Vendita ed Assistenza: RDDSA (Research, Development, Diffusion, Selling and Assistance).Intellisystem Technologies vanta al suo attivo numerose attività che spaziano dalla ricerca nell'ambito della fisica nucleare alla progettazione di sistemi "intelligenti", alla didattica mirata alle specificità, alla pubblicazione scientifica, alla consulenza di piccole, medie e grandi aziende, alla progettazione ed alla realizzazione di sistemi software ed hardware per lo sviluppo informatico dei sistemi di monitoraggio, controllo industriale, militare e domestico. Grazie al suo Team di ingegneri, ricercatori e sviluppatori, è oggi in grado di offrire alla propria clientela soluzioni tecnologicamente all’avanguardia totalmente personalizzabili in funzione delle più variegate esigenze. La nostra azienda ha istituito una rete di penetrazione nel mercato nazionale avvalendosi della collaborazione di aziende partner in grado di soddisfare la risposta a qualunque quesito di necessità, prestando assistenza consultiva, didattica e operativa in qualunque parte del territorio Nazionale con mire espansionistiche rivolte all’estero.La costante presenza e partecipazione a progetti prestigiosi presso autorevoli istituti di ricerca nazionali ed esteri (quali: INFN “Istituto Nazionale di Fisica Nucleare”, CERN “Organisation Europèenne pour la recerche nuclèare, Ginevra, Svizzera”, ERSF “European Synchrptron Radiation Facility, Grenoble, Francia”, KVI “Kernfysisch Versneller Institut,Groningen, Netherlands.”, ecc.), permette ad Intellisystem Technologies di fornire un costante impulso alla diffusione ed integrazione delle più moderne ed innovative tecnologie presenti nel mercato.Intellisystem Technologies vanta partnership di carattere scientifico e tecnico-commerciale con aziende leader quali: Telecom Italia, TIM Business, ASTRA, Globalstar, mettendo a disposizione il proprio knowhow tecnologico ed i propri prodotti ad alto contenuto tecnologico. Tra i nostri clienti spiccano: Honeywell, Alcatel Lucent, la Presidenza del Consiglio dei Ministri, il Ministero dell’Ambiente - Area marina p

Transcript of Collezione Riviste Anno 2003 -

  • http://www.intellisystem.it

    Prefazione Intellisystem Technologies da sempre presente in riviste prestigiose di carattere nazionale ed estero, presentando sempre nuove idee prodotti e soluzioni allavanguardia per divulgare le nuove tecnologie. Il presente volume rappresenta la raccolta completa di tutte le pubblicazioni della nostra azienda LQHUHQWLODQQR.

    Presentazione Azienda Intellisystem Technologies nasce nel 2000 come engineering office per apportare un contributo concreto allo sviluppo ed alla diffusione di sistemi che riescano ad interagire con luomo per soddisfare quanto pi possibile le sue necessit. Nel 2003 diviene una so ciet il cui obiettivo fondamentale la progettazio ne, lo sviluppo e la commercializzazione di soluzioni Hi-Tech inerenti problematiche di tipo informatico, elettronico, di telecomunicazioni e di qualsiasi altra disciplina che necessiti di un continuo supporto alle nuove tecnologie.

    La nostra filosofia quella di indirizzare a tutti le nuove tecnologie presenti sul mercato e di abbinarle al rigore scientifico, espandendo cos in tutte le direzioni gli apporti di utilit che da essa ne possono derivare. La ricerca scientifica il piedistallo su cui poggia lintento di evoluzione della nostra azienda, completandosi e complementandosi sinergicamente con attivit coll aterali di Sviluppo, Diffusione, Vendita ed Assistenza: RDDSA (Research, Development, Diffusion, Selling and Assistance).

    Intellisystem Technologies vanta al suo attivo numerose attivit che spaziano dalla ricerca nellambito della fisica nucleare alla progettazione di sistemi "intelligenti", alla didattica mirata alle specificit, a lla pubblicazione scientifica, alla consulenza di piccole, medie e grandi aziende, alla progettazione ed alla realizzazione di sistemi software ed hardware per lo sviluppo informatico dei sistemi di monitoraggio, controllo industriale, militare e domestico. Grazie al suo Team di ingegneri, ricercatori e sviluppatori, oggi LQJUDGRGLRIIULUHDOODSURSULDFOLHQWHODVROX]LRQLWHFQRORJLFDPHQWHDOODYDQJXDUGLDWotalmente personalizzabili in funzione delle pi variegate esigenze.

    La nostra azienda ha istituito una rete di penetrazione nel mercato nazionale avvalendosi della collaborazione di aziende partner in grado di soddisfare la risposta a qualunque quesito d i necessit , prestando assistenza consultiva, didattica e operativa in qualunque parte del territorio Nazionale con mire espansionistiche ULYROWHDOOHVWHUR.

    La costante presenza e partecipazione a progetti prestigiosi presso autorevoli istituti di ricerca nazionali ed HVWHUL TXDOL ,1)1 Istituto Nazionale di Fisica Nucleare &(51 Organisation Europenne pour la recerche nuclare , Ginevra, Svizzera (56) European Synchrptron Radiation Facility, Grenoble, Francia .9,Kernfysisch Versneller Institut,Groningen, Netherlands .HFF), permette ad Intellisystem Technologies di fornire un costante impulso alla diffusione ed integrazione delle pi moderne ed innovative tecnologie presenti nel mercato.

    Intellisystem Technologies vanta partnership di carattere scientifico e tecnico-commerciale con aziende leader quali: Telecom Italia, TIM Business, ASTRA, Globalstar, mettendo a disposizione il proprio knowhow tecnologico ed i propri prodotti ad alto contenuto tecnologico.

    Tra i nostri clienti spiccano: Honeywell, Alcatel Lucent, la Presidenza del Consiglio dei Ministri, il Ministero GHOO$PELHQWH- $UHD PDULQD SURWHWWD ,VROH &LFORSL $FLWUH]]D &7ORUWR %RWDQLFR GHOO8QLYHUVLWj GHJOL VWXGLdi Catania, aziende nazionali ed estere che lavorano per ERG petroli, ecc.

    Intellisystem Technologies nata dallamore per la ricerca scientifica applica le moderne tecnologie per il benessere di tutti.

    Ing. Cristian Randieri Amministratore Unico

  • ,QGLFH3DUODQRGL1RL Anno 2003

    http://www.intellisystem.it - I -

    Indice

    [1] C. Randieri , RECS 101: Un web server embedded per applicazioni di controllo remoto tramite TCP/IP, Prima parte, FareElettronica N. 212 - Febbraio 2003, pp. 14-22.......................................................................................................................................1

    [2] C. Randieri , RECS 101: Un web server embedded per applicazioni di controllo remoto tramite TCP/IP, Seconda parte, FareElettronica N. 213/214 - Marzo/Aprile 2003, pp.124-131.......................................................................................................................11

    [3] C. Randieri , RECS 101: Un web server embedded per applicazioni di controllo remoto tramite TCP/IP, Terza parte, FareElettronica N. 216 - Giugno 2003, pp. 68-74.....................................................................................................................................20

    [4] C. Randieri , RECS 101: Un web server embedded per applicazioni di controllo remoto tramite TCP/IP, Quarta parte, FareElettronica N. 217/218 - Luglio/Agosto 2003, pp. 84-89..........................................................................................................................28

    [5] C. Randieri , La casa va in Internet - Un web server integrabile per applicazioni di +RPH %XLOGLQJ $XWRPDWLRQ EDVDWH VXO SURWRFROOR 7&3,3 ,O *LRUQDOH GHOOLQVWDOODWRUHelettrico N. 9 25 Maggio 2003, pp. 108-110..................................................................35

    [6] C. Randieri , Dossier: Controllo e assistenza da remoto - Esperimento DiamanWH, Fieldbus & Networks - Giugno 2003, pp. 68-70..............................................................39

    [7] C. Randieri , Dossier Embedded - Supplemento ad Elettronica Oggi N. 324, Giugno 2003, pp. 6, 15, 25...........................................................................................................42

    [8] C. Randieri , Primo Piano: Il mondo wireless - 6LVWHPL GL WHOHFRQWUROOR VDWHOOLWDUH", Fieldbus & Networks - Settembre 2003, p. 37...............................................................46

    [9] C. Randieri . Dossier: Fieldbus a bordo macchina - 3URILEXVSHUODILVLFDQXFOHDUH", Fieldbus & Networks - Settembre 2003, p. 50................................................................48

    file:///G:/Documents%20and%20Settings/Administrator/Desktop/intellisystem/parlanodinoi.htmfile:///G:/Documents%20and%20Settings/Administrator/Desktop/intellisystem/parlanodinoi.htm
  • 1

  • AUTOMAZIONE14

    RECS 101: UN WEB SERVEREMBEDDED PER APPLICAZIONIDI CONTROLLO REMOTOTRAMITE TCP/IP

    RECS 101:UN WEB SERVEREMBEDDED PER APPLICAZIONIDI CONTROLLO REMOTOTRAMITE TCP/IP

    di Cristian [email protected]

    Un web server embedded ! un web server gestito allinterno di un sistema embeddedcaratterizzato da risorse di calcolo limitate capace di gestire documenti ed applicazioniweb. Lintegrazione di un web server allinterno di un dispositivo di rete fornisceuninterfaccia utente grafica costruita tramite il linguaggio HTML. Lapplicazione dellatecnologia Web ad un sistema embedded permette la creazione di interfacce utente chesono user friendly, a basso costo, cross platform, e network ready. Aggiungendo allepotenzialit" di un web server embedded la tecnologia Java si ottiene un sistema capace digestire vere e proprie applicazioni che possono essere programmate con un linguaggio adalto livello quale il Java. Scopo di questo articolo ! quello di presentare una soluzione webserver embedded capace di gestire la Java Virtual Machine. Viene presentata larchitetturadi un web server embedded che pu# fornire uninterfaccia API (Application ProgramInterface) semplice e al tempo stesso potente. In particolare si discute la progettazione elimplementazione di RECS 101, che ! un web server embedded (prodotto da IntellisystemTechnologies) sviluppato al fine di poter gestire piccole applicazioni di controllo remoto. Inconclusione vengono presentate alcune applicazioni pratiche del dispositivo, cheprevedono la realizzazione di circuiti elettronici dinterfaccia, uno studio riguardante deitest di performance di RECS 101 ed unanalisi delle problematiche di protezione daattacchi alla sicurezza da parte di hacker.

    I SISTEMI WEB SERVEREMBEDDED ED INTERNETIl World Wide Web (o Web) ! in con-tinua evoluzione. Appare chiaro edevidente che tale tecnologia assumedelle nuove funzionalit" che vannomolto oltre la semplice visualizzazio-ne delle pagine Web. Per molteapplicazioni commerciali e scientifi-

    che il browser web ! diventato unostandard per lo sviluppo di interfac-ce utente di numerose applicazioni.Questo perch# i browsers web sonocapaci di fornire interfacce GUI avarie applicazioni client/server senzail bisogno di andare ad implementa-re del software per il lato client.Negli ultimi anni ! sempre pi$ cre-

    sciuto il numero di tecnologie webche possono essere applicate ad ele-menti gestibili dalla rete.Come ben noto la maggioranzadelle reti di computer viene gestitamediante il protocollo TCP/IP.In realt" TCP e IP sono due proto-colli utilizzati per interconnettere lereti. TCP sta per Transport Control

    AUTOMAZIONE

    prima parte

    2

  • AUTOMAZIONE15

    pensa di aggiungere alle funzionali-t" ormai consolidate di un web ser-ver embedded la capacit" di potergestire applicazioni Java ecco chequesti sistemi aprono le frontiere acapacit" inesplorate, che rendonoessi capaci di eseguire i pi$ varie-gati compiti quali, ad esempio,quelli di controllo remoto, supervi-sione e gestione di sistemi elettro-nici (fig. 1) .

    Nelle applicazioni di controllo remo-to si fa sempre pi$ presente lesi-genza di interconnettere apparec-chiature e strumentazioni tramiteweb server embedded al fine diavere una gestione quanto pi$decentralizzata possibile delle lorofunzionalit" [2]. Ognuno di questicontroller programmato opportuna-mente diviene capace di eseguiredifferenti algoritmi di controllo.

    APPROCCIO MEDIANTELUTILIZZO DELLATECNOLOGIA JAVAIl concetto della Virtual Machine diJava ! particolarmente indicato perquesto approccio permettendo luso

    di una strategia di controllo indi-pendente dalla piattaforma hardwa-re del sistema in cui viene gestita.Questa metodologia ! stata datempo adoperata nelle applicazioniInternet dove non sono richiestistringenti vincoli di real-time. Lusodel linguaggio di programmazioneJava per le applicazioni di controlloremoto fornisce il vantaggio di inte-grare sistemi general purpose con

    internet permettendo la supervisio-ne ed il controllo di sistemi.Oggigiorno i sistemi che si basanosu web server embedded richiedonosempre applicazioni pi$ complesse,facili da programmare, al fine di ese-guire i compiti di supervisione egestione. Per realizzare il concetto dinetwork computing viene presenta-ta la tecnologia Java al fine di otte-nere la combinazione sinergica disistemi di controllo realtime distri-buiti che siano gestibili tramite larete Internet.Con lincessante sviluppo dellamicroelettronica i sistemi embed-ded sono stati applicati a moltepliciprodotti industriali ed elettronici,

    Protocol e IP sta per InternetProtocol. Per essere pi$ precisiquando si parla di protocollo TCP/IPsi intende una suite di protocolli che! stata promossa come standard diInternet dallUnites States Secretaryof Defence. Obiettivo della suite diprotocolli TCP/IP ! quello di consen-tire la comunicazione di reti simili oeterogenee. Mediante i protocolli iprogettisti possono specificare i pro-cessi di comunicazione senza esserea conoscenza dei dettagli delle enti-t" che compongono la rete. I sistemidi comunicazione pi$ complessi uti-lizzano una suite di protocolli per lagestione dello scambio dei dati. Sipu% pensare che la suite dei proto-colli sia stratificata nel sistema direte del computer dellutente.Sebbene pi$ protocolli possanocoesistere allinterno di un unicostrato di rete, tutti i protocolli checompongono la suite devonocooperare tra di essi. Una suite diprotocolli pu% essere anche definitacome famiglia di protocolli. Lasuite dei protocolli TCP/IP ha ilcompito di gestire lo scambio deidati su Internet e quindi fornire solu-zioni a problemi che si verificanoquando si presentano errori dicomunicazione durante la trasmis-sione dei dati (ad esempio dovuti aguasti generici delle unit" hardwareo difficolt" connesse alla banda pas-sante offerta dalla rete).La gestione di apparati elettronici

    tramite web fornisce allutente la-bilit" di configurare e monitorarevariegati dispositivi tramite Internetmediante luso di un comune brow-ser. La soluzione migliore a questotipo di esigenze ! sicuramente datadallutilizzo di server web embed-ded connesso ad un infrastruttura direte al fine di fornire un interfacciautente basata su web costruitamediante lutilizzo dellormai notolinguaggio HTML [1] unitamente agrafici e ad altre caratteristichecomuni ai web browsers [2]. Se si

    AUTOMAZIONE

    Architettura di un web server embedded Figura 1

    3

  • AUTOMAZIONE16

    poich# presentano le caratteristichedi essere economici, affidabili conbuone performance se comparaticon il software utilizzato neiPersonal Computers [3].Il vantaggio delle tecnologieInternet permette di interconnetteretra loro dispositivi e sistemi allinter-no della rete internet. Tutto questofacilita laccesso ai dispositivi per-mettendo di effettuare operazioni dimonitoraggio, di controllo, di repor-ting, start up, shutdown di qualsiasidispositivo semplicemente premen-do dei tasti allinterno di un interfac-cia GUI gestita da un comune brow-ser [4].Il nuovo concetto che intendiamointrodurre si basa sullesecuzione diApplet Java per eseguire operazionidi controllo o di monitoraggio didispositivi remoti . In questo tipo disistemi il controllo distribuito siottiene mediante il trasferimento dipagine HTML e lesecuzione diapplet Java (fig. 2) .

    Questo nuovo concetto permettedi espandere le comuni capacit" deisistemi di controllo fornendo unsistema remoto distribuito per ilcontrollo di sistemi elettronici. La progettazione di sistemi embed-ded richiede lintegrazione e lo svi-luppo di componenti hardware esoftware: spesse volte queste sonoparticolarmente difficili da realizzarepoich# ogni controller possiede lasua piattaforma hardware e softwa-

    re. Anzich# adoperare linguaggi dif-ferenti e non standard per limple-mentazione del software nella mag-gior parte dei casi ! preferibile ado-perare un linguaggio comune [5]. IlJava rappresenta una scelta ottimaleper differenti motivi: ! un linguag-gio standard completo di librerie, !un linguaggio molto semplice cheriduce le problematiche inerenti la-nalisi dei programmi, la loro ottimiz-zazione e trasformazione [5],[6].

    I VANTAGGI DELLUTILIZZODI JAVAIl linguaggio di programmazioneJava si sta diffondendo sempre pi$allinterno dellindustria dellinfor-mation technology particolarmenteper le applicazioni che prevedonolutilizzo di database. Il Java ! un lin-guaggio di programmazione chepermette di installare unapplicazio-ne allinterno di un server ed esserequindi eseguita su diverse piattafor-me hardware. Questi vantaggi pos-

    sono essere brevemente riassunti neiseguenti punti:

    - Indipendenza dalla piattaforma:diversamente dai comuni compila-tori che producono codice per CPUspecifiche, il Java produce del codi-ce per una CPU virtuale. Al fine dirimanere indipendente da specifichepiattaforme hardware il sistema run-time di Java fornisce uninterfacciauniversale per qualsiasi applicazione

    che si desidera sviluppare. Tale inter-faccia denominata JVM (Java VirtualMachine) ! una sorta di processorevirtuale che si interpone tra il pro-cessore fisico del PC e lapplicazionescritta in Java. Tuttavia, lindipen-denza dalla piattaforma non ! suffi-ciente per assicurare il successo diun linguaggio di programmazione.La JVM ! da diverso tempo inclusaallinterno dei browser pi$ popolariquali, ad esempio, MicrosoftExplorer e Netscape. Alcuni sistemioperativi real-time includono al lorointerno la tecnologie Java e tutto ci%permette di giungere alla seguenteconclusione la JVM ! una risorsauniversale [5,7]; Potenza : Il Java racchiude in se

    nuove caratteristiche che includonola gestione dei database, linvoca-zione dei metodi remoti ed altrecaratteristiche inerenti la gestionedella sicurezza.

    Networking : Il Java nasce come lin-guaggio di programmazione distri-buito, il che si traduce nel fatto chela sua progettazione includeva sindallinizio la gestione di particolarifunzioni inerenti il networking. IlJava ha una libreria vastissima diroutine per la gestione dei protocol-li quali, ad esempio, il TCP/IP,lHTTP, lFTP. Le applicazioni Javapossono avere accesso ad oggettiattraverso la rete Internet per mezzodi URL (Universal Resource Locator,pi$ comunemente noto come indi-rizzo del sito web) in un modomolto simile allaccesso ad uncomune file system locale. Unendola tecnologia Java alle potenzialit"dei sistemi basati su web serverembedded si possono ottenere deisistemi molto potenti per la gestio-ne di applicazioni di controllo.

    Efficienza : Le moderne JVM supera-no la forte limitazione delle passatedove veniva evidenziata la proble-matiche dellestrema lentezza diesecuzione dei programmi.

    Attualmente grazie allutilizzo della

    AUTOMAZIONE

    Esecuzione di Applet Java per eseguire operazioni di controllo o di monitoraggio di dispositivi remotiFigura 2

    4

  • AUTOMAZIONE17

    tecnologia Just in Time (JIT) compi-ler le performance desecuzionedelle applet sono state fortementemigliorate [7].

    LUTILIZZO DI JAVAALLINTERNO DI SISTEMIWEB SERVER EMBEDDEDLuso di linguaggi object-orientedassieme alle loro tecniche di pro-gettazione permettono di ottenereun codice che risulta essere facil-mente riutilizzabile e mantenibile.Normalmente, unapplicazioneche va trasferita ad un controller sicompone di un file binario esegui-bile che viene direttamente esegui-to dalla CPU. Il vantaggio principa-le di un approccio di questo tipo sitraduce in una maggiore velocit"desecuzione.Il Java permette di ottenere la fun-zionalit" compila una sola volta eutilizza pi$ volte. E virtualmentepossibile utilizzare lo stesso codicecompilato in piattaforme differentie, quindi, eseguire il codice su dif-ferenti Sistemi Operativi per fare itest ed il debugging del softwareper poi trasferire il tutto allinternodi un dispositivo di controllo [3].Il Java si presenta come un lin-guaggio di programmazione forte-mente adottato per la programma-zione applicazioni che fanno diinternet un punto di forza. I vantaggi principali inerenti luti-lizzo delle applet Java allinterno diun web server embedded possonoessere riassunte nei seguenti punti:

    Non occorre sviluppare unaGraphical User Interface (GUI) poi-ch# i browser web di per se suppli-scono a tale funzionalit";

    Le dimensioni del codice Java sonominori rispetto alle istruzioni dicodice macchina rendendo parti-colarmente attrattivo lutilizzo ditale tecnologia allinterno di webserver embedded dove, sicuramen-te, la dimensioni della RAM messa

    a disposizione per le applicazioni !limitata;

    Essendo lesecuzione delle applet inlocale, e quindi non allinterno delsistema embedded, lefficienza e lacomplessit" desecuzione deglialgoritmi da eseguire sono a caricodel client e non del sistema embed-ded che, sicuramente, avr" risorsedi calcolo molto pi$ limitate rispet-to a quelle di un comune PC;

    Molti costruttori di microprocessoriper sistemi embedded hanno inve-stito nellimplementazione dellaJVM allinterno dei loro dispositivi:di conseguenza gran parte del soft-ware ! gi" disponibile;

    E intuitivo prevedere che in unimmediato futuro la maggior partedei kernel dei microcontrolloriincluder" la JVM.

    LA JAVA VIRTUAL MACHINE Attualmente esistono diversi modidi implementare la JVM. La fig. 3mostra due possibili implementa-zioni.

    Nella prima la JVM viene integrataallinterno di un ambiente di svi-luppo software. Laltra incorporaun Sistema Operativo Java cheviene particolarmente indicata perquelle applicazioni che prevedonolutilizzo di un unico ambiente disviluppo sia per i programmatoriche per gli utilizzatori [3]. Unavolta disponibile linterfaccia JVM !possibile includerla allinterno di

    un sistema di sviluppo embeddedintegrandola con le librerie delcodice nativo. Ci% pu% essere otte-nuto utilizzando qualsiasi linguag-gio di programmazione quale, adesempio, il Java bitcode interpre-ter e, quindi, compilare il tutto inaccordo ai vincoli hardware delsistema in cui la si vuole integrare.Lutilizzo della JVM allinterno diun web server embedded presentail vantaggio che coloro che svilup-peranno il codice per la program-mazione dellapplicazione allin-terno del sistema embedded utiliz-zeranno istruzioni Java e nondovranno tener contro delle rela-zioni che intercorrono tra la JVM ela microprogrammazione del siste-ma embedded. In pi$ si pu% forni-re allutente finale uninterfacciatipo applet parametrica che richie-de semplicemente il setup di alcu-ni parametri. In questultimo casolutente finale non necessita diavere alcuna conoscenza riguardoil linguaggio di programmazioneJava.

    IMPLEMENTAZIONE DELLAJ VM ALLINTERNO DI UN WEBSERVER EMBEDDEDLapplicazione che viene presenta-ta in questo articolo, pur essendostata implementata allinterno diun architettura basata su proces-sore UBICOM, pu% essere virtual-mente implementata allinterno diqualsiasi microprocessore o micro-controllore che dir si voglia. La fig.4 mostra lo schema architetturalesemplificato di un possibile scena-rio dapplicazione in cui sonorichiesti dei sistemi per il controllodi 16 ingressi digitali e 16 uscitedigitali. In particolare ci si riferisceal dispositivo RECS 101 prodottoda Intellisystem Technologies.

    Larchitettura presentata permette lasimulazione e lo studio di proceduretipiche dei sistemi di controllo quali,

    AUTOMAZIONE

    Possibili implementazioni della JVMFigura 3

    5

  • AUTOMAZIONE18

    ad esempio: acquisizione di segna-li, azioni di controllo per mezzo diattuatori, lelaborazione e la pre-sentazione delle informazioniacquisite o manipolate.Il sistema embedded presentato sibasa su un software di svilupposcritto in C. Tale programma pu%far eseguire dei task preprogram-mati allinterno della ROM o fareseguire delle applicazioni Java.La capacit" di far eseguire applica-zioni Java viene fornita dai seguen-ti componenti software che devo-no essere prevaricati nella ROM deldispositivo mediante il su citatosoftware di sviluppo [6]:- Il file loader .class, che permettedi fare il downloads del codice Javada eseguire nella RAM del disposi-tivo; Limplementazione della JVM

    stessa; Implementazioni di classi per la

    gestione dellhardware locale; Classi Java riferite al sistema

    embedded.

    La JVM ! stata implementate in

    accordo alle specifiche dettatedallo standard [7], fig. 5 .

    Il programma monitor che risiedeallinterno del sistema embedded sca-rica il file .class che deve essere ese-

    guito allinterno della memoria RAM;dopodich# linformazione viene pro-cessata e si provvede alla costruzionedella Constant Pool Table. LaConstant Pool ! quindi risolta ed ilprogramma passa alla ricerca delmetodo dinizializzazione del pro-gramma main che dovr" essere ese-guito. Dopo aver trovato questimetodi, la JVM ricerca il Byte Codeche deve essere eseguito e, di conse-guenza, invoca linterprete di byteco-de. Quando i metodi delle classi Javasono stati invocati la JVM richiamadelle subroutine del firmware delmicroprocessore che provvederannoallimplementazione del metodo spe-cifico.La JVM di per se stessa non comunicadirettamente con lhardware del siste-ma ma usa delle classi per fare ci%. Unfattore molto limitante di questi siste-mi ! dovuto alla scarsit" della memo-ria che si ha a disposizione. Di conse-guenza ci% porta a fare delle scelte suquali metodi e classi devono essereimplementati allinterno del sistema.

    UN IMPLEMENTAZIONEPRATICA RECS 101RECS 101 rappresenta una realizza-zione pratica di quanto appena espo-sto [8]. La tab. 1 riporta le principalicaratteristiche e specifiche del sistemaproposto.

    RECS 101 integra al suo interno unnetwork processor dotato di interfac-cia di rete Ethernet per connettersidirettamente a qualsiasi rete locale siaessa Internet che Intranet. Ci% per-mette agli integratori di sistemi e alleaziende produttrici di connettere iloro dispositivi direttamente adInternet attraverso una rete Lan e, diconseguenza, di gestire da remoto ilcontrollo totale dei loro dispositiviattraverso interfacce grafiche utentepersonalizzabili, direttamente accessi-bili mediante i comuni browser quali,ad esempio, Microsoft InternetExplorer e Netscape Navigator.

    AUTOMAZIONE

    Architettura della JVM implementataFigura 5

    Scenario dapplicazione del dispositivo RECS 101Figura 4

    6

  • ni del tipo JPG, GIF, BMP, file videotipo SWF di Flash e qualsiasi altro filesi ritenga opportuno che lHTTP ser-ver di RECS 101 debba gestire.Selezionando il link RECS 101

    Home page personalizzabiledel dispositivo RECS 101

    AUTOMAZIONE19

    RECS 101 si basa sullo schema hard-ware presentato in fig. 6 .RECS 101 viene fornito con unapagina web precaricata allinternodella memoria flash del dispositivoche pu% essere modificata a piaci-mento in modo da personalizzarnele applicazioni.RECS 101 contiene un web serverintegrato capace di gestire fino a512k di documenti ed applicazioniweb: tali risorse sono precaricateallinterno della memoria flash deldispositivo. La fig. 7 ! un esempio diuna pagina web gestita da RECS101 che pu% essere utilizzata perfornire informazioni statiche sul dis-positivo quali, ad esempio, immagi-ni, testi, files etc. La pagina visualizzata pu% essere per-sonalizzata a piacimento medianteluso dei pi$ comuni editor di pagineHTML. Le pagine web possono con-tenere al loro interno file di immagi-

    Control Panel si acceder" alla pagi-na web dedicata al controllo dellap-plicazione.La caratteristica che rende unico taledispositivo consiste nellutilizzare unweb server allinterno di unapplica-zione embedded con la possibilit" dieseguire del codice Java per lagestione dellinterfaccia relativa alcontrollo delle 16 porte di input edelle 16 porte di output ( fig. 8 ).Tale caratteristica permette di potergestire linterfaccia utente tramiteunApplet Java parametrica: in que-sto modo lutente finale pu% svilup-pare la propria applicazione di con-trollo in modo molto veloce e sicurosenza dover essere in grado di pro-

    grammare in Java.Allinterno del pannello di controllo(fig. 8 ) si pu% notare un LEDaggiuntivo specificato Network.La sua funzionalit" ! quella di forni-re allutente lo stato della rete: unaconnessione senza problemi provo-ca il suo continuo lampeggiare. Nelcaso di perdita momentanea delcollegamento il LED non lampegge-r" e, se la connessione non si ristabi-lisce entro qualche minuto il sistemachiuder" la connessione con RECS

    AUTOMAZIONE

    Specifiche del diapositivo RECS 101Tabella 1

    Schema funzionale di RECS 101Figura 6

    Figura 7

    Esempio di una possibile interfacciaGUI implementata in RECS 101

    Figura 8

    7

  • AUTOMAZIONE20

    101. Problematiche di questo tipo nor-malmente non sorgono in reti Intranetma possono capitare se si collega RECS101 alla rete Internet .

    PERSONALIZZAZIONEDELLINTERFACCIA UTENTERECS 101 ! un dispositivo totalmentepersonalizzabile. Viene fornito contutto il software necessario allo svilup-patore per poter sviluppare rapidissi-mamente la propria applicazione inmaniera facile e sicura. Il software indotazione contiene alcuni files edunAPPLET (RECS.jar) di controllo chepossono essere personalizzati median-te i parametri riportati di seguito: PDFOOK: Stringa dinizializzazione

    Applet. Non ! possibile effettuarenessuna modifica

    host: Indirizzo IP associato a RECS101(Es. hostvalue=&172.16.10.103& vuol direche lindirizzo IP di RECS !172.16.10.103

    port: Porta TCP adoperata dallapplicazione per comunicare conRECS 101. Il valore di tale porta !fisso e pertanto non modificabile(Es. port value=6001)

    polling: Intervallo di Polling. Ha unarisoluzione di 10 ms e pu% esseresettato in funzione dellapplicazio-ne. Per es. polling value=1 signifi-ca che il check dello stato d I/O deldispositivo verr" controllato ogni10 ms

    NumLed: Numero ingressi damonitorare mediante LED bicolore(Es. NumLed value=16, verrannovisualizzati 16 LED indicatori distato)

    NumB: Numero di pulsanti dicomando per la modifica dellostato delle uscite (Es. NumBvalue=16, verranno visualizzati 16pulsanti)

    Per comodit" del lettore la Tab. 2riassume tutti i parametri gestitidallapplet in questione.Di seguito si riporta il frammento delcodice HTML del file index.html rela-

    tivo alla personalizzazione dellAppletin cui si evidenzia il setup dei para-metri di inizializzazione.Lesempio in questione prevede luti-lizzo di tutte le 16 uscite e di tutti i 16ingressi messi a disposizione dall-hardware di RECS 101.

    La fig. 8 rappresenta linterfacciautente che si ottiene applicando ilcodice appena esposto. Le limitazionidi questApplet consistono nel fattoche non ! possibile modificare i testied i colori dei vari componenti che for-mano linterfaccia utente.Per gli utenti pi$ esperti viene messa adisposizione un Applet pi$ elaboratache permette di personalizzare ulte-riormente linterfaccia grafica utentemediante altri parametri che permet-tono di definirne colori e testi ( fig. 9 ).Di seguito si riassumono i parametriche permettono la personalizzazionedellApplet in questione (RECS.jar ver-sione avanzata): PDFOOK : Stringa dinizializzazio-

    ne Applet. Non ! possibile effet-

    tuare nessuna modifica host: Indirizzo IP associato a RECS 101

    (Es. host value= &172.16.10.103&. Vuoldire che lindirizzo IP di RECS !172.16.10.103

    port: Porta TCP adoperata dallapplicazione per comunicare conRECS 101. Il valore di tale porta !fisso e pertanto non modificabile (Es.port value=6001)

    polling: Intervallo di Polling. Ha unarisoluzione di 10 ms e pu% essere set-tato in funzione dellapplicazione.Per es. polling value=1 significache il controllo dello stato d I/O deldispositivo verr" controllato ogni 10ms

    Title: Stringa intestazione applicazio-ne. (Es. Title value=&RECS I/O DEMO&)

    ColTit: Colore da associare alla strin-

    AUTOMAZIONE

    Parametri di configurazione dellAppletTabella 2

    Interfaccia GUI avanzataimplementata in RECS 101

    Figura 9

    8

  • AUTOMAZIONE21

    ga impostata nel parametroTitolo. (Es. ColTit value=&green& , iltesto verr" stampato in verde)

    CAPL: Colore di sfondo Applet. (ES.CAPL value=&yellow&, lo sfondo sar"giallo)

    NumLed: Numero ingressi da moni-torare mediante LED bicolore (Es.NumLed value=16, verranno visua-lizzati 16 LED indicatori di stato)

    NumB: Numero di pulsanti dicomando per la modifica dello statodelle uscite (Es. NumB value=16,verranno visualizzati 16 pulsanti)

    TBT*: Testo da associare al pulsante *relativo alluscita * (Es. TBT1value=&Comando 10& ! il testo daassociare al pulsante 10 per modifi-care lo stato dell uscita 10)

    CTBT*: Colore del testo associato altitolo del pulsante *. (Es. CTBT10value=&red&, il colore associato altesto relativo al pulsante 10 ! rosso)

    CLBF*: Colore associato al LED di

    stato dell uscita * quando questulti-ma ! nello stato OFF (Es. CLBF10value=&gray&, il colore del LED asso-ciato allo stato OFF dell uscita 10sar" grigio)

    CLBT*: Colore associato al LED distato dell uscita * quando questulti-ma ! nello stato ON (Es. CLBT10value= &blue&, il colore del LED asso-ciato allo stato ON dell uscitan.10 sar" blu)

    TLD*: Testo da associare al LED *relativo all ingresso *. (Es. TLD1value=&Luce Camera& ! il testo daassociare al LED 1 per effettuare lalettura dello stato dell ingresso 1)

    CTLD*: Colore del testo associato altitolo del LED * relativo allingresso *.(Es. CTLD1 value=&black&, il coloreassociato al testo relativo al LED 1sar" nero)

    CLIF*: Colore associato al LED distato dell ingresso * quando que-stultimo ! nello stato OFF (Es.

    CLIF10 value=&green&, il colore delLED associato allo stato OFF dellingresso 10 sar" verde)

    CLIT*: Colore associato al LED distato dell ingresso * quando que-stultimo ! nello stato ON (Es.CLIT10 value=&red&, il colore del LEDassociato allo stato ON dellingresso 10 sar" rosso)

    Per comodit" del lettore la tab. 3 rias-sume in forma tabulare i parametripersonalizzabili dellApplet per lagestione avanzata di RECS 101.Di seguito si riporta il frammento delcodice HTML del file index.html relati-vo alla personalizzazione dellApplet incui si evidenzia il setup dei parametri diinizializzazione.

    Un esempio di personalizzazionedei pulsanti e degli indicatoriLED ! rappresentato dal seguen-te codice contenuto allinternodel file index.html:

    AUTOMAZIONE

    Parametri di configurazione dellApplet per la gestione avanzata di RECS 101Tabella 3

    9

  • AUTOMAZIONE22

    Poich# non occorre RECS 101 persimularne il suo funzionamento,collegandosi al seguente indirizzohttp://www.intellisystem.it/recs/Interfaccia.htm si possono provarele due interfacce proposte.Per chi invece volesse dilettarsi asperimentare la personalizzazionedelle interfacce, IntellisystemTechnologies mette a disposizionenel proprio sito tutto il softwarenecessario.Per fare ci% occorre: scaricare una delle versioni delle

    interfacce proposte dal seguenteindirizzo http://www.intellisy-stem.it/recs/download.htm;

    decompattare i file in una cartel-la;

    modificare i parametri dell'inter-faccia agendo sul file index.htmlutilizzando un qualsiasi editorweb;

    richiamare la pagina 101.htmlmediante un qualsiasi WebBrowser.

    I files necessari per la personalizza-zione dell'interfaccia utente diRECS 101 sono essenzialmente tre(a parte tutti quelli necessari per ilcontenuto grafico delle pagineweb): 101.html, index.html,RECS.jar.

    La fig. 10 riassume quanto detto inprecedenza, ovvero:

    1. La pagina 101.html rappresentala home page del sito web conte-nuto in RECS 101. Al suo interno !presente un collegamento allapagina Index.html;

    2. La pagina Index.html contieneal suo interno i parametri di setupdellApplet per la gestione degliingressi e delle uscite di RECS 101;

    3. Tramite lapplet RECS.jar si inter-viene sulle porte dinput e di out-put per la gestione dellhardwareche si intende controllare.

    NEL PROSSIMO NUMERO SI DIS-CUTER DEI SEGUENTI ARGO-MENTI RIGUARDANTI RECS 101:

    1) Configurazione dei parametri direte

    2) Upload dellinterfaccia utentepersonalizzata

    3) Implementazione delle interfac-ce hardware sulle porte diInput/Output

    AUTOMAZIONE

    [1] McCombie, B.,Embedded Web server now and in the fu ture, Real-TimeMagazine, no.1 March 1998, pp. 82-83.

    [2] Wilson, A.,The Challenge of embedded Internet, El ectronic ProductDesign, January 1998, pp. 31-2,34.

    [3] D. Mulchandani, Java for Embedded Systems, in IEEE ComputerMagazine, pp. 30-39, May June 1998.

    [4] Aptronix, Bring Embedded System to the Internet, http://www.aptro-nix.com.

    [5] J. Gosling, B. Joy, G. Steele,The Java Laguage Specification,http://java.sun.com

    [6] J.S. Young et All., Design and specification of embedded system in javausing Successive, formal Refinement, Proceedings of DAC98, 1998Design Automation Conference. San Francisco, C.A.,june 15-19.

    [7] T. Lindholm, F. Yellin The Java Virtual Machine Specification, 1996.http://java.sun.com

    [8] Intellisystem Technologies. http://www.intellisyste m.it

    Electronic shop 08

    Files necessari per la personalizzazione dell'interfaccia utente di RECS 101Tabella 2

    BIBLIOGRAFIA

    10

  • 11

  • AUTOMAZIONE124

    RECS 101: UN WEB SERVEREMBEDDED PER APPLICAZIONIDI CONTROLLO REMOTOTRAMITE TCP/IP

    RECS 101:UN WEB SERVEREMBEDDED PER APPLICAZIONIDI CONTROLLO REMOTOTRAMITE TCP/IP

    di Cristian [email protected]

    In questa seconda parte della presentazione del dispositivo RECS 101 sono affrontatii seguenti argomenti[1]: le problematiche inerenti la configurazione dei parametri direte per il corretto utilizzo del dispositivo allinterno di una rete Intranet/Internet;Come effettuare le operazioni di upload dellinterfaccia GUI personalizzata allinternodella memoria flash del dispositivo; In conclusione vengono presentati due possibilicircuiti dinterfaccia che permettono allo sviluppatore di implementare in modo sicuroun proprio hardware per interfacciare RECS 101 a qualsiasi dispositivo/impianto dacontrollare via Internet.

    CONFIGURAZIONE DEI PARAMETRI DI RETEPrima di poter utilizzare RECS 101occorre configurare correttamente isuoi parametri di rete utilizzando ilprogramma shareware di utilit! RECSUtility, scaricabile al seguente indirizzohttp://www.intellisystem.it/recs/download.htm. RECS Utility " statoprogettato e realizzato per lavora-re su piattaforma MicrosoftWindows sui sistemi operativi delleversioni 95/98/ME/NT/2000 e XPHome/Professional.Una volta installato ed eseguito RECSUtility, verr! visualizzata la mascherainiziale del programma che permettedi impostare lindirizzo IP di RECS101 (fig. 1 ) Prima di configurare lin-dirizzo IP da assegnare al dispositivo" necessario avere informazioni sullastruttura degli indirizzi IP della rete in

    cui si andr! ad installare RECS 101.Pertanto occorrer! conoscere:

    Un indirizzo IP non utilizzato allin-terno della struttura;

    La Subnet Mask della struttura.

    RECS 101 " preconfigurato in fase ditesting con le seguenti impostazionidi fabbrica:

    Indirizzo IP: 172.16.10.103Subnet Mask: 255.255.255.0

    Per impostare o cambiare lindirizzo

    IP di RECS 101 occorre prima reini-zializzare lindirizzo IP al valore didefault 0.0.0.0 (operazione che verr!descritta di seguito). Inizializzare unnuovo indirizzo IP per RECS 101implica la rimozione dellassociazioneIP/MAC memorizzata allinterno delPC che sintende adoperare. Taleinformazione " memorizzata nellacache del protocollo ARP. Tramite ilcomando mostrato di seguito " pos-sibile visualizzare tutte le associazioniIP/MAC presenti nel PC (ovviamentegli indirizzi IP riportati nellesempiosono puramente fittizi):

    AUTOMAZIONE

    seconda parte

    >> arp aInterface: 192.168.1.100 on Interface 2Internet Address Physical Address Type192.168.1.15 00-01-95-04-02-03 dynamic192.168.1.23 00-a0-95-14-12-23 dynamic

    12

  • AUTOMAZIONE125

    mendo il pulsante Trova dopo qual-che istante il software restituir! lindi-rizzo IP correntemente impostato neldispositivo RECS 101. Occorre sottoli-neare che la ricerca non avr! esitopositivo se la Subnet Mask del PC ado-perato per la configurazione " diversada quella impostata allinterno del dis-positivo RECS 101 che per default "255.255.255.0. Verificare anche lindi-rizzo IP del PC da cui accedete a RECS101 facendo in modo che lindirizzodel PC ricada allinterno della stessaSubnet Mask di RECS 101.Ad esem-pio, supponendo che RECS 101 siaconfigurato nel modo seguente:

    Indirizzo IP: 172.16.10.103 Subnet Mask: 255.255.255.0

    il PC con il quale si vuole accedere aRECS 101 dovr! avere la seguenteconfigurazione:

    Indirizzo IP: 172.16.10.xxxSubnet Mask: 255.255.255.0

    Dove xxx sta per qualsiasi numerocompreso tra 0 e 255. Per modificarela configurazione dellindirizzo IP edella Subnet Mask del PC occorreadoperare lesatta funzionalit! diWindows (fig. 5 ). Una volta rimossocon successo il vecchio indirizzo IPprecedentemente assegnato a RECS101 si " pronti per inserire in nuovoindirizzo IP selezionando la finestraConfigurazione indirizzo IP ( fig. 1 ).Se nella tabella DataBase BootPappare la vecchia configurazione deldispositivo, occorre premere il pulsan-te Modifica configurazione altri-menti premere il pulsante Aggiunginuovo dispositivo: si aprir! la finestrariportata in fig. 6 . Tale finestra presen-ter! i valori in precedenza impostatinel caso in cui il dispositivo sia gi! pre-sente nel DataBase BootP. Viceversaconterr! i campi vuoti. La fig. 6 ripor-ta lesempio di questultimo caso.Modificare il campo Indirizzo IP colnuovo indirizzo IP, il campo IndirizzoMAC (lindirizzo MAC del vostro dis-positivo " situato nel pannello poste-riore, fig. 4 ), il campo Gateway (seesiste un Gateway nella vostra rete) edin fine il campo Subnet Mask ( fig.6). Premendo il tasto Aggiungi leinformazioni editate saranno memo-rizzate nel database degli indirizzi IPassociato a RECS Utility. Per completare la configurazione del-lindirizzo IP memorizzato occorre lan-ciare le funzionalit! del server BootPpremendo il pulsante Avvio BootPdella finestra Configurazione indiriz-zo IP (fig. 1 ). Attendere qualcheistante sino a quando lo stato del dis-positivo evidenzia la scritta Invio dellareplica BootP allindirizzo IP

    La rimozione di tale associazione vafatta utilizzando il comando ARP nelmodo seguente;

    >> arp d 192.168.1.15

    Adesso si " pronti a reinizializzare lin-dirizzo IP allinterno del dispositivoRECS 101. Selezionando la finestraConfigurazione indirizzo IP e pre-mendo il pulsante Cancella indirizzoIP sar! visualizzata la finestra riporta-ta in fig. 2 . Dopo aver correttamenteimpostato lindirizzo IP che si vuolecancellare, automaticamente allapressione del pulsante OK lindirizzoIP di RECS 101 sar! impostato al suovalore di default 0.0.0.0. Nel caso incui non si conosce a priori il vecchioindirizzo IP del dispositivo, si pu# ado-perare la funzione di ricerca indirizzoIP tramite la pressione del pulsanteRicerca indirizzo IP. Sar! visualizzatala finestra riportata in fig. 3 . Inserendolindirizzo MAC riportato nel pannelloposteriore del dispositivo (fig.4 ) e pre-

    AUTOMAZIONE

    Schermata iniziale di RECS Utitlity.Figura 1

    Finestra per la cancellazione dellindirizzo IP. Figura 2

    13

  • AUTOMAZIONE126

    [ x x x . x x x . x x x . x x x ] ( d o v exxx.xxx.xxx.xxx sar! il nuovo indi-rizzo IP impostato). Attendere sino aquando il led Tx non finisca di lam-peggiare, quindi premere il pulsanteArresto BootP ( fig. 1 ). A questopunto lindirizzo IP di RECS 101 "stato cambiato. Se linizializzazionedellindirizzo IP " avvenuta con suc-cesso, il Led TX del dispositivo lam-pegger! in continuazione. Per verifi-carne il corretto funzionamento utiliz-zare il comando Ping da DOS. Adesempio, supponendo che il nuovoindirizzo sia 172.16.10.105, se ilcomando Ping risponde come diseguito riportato, allora la modificadellindirizzo IP ha avuto successo. Incaso contrario ripetere tutto il proce-dimento descritto.

    Potrebbe capitare il caso che il disposi-tivo RECS 101 sia settato con un indi-rizzo IP non compatibile con la retenella quale RECS 101 " stato installato.Ci# si traduce nel fatto che RECS 101non pu# essere indirizzato e di conse-guenza non " possibile cambiare il suoindirizzo IP. In questo caso lunica solu-zione praticabile " quella di sconnettereRECS 101 dalla rete Lan nella quale erainstallato e connetterlo direttamente adun PC dotato dinterfaccia Ethernetmediante un cavo di rete incrociato.

    Le operazioni da compiere sono rias-sunte nei seguenti punti:

    1.Scollegare RECS 101 dalla rete Lan.2.Collegare RECS 101 ad un PC trami-

    te un cavo di rete incrociato.

    Le figure 7 e 8 mostrano la diffe-renza di connessione tra un cavodi rete dritto ed uno incrociato.RECS 101 pu# essere collegatodirettamente ad internet e quindirendere le sue applicazioni visibilida tutte le parti del mondo se "configurato con un indirizzo IPstatico.La fig. 9 ne rappresenta una pos-sibile connessione.

    In sintesi ci# che occorre ":

    1.Un indirizzo IP statico, ovvero unindirizzo IP che abbia visibilit! suInternet.

    2.Una connessione diretta ad inter-net ad esempio ADSL o una reteLAN perennemente connessa.

    3.Condividere la connessione adinternet tramite un Router e/o unHub/Switch.

    4.Collegare RECS 101 alla rete dopoaverlo configurato con il relativoindirizzo IP statico.

    UPLOAD DELLINTERFACCIAUTENTE PERSONALIZZATAPer sfruttare al massimo le potenzia-lit! di RECS 101, occorre personaliz-zare linterfaccia grafica del dispositi-vo agendo e/o modificando i filesforniti dal costruttore. Definita lin-terfaccia utente per lapplicazioneche sintende progettare non restache fare lupload allinterno dellamemoria flash di RECS 101. Si ricor-da che la memoria totale a disposi-zione dellutente " di 500 KByte, consupporto fino a 256 differenti file.Poich$ RECS 101 utilizza un filesystem proprietario, i file relativiallinterfaccia web sono gestitimediante una tabella interna di tipo

    AUTOMAZIONE

    Indirizzo MAC.Figura 4Finestra per la ricerca dellindirizzo IP impostato nel dispositivo.Figura 3

    >> Ping 172.16.10.105>> Pinging 172.16.10.105 with 32 bytes of data:

    Reply from 172.16.10.105: bytes=32 time=10ms TTL=25 1Reply from 172.16.10.105: bytes=32 time

  • AUTOMAZIONE127

    file index. Per trasferire i files allin-terno di RECS 101 " necessario proce-dere prima alla creazione di un file diprogetto che rappresenta limmaginedei files che dovranno essere memo-rizzati allinterno della memoria flash.Il file di progetto, che presenta une-stensione *.REC, pu# essere unica-mente gestito dal web server integra-to in RECS 101. RECS Utility contieneal suo interno delle funzionalit! dedi-cate alla costruzione e allupload diquesto tipo di file. Per procedere allu-pload dellinterfaccia utente persona-lizzata occorre seguire i seguenti passi:

    1) Creare e/o modificare le pagine web personalizzate con qualsiasi software di web-publishing.

    2) Impostare i parametri dellapplet in funzione delle esigenze di progetto.

    3) Utilizzare il software RECS Utilityper creare il file di progetto *.REC.

    4) Fare lupload del file di progetto allinterno di RECS 101.

    Di seguito " presentato un esempioillustrativo atto a descrivere loperazio-ne di upload dellinterfaccia persona-lizzata presente nel CD-Rom fornito indotazione situata allinterno della car-tella CP (il lettore pu# scaricare talesoftware direttamente da questo indi-rizzo:http://www.intellisystem.it/recs/downloads/CP.zip). Poich$ luploaddel file di progetto avviene mediante ilprotocollo UDP (protocollo che nonprevede la conferma della ricezionedei pacchetti inviati) il lettore, in real-t!, pur non avendo a disposizioneRECS 101 pu# emulare tale funziona-mento anche se il dispositivo non "fisicamente connesso alla rete.

    Le operazioni da compiere per proce-dere alloperazione di upload sono leseguenti:

    1) Dopo aver lanciato RECS Utilityselezionare lopzione WebUpload come riportato in fig. 10 .

    2) Premere il pulsante Seleziona Files

    AUTOMAZIONE

    Finestra per la configurazione del nuovo indirizzo IP.Figura 6

    Maschera di windows per il setup della connessione di rete.Figura 5

    15

  • AUTOMAZIONE128

    di progetto e selezionare la cartellacontenente i files (Ad esempio la cartella Control Panel CPcontenuta allinterno del CD-Romfornito in dotazione), premere okper proseguire (fig. 11 ).

    3) Inserire quindi il nome da assegnare al file di progetto e premere il pulsante Salva (fig. 12 ).

    4) Premere il pulsante Upload pertrasferire il file immagine allinternodi RECS 101. Questa procedura attiver! una barra di progressioneche indica lo stato davanzamentodelloperazione di upload in corso.Al termine di tale fase sar!visualizzato un messaggio checomunica la chiusura delloperazione.

    Nel caso si volessero programmarepi% RECS 101 con la stessa interfacciautente e quindi col medesimo indiriz-zo IP si possono saltare le fasi descrittenei punti 1-4 a patto di possedere ilfile di progetto *.REC. In questo casopremere il pulsante Seleziona File diprogetto ( fig. 10 ), selezionare il filedi progetto da trasferire in RECS 101(fig. 13 ), quindi procedere con lope-razione di upload premendo il pulsan-te Upload ( fig. 10 ).

    IMPLEMENTAZIONE DELLEINTERFACCE HARDWARE SULLEPORTE DI INPUT/OUTPUTRECS 101 si interfaccia con limpiantoo dispositivo da controllare mediantedue porte a 16 bit digitali, rispettiva-mente, una di Input ed unaltra diOutput poste sul frontalino posteriore.La fig. 14 riporta la piedinatura deiconnettori Cannon a 25 poli che ospi-tano tali porte. Il progettista che intende interfacciareRECS 101 deve predisporre delle inter-facce che consentono il correttorispetto delle caratteristiche elettroni-che della logica TTL implementatanelle due porte. Di seguito distingue-remo due tipi dinterfacce rispettiva-mente una per la porta di Input edunaltra per la porta di Output.

    UNIT DINPUTPoich$ linterfaccia di I/O di RECS 101lavora con livelli logici TTL il dispositi-vo da interfacciare alla porta dingres-so deve presentare anchesso un inter-faccia di tipo TTL. I 16 bit dingressoper lapplicazione fornita sono statiprogettati per funzionare in logica TTLLow Active .Non sempre per# i dispositivi hannodelle porte TTL e perci#, in questocaso, " opportuno adoperare un cir-cuito che interponendosi tra RECS101 e il dispositivo da interfacciarepossa connettere i due dispositivisenza che essi corrano il rischio di dan-neggiarsi. Il circuito suggerito utilizzadei fotoaccopiatori che, garantendo

    AUTOMAZIONE

    Realizzazione di un cavo incrociato.Figura 8

    Esempio di una possibile connessione di RECS 101 ad Internet tramite una linea ADSL.Figura 9

    Tipologie di cavi di rete cavo dritto e cavo incrociato.Figura 7

    16

  • Selezione dei file di progetto.

    AUTOMAZIONE129

    un totale isolamento tra i due disposi-tivi, ne assicurano il corretto funziona-mento. La fig. 15 mostra una possibi-le realizzazione del circuito proposto.

    UNIT DOUTPUTRECS 101 " dotato 16 uscite che lavo-rano con livelli logici TTL progettatiper funzionare in logica HighActive . Affinch$ RECS 101 possaessere correttamente interfacciato conun altro dispositivo che lavora con

    AUTOMAZIONE

    Figura 11

    Maschera per la gestione dellupload di RECS Utility.Figura 10

    Creazione del file di progetto.Figura 12

    Selezione del file di progetto.Figura 13

    Piedinatura dei connettori di I/O di RECS 101.Figura 14

    17

  • AUTOMAZIONE130

    tensioni diverse si consiglia luso difotaccopiatori che garantendo untotale isolamento tra i due dispositivine assicurano il corretto funzionamen-to. La fig. 16 mostra lo schema elettri-co di un circuito desempio per la rea-lizzazione di uninterfaccia duscita dacollegare a RECS 101. Tale circuito sipresta benissimo per tutte quelle

    applicazioni nelle quali " necessarioeffettuare un controllo di tipoON/OFF di carichi di qualunque tipo. Poich$ il circuito contiene dei relayassieme agli optoisolatori si ottiene uncircuito doppiamente isolato sia galva-nicamente (per mezzo dei realy) cheotticamente (mediante luso di fotoac-coppiatori). Questa propriet! " da non

    sottovalutare per prevenire possibilirischi di danneggiamento di RECS 101o peggio ancora di tutti i sistemi pre-senti nella rete a cui " connesso RECS101: in questo modo si " sicuri che perqualsiasi operazione errata compiuta avalle dellinterfaccia il danno " comun-que confinato al danneggiamento del-linterfaccia stessa.

    DEVELOPERS BOARDSu richiesta dellutente, IntellisystemTechnologies " in grado di fornireuna developers board per il dispo-sitivo RECS 101 (fig. 17 ).La developers board di RECS 101" una scheda che integra al suointerno 16 switches per la simula-zione dei 16 ingressi digitali diRECS 101 e 16 display a LED perle relative 16 uscite. Gli switchrelativi ai 16 ingressi sono statiprogettati per lavorare secondologica TTL Low Active, e i 16display relativi alloutput sonostati progettati per lavoraresecondo logica TTL High Activecompatibilmente alle specifiche diRECS 101. Le tabelle 1 e 2 riportate di segui-

    AUTOMAZIONE

    Interfaccia per la connessione di un dispositivo alla porta dingresso di RECS 101.Figura 15

    Interfaccia per la connessione di un dispositivo mediante relay alla porta duscita di RECS 101Figura 16

    18

  • AUTOMAZIONE131

    board " possibile progettare e svi-luppare applicazioni senza aver adisposizione leventuale impiantoda controllare. Dotata di due con-nettori ausiliari la RECS developersboard permette allo sviluppatoredi estendere le sue funzionalit! adaltri dispositivi elettronici in mododa poter effettuare velocemente lecomuni operazioni di debuggingdelle applicazioni.La fig. 18 riporta la piedinaturadei connettori ausiliari descritti inprecedenza.

    Nel prossimo numero si discuter!dei seguenti argomenti riguardantiRECS 101:

    1) Protocollo di comunicazioneimplementato in RECS 101.

    2) Monitor dello stato di I/O.3) Controllo dei comandi di Output.4) Comunicare con RECS 101:

    Linterfaccia Socket in C.5) Comunicare con RECS 101:

    Linterfaccia Socket in Java.

    AUTOMAZIONE

    to riassumono quanto detto inprecedenza.La RECS developers board nonnecessita di alimentazione esternapoich$ gli viene fornita diretta-mente da RECS 101 tramite i dueconnettori relativi allIO.Mediante la RECS developers

    RECS developers board.Figura 17

    Logica Low Active. Tabella 1

    Logica High Active. Tabella 2

    [1] Intellisystem TechnologiesRECS 101 Manuale Utente,http://www.intellisystem.it

    BIBLIOGRAFIA

    Piedinatura dei connettori ausiliari presenti nella RECS developers board.Figura 18 Electronic shop 24

    19

  • 20

  • AUTOMAZIONE68

    RECS 101: UN WEB SERVEREMBEDDED PER APPLICAZIONIDI CONTROLLOREMOTO TRAMITE TCP/IP

    RECS 101: UN WEB SERVEREMBEDDED PER APPLICAZIONIDI CONTROLLOREMOTO TRAMITE TCP/IP

    di Cristian Randieri [email protected]

    PROTOCOLLO DI COMUNICAZIO-NE IMPLEMENTATO IN RECS 101RECS 101 effettua il controllo dellesue porte digitali mediante un inter-faccia basata sui socket di Internet.Per ottenere il controllo remoto delleporte di I/O attraverso Internet, !necessario che linterfaccia che gesti-sce i socket venga implementata nelPC dellutente che intende collegarsia RECS 101 attraverso il protocolloTCP/IP.La potenzialit" di RECS 101 consistenel fatto che tale interfaccia pu# esse-re implementata indifferentementemediante un Applet Java (che vieneeseguita allinterno del Web Browserche si collega al dispositivo RECS 101)o unapplicazione C/Java che utilizzi isocket di Internet ( figura 1 ).Ovviamente per fare ci# occorre pro-gettarle adeguatamente aderendoallo standard fissato dalle regole dellasuite di protocolli TCP/IP. Tali interfac-ce si occuperanno quindi di inviare ericevere i comandi per il controllodelle porte di I/O attraverso lindirizzo

    IP impostato su RECS 101 e la relativaporta fissata alla 6001.RECS 101 sioccuper" dellinterpretazione deicomandi di controllo ricevuti o tra-smessi dal dispositivo elettronico dacontrollare ad esso connesso.I comandi di controllo si suddividonoin due categorie che identificano dueoperazioni diverse:

    Monitor Stato I/OTramite questoperazione ! possibileavere informazioni inerenti lo stato ditutte le linee di I/O contenute nelledue porte a 16 bit di RECS 101. Icomandi relativi a questoperazionesono essenzialmente due:

    I/O Get Command : $ il comandomediante il quale linterfaccia socketinterroga RECS 101 sullo stato delleproprie porte.

    I/O Get Command Responce : $ ilcomando di risposta mediante ilquale RECS 101 comunica allinter-faccia socket lo stato delle sue portedi I/O.

    Controllo dellOutputQuesto tipo di operazione, gestitaunicamente dal comando Output SetCommand ! utilizzata dallinterfacciasocket per settare i valori della portadOutput di RECS 101. La tabella 1riassume i comandi relativi alla comu-

    In questa terza parte della presentazione del dispositivo RECS 101 vengono affrontatii seguenti argomenti: il protocollo di comunicazione implementato in RECS 101 edesempi di metodologie per la progettazione di applicazioni personalizzate mediantelimplementazione di socket Internet in C e in Java.

    AUTOMAZIONE

    terza parte

    Figura 1: Possibili scenari dimplementazione dellinterfaccia di comunicazione socket di RECS 101

    21

  • AUTOMAZIONE69

    nicazione e i tipi di messaggi che ven-gono scambiati tra linterfaccia socketed il dispositivo RECS 101.

    Monitor dello stato di I/OLo stato della porta di I/O di RECS 101! controllato mediante comandi gesti-ti tramite linterfaccia socket che prov-vede a far dialogare il PC utente conRECS 101.Pi% esattamente il comando che il PCutente deve inviare per ricevere da partedi RECS 101 lo stato delle porte di I/O !lo 0x75, che si compone di un byte.Quando RECS 101 ricever" talecomando provveder" a comunicare lostato delle porte di I/O utilizzando 4byte come riportato in tabella 2 .Appare evidente che lo stato delleporte di I/O dipender" dalla logicaimplementata dallutilizzatore di RECS101. Per esempio, supponendo che ilcircuito da interfacciare a RECS 101 siastato progettato per lavorare secondola tecnica Active LOW ci# equivale adire che un ipotetico diodo Led colle-gato ad unuscita della porta di Output

    sia acceso quando a questultima vieneinviato uno zero logico. Se adesso con-sideriamo il caso in cui i bit 0,2,4 e 10della porta di Output siano nello statologico alto e i bit 1,3 e 5 della porta diInput siano anchessi nello stato logicoalto, RECS 101 alla ricezione delcomando 0x75 risponder" comedescritto nella tabella 3 .A questo punto linterfaccia socket traRECS 101 ed il PC utente si occuper"dellinterpretazione di questo valorevisualizzandolo sul PC utente.

    Anche se i dati relativi allo stato delleporte di I/O sono contenuti in 4 byte,RECS 101 invier" allinterfaccia socket

    Figura 3: Comandi di controllo di RECS 101

    Figura 4: Comando di controllo della porta di Output di RECS 101

    una parola di 16 bytes.Di conseguenza lutente dovr" inter-pretare solamente i primi 4 bytes delpacchetto ricevuto.Ci# ! dovuto al fatto che, come dettoin precedenza, la trasmissione di que-ste informazioni avviene mediante isocket che operano tramite il protocol-lo TCP/IP che a sua volta opera sullostandard Ethernet.Poich& lo standard Ethernet imponeuna lunghezza minima del pacchettodi 64 bytes (inclusi i gli headers IP eTCP) [1], e considerando il fatto chenel caso in cui venga generato un pac-chetto la cui lunghezza minima ! infe-riore ai 64 bytes questi viene scartato,bisogna arrivare alla conclusione cheanche se RECS ne avrebbe di bisognosolamente 4 si ! costretti ad usarne16,di conseguenza, lutente dovr" inter-pretare solamente i primi 4 bytes delpacchetto ricevuto ( tabella 4 ).

    Controllo dei comandi di OutputQuesto tipo di comando viene utilizza-to in tutti quei casi in cui si vuole modi-ficare il valore di un bit della porta diOutput di RECS 101 senza che vengagenerato un messaggio di conferma.La tabella 5 riporta il formato del rela-tivo comando 0x76 che si componedi 4 bytes di cui il primo contiene ilcomando vero e proprio e gli altri duerappresentano il nuovo stato che laporta dOutput dovr" assumere.Per esempio, supponiamo il caso in cuisi voglia modificare lo stato della portadOutput di RECS 101 settando allostato logico alto i bit 0,1,2 e 3lasciando tutti gli altri nello stato logi-co basso. Allora poich& il corrispon-

    AUTOMAZIONE

    Tipo di operazione Comando Direzione

    PC Utente RECS 101

    Monitor Stato I/O I/O Get Command

    I/O Get Command Response

    Controllo dellOutput Output Set Command

    Tabella 1: Comandi relativi alla comunicazione e i tipi di messaggi che vengono scambiati tra linterfacciasocket ed il dispositivo RECS 101

    Figura 2: Schema funzionale per la gestione di un dispositivo elettronico tramite RECS 101

    22

  • AUTOMAZIONE70

    Tabella 2: Controllo dello stato delle porte di I/O di RECS 101

    Tabella 3: Esempio di codifica dello stato della porta di I/O

    Byte 1 Byte 2 Byte 3 Byte 4

    MSB LSB MSB LSB

    Stato della porta di Input Stato della porta di Output

    dente valore in esadecimale ! 0x000F,occorrer" inviare a RECS 101 il valoreesadecimale 76:00:0F come mostratonella tabella 6 .

    COMUNICARE CON RECS 101:LINTERFACCIA SOCKET IN CSi riporta, di seguito, un esempio dicodice sorgente scritto nel linguaggioC, il quale rappresenta limplementa-zione di uninterfaccia socket basatasulle API dei socket di Berkely. I fram-menti di codice riportati di seguito, sioccupano di gestire rispettivamente ilMonitor Stato I/O e il ControllodellOutput descritti precedentemen-te.Prendendo spunto da questi esempilutente oltre a capire i meccanismi difunzionamento descritti potr" esserecapace di costruire una propria inter-faccia personalizzata che funzioner"come applicazione, ovvero permetter"di gestire RECS 101 attraverso il proto-collo TCP/IP ma senza il supporto diun Web Browser.Unapplicazione di questo tipo pote-

    rebbe essere utili per tutte quelle esi-genze di protezione e di riservatezzache escludano lutilizzo di unatale interfaccia.Come primo esempio si riporta la pro-cedura IOMonitor che si occupa dimonitorare lo stato delle porte di Inpute di Output di RECS 101.Per poter gestire tale operazioneoccorre per prima cosa definire duebuffer rispettivamente commandBufche conterr" il codice relativo alcomando da inviare a RECS 101 eResponseBuf che conterr" il valoreletto nella porta di I/O. Occorrer" inol-tre definire delle variabili di ausilioquali:

    commandLen: ! un intero che con-tiene la lunghezza del comando rela-tivo a commandBuf.

    lenReceived: intero che conterr" lalunghezza del buffer di ricezioneResponseBuf.

    i: variabile intera da utilizzare per icicli iterativi.

    Definite le variabili occorre inizializzareil Socket TCP mediante la chiamata allaprocedura TCPSocketInit() che perbrevit" non viene riportata. Si passaquindi ad inizializzare il buffer che con-ter" il comando utilizzando la costanteIOGet, che definita altrove, ! uguale a0x75 che rappresenta il codice esade-cimale del comando Monitor StatoI/O.A questo punto utilizzando listruzionesendto sinvia listruzione MonitorStato I/O a RECS 101, inviando comeparametri il valore del buffer e altreinformazioni riguardanti lindirizzo IPdi RECS 101.Poich& la funzione sendto restituisceun valore che ! uguale a -1 in casoderrore, al verificarsi di questeventosar" visualizzato un opportuno mes-saggio derrore indicante un problemariscontrato durante la comunicazionecon il dispositivo.Inviato il comando Monitor Stato I/Obisogna predisporre linterfaccia socketa ricevere le informazioni che scaturi-scono dallinterrogazione fatta.Per prima cosa bisogna allocare i bufferdi ricezione ResponseBuf, dopodich&mediante listruzione recvfrom (che ! lacorrispondente dellistruzione sendtonel caso della ricezione) si riceveranno

    AUTOMAZIONE

    Tipo Numero di Byte

    1 2 3 4

    Comando per monitorare lo stato delle porte di I/O 0x75

    Risposta contenete lo stato delle porte di I/O Stato della porta di Input Stato della porta di Output

    2 bytes 2 bytes 60 bytes

    Stato della porta di Input Stato della porta dOutput Dati non utilizzati

    Tabella 4: Formato del pacchetto ricevuto dallinterfaccia socket.

    15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

    1 1 1 1 1 0 1 1 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0

    1111 | 1011 | 1110 | 1010 = 0xFBEA 0000 | 0000 | 0010 | 1010 = 0x002A

    Stato della porta di Input Stato della porta di Output

    23

  • AUTOMAZIONE71

    le informazioni relative allo stato dellaporta di I/O di RECS 101. Poich& listru-zione recvform restituisce un valoreuguale a -1, in caso derrore, ! possibi-le implementare delle istruzioni cheavvertano nel caso in cui ci siano statidegli errori di comunicazione.Supponendo che non ci sono statierrori durante la comunicazione, si pu#passare alla visualizzazione dello statodelle porte di I/O mediante la letturadel buffer di ricezione Response Buf.La procedura pu# terminare chiudendoil Socket TCP e rilasciando le locazioni dimemoria allocate per la gestione deibuffer (vedi listato 1 ) Il secondo esem-pio che si riporta serve a variare lo statodella porta di Otuput di RECS 101.In particolare si riporta come esempiola procedura per modificare un solo bitdella porta di Output che una voltaselezionato verr" portato a livello logi-co alto. Per tale scopo adopereremo laprocedura SetOutput(). Come nelcaso precedente iniziamo con ledichiarazioni delle variabili locali:

    commandBuf: ! un array di carat-teri che conterr" i tre byte checompongono il comando OutputSet Command.

    commandLen: ! un intero checontiene la lunghezza in byte del-

    listruzione Output Set Command. outbit: ! un intero inizializzato al

    valore zero che conterr" la posi-zione del bit della porta di Outputche si vuole modificare.

    outdata: ! un intero inizializzatoal valore 0x0001 che viene utiliz-zato come maschera per la modi-fica del singolo bit che compone

    la parola relativa alla porta diOutput.

    La prima operazione da svolgere !quella di richiedere quale bit allin-terno della parole che compone laporta di Output si vuole modificare.

    Tale valore ! quindi memorizzatonella variabile outbit. Richiamiamola procedura IOMonitor() per legge-re lo stato della porta di I/O cheverr" memorizzato allinterno del-larray IOStatus.Da notare che IOStatus [2] conterr"la parte MSB della porta di Output eIOStatus [3] conterr" la parte LSB.

    AUTOMAZIONE

    Tabella 5: Formato del commando di controllo della porta di Output

    Tipo Numero di Bytes

    Comando di controllo della porta dOutput 1 2 3

    0x76 Stato della porta di Output

    Tabella 6: Esempio di modifica dello stato della porta duscita di RECS 101

    15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

    0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1

    0000|0000|0010|1111 = 0x000F

    Stato della porta doutput

    Comando di controllo della porta dOutput MSB Porta Output LSB Porta Output

    15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

    0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1

    0x76 0x00 0x0F

    Figura 5: Esempio che illustra lalgoritmo per settare a livello logico alto il 5! bit della porta di Output di RECS 101

    24

  • AUTOMAZIONE72

    A questo punto occorre ristabilire unaconnessione con RECS 101 pertantoreinizializziamo il Socket tramite laprocedura TCPSocketInit(). Poich& inC quando si definisce una variabile ditipo int questa viene allocata allinter-no di una cella di memoria di 16 bitsia IOStatus [2] che IOStatus [3] saran-no contenuti in due celle da 16 bit.Occorre quindi fare in modo che que-ste siano compattate come unicovalore a 16 bit, tale operazione vienesvolta eseguendo loperazione logicasui bit di IOStatus [2] e IOStauts [3]:

    outdata=(Shift di 8 posizioni versosinistra di IOStatus[2]) OR (IOStatus[3])

    Quanto appena detto viene espleta-to da un unica istruzione riportatanel listato:

    outdata|=((IOStatus[2]

  • AUTOMAZIONE73

    adesso prepararsi per eseguire il com-mando Output Set Command. Perfare ci# dobbiamo riempire il buffercommandBuf di tre byte rispettiva-mente, uno per il codice istruzione0x76 e i rimanenti che conterranno laparte MSB e LSB del nuovo stato dellaporta di Output. Adoperando leseguenti istruzioni:

    IOStatus[2]=(outdata&0xff00)>> 8;IOStatus[3] = (outdata & 0x00ff) ;

    Facciamo in modo che IOStatus [2]contenga la parte MSB del nuovostato della porta di Output, il ch& siottiene eseguendo la seguente ope-razione logica sui bit di outdata:

    IOStatus[2]= Shift di 8 posizioni verso destra(outdata AND 11111111|00000000)

    Per il secondo caso sar" sufficienteeseguire solamente la seguente ope-razione logica sui bit di outdata:

    IOStatus[3]= outdata AND11111111|00000000

    Riempito il buffer che conterr" ilcomando da inviare a RECS 101, nonci rimane che adoperare listruzionesendto per rendere tale comando ope-rativo.Si ricorda che tale istruzione restituisceun valore che nel caso sia -1 indica chelinformazione non ! stata trasmessacorrettamente.Per concludere, lultima operazione dafare ! quella di chiudere il socketmediante la chiamata alla proceduraTCPSocketClose.(vedilistato 2 )

    Per maggiore chiarezza la figura 5riporta un esempio pratico di quantodescritto precedentemente, pertantosi supporr" quanto segue:

    Lo stato della porta di Output diRECS 101 ! uguale a00000000|10001001.

    Si vuole portare a livello logico alto

    AUTOMAZIONE

    LISTATO 2

    //-------------------------------------------// RECS 101: Esempio di programmazione di// un interfaccia socket in C// Procedura SetOutput// By Intellisystem Technologies // http://www.intellisystem.it //-------------------------------------------void SetOutput (){

    char commandBuf[3] ;int commandLen ;int outbit=0, outdata=0x0000 ;int err ;

    // Richiede quale bit si vuole portare a livello lo gico// alto della porta di Outputprintf(" Prego selezionare il bit della porta dOut put di cui si vuole invertire lo stato logico alto(0- 15) :");

    scanf("%d", &outbit) ;

    // Legge lo stato corrente delle porte di I/OIOMonitor() ;

    // Re-Initializza il Socket TCP TCPSocketInit() ;

    // Determina il nuovo valore della porta dOutput a partire// dallo stato attuale delle usciteoutdata = ((IOStatus[2]> 8) ;commandBuf[2] = (BYTE) (outdata & 0x00ff) ;commandLen = 3 ;

    // Invia I comandi a RECS 101err = sendto (sock,&commandBuf,commandLen,0,

    (struct sockaddr*)&clientAddr,sizeof(clientAddr)) ;if (err == -1 ){

    perror("\n Errore nellinvio dei dati $$ \n");exit (1);

    }

    // Chiude il Socket TCPTCPSocketClose() ;

    }

    26

  • [1] Introduzione allo stack TCP/IP,IntellisystemTechnologie,http://www.intellisystem.it/ download.htm

    [2] Netid Managed Services,Information technology,Northwestern Technology,http://gradeswww.acns.nwu.edu/ ist/snap/doc/sn if-fing.html.

    [3] Internet spoofing referencepage, http:// www.brd.ie /paper/ sslpaper / hyper-lin.html.

    AUTOMAZIONE74

    il quinto bit della porta di Output apartire dalla destra.

    COMUNICARE CON RECS 101:LINTERFACCIA SOCKET INJAVACome detto in precedenza per supera-re tutte le limitazioni dovute allagestione di RECS 101 mediante unsoftware applicativo la soluzione pro-posta da Intellisystem Technologiesutilizza la tecnologia Java che prevedela creazione di unApplet di controllo,gestita mediante un interfaccia brow-ser. Come ben noto, le Applet sono deiprogrammi autonomi, scritti in Java,eseguibili mediante un comune brow-ser. La potenzialit" di un software scrit-to in Java, consente di essere totalmen-te indipendenti dalla piattaforma HWsu cui si esegue lapplicazione. Senzaentrare troppo nei dettagli della pro-grammazione in Java riportiamo diseguito un frammento di codice Javariguardante un esempio dimplemen-tazione dellinterfaccia socket basatasu Applet che permette la ricezione etrasmissione di degnali di I/O, attraver-so il protocollo TCP. Il lettore pi% atten-to pu# paragonare i codici seguenticon quelli scritti in C ed evidenziarequindi le analogie in termini di funzio-nalit". ( listato 3 )

    AUTOMAZIONE

    LISTATO 3

    //------------------------------------------// RECS 101: Esempio di programmazione di un interf accia// socket in Java// Procedura readIOport// By Intellisystem Technologies//------------------------------------------

    public int readIOport() {

    Socket socketTCP = null;int tmp = 0;int inputData = 0;byte rxData[] = new byte[16];byte data[] = {COMMAND_GET};

    try {socketTCP=new Socket(InetAddress.getByName(m_host), m_port);socketTCP.setTcpNoDelay(true);socketTCP.getOutputStream().write(data, 0, data.len gth);instream=new DataInputStream(socketTCP.getInputStre am());tmp = instream.read(rxData, 0, rxData.length);if (tmp $= -1) {

    inputData = (int) (rxData[2] > 8) & 0x000000ff);data[2] = (byte) (outdata & 0x000000ff);// Initialize sockettry {

    socketTCP=new Socket(InetAddress.getByName(m_host), m_port);socketTCP.setTcpNoDelay(trujhe);socketTCP.getOutputStream().write(data, 0, data.len gth);

    socketTCP.close();}

    catch (Exception e) {

    System.out.println("Err: " + e);}

    } Electronic shop 16

    BIBLIOGRAFIA

    27

  • 28

  • AUTOMAZIONE84

    RECS 101: UN WEB SERVEREMBEDDED PER APPLICAZIONIDI CONTROLLO REMOTOTRAMITE TCP/IP

    RECS 101: UN WEB SERVEREMBEDDED PER APPLICAZIONIDI CONTROLLO REMOTOTRAMITE TCP/IP

    di Cristian Randieri [email protected]

    La sicurezza ! un aspetto moltoimportante e da non trascurare neisistemi di controllo specie se sonogestiti tramite la rete Internet. Se daun lato la rete Internet offre grandiflessibilit" a livello di condivisione dirisorse e di gestione da remoto, dal-laltro ! sicuramente un ambientenon sicuro, poich# chiunque pu$connettersi ad essa. Il web ha il pote-re di aumentare la produttivit" dichiunque, tuttavia come per ognitecnologia o attivit" di gruppo oltrealle straordinarie attivit" occorre con-siderarne i rischi. Generalmente gliattacchi ad un sistema di controlloremoto si possono classificaremediante lindividuazione dei puntideboli del sistema che sintende esa-minare. In generale si possono indivi-duare quattro categorie:

    Vulnerabilit" dei dati. Vulnerabilit" del software. Vulnerabilit" del sistema fisico. Vulnerabilit" delle trasmissioni.

    Per difendersi da questi attacchi, ci sideve attendere che ogni potenziale

    intruso possa sfruttare queste vulne-rabilit" per accedere ai dati e quindipotenzialmente danneggiare il siste-ma. Ad esempio, la connessione diun sistema di controllo su internetpu$ aprire delle falle nei sistemi disicurezza e tali falle possono essereutilizzate da utenti non autorizzatiper accedere o manipolarne le fun-zionalit". Gli intrusi potrebberoanche invalidare il server Internet delsistema di controllo, modificandone ifile in esso memorizzati (ad esempioi file che contengono le informazionisulle User-ID e Password degli utentidel sistema). I potenziali Hackerpotrebbero inserire nel sistema deivirus e altri programmi distruttiviauto-replicanti in grado di danneg-giare o disabilitare completamente ilsistema. Possiamo classificare gliattacchi provenienti da internet nelleseguenti categorie:

    Attacchi da password: Gli intrusicercano di entrare nel sistemaimmettendo un codice di Login eduna password, provando varie voltesino a trovarne una funzionante [1].

    Normalmente vengono adoperatidei software in grado di utilizzarevariegati dizionari che provano dicontinuo diverse combinazioni sino aquando non trovano quella vincenteche permette di far accedere al siste-ma. Ad esempio i sistemi Unix sonoparticolarmente vulnerabili ad attac-chi di questo tipo, poich#, UNIX nonblocca laccesso degli utenti dopo undeterminato numero di tentativi falli-ti, cosa che normalmente avvienenella maggior parte degli altri sistemioperativi.

    Attacchi alla sicurezza della rete edei pacchetti: Poich# ogni pacchettotrasmesso in Internet pu$ attraversa-re un gran numero di nodi prima digiungere a destinazione, gli hackerpossono utilizzare appositi strumentidenominati racket sniffer per inter-cettare i pacchetti inoltrati nella rete(inclusi i pacchetti di login e trasmis-sione dei dati). I pi% comuni attacchiai pacchetti sono precursori degliattacchi al protocollo IP. Per iniziareun attacco sniffing, un hacker perprima cosa va alla ricerca di una User

    Con questa quarta parte, si conclude la trattazione del dispositivo RECS 101 con unargomento di rilevante importanza: il proble della sicurezza per i web server embedded.

    AUTOMAZIONE

    quarta parte

    29

  • AUTOMAZIONE85

    ID e di una password di un utentelegittimo utilizzandola per accederealla rete distribuita. Dopo essersiintruso nella rete lhacker osserva ecopia le trasmissioni dei pacchetti etenta di raccogliere quante pi% infor-mazioni possibili sulla rete.

    Attacchi al protocollo IP: Si concen-tra sullindirizzamento dei pacchettiche il protocollo IP utilizza per le tra-smissioni. Un attacco di questo tipoprevede due fasi. Nella prima si cercadi determinare lindirizzo IP del ser-ver, generalmente mettendosi inascolto dei pacchetti Internet, pro-vando a specificare in ordine varinumeri di host oppure connettendo-si al sito mediante un browser web eosservando lindirizzo IP nella barradi stato. Poich# lhacker sa che glialtri computer della rete condivido-no una parte del dellindirizzo IP delserver, cercher" di simulare un indi-rizzo IP che gli consenta di scavalca-re il router e di accedere al sistema,come se fosse un utente interno.Dopo che lhacker avr" iniziato a tro-vare gli indirizzi della rete, inizier"anche a controllare i numeri disequenza dei pacchetti che si tra-smettono tali computer. In seguito,dopo aver controllato le trasmissionidella rete, lhacker cercher" di preve-dere il prossimo numero di sequenzache verr" generato dal server e quin-di fornir" un proprio pacchetto contale numero di sequenza inserendosifra il server e lutente. Poich# lhackerha gi" lindirizzo IP del server, pu$ inrealt" generare pacchetti con inumeri di sequenza corretti e indiriz-zi IP che gli consentono di intercetta-re le trasmissioni con lutente. Dopoche lhacker ha avuto accesso al siste-ma tramite la previsione di un nume-ro di sequenza, pu$ accedere alleinformazioni che il sistema di comu-nicazione trasmette al server, inclusi ifiles di password, nomi, login, datiriservati e ogni altra informazioni tra-smessa in rete. In generale un hacker

    utilizza la previsione del numero disequenza come preparativo per lat-tacco vero e proprio al server oppurecome base per lattacco di un altroserver della rete.

    Hyperlink Spoofing: & un tipo dat-tacco che gli hacker sferrato controcomputer che comunicano utilizzan-do il protocollo HTTP [2]. Gli hackerpossono dunque sferrare attacchianche al protocollo di autenticazionedi server SSL (Secure Socket Layer)utilizzato per la creazione di browsere server Web sicuri, come i prodottiMicrosoft e Netscape. Un attacco diquesto tipo prevede che un hackerfungendo da intermediario convincail browser a connettersi a un serverfittizio presentando al browser la-spetto di una sessione sicura. Un hac-ker intermediario ! un hacker chesinserisce nel flusso dei pacchetti chescorrono fra un client ed un server. Inquesto modo lhacker convince lu-tente a rilevare determinate informa-zioni quali ad esempio User ID ePassword o altre informazioni riserva-te che saranno memorizzate nel ser-ver fittizio. Un alto rischio diHyperlink spoofing accade se luten-te preleva ed esegue dal server fittizioapplet Java pericolosi, credendo chetali applet siano forniti da un serversicuro e che debbano pertanto esse-re considerati sicuri. LattaccoHyperlink spoofing rende palese undifetto nel modo in cui, la maggiorparte dei browser, impiega i certifica-ti digitali per rendere sicure le sessio-ni. Lattacco spoofing tramite colle-gamenti ipertestuali non attacca lacrittografia a basso livello o il funzio-namento del protocollo SSL. Di con-seguenza lattacco pu$ essere sferra-to anche ad altre applicazioni garan-tite da un certificato, a seconda delmodo in cui tali applicazioni impie-ghino i propri certificati. Il problemaprincipale ! che gli attacchi Hyperlinkspoofing si basano sul fatto che il cer-tificato SSL fornito contiene informa-

    zioni errate (ad esempio il nome delDNS). Quindi, nonostante gli indiriz-zi URL sembrino corretti e riflettendolattivit" dellazienda che possiede ilsito Web cui si fa riferimento, nonsempre questo accade. Quando !registrato un dominio, le autorit"Internet assicurano che il DNS nonsia gi" stato registrato da altri manon assicurano che non violi le leggidi copyright.

    Web Spoofing: & un tipo dattaccoche prevede di creare una copia falsama convincente dellintero sito Web[3]. Il sito Web ha tutto laspetto delsito vero e proprio, ovvero contienele stesse pagine e gli stessi link delvero sito WEB, ma ! completamentesotto il controllo dellhacker. In unattacco di questo tipo, lhacker pu$osservare o modificare tutti i dati chevanno dalla vittima al server del sitoWeb. Inoltre, lhacker pu$ controllaretutto il traffico di ritorno dal serverWeb alla sua vittima. In seguito lhac-ker pu$ impiegare vari tipi di attaccotra cui ad esempio lo sniffing e lospoofing. Con lo sniffing lhackerosserva passivamente il traffico dellarete. Lo spoofing invece prevedeunattivit" di manipolazione in quan-to lhacker convince un host di esse-re un altro computer fidato e pertan-to si prepara a ricevere varie informa-zioni. Ad esempio lhacker pu$ regi-strare i contenuti e le risposte che ilserver invia al client (User ID, pas-sword ecc.). Lhacker pu$ eseguireunattivit" di sorveglianza, anche sela vittima ritiene di trovarsi in unaconnessione sicura.Indipendentemente dal fatto che laconnessione impieghi i metodi SSL oS-http, lhacker sar" comunque ingrado di ingannare lutente. Sipotrebbe pensare che sia difficile perlhacker sostituirsi allintero Web, masfortunatamente non ! cos*. Lhackernon deve memorizzare lintero con-tenuto del Web, poich# il Web !, perdefinizione, disponibile on-line.

    AUTOMAZIONE

    30

  • AUTOMAZIONE86

    Quando il server dellhacker deve for-nire una falsa pagina, gli basta prele-varla e modificarla dal Web stesso.

    POSSIBILI CONTROMISURESebbene il mondo dellinformaticasia in continua evoluzione trovare deirimedi che eliminino definitivamentetali problemi ! molto difficile, tuttavianel seguente paragrafo vogliamopresentare alcune soluzioni che adot-tate potrebbero essere un modo perfronteggiare queste problematiche.Rispecchiando lo schema precedenteriportiamo di seguito le soluzionipossibili:

    Attacchi da password: Nelle reti,lintercettazione delle transazioni,rappresenta uno dei rischi pi% graviche attualmente affligge i singoliutenti e le organizzazioni. Per proteg-gersi dallintercettazione dei pacchet-ti ! opportuno crittografare tutte letrasmissioni. I due tipi principali dicrittografia sono: la crittografia achiave semplice (o a chiave simmetri-ca) e quella a chiave pubblica (o achiave asimmetrica). La crittografia achiave semplice, utilizza un'unicachiave nota ai due capi della comuni-cazione che la usano per crittografa-re e decrittografare le informazioni.La crittografia a chiave pubblica, usauna chiave disponibile pubblicamen-te e una segreta conosciuta dalluten-te. La maggior parte dei programminormalmente utilizzati per eseguirela crittografia dei messaggi, seguonolo standard PEM (Privacy EnanchedMail) definito in dettaglio nelle RFC1421, 1422,1423 e 1424. Gli algorit-mi di crittografia pi% utilizzati sonolalgoritmo RSA (Rivest-Shamir-Adleman) e lalgoritmo Diffide-Hellman. Tali algoritmi possono quin-di essere utilizzati per marcare inmodo digitale le trasmissioni. Questatecnica consente ai destinatari deimessaggi di verificare lidentit" delmittente. Studi recenti hanno dimo-strato che misurando accuratamente

    il tempo necessario per eseguire leoperazioni sulla chiave privata, unhacker pu$ dedurre gli esponenti fissidi Diffide-Hellman, i fattori delle chia-vi RSA e dunque violare questi siste-mi di crittografia. In termini realistici,il pericolo che qualcuno possa deco-dificare una trasmissione criptata, uti-lizzando un attacco di questo tipo, !solo leggermente inferiore rispetto alpericolo che qualcuno possa rubarela chiave privata dal disco fisso.

    Attacchi alla sicurezza della rete edei pacchetti: Gli attacchi sniffer sureti distribuite possono essere evitatiutilizzando degli schemi di identifica-zione come il sistema delle passwordmonouso o il sistema di autenticazio-ne a ticket (come Kerberos [4]).Alcuni sistemi monouso fornisconoagli utenti la prossima password nelmomento in cui lutente si connettedal sistema. Anche se sia le passwordmonouso che gli schemi Kerberospossono rendere molto pi% difficile losniffing delle password su una retenon sicura, entrambi i metodi espon-gono al rischio di attacchi attivi se ilcanale dati non ! criptato o codifica-to. Un attacco attivo al protocolloTCP/IP consente allhacker di ridire-zionare il canale TCP verso la propriamacchina. Dopodich# lhacker pu$by-passare la protezione che offre unsistema di password monouso o diautenticazione a ticket. La connessio-ne TCP, diviene vulnerabile, a chiun-que sia in possesso di uno sniffer dipacchetti TCP e di un generatore dipacchetti TCP posizionati sul percor-so della connessione.

    Attacchi al protocollo IP: Il modopi% semplice per prevenire il sistemacontro questo tipo di attacchi a pre-visione di numero di sequenza consi-ste nellassicurarsi che il router, il fire-wall e ogni server del sistema abbia-no attivato la protezione audit-trail.Un audit-trail ! una registrazionecronologica delle attivit" di sistema,

    sufficiente per consentire la ricostru-zione, la revisione e lesame dellasequenza di situazioni e di attivit"che hanno riguardato o che hannocondotto a unoperazione, una pro-cedura o un evento in una transazio-ne dal suo inizio ai suoi risultati fina-li. Utilizzando gli audit-trail, si pu$osservare quando un hacker tenta diattraversare il router e il firewall equando tenta di accedere al server.Utilizzando uno dei programmi diservizio disponibili nel sistema ope-rativo, si pu$ richiedere che a segui-to di un determinato numero dirichieste di accesso negate vengaprodotto un avvertimento. Si devericonoscere che lauditing e la manu-tenzione e losservazione degli audit-trail non offrono una protezione aprova derrore contro gli attacchi alsistema. Se qualcuno esegue lospoofing del sistema, ad esempio,loperazione non potr" essere indivi-duata dallauditing. Se qualcunoascolter" il sistema con uno sniffer,lauditing probabilmente non siaccorger" di nulla poich# lhackernon accede ai dati del server masemplicemente osserva i dati in pas-saggio.Come tutti gli altri strumenti di pre-venzione degli attacchi, lauditing-trail, se utilizzato correttamente, !solo uno degli strumenti per unpiano organico di sicurezza.Lauditing non pu$ sostituire un fire-wall o uno screening router o unapolitica di sicurezza. Analogamentegli altri sistemi difensivi non possonosostituire lauditing.

    Hyperlink Spoofing: Se simpieganogi" applicazioni Web che fanno affi-damento sullautenticazione del ser-ver (ad esempio per il prelevamentodi applet Java), lunica soluzione pra-ticabile consiste nel far partire ilbrowser da una pagina sicura inmodo che gli utenti possano fidarsidei link iniziali e che un hacker nonpossa mai inviarli in luoghi sospetti.

    AUTOMAZIONE

    31

  • AUTOMAZIONE87

    Una pagina sicura ! quella di cui sipu$ verificare lintegrit" e questo, ingenere, significa che tale paginadeve essere un file HTML locale o unapagina su un server SSL. Se si deside-ra che il browser di un utente partaaprendo una pagina SSL, si deveinviare lindirizzo URL di tale paginatramite mezzi difficili o impossibili daintercettare (ad esempio un floppy ouna lettera), altrimenti la paginapotrebbe diventare il punto di par-tenza per lattacco che sintende pre-venire. Tutti i link contenuti in questapagina dovrebbero inviare gli utentisu siti di provata affidabilit" e preferi-bilmente tutti i link dovrebbero esse-re di tipo SSL. Laffidabilit" pu$ basar-si sui seguenti criteri:

    Il sito deve essere condotto con cri-teri di sicurezza. Ovvero linterosito deve essere reso sicuro controgli attacchi e lintercettazione dellepagine.

    Il sito deve contenere link che con-ducono solo ad altri siti sicuri.

    Web Spoofing: Questo genere dat-tacchi ! veramente pericoloso e insostanza non ! rilevabile. Le misurepreventive che possono essere adot-tate si riassumono nei seguenti punti:

    Disabilitare nel browser gli script inmodo che lhacker non possanascondere levidenza dellattacco;

    Assicurarsi che la riga degli indirizzidel browser sia sempre visibile.

    Fare attenzione allindirizzo URLvisualizzato dal browser, assicuran-dosi che punti sempre al server acui si pensa di essere connessi.

    Questa strategia riduce fortemente irischi di attacco anche se un hackerpu$ comunque colpire un utentedalla rete, specialmente coloro chenon si preoccupano di osservare stra-ni comportamenti sulla riga degliindirizzi o della barra di stato. Con ladisattivazione degli script si perder"

    qualche utile funzionalit", si potr" inogni caso riattivarne luso, allinternodi siti fidati, per disattivarli, nuova-mente, quando si lascia il sito fidato. La creazione di una soluzione a lungotermine ! molto pi% difficile, poich#occorrerebbe modificare il codice delbrowser in modo tale che program-ma visualizzi sempre la riga dellindi-rizzo offrendo una maggiore sicurez-za cos* come la possibilit" di renderesicuro il browser contro modificheesterne, ovvero fare in modo che iprogrammi Web non possano crearefalse barre di men%, false barre distato ecc.Per le pagine che il browser prelevautilizzando una connessione sicura,una migliore indicazione di attivazio-ne della connessione sicura potrebbeaiutare a garantire uneffettiva sicu-rezza dellutente.Invece di indicare semplicementelattivazione di una connessione sicu-ra, i browser potrebbero visualizzarecon chiare