SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
Creando un SCADA con Python y HTML5

            Defoss´ Nahuel
                  e


             PyConAr 2012
Qui´n soy yo?
   e
           $ whoami



      Licenciado en Inform´tica de UNPSJB
                           a
      Integrante del grupo de investigaci´n Microcontroladores
                                         o
      e Internet
      Evangelizador Python en la universidad hace 5 a˜os
                                                      n
      Co-desarrollador de Prymatex
      Desarrollador web en Machinalis
  Donde encontrarme
      @D3f0
      nahuel (punto) defosse (at) gmail (dot) com
      d3f0 en #freenode
Por que deber´ estar en esta charla
             ıas

   1. Sos un hobbista electr´nico y quer´s aprender a usar
                             o            e
      Python para integrar y aprovechar tu hardware
   2. Tenes un Ardruino, Raspbbery Pi, BeageBone o alguna
      otra computadora peque˜a y quer´s aprender sobre
                               n         e
      comunicaciones
   3. Tenes conocimiento de SCADAs en el ´mbito industrial y
                                              a
      estas buscando una alternativa libre, robusta y adaptable.
   4. Te gustar´ saber como automatizar tu casa de manera
                ıa
      escalable y abierta (dom´tica)
                               o
   5. Te interesa brindar un servicio basado en lo anterior SaaS
      (SCADA as a Service)
Que es un SCADA


  Seg´n la Wikipedia... es un software que permite controlar y
      u
  supervisar procesos industriales a distancia. Facilita
  retroalimentaci´n en tiempo real con los dispositivos de campo
                 o
  (sensores y actuadores) y controlando el proceso
  autom´ticamente. Provee de toda la informaci´n que se
         a                                        o
  genera en el proceso productivo (supervisi´n, control calidad,
                                              o
  control de producci´n, almacenamiento de datos, etc.) y
                     o
  permite su gesti´n e intervenci´n.
                  o               o
Esquema General de un Sistema SCADA
Dispositivos de Control



 Son   conocidos con varios nombres
  1.   RTU Remote Terminal Unit
  2.   IED Inteligent Electronic Device
  3.   PLC Programable Logical Unit
IED/RTU/PLC


    Son dispositivos electr´nicos que atienden un proceso, y
                           o
    que toman decisiones con tiempos cortos.
    A diferencia de un sistema asilado se comunican mediante
    alg´n protocolo y enviar y recibir mensajes que en general
       u
    est´n orientados a:
       a
     1. Consultar el estado de valores anal´gicos y/o digitales
                                           o
     2. Env´ de alertas (eventos) con bastante precisi´n
           ıo                                          o
        temporal dependiendo del caso
     3. Comandos de configuraci´n o
Protocolos SCADA


   1. RS-485 (serial con inmunidad al ruido y pensado para uso
      M/S)
   2. Modbus
   3. DNP (Distributed Network Protocol) Link
   4. MOSCAD (Propietario motorola, deprecated)
   5. IEC 61850
      5.1 ANS1
      5.2 GOOSE
¿Qu´ hicimos?
   e


  En el contexto del proyecto de investigaci´n
                                            o
      Sistema SCADA con dispositivos de bajo costo (PIC)
      Protocolo de comunicaciones basado en RS485
      Software de adquisici´n de datos basado en Twisted
                            o
  Como actividad de extensi´n
                            o
      Desarrollo de sistema de control de sem´foros
                                               a
      Desarrollo de sistema de control de variables el´ctricas
                                                      e
      (en desarrollo).
Protocolo Mara


  El protocolo Mara es un protocolo abierto especializado en
  aprovechar dispositivos de bajo coste (en un principio PIC).




  Cada comando puede o no llevar payload. El checksum y el
  n´mero de secuencia permiten cierto control de integridad.
   u
Estructura de Mara Basica 1.0

      Cabecera
      Un byte que identifica el comienzo de un mensaje
      Length
      El largo total del mensaje en bytes
      Source
      La direcci´n del emisor del mensaje, suele usarse 0 para el
                o
      SCADA
      Destination
      El destino del mensaje. Al estar basado en RS485, no
      suele superar
      Sequence
      El n´mero de secuencia del mensaje
           u
