SlideShare une entreprise Scribd logo
1  sur  19
Télécharger pour lire hors ligne
Perl SCADA & Dojo HMI
                                                                                                                            Relatore
                                                                                                                     Guido Brugnara




                                                     Progetto di supervisione, controllo, acquisizione dati 
                                                           di un impianto di sollevamento fognario.

                                                         Il sistema è stato realizzato utilizzando un cocktail 
                                                                  di linguaggi/tecnologie Open Source
Italian Perl Workshop 2011 – Torino, 8­9 settembre




                                                                                                                          Linux
                                                                                                                      POE Perl
                                                                                                                    Dojo Toolkit
                                                                                                                         Firefox
                                                                                                                     PostgreSql
                                                                                                                  Comet/Bayeux
                                                                                                                        Modbus
Perl SCADA & Dojo HMI                                 Guido Brugnara




                                                     Stazione di pompaggio per acque nere
                                                                    L'affidabilità è un 
                                                                  requisito fondamentale
Italian Perl Workshop 2011 – Torino, 8­9 settembre




                                                                                        Una stazione di pompaggio

                                                                                                    collega tra loro

                                                                                             due condotte fognarie

                                                                                              di differente livello, 

                                                                                                    assicurandone

                                                                                            il deflusso dei liquami.



                                                       Pare evidente cosa succederebbe se l'impianto 
                                                                  non dovesse funzionare!
Perl SCADA & Dojo HMI       Guido Brugnara




                                                                             Componenti dell'impianto



                                                     ­ Vasca 
Italian Perl Workshop 2011 – Torino, 8­9 settembre




                                                     ­ Pompe

                                                     ­ Gruppo elettrogeno

                                                     ­ Impianto elettrico

                                                     ­ Automazione

                                                     ­ Supervisione

                                                     ­ Sinottico

                                                     ­ Controllo accessi
Perl SCADA & Dojo HMI             Guido Brugnara




                                                     Impianto elettrico e automazione
Italian Perl Workshop 2011 – Torino, 8­9 settembre
Perl SCADA & Dojo HMI                            Guido Brugnara



                                                                     Supervisione e acquisizione dei dati


                                                                                                 Sinottico
                                                                          VPN                     remoto
Italian Perl Workshop 2011 – Torino, 8­9 settembre




                                                     Internet

                                                                                                                Sinottico
                                                                                                      PLC
                                                                          Database
                                                                FW

                                                                                                                            TCP/IP


                                                                                     Controllo               Allarmi
                                                                                     accessi
                                                                                 RS232


                                                                         smart
                                                                          card
Perl SCADA & Dojo HMI                            Guido Brugnara




                                                     Sinottico (Human Machine Interface)


                                                                             Requisiti:

                                                                             ­ GUI standard ADEP 
Italian Perl Workshop 2011 – Torino, 8­9 settembre




                                                                                 ­ Colori avvisi/allarmi
                                                                                 ­ Controllo accessi
                                                                                 ­ Gestione allarmi
                                                                                 ­ Grafici 
                                                                                 ­ Parametri


                                                                             ­ Multiutente

                                                                             ­ Connessione remota

                                                                             ­ Nessuna installazione sui client
Perl SCADA & Dojo HMI                Guido Brugnara



                                                     Sezioni impianto e parametrizzazione 
Italian Perl Workshop 2011 – Torino, 8­9 settembre
Italian Perl Workshop 2011 – Torino, 8­9 settembre



                                                     Grafici
                                                               Perl SCADA & Dojo HMI
                                                                 Guido Brugnara
Perl SCADA & Dojo HMI                            Guido Brugnara




                                                      Parametrizzazione dell'impianto
                                                     Da foglio di calcolo (XLS) a struttura dati JSON
Italian Perl Workshop 2011 – Torino, 8­9 settembre




                                                                                    use Spreadsheet::ParseExcel;
                                                                                    use JSON;
Perl SCADA & Dojo HMI            Guido Brugnara



                                                                Database PostgreSQL
                                                                                              parameters


                                                     events
Italian Perl Workshop 2011 – Torino, 8­9 settembre




                                                                                      users   analogs

                                                     access




                                                                                                  alarms
