Your SlideShare is downloading. ×
Creando un SCADA con Python y HTML5
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Creando un SCADA con Python y HTML5

4,208

Published on

Breve descripción del proyecto txscada como prueba de concepto de P

Breve descripción del proyecto txscada como prueba de concepto de P

Published in: Education
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,208
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
49
Comments
0
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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);
  • 20. Desarrollo del sistema
  • 21. Capturas de pantalla (1)
  • 22. Capturas de pantalla (1)
  • 23. Capturas de pantalla (1)
  • 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!

×