Comandos de Mara
     Actualmente Mara est´ siendo utilizado mediante polling
                           a
     y en cascada.
     El centro de control env´ un mensaje con un comando de
                             ıa
     consulta 0x10
     Un RTU especial llamado concentrador responde con los
     valores de todos sus esclavos
Que variables recoge mara?




      Digitales (DIS)
      Variables de sistema y diagn´stico (VarSys)
                                  o
      Anal´gicas 16 bits sigandas (AIS)
           o
      Eventos con precisi´n de 1/32K segundos (Eventos)
                         o
Que es un concentrador?
  En nuestro caso, una placa de desarrollo llamada Explorer 16
  con un shield de comunicaciones Ethernet. Se programa en C
  (Stack TCP/IP).
Scada con Python

  ¿Como escribimos el centro de control para dialogar con los
  concentradores?
      Elegimos Twisted como framework de red debido a que ya
      se han implementado algunos protocolos como ModBus
      Utilizamos el paquete bitfield para manejar bits como si
      fuesen arreglos
      Mediante Construct obtenemos un DSL para describir
      mara o cualquier otro portocolo.
           Metemos diccionarios y sacamos tramas
           Metemos tramas y obtenemos diccionarios
      Peewee como mapeador objeto-relacional por simplicidad
      Flask como presentaci´n web
                           o
Base de Datos

  Mediante Peewee podemos definir de manera sencilla la
  estructura de los datos
  class Concentrador(peewee.Model):
       direccion_ip = models.CharField()
       activada = models.BooleanField()

  class IED(peewee.Models):
      concentrador = models.ForeignKey(Concentrador)
      nombre = peewee.CharField()

  class DI(peewee.Model):
      ied = peewee.ForeignKey(IED)
      valor = peewee.IntegerField()
Recolecci´n de datos
         o

      El concentrador brinda un socket TCP, sobre el cual nos
      comunicamos con mara.
      Creamos una sub-clase de Protocol en Twisted que utilice
      nuestro Construct de mara para enviar y recibir datos
      Por cada concentrador establecer una conexi´n atendida
                                                  o
      por una instancia del protocolo
      Cuando la comunicaci´n es compleja, el aut´mata se
                            o                    o
      concentra en los derivados de Protocol
  class MaraProtocol(Protocol):
      def dataReceived(self, data):
          TramaMara.parse(data)
          # Guarda en base de datos
Estructura de HMI


     El HMI es la GUI con el usuario.
     Permite la supervisi´n, configuraci´n y control
                         o             o
     Implementada con Flask por sencillez
     Utilizando Jinja2 como motor de templates
  @app.route("/")
  def index():
      return render_template("index.html")
HMI como aplicaci´n del cliente
                 o

      jQuery + jQueryUI
      GUI general del HMI
      jQuery DataTable
      Grids de datos
      HighCharts
      Gr´ficos bonitos
        a
      jQuerySVG
      Hace que el manejo de SVG sea tan sencillo como el del
      DOM de una p´gina
                     a
      $(’.interruptor’).style(’background’:’red’)
           .click(mostrarDialogo);
Desarrollo del sistema
Capturas de pantalla (1)
Capturas de pantalla (1)
Capturas de pantalla (1)
Futuro


     Servidor IEC 16850 (normalizaci´n)
                                      o
     Utilizar socket.io de alguna manera para evitar polling
     (Tornado / Node.JS)
     Fortalcer el client side con Backbone.JS
     Mejorar la implementaci´n de comandos
                               o
     Generaci´n de reportes (relatorio)
               o
     Cambiar de event-loop?
El c´digo fuente
    o



                https://github.com/D3f0/txscada
      Est´s invitado a fokear el proyecto y adaptarlo a tus
          a
      necesidades!
      El c´digo fuente de la aplicaci´n del Explorer 16 no es
           o                         o
      libre, pero ser´ interesante realizar ports sobre open
                     ıa
      hardware