Perl SCADA & Dojo HMI                                          Guido Brugnara




                                                                            Controllo accessi

                                                     ­ Interfaccia lettori smart­card ISOTECH
                                                     ­ Collegamento Rs232/C
                                                     ­ Protocollo proprietario parzialmente documentato
                                                          ­ Reverse engineering del protocollo
Italian Perl Workshop 2011 – Torino, 8­9 settembre




                                                                                        Configurazione linea seriale:
                                                                                         4800bit/sec, 8 bit, no parity, no handshake

                                                                                        Formattazione fisica della traccia:
                                                                                         SS P P P P P ES LRC

                                                                                        - SS - Start Sentinel - Identifica l'inizio della traccia
                                                                                        - ES - End Sentinel - Identifica la fine della traccia
                                                                                        - P - Numero - Progressivo numero badge 5 digit
                                                                                        - CI – Numero - Codice impianto se richiesto 3 digit
                                                                                        - LRC - Longitudinal Redundancy Check -
                                                                                           Digit di controllo composto dallo XOR
                                                                                           progressivo di tutti i caratteri comprensivi
                                                                                           di SS e ES
Perl SCADA & Dojo HMI                     Guido Brugnara




                                                            PC industriale
Italian Perl Workshop 2011 – Torino, 8­9 settembre




                                                                        ­ Linux Ubuntu Netbook 10.04

                                                                        ­ Touch­screen

                                                                        ­  Xcfe manager

                                                                        ­ Firefox KIOSK

                                                                        ­ Ethernet x 2

                                                                        ­ Firewall Shorewall

                                                                        ­ openVPN
Perl SCADA & Dojo HMI                                         Guido Brugnara




                                                                             Dettagli sull'implementazione

                                                                 Tre processi indipendenti gestiscono la comunicazione con il PLC,
                                                                         con i lettori di smart card e con i quadri sinottici.
Italian Perl Workshop 2011 – Torino, 8­9 settembre




                                                                                                                        DBMS
                                                                  PLC
                                                                                           modbus_logger

                                                                                  Modbus

                                                                                                                                           Sinottico
                                                                                                                         DBMS              touch screen


                                                                                                         IKC
                                                     Smartcard             DBMS
                                                      reader                                                                       Https

                                                                                                   IKC                                           Sinottico
                                                                                                                                  Comet          remoto
                                                                   Rs232

                                                                           access_logger                       server_sinottico                Sinottico
                                                                                                                                               remoto
Perl SCADA & Dojo HMI                                   Guido Brugnara




                                                                        modbus_logger


                                                                                      Configurazione
Italian Perl Workshop 2011 – Torino, 8­9 settembre




                                                               use JSON;                                   PLC - Modbus/TCP

                                                               use POE::Component::Client::TCP;
                                                     Logging   use Protocol::Modbus; 

                                                               use POE::Component::SimpleDBI;          Comunicazione con
                                                               use POE::Component::Log4perl;             gli altri processi


                                                               use POE::Component::IKC::Client;
                                                               use POE::Component::IKC::Responder; 
Perl SCADA & Dojo HMI                                   Guido Brugnara




                                                                        access_logger


                                                                                      Configurazione
Italian Perl Workshop 2011 – Torino, 8­9 settembre




                                                               use JSON;                               Smartcard reader
                                                                                                          RS232/C

                                                               use POE::Wheel::ReadWrite;
                                                     Logging   use Device::SerialPort;
                                                               use POE::Filter::Line;
                                                                                                       Comunicazione con
                                                               use POE::Component::SimpleDBI;            gli altri processi

                                                               use POE::Component::Log4perl;

                                                               use POE::Component::IKC::Client;
                                                               use POE::Component::IKC::Responder; 
Perl SCADA & Dojo HMI                               Guido Brugnara




                                                                      server_sinottico

                                                                                     Configurazione




                                                               use JSON;
Italian Perl Workshop 2011 – Torino, 8­9 settembre




                                                                                                             Quadri sinottici
                                                               use POE::Component::Server::HTTP;             WEB Browser

                                                               use POE::Component::SSLify;
                                                               use Hook::WrapSub;
                                                               use HTML::Mason;
                                                               use POE::Component::Server::Bayeux;
                                                     Logging

                                                               use POE::Component::SimpleDBI;         Comunicazione con
                                                               use POE::Component::Log4perl;           gli altri processi


                                                               use POE::Component::IKC::Server; 
