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 Electricas
Cristian 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).pptx
jose576849
 
Seguridad Protocolos
Seguridad ProtocolosSeguridad Protocolos
Seguridad Protocolos
guestea241d
 
Laboratorios 1 y 3 robin bonilla
Laboratorios 1 y 3  robin bonillaLaboratorios 1 y 3  robin bonilla
Laboratorios 1 y 3 robin bonilla
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 ...
Logitek Solutions
 
Osi manjarres torres larry 661399
Osi manjarres torres larry  661399Osi manjarres torres larry  661399
Osi manjarres torres larry 661399
Larry-97
 

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é (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

Presentación de medicina Enfermedades Fotográfico Moderno Morado (1).pdf
Presentación de medicina Enfermedades Fotográfico Moderno Morado (1).pdfPresentación de medicina Enfermedades Fotográfico Moderno Morado (1).pdf
Presentación de medicina Enfermedades Fotográfico Moderno Morado (1).pdf
juancmendez1405
 

Último (20)

Presentación de medicina Enfermedades Fotográfico Moderno Morado (1).pdf
Presentación de medicina Enfermedades Fotográfico Moderno Morado (1).pdfPresentación de medicina Enfermedades Fotográfico Moderno Morado (1).pdf
Presentación de medicina Enfermedades Fotográfico Moderno Morado (1).pdf
 
mapa mental sobre el sistema político...
mapa mental sobre el sistema político...mapa mental sobre el sistema político...
mapa mental sobre el sistema político...
 
TRABAJO CON TRES O MAS FRACCIONES PARA NIÑOS
TRABAJO CON TRES O MAS FRACCIONES PARA NIÑOSTRABAJO CON TRES O MAS FRACCIONES PARA NIÑOS
TRABAJO CON TRES O MAS FRACCIONES PARA NIÑOS
 
PROPIEDADES DE LA LUZ. TIPLER. FÍSICA. PROBLEMAS
PROPIEDADES DE LA LUZ. TIPLER. FÍSICA. PROBLEMASPROPIEDADES DE LA LUZ. TIPLER. FÍSICA. PROBLEMAS
PROPIEDADES DE LA LUZ. TIPLER. FÍSICA. PROBLEMAS
 
Sesión de clase: Luz desde el santuario.pdf
Sesión de clase: Luz desde el santuario.pdfSesión de clase: Luz desde el santuario.pdf
Sesión de clase: Luz desde el santuario.pdf
 
proyecto semana de los Jardines, actividades a realizar para resaltar esta fecha
proyecto semana de los Jardines, actividades a realizar para resaltar esta fechaproyecto semana de los Jardines, actividades a realizar para resaltar esta fecha
proyecto semana de los Jardines, actividades a realizar para resaltar esta fecha
 
5º PARTE 3 SOY LECTOR -MD EDUCATIVO_240418_155445 (1).pdf
5º PARTE 3 SOY LECTOR -MD EDUCATIVO_240418_155445 (1).pdf5º PARTE 3 SOY LECTOR -MD EDUCATIVO_240418_155445 (1).pdf
5º PARTE 3 SOY LECTOR -MD EDUCATIVO_240418_155445 (1).pdf
 
LA ILIADA Y LA ODISEA.LITERATURA UNIVERSAL
LA ILIADA Y LA ODISEA.LITERATURA UNIVERSALLA ILIADA Y LA ODISEA.LITERATURA UNIVERSAL
LA ILIADA Y LA ODISEA.LITERATURA UNIVERSAL
 
DESCRIPCIÓN-LOS-DILEMAS-DEL-CONOCIMIENTO.pptx
DESCRIPCIÓN-LOS-DILEMAS-DEL-CONOCIMIENTO.pptxDESCRIPCIÓN-LOS-DILEMAS-DEL-CONOCIMIENTO.pptx
DESCRIPCIÓN-LOS-DILEMAS-DEL-CONOCIMIENTO.pptx
 
Diagnostico del corregimiento de Junin del municipio de Barbacoas
Diagnostico del corregimiento de Junin del municipio de BarbacoasDiagnostico del corregimiento de Junin del municipio de Barbacoas
Diagnostico del corregimiento de Junin del municipio de Barbacoas
 
IMPLICACIONES BIOÉTICAS ANTE EL TRANSHUMANISMO A PARTIR DEL PENSAMIENTO FILOS...
IMPLICACIONES BIOÉTICAS ANTE EL TRANSHUMANISMO A PARTIR DEL PENSAMIENTO FILOS...IMPLICACIONES BIOÉTICAS ANTE EL TRANSHUMANISMO A PARTIR DEL PENSAMIENTO FILOS...
IMPLICACIONES BIOÉTICAS ANTE EL TRANSHUMANISMO A PARTIR DEL PENSAMIENTO FILOS...
 
📝 Semana 09 - Tema 01: Tarea - Aplicación del resumen como estrategia de fuen...
📝 Semana 09 - Tema 01: Tarea - Aplicación del resumen como estrategia de fuen...📝 Semana 09 - Tema 01: Tarea - Aplicación del resumen como estrategia de fuen...
📝 Semana 09 - Tema 01: Tarea - Aplicación del resumen como estrategia de fuen...
 
Power Point: Luz desde el santuario.pptx
Power Point: Luz desde el santuario.pptxPower Point: Luz desde el santuario.pptx
Power Point: Luz desde el santuario.pptx
 
ENUNCIADOS CUESTIONARIO S9 GEOLOGIA Y MINERALOGIA - GENERAL.docx
ENUNCIADOS CUESTIONARIO S9 GEOLOGIA Y MINERALOGIA - GENERAL.docxENUNCIADOS CUESTIONARIO S9 GEOLOGIA Y MINERALOGIA - GENERAL.docx
ENUNCIADOS CUESTIONARIO S9 GEOLOGIA Y MINERALOGIA - GENERAL.docx
 
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx
 
ESTEREOTIPOS Y ROLES DE GÉNERO (labor de grupo)
ESTEREOTIPOS  Y ROLES DE GÉNERO (labor de grupo)ESTEREOTIPOS  Y ROLES DE GÉNERO (labor de grupo)
ESTEREOTIPOS Y ROLES DE GÉNERO (labor de grupo)
 
PLAN DE GESTION DEL RIESGO 2023 - 2024.docx
PLAN DE GESTION DEL RIESGO  2023 - 2024.docxPLAN DE GESTION DEL RIESGO  2023 - 2024.docx
PLAN DE GESTION DEL RIESGO 2023 - 2024.docx
 
Como construir los vínculos afectivos (Grupal)
Como construir los vínculos afectivos (Grupal)Como construir los vínculos afectivos (Grupal)
Como construir los vínculos afectivos (Grupal)
 
1 CARTILLA DE CATEQUESIS año biblico 2023-2024.pdf
1 CARTILLA DE CATEQUESIS año biblico 2023-2024.pdf1 CARTILLA DE CATEQUESIS año biblico 2023-2024.pdf
1 CARTILLA DE CATEQUESIS año biblico 2023-2024.pdf
 
La historia de la vida estudiantil a 102 años de la fundación de las Normales...
La historia de la vida estudiantil a 102 años de la fundación de las Normales...La historia de la vida estudiantil a 102 años de la fundación de las Normales...
La historia de la vida estudiantil a 102 años de la fundación de las Normales...
 

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!