Otros sitios donde chusmear


      Linkidoky
      Un scada hecho en Python
      http://www.likindoy.org/es/Inicio
      youSCADA
      Un scada hecho con NodeJS con un concepto muy
      parecido a txscada
      http://isolasoftware.it/2012/09/14/youscada-presented-
      at-graphical-web-2012/
The End




          Muchas Gracias!

Más contenido relacionado

Similar a Creando un SCADA con Python y HTML5

Mantenimiento Computadores Y Redes Electricas
Mantenimiento Computadores Y Redes ElectricasMantenimiento Computadores Y Redes Electricas
Mantenimiento Computadores Y Redes ElectricasCristian Sierra
 
infograma001_Unidad 1 Administración de redes (1) (4).pptx
infograma001_Unidad 1 Administración  de redes (1) (4).pptxinfograma001_Unidad 1 Administración  de redes (1) (4).pptx
infograma001_Unidad 1 Administración de redes (1) (4).pptxjose576849
 
Que es un snifer a
Que es un snifer  aQue es un snifer  a
Que es un snifer aTensor
 
PROTOCOLOS SIMPLES PARA GESTIÓN DE REDES
PROTOCOLOS SIMPLES PARA GESTIÓN DE REDESPROTOCOLOS SIMPLES PARA GESTIÓN DE REDES
PROTOCOLOS SIMPLES PARA GESTIÓN DE REDESEquipoSCADA
 
Seguridad Protocolos
Seguridad ProtocolosSeguridad Protocolos
Seguridad Protocolosguestea241d
 
Tecnologías de virtualización y despliegue de servicios
Tecnologías de virtualización y despliegue de serviciosTecnologías de virtualización y despliegue de servicios
Tecnologías de virtualización y despliegue de serviciosAndy Juan Sarango Veliz
 
Protocolos De Seguridad En Redes
Protocolos De Seguridad En RedesProtocolos De Seguridad En Redes
Protocolos De Seguridad En RedesSHARITO21
 
Protocolos De Seguridad En Redes
Protocolos De Seguridad En RedesProtocolos De Seguridad En Redes
Protocolos De Seguridad En RedesSHARITO21
 
Laboratorios 1 y 3 robin bonilla
Laboratorios 1 y 3  robin bonillaLaboratorios 1 y 3  robin bonilla
Laboratorios 1 y 3 robin bonillaRobin Bonilla
 
La nube, el nuevo sol: Retos y Soluciones en Arquitecturas de Telecontrol en ...
La nube, el nuevo sol: Retos y Soluciones en Arquitecturas de Telecontrol en ...La nube, el nuevo sol: Retos y Soluciones en Arquitecturas de Telecontrol en ...
La nube, el nuevo sol: Retos y Soluciones en Arquitecturas de Telecontrol en ...Logitek Solutions
 
Osi manjarres torres larry 661399
Osi manjarres torres larry  661399Osi manjarres torres larry  661399
Osi manjarres torres larry 661399Larry-97
 
Que es un snifer
Que es un sniferQue es un snifer
Que es un sniferTensor
 
Práctica no 1.1 Introducción al análisis de protocolos con Wireshark
Práctica no 1.1 Introducción al análisis de protocolos con WiresharkPráctica no 1.1 Introducción al análisis de protocolos con Wireshark
Práctica no 1.1 Introducción al análisis de protocolos con WiresharkFrancisco Medina
 

Similar a Creando un SCADA con Python y HTML5 (20)

Mantenimiento Computadores Y Redes Electricas
Mantenimiento Computadores Y Redes ElectricasMantenimiento Computadores Y Redes Electricas
Mantenimiento Computadores Y Redes Electricas
 
infograma001_Unidad 1 Administración de redes (1) (4).pptx
infograma001_Unidad 1 Administración  de redes (1) (4).pptxinfograma001_Unidad 1 Administración  de redes (1) (4).pptx
infograma001_Unidad 1 Administración de redes (1) (4).pptx
 
Que es un snifer a
Que es un snifer  aQue es un snifer  a
Que es un snifer a
 