Perl SCADA & Dojo HMI                              Guido Brugnara




                                                                                    browser sinottici



                                                         Temporizzazioni

                                                                                                                      Comunicazioni
                                                                                                                      asincrone con
Italian Perl Workshop 2011 – Torino, 8­9 settembre




                                                                           dojo.require('dojox.timing._base');       server_sinottico


                                                                           dojo.require("dojox.cometd");

                                                                           dojo.require('dojox.charting.Chart2D');
                                                                           dojo.require('dojox.charting.Theme');
                                                     Varie ...
                                                                           dojo.require('dojo.html');  
                                                                           dojo.require("dijit.Dialog");   
                                                                                                                          Grafici
                                                                           dojo.require('dojox.string.sprintf');
                                                                           dojo.require('dojo.date');
Perl SCADA & Dojo HMI                               Guido Brugnara



                                                                       Template sinottici     JSON


                                                            sollevamento
                                                     JSON
Italian Perl Workshop 2011 – Torino, 8­9 settembre




                                                                           JSON




                                                                                                                     sollevamento.html

                                                                                            <div style="position: absolute; left: 815px;
                                                                                                 top: 200px; width: 152px; height: 30px;"
                                                                                                 class="spia" id="spia_SL-SAm-1">
                                                                                            </div>
                                                                                            <div style="position: absolute;"
                                                                                                 class="analogico"
                                                                                                 id="analogico_SL-SAm-1">_ m
                                                                                            </div>
Perl SCADA & Dojo HMI                                   Guido Brugnara




                                                               Perl SCADA & Dojo HMI

                                                                             Leader.IT NETWORK
                                                                                   www.leader.it
                                                     Grazie!                       info@leader.it
                                                                                   Rif. ing Guido Brugnara

                                                       :­)                   Committente:
Italian Perl Workshop 2011 – Torino, 8­9 settembre




                                                                                  PROVINCIA AUTONOMA DI TRENTO
                                                                                  Agenzia per la depurazione
                                                                                  Via Pozzo, 6
                                                                                  38122 TRENTO
                                                                                  http://www.adep.provincia.tn.it/


                                                                             Aziende coinvolte:
                                                                                  IFASE - Informatic, Facility Automation
                                                                                  and Software for Environment)
                                                                                  Strada della Pozzata, 41
                                                                                  38123 TRENTO
                                                                                  http://www.ifase.it/
                                                                                  info@ifase.it

                                                                                  SG ELETTRICA
                                                                                  Loc. Le Basse, 6/2-3-4-7
                                                                                  38123 Mattarello (TRENTO)
                                                                                  http://www.sgelettrica.com/
                                                                                  info@sgelettrica.com

                                                                                  HI-LOGIC
                                                                                  Loc. Le Basse, 6/2-3-4-7
                                                                                  38123 Mattarello (TRENTO)
                                                                                  http://www.hi-logic.it/
                                                                                  info@hi-logic.it

Contenu connexe

Similaire à Perl SCADA & Dojo HMI

Smart grid 4 novembre
Smart grid 4 novembreSmart grid 4 novembre
Smart grid 4 novembre
canaleenergia
 

Similaire à Perl SCADA & Dojo HMI (6)

Relazione Progetto cRio
Relazione Progetto cRioRelazione Progetto cRio
Relazione Progetto cRio
 
Uso pratico di Inline::Java, j4sign & Bouncy Castle Crypto APIs
Uso pratico di Inline::Java, j4sign & Bouncy Castle Crypto APIsUso pratico di Inline::Java, j4sign & Bouncy Castle Crypto APIs
Uso pratico di Inline::Java, j4sign & Bouncy Castle Crypto APIs
 
Hera lombardi
Hera lombardiHera lombardi
Hera lombardi
 
Siemens-S7-1200-PLC
Siemens-S7-1200-PLCSiemens-S7-1200-PLC
Siemens-S7-1200-PLC
 
Smart grid 4 novembre
Smart grid 4 novembreSmart grid 4 novembre
Smart grid 4 novembre
 
