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

La actualidad más candente

ANEXOS DE REDES LAN-MAN-PAN Y WAN
ANEXOS DE REDES LAN-MAN-PAN Y WANANEXOS DE REDES LAN-MAN-PAN Y WAN
ANEXOS DE REDES LAN-MAN-PAN Y WANelduro299ful
 
Planeación de una red lan
Planeación de una red lanPlaneación de una red lan
Planeación de una red lanMiguelA1000
 
Configuracion de router
Configuracion de routerConfiguracion de router
Configuracion de routerAndyNet-com
 
Topologia de redes, que es internet, router, swtichs, modems.
Topologia de redes, que es internet, router, swtichs, modems.Topologia de redes, que es internet, router, swtichs, modems.
Topologia de redes, que es internet, router, swtichs, modems.LilianaGordillo25
 
Portafolio de evidencias taller de legislacion informatica avance 4
Portafolio de evidencias taller de legislacion informatica avance 4Portafolio de evidencias taller de legislacion informatica avance 4
Portafolio de evidencias taller de legislacion informatica avance 4Michel Mendoza
 
Marco teórico - Telefonía VoIP y Streaming
Marco teórico - Telefonía VoIP y StreamingMarco teórico - Telefonía VoIP y Streaming
Marco teórico - Telefonía VoIP y StreamingSwanny Aquino
 
MODELO DE CONTRATO INFORMÁTICO
MODELO DE CONTRATO INFORMÁTICOMODELO DE CONTRATO INFORMÁTICO
MODELO DE CONTRATO INFORMÁTICOZara Elizabeth
 
5.1 Listas de control de acceso ACL
5.1 Listas de control de acceso   ACL5.1 Listas de control de acceso   ACL
5.1 Listas de control de acceso ACLDavid Narváez
 
Cableado Estructurado de Colegio Domingo Savio
Cableado Estructurado de Colegio Domingo SavioCableado Estructurado de Colegio Domingo Savio
Cableado Estructurado de Colegio Domingo Saviobrodrigo
 
Plan de seguridad para red de ordenadores
Plan de seguridad para red de ordenadoresPlan de seguridad para red de ordenadores
Plan de seguridad para red de ordenadoresjavisc04
 
Ejercicios arboles de decisión
Ejercicios arboles de decisiónEjercicios arboles de decisión
Ejercicios arboles de decisiónfelixaguilar23
 

La actualidad más candente (20)

ANEXOS DE REDES LAN-MAN-PAN Y WAN
ANEXOS DE REDES LAN-MAN-PAN Y WANANEXOS DE REDES LAN-MAN-PAN Y WAN
ANEXOS DE REDES LAN-MAN-PAN Y WAN
 
Planeación de una red lan
Planeación de una red lanPlaneación de una red lan
Planeación de una red lan
 
Configuracion de router
Configuracion de routerConfiguracion de router
Configuracion de router
 
Wwan redes
Wwan redesWwan redes
Wwan redes
 
Red punto a punto
Red punto a puntoRed punto a punto
Red punto a punto
 
Topologia de redes, que es internet, router, swtichs, modems.
Topologia de redes, que es internet, router, swtichs, modems.Topologia de redes, que es internet, router, swtichs, modems.
Topologia de redes, que es internet, router, swtichs, modems.
 
Portafolio de evidencias taller de legislacion informatica avance 4
Portafolio de evidencias taller de legislacion informatica avance 4Portafolio de evidencias taller de legislacion informatica avance 4
Portafolio de evidencias taller de legislacion informatica avance 4
 
Marco teórico - Telefonía VoIP y Streaming
Marco teórico - Telefonía VoIP y StreamingMarco teórico - Telefonía VoIP y Streaming
Marco teórico - Telefonía VoIP y Streaming
 
MODELO DE CONTRATO INFORMÁTICO
MODELO DE CONTRATO INFORMÁTICOMODELO DE CONTRATO INFORMÁTICO
MODELO DE CONTRATO INFORMÁTICO
 
5.1 Listas de control de acceso ACL
5.1 Listas de control de acceso   ACL5.1 Listas de control de acceso   ACL
5.1 Listas de control de acceso ACL
 
Cuadro comparativo de red
Cuadro comparativo de redCuadro comparativo de red
Cuadro comparativo de red
 
Redes 1
Redes 1Redes 1
Redes 1
 
Cableado Estructurado de Colegio Domingo Savio
Cableado Estructurado de Colegio Domingo SavioCableado Estructurado de Colegio Domingo Savio
Cableado Estructurado de Colegio Domingo Savio
 
Proyecto fibra optica
Proyecto fibra optica Proyecto fibra optica
Proyecto fibra optica
 
Plan de seguridad para red de ordenadores
Plan de seguridad para red de ordenadoresPlan de seguridad para red de ordenadores
Plan de seguridad para red de ordenadores
 
Redes y Comunicaciones
Redes y ComunicacionesRedes y Comunicaciones
Redes y Comunicaciones
 
Mapa mental modelo osi
Mapa mental modelo osiMapa mental modelo osi
Mapa mental modelo osi
 
Router
RouterRouter
Router
 
Ejercicios arboles de decisión
Ejercicios arboles de decisiónEjercicios arboles de decisión
Ejercicios arboles de decisión
 
Las 10 leyes de la Seguridad Informatica
Las 10 leyes de la Seguridad InformaticaLas 10 leyes de la Seguridad Informatica
Las 10 leyes de la Seguridad Informatica
 

Similar a Creando un SCADA con Python y HTML5

Taller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboards
Taller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboardsTaller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboards
Taller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboardsSofia2 Smart Platform
 
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)

Taller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboards
Taller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboardsTaller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboards
Taller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboards
 
Perspectivas IoT con arduino
Perspectivas IoT con arduinoPerspectivas IoT con arduino
Perspectivas IoT con arduino
 
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
 

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

RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxPryhaSalam
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024AndreRiva2
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
celula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamicacelula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamicaFlor Idalia Espinoza Ortega
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticosisabeltrejoros
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 

Último (20)

RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
celula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamicacelula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamica
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticos
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 

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!