Q es un snifer
Q es un sniferQ es un snifer
Q es un snifer
 
PROTOCOLOS SIMPLES PARA GESTIÓN DE REDES
PROTOCOLOS SIMPLES PARA GESTIÓN DE REDESPROTOCOLOS SIMPLES PARA GESTIÓN DE REDES
PROTOCOLOS SIMPLES PARA GESTIÓN DE REDES
 
Seguridad Protocolos
Seguridad ProtocolosSeguridad Protocolos
Seguridad Protocolos
 
Seguridad Protocolos
Seguridad ProtocolosSeguridad Protocolos
Seguridad Protocolos
 
Seguridad Protocolos
Seguridad ProtocolosSeguridad Protocolos
Seguridad Protocolos
 
Tecnologías de virtualización y despliegue de servicios
Tecnologías de virtualización y despliegue de serviciosTecnologías de virtualización y despliegue de servicios
Tecnologías de virtualización y despliegue de servicios
 
BP seguridad de redes
BP seguridad de redesBP seguridad de redes
BP seguridad de redes
 
Protocolos De Seguridad En Redes
Protocolos De Seguridad En RedesProtocolos De Seguridad En Redes
Protocolos De Seguridad En Redes
 
Protocolos De Seguridad En Redes
Protocolos De Seguridad En RedesProtocolos De Seguridad En Redes
Protocolos De Seguridad En Redes
 
Laboratorios 1 y 3 robin bonilla
Laboratorios 1 y 3  robin bonillaLaboratorios 1 y 3  robin bonilla
Laboratorios 1 y 3 robin bonilla
 
La nube, el nuevo sol: Retos y Soluciones en Arquitecturas de Telecontrol en ...
La nube, el nuevo sol: Retos y Soluciones en Arquitecturas de Telecontrol en ...La nube, el nuevo sol: Retos y Soluciones en Arquitecturas de Telecontrol en ...
La nube, el nuevo sol: Retos y Soluciones en Arquitecturas de Telecontrol en ...
 
Osi manjarres torres larry 661399
Osi manjarres torres larry  661399Osi manjarres torres larry  661399
Osi manjarres torres larry 661399
 
Que es un snifer
Que es un sniferQue es un snifer
Que es un snifer
 
Proyecto
ProyectoProyecto
Proyecto
 
Práctica no 1.1 Introducción al análisis de protocolos con Wireshark
Práctica no 1.1 Introducción al análisis de protocolos con WiresharkPráctica no 1.1 Introducción al análisis de protocolos con Wireshark
Práctica no 1.1 Introducción al análisis de protocolos con Wireshark
 
Iot (3)
Iot (3)Iot (3)
Iot (3)
 
Redes
RedesRedes
Redes
 

Más de Nahuel Defossé

Creando Aplicaciones para Android con Kivy
Creando Aplicaciones para Android con KivyCreando Aplicaciones para Android con Kivy
Creando Aplicaciones para Android con KivyNahuel Defossé
 
Clase 4/4 Curso Introducción a Python 2012
Clase 4/4 Curso Introducción a Python 2012Clase 4/4 Curso Introducción a Python 2012
Clase 4/4 Curso Introducción a Python 2012Nahuel Defossé
 
Clase 3/4 Curso Introducción a Python 2012
Clase 3/4 Curso Introducción a Python 2012Clase 3/4 Curso Introducción a Python 2012
Clase 3/4 Curso Introducción a Python 2012Nahuel Defossé
 
Clase 2/4 Curso Introducción a Python 2012
Clase 2/4 Curso Introducción a Python 2012Clase 2/4 Curso Introducción a Python 2012
Clase 2/4 Curso Introducción a Python 2012Nahuel Defossé
 
Clase 1 Curso Introducción a Python 2012
Clase 1 Curso Introducción a Python 2012Clase 1 Curso Introducción a Python 2012
Clase 1 Curso Introducción a Python 2012Nahuel Defossé
 

Más de Nahuel Defossé (6)