Il web service e i sistemi embedded - Tesi - cap2
Il web service e i sistemi embedded - Tesi - cap2Il web service e i sistemi embedded - Tesi - cap2
Il web service e i sistemi embedded - Tesi - cap2
 

Perl SCADA & Dojo HMI

  • 1. Perl SCADA & Dojo HMI Relatore Guido Brugnara Progetto di supervisione, controllo, acquisizione dati  di un impianto di sollevamento fognario. Il sistema è stato realizzato utilizzando un cocktail  di linguaggi/tecnologie Open Source Italian Perl Workshop 2011 – Torino, 8­9 settembre Linux POE Perl Dojo Toolkit Firefox PostgreSql Comet/Bayeux Modbus
  • 2. Perl SCADA & Dojo HMI Guido Brugnara Stazione di pompaggio per acque nere L'affidabilità è un  requisito fondamentale Italian Perl Workshop 2011 – Torino, 8­9 settembre Una stazione di pompaggio collega tra loro due condotte fognarie di differente livello,  assicurandone il deflusso dei liquami. Pare evidente cosa succederebbe se l'impianto  non dovesse funzionare!
  • 3. Perl SCADA & Dojo HMI Guido Brugnara Componenti dell'impianto ­ Vasca  Italian Perl Workshop 2011 – Torino, 8­9 settembre ­ Pompe ­ Gruppo elettrogeno ­ Impianto elettrico ­ Automazione ­ Supervisione ­ Sinottico ­ Controllo accessi
  • 4. Perl SCADA & Dojo HMI Guido Brugnara Impianto elettrico e automazione Italian Perl Workshop 2011 – Torino, 8­9 settembre
  • 5. Perl SCADA & Dojo HMI Guido Brugnara Supervisione e acquisizione dei dati Sinottico VPN remoto Italian Perl Workshop 2011 – Torino, 8­9 settembre Internet Sinottico PLC Database FW TCP/IP Controllo Allarmi accessi RS232 smart card
  • 6. Perl SCADA & Dojo HMI Guido Brugnara Sinottico (Human Machine Interface) Requisiti: ­ GUI standard ADEP  Italian Perl Workshop 2011 – Torino, 8­9 settembre ­ Colori avvisi/allarmi ­ Controllo accessi ­ Gestione allarmi ­ Grafici  ­ Parametri ­ Multiutente ­ Connessione remota ­ Nessuna installazione sui client
  • 7. Perl SCADA & Dojo HMI Guido Brugnara Sezioni impianto e parametrizzazione  Italian Perl Workshop 2011 – Torino, 8­9 settembre
  • 8. Italian Perl Workshop 2011 – Torino, 8­9 settembre Grafici Perl SCADA & Dojo HMI Guido Brugnara
  • 9. Perl SCADA & Dojo HMI Guido Brugnara Parametrizzazione dell'impianto Da foglio di calcolo (XLS) a struttura dati JSON Italian Perl Workshop 2011 – Torino, 8­9 settembre use Spreadsheet::ParseExcel; use JSON;
  • 10. Perl SCADA & Dojo HMI Guido Brugnara Database PostgreSQL parameters events Italian Perl Workshop 2011 – Torino, 8­9 settembre users analogs access alarms
  • 11. Perl SCADA & Dojo HMI Guido Brugnara Controllo accessi ­ Interfaccia lettori smart­card ISOTECH ­ Collegamento Rs232/C ­ Protocollo proprietario parzialmente documentato ­ Reverse engineering del protocollo Italian Perl Workshop 2011 – Torino, 8­9 settembre Configurazione linea seriale: 4800bit/sec, 8 bit, no parity, no handshake Formattazione fisica della traccia: SS P P P P P ES LRC - SS - Start Sentinel - Identifica l'inizio della traccia - ES - End Sentinel - Identifica la fine della traccia - P - Numero - Progressivo numero badge 5 digit - CI – Numero - Codice impianto se richiesto 3 digit - LRC - Longitudinal Redundancy Check - Digit di controllo composto dallo XOR progressivo di tutti i caratteri comprensivi di SS e ES
  • 12. Perl SCADA & Dojo HMI Guido Brugnara PC industriale Italian Perl Workshop 2011 – Torino, 8­9 settembre ­ Linux Ubuntu Netbook 10.04 ­ Touch­screen ­  Xcfe manager ­ Firefox KIOSK ­ Ethernet x 2 ­ Firewall Shorewall ­ openVPN
  • 13. Perl SCADA & Dojo HMI Guido Brugnara Dettagli sull'implementazione Tre processi indipendenti gestiscono la comunicazione con il PLC, con i lettori di smart card e con i quadri sinottici. Italian Perl Workshop 2011 – Torino, 8­9 settembre DBMS PLC modbus_logger Modbus Sinottico DBMS touch screen IKC Smartcard DBMS reader Https IKC Sinottico Comet remoto Rs232 access_logger server_sinottico Sinottico remoto
  • 14. Perl SCADA & Dojo HMI Guido Brugnara modbus_logger Configurazione Italian Perl Workshop 2011 – Torino, 8­9 settembre use JSON; PLC - Modbus/TCP use POE::Component::Client::TCP; Logging use Protocol::Modbus;  use POE::Component::SimpleDBI; Comunicazione con use POE::Component::Log4perl; gli altri processi use POE::Component::IKC::Client; use POE::Component::IKC::Responder; 
  • 15. Perl SCADA & Dojo HMI Guido Brugnara access_logger Configurazione Italian Perl Workshop 2011 – Torino, 8­9 settembre use JSON; Smartcard reader RS232/C use POE::Wheel::ReadWrite; Logging use Device::SerialPort; use POE::Filter::Line; Comunicazione con use POE::Component::SimpleDBI; gli altri processi use POE::Component::Log4perl; use POE::Component::IKC::Client; use POE::Component::IKC::Responder; 
  • 16. Perl SCADA & Dojo HMI Guido Brugnara server_sinottico Configurazione use JSON; Italian Perl Workshop 2011 – Torino, 8­9 settembre Quadri sinottici use POE::Component::Server::HTTP; WEB Browser use POE::Component::SSLify; use Hook::WrapSub; use HTML::Mason; use POE::Component::Server::Bayeux; Logging use POE::Component::SimpleDBI; Comunicazione con use POE::Component::Log4perl; gli altri processi use POE::Component::IKC::Server; 
  • 17. Perl SCADA & Dojo HMI Guido Brugnara browser sinottici Temporizzazioni Comunicazioni asincrone con Italian Perl Workshop 2011 – Torino, 8­9 settembre dojo.require('dojox.timing._base'); server_sinottico dojo.require("dojox.cometd"); dojo.require('dojox.charting.Chart2D'); dojo.require('dojox.charting.Theme'); Varie ... dojo.require('dojo.html');   dojo.require("dijit.Dialog");    Grafici dojo.require('dojox.string.sprintf'); dojo.require('dojo.date');
  • 18. Perl SCADA & Dojo HMI Guido Brugnara Template sinottici JSON sollevamento JSON Italian Perl Workshop 2011 – Torino, 8­9 settembre JSON sollevamento.html <div style="position: absolute; left: 815px; top: 200px; width: 152px; height: 30px;" class="spia" id="spia_SL-SAm-1"> </div> <div style="position: absolute;" class="analogico" id="analogico_SL-SAm-1">_ m </div>
  • 19. Perl SCADA & Dojo HMI Guido Brugnara Perl SCADA & Dojo HMI Leader.IT NETWORK www.leader.it Grazie! info@leader.it Rif. ing Guido Brugnara :­) Committente: Italian Perl Workshop 2011 – Torino, 8­9 settembre PROVINCIA AUTONOMA DI TRENTO Agenzia per la depurazione Via Pozzo, 6 38122 TRENTO http://www.adep.provincia.tn.it/ Aziende coinvolte: IFASE - Informatic, Facility Automation and Software for Environment) Strada della Pozzata, 41 38123 TRENTO http://www.ifase.it/ info@ifase.it SG ELETTRICA Loc. Le Basse, 6/2-3-4-7 38123 Mattarello (TRENTO) http://www.sgelettrica.com/ info@sgelettrica.com HI-LOGIC Loc. Le Basse, 6/2-3-4-7 38123 Mattarello (TRENTO) http://www.hi-logic.it/ info@hi-logic.it