Creando Aplicaciones para Android con Kivy
Creando Aplicaciones para Android con KivyCreando Aplicaciones para Android con Kivy
Creando Aplicaciones para Android con Kivy
 
Clase 4/4 Curso Introducción a Python 2012
Clase 4/4 Curso Introducción a Python 2012Clase 4/4 Curso Introducción a Python 2012
Clase 4/4 Curso Introducción a Python 2012
 
Clase 3/4 Curso Introducción a Python 2012
Clase 3/4 Curso Introducción a Python 2012Clase 3/4 Curso Introducción a Python 2012
Clase 3/4 Curso Introducción a Python 2012
 
Clase 2/4 Curso Introducción a Python 2012
Clase 2/4 Curso Introducción a Python 2012Clase 2/4 Curso Introducción a Python 2012
Clase 2/4 Curso Introducción a Python 2012
 
Clase 1 Curso Introducción a Python 2012
Clase 1 Curso Introducción a Python 2012Clase 1 Curso Introducción a Python 2012
Clase 1 Curso Introducción a Python 2012
 
Presnetación Go
Presnetación GoPresnetación Go
Presnetación Go
 

Último

MODELO DE INFORME DE INDAGACION CIENTIFICA .docx
MODELO DE INFORME DE INDAGACION CIENTIFICA .docxMODELO DE INFORME DE INDAGACION CIENTIFICA .docx
MODELO DE INFORME DE INDAGACION CIENTIFICA .docxRAMON EUSTAQUIO CARO BAYONA
 
SIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docxSIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docxLudy Ventocilla Napanga
 
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfFichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfssuser50d1252
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfAlfredoRamirez953210
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDUgustavorojas179704
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfManuel Molina
 
4º SOY LECTOR PART2- MD EDUCATIVO.p df PARTE
4º SOY LECTOR PART2- MD  EDUCATIVO.p df PARTE4º SOY LECTOR PART2- MD  EDUCATIVO.p df PARTE
4º SOY LECTOR PART2- MD EDUCATIVO.p df PARTESaraNolasco4
 
EDUCACION FISICA 1° PROGRAMACIÓN ANUAL 2023.docx
EDUCACION FISICA 1°  PROGRAMACIÓN ANUAL 2023.docxEDUCACION FISICA 1°  PROGRAMACIÓN ANUAL 2023.docx
EDUCACION FISICA 1° PROGRAMACIÓN ANUAL 2023.docxLuisAndersonPachasto
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfvictorbeltuce
 
Técnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materialesTécnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materialesRaquel Martín Contreras
 
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptxMonitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptxJUANCARLOSAPARCANARE
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfDaniel Ángel Corral de la Mata, Ph.D.
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024gharce
 
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxPROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxEribertoPerezRamirez
 
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...YobanaZevallosSantil1
 
sesión de aprendizaje 4 E1 Exposición oral.pdf
sesión de aprendizaje 4 E1 Exposición oral.pdfsesión de aprendizaje 4 E1 Exposición oral.pdf
sesión de aprendizaje 4 E1 Exposición oral.pdfpatriciavsquezbecerr
 

Último (20)

MODELO DE INFORME DE INDAGACION CIENTIFICA .docx
MODELO DE INFORME DE INDAGACION CIENTIFICA .docxMODELO DE INFORME DE INDAGACION CIENTIFICA .docx
MODELO DE INFORME DE INDAGACION CIENTIFICA .docx
 
SIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docxSIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docx
 
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfFichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
 
recursos naturales america cuarto basico
recursos naturales america cuarto basicorecursos naturales america cuarto basico
recursos naturales america cuarto basico
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
 
4º SOY LECTOR PART2- MD EDUCATIVO.p df PARTE
4º SOY LECTOR PART2- MD  EDUCATIVO.p df PARTE4º SOY LECTOR PART2- MD  EDUCATIVO.p df PARTE
4º SOY LECTOR PART2- MD EDUCATIVO.p df PARTE
 
EDUCACION FISICA 1° PROGRAMACIÓN ANUAL 2023.docx
EDUCACION FISICA 1°  PROGRAMACIÓN ANUAL 2023.docxEDUCACION FISICA 1°  PROGRAMACIÓN ANUAL 2023.docx
EDUCACION FISICA 1° PROGRAMACIÓN ANUAL 2023.docx
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
 
Técnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materialesTécnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materiales
 
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptxMonitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxPROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
 
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
 
sesión de aprendizaje 4 E1 Exposición oral.pdf
sesión de aprendizaje 4 E1 Exposición oral.pdfsesión de aprendizaje 4 E1 Exposición oral.pdf
sesión de aprendizaje 4 E1 Exposición oral.pdf
 

Creando un SCADA con Python y HTML5

  • 1. Creando un SCADA con Python y HTML5 Defoss´ Nahuel e PyConAr 2012
  • 2. Qui´n soy yo? e $ whoami Licenciado en Inform´tica de UNPSJB a Integrante del grupo de investigaci´n Microcontroladores o e Internet Evangelizador Python en la universidad hace 5 a˜os n Co-desarrollador de Prymatex Desarrollador web en Machinalis Donde encontrarme @D3f0 nahuel (punto) defosse (at) gmail (dot) com d3f0 en #freenode
  • 3. Por que deber´ estar en esta charla ıas 1. Sos un hobbista electr´nico y quer´s aprender a usar o e Python para integrar y aprovechar tu hardware 2. Tenes un Ardruino, Raspbbery Pi, BeageBone o alguna otra computadora peque˜a y quer´s aprender sobre n e comunicaciones 3. Tenes conocimiento de SCADAs en el ´mbito industrial y a estas buscando una alternativa libre, robusta y adaptable. 4. Te gustar´ saber como automatizar tu casa de manera ıa escalable y abierta (dom´tica) o 5. Te interesa brindar un servicio basado en lo anterior SaaS (SCADA as a Service)
  • 4. Que es un SCADA Seg´n la Wikipedia... es un software que permite controlar y u supervisar procesos industriales a distancia. Facilita retroalimentaci´n en tiempo real con los dispositivos de campo o (sensores y actuadores) y controlando el proceso autom´ticamente. Provee de toda la informaci´n que se a o genera en el proceso productivo (supervisi´n, control calidad, o control de producci´n, almacenamiento de datos, etc.) y o permite su gesti´n e intervenci´n. o o
  • 5. Esquema General de un Sistema SCADA
  • 6. Dispositivos de Control Son conocidos con varios nombres 1. RTU Remote Terminal Unit 2. IED Inteligent Electronic Device 3. PLC Programable Logical Unit
  • 7. IED/RTU/PLC Son dispositivos electr´nicos que atienden un proceso, y o que toman decisiones con tiempos cortos. A diferencia de un sistema asilado se comunican mediante alg´n protocolo y enviar y recibir mensajes que en general u est´n orientados a: a 1. Consultar el estado de valores anal´gicos y/o digitales o 2. Env´ de alertas (eventos) con bastante precisi´n ıo o temporal dependiendo del caso 3. Comandos de configuraci´n o
  • 8. Protocolos SCADA 1. RS-485 (serial con inmunidad al ruido y pensado para uso M/S) 2. Modbus 3. DNP (Distributed Network Protocol) Link 4. MOSCAD (Propietario motorola, deprecated) 5. IEC 61850 5.1 ANS1 5.2 GOOSE
  • 9. ¿Qu´ hicimos? e En el contexto del proyecto de investigaci´n o Sistema SCADA con dispositivos de bajo costo (PIC) Protocolo de comunicaciones basado en RS485 Software de adquisici´n de datos basado en Twisted o Como actividad de extensi´n o Desarrollo de sistema de control de sem´foros a Desarrollo de sistema de control de variables el´ctricas e (en desarrollo).
  • 10. Protocolo Mara El protocolo Mara es un protocolo abierto especializado en aprovechar dispositivos de bajo coste (en un principio PIC). Cada comando puede o no llevar payload. El checksum y el n´mero de secuencia permiten cierto control de integridad. u
  • 11. Estructura de Mara Basica 1.0 Cabecera Un byte que identifica el comienzo de un mensaje Length El largo total del mensaje en bytes Source La direcci´n del emisor del mensaje, suele usarse 0 para el o SCADA Destination El destino del mensaje. Al estar basado en RS485, no suele superar Sequence El n´mero de secuencia del mensaje u
  • 12. Comandos de Mara Actualmente Mara est´ siendo utilizado mediante polling a y en cascada. El centro de control env´ un mensaje con un comando de ıa consulta 0x10 Un RTU especial llamado concentrador responde con los valores de todos sus esclavos
  • 13. Que variables recoge mara? Digitales (DIS) Variables de sistema y diagn´stico (VarSys) o Anal´gicas 16 bits sigandas (AIS) o Eventos con precisi´n de 1/32K segundos (Eventos) o
  • 14. Que es un concentrador? En nuestro caso, una placa de desarrollo llamada Explorer 16 con un shield de comunicaciones Ethernet. Se programa en C (Stack TCP/IP).
  • 15. Scada con Python ¿Como escribimos el centro de control para dialogar con los concentradores? Elegimos Twisted como framework de red debido a que ya se han implementado algunos protocolos como ModBus Utilizamos el paquete bitfield para manejar bits como si fuesen arreglos Mediante Construct obtenemos un DSL para describir mara o cualquier otro portocolo. Metemos diccionarios y sacamos tramas Metemos tramas y obtenemos diccionarios Peewee como mapeador objeto-relacional por simplicidad Flask como presentaci´n web o
  • 16. Base de Datos Mediante Peewee podemos definir de manera sencilla la estructura de los datos class Concentrador(peewee.Model): direccion_ip = models.CharField() activada = models.BooleanField() class IED(peewee.Models): concentrador = models.ForeignKey(Concentrador) nombre = peewee.CharField() class DI(peewee.Model): ied = peewee.ForeignKey(IED) valor = peewee.IntegerField()
  • 17. Recolecci´n de datos o El concentrador brinda un socket TCP, sobre el cual nos comunicamos con mara. Creamos una sub-clase de Protocol en Twisted que utilice nuestro Construct de mara para enviar y recibir datos Por cada concentrador establecer una conexi´n atendida o por una instancia del protocolo Cuando la comunicaci´n es compleja, el aut´mata se o o concentra en los derivados de Protocol class MaraProtocol(Protocol): def dataReceived(self, data): TramaMara.parse(data) # Guarda en base de datos
  • 18. Estructura de HMI El HMI es la GUI con el usuario. Permite la supervisi´n, configuraci´n y control o o Implementada con Flask por sencillez Utilizando Jinja2 como motor de templates @app.route("/") def index(): return render_template("index.html")
  • 19. HMI como aplicaci´n del cliente o jQuery + jQueryUI GUI general del HMI jQuery DataTable Grids de datos HighCharts Gr´ficos bonitos a jQuerySVG Hace que el manejo de SVG sea tan sencillo como el del DOM de una p´gina a $(’.interruptor’).style(’background’:’red’) .click(mostrarDialogo);
  • 24. Futuro Servidor IEC 16850 (normalizaci´n) o Utilizar socket.io de alguna manera para evitar polling (Tornado / Node.JS) Fortalcer el client side con Backbone.JS Mejorar la implementaci´n de comandos o Generaci´n de reportes (relatorio) o Cambiar de event-loop?
  • 25. El c´digo fuente o https://github.com/D3f0/txscada Est´s invitado a fokear el proyecto y adaptarlo a tus a necesidades! El c´digo fuente de la aplicaci´n del Explorer 16 no es o o libre, pero ser´ interesante realizar ports sobre open ıa hardware
  • 26. Otros sitios donde chusmear Linkidoky Un scada hecho en Python http://www.likindoy.org/es/Inicio youSCADA Un scada hecho con NodeJS con un concepto muy parecido a txscada http://isolasoftware.it/2012/09/14/youscada-presented- at-graphical-web-2012/
  • 27. The End Muchas Gracias!