Novedades 20150712

Bill Tanner, presidente de Sensoray, escribía esta semana una guía breve para la elección de sensores de temperatura. Comienza distinguiendo las propiedades de termopares, RTD, termistores, diodos y sensores de infrarrojos. En función de ellas, el punto de medida, rango, precisión, coste, etc. se determina qué instrumento es más apropiado para cada aplicación.
Un motivo de queja constante, y justificado, de los operadores en las instalaciones suele ser el alarmero. Rich Carpenter, de General Electric, cree que el 95% de las alarmas que generan los sistemas de control son prescindibles. Básicamente hay que atacar dos problemas: considerarlas dentro del sistema, no como avisos de valores individuales, y eliminar el “ruido”. A propósito de este tema, Bradley Ford, de Yokogawa, da siete consejos para redactar los mensajes de alarma.
Aunque hace unas semanas que se publicaron, quiero mencionar dos artículos sobre seguridad en sistemas de control. El primero, de Kerry L. Sparks, ofrece cinco consejos para proteger las comunicaciones. Se centran en evitar el acceso a la red por medio de firewalls, VPN, filtrado y segmentación. Deborah Galea, directora de OPSWAT, se dirige más específicamente a los SCADA en refinerías y plantas de gas, pero las recomendaciones son extensibles a cualquier instalación.
Por último, mencionar la batalla anunciada entre robots gigantes de Estados Unidos y Japón que, aunque no deje de ser una maniobra publicitaria bien orquestada, promete ratos de diversión el año que viene.

Hackeando un Moeller Easy 512

publicado en: Klockner Moeller, Seguridad | 2

Situación: se necesita extraer el programa de un controlador Klockner Moeller Easy 512, pero está protegido por contraseña. La empresa canadiense que lo instaló cerró hace años y no hay otro modo de obtener el software. Personalmente no hubiese intentado hacer lo que a continuación voy a describir, porque leí en el manual que, al tercer intento fallido, el programa se borra (y se vuelve a conceder acceso). Pero no es así: quien me lo trae ha estado probando contraseñas al azar y sigue sin poder iniciar sesión. En cualquier caso, advierto: si alguien repite esto, posiblemente con un PLC con otra configuración, puede perder el programa.
Easy512
Ya en general, la seguridad en automática no ha sido nunca una cualidad destacable. Al contrario, los sistemas de control se han concebido tradicionalmente como cerrados y de acceso exclusivamente físico por personal de confianza. Es un error lamentable. Por todo el mundo hay repartida una cantidad apabullante de instalaciones desprotegidas. No quiero ser alarmista, pero se trata de una asignatura pendiente que no se debería postergar.
Retomemos el Klockner Moeller. El software de programación, EasySoft, lo primero que pide al establecer la conexión es la contraseña. Y ante fallo desconecta y no admite otra acción. Hasta aquí, poco que objetar, no hay que olvidar que hablamos de un PLC de baja gama. Lo que lo hace tan vulnerable es la limitación sobre la contraseña: cuatro caracteres numéricos. Es decir, que en pocos minutos va a caer ante un ataque de fuerza bruta.
Una opción interesante sería suplantar directamente a la aplicación (la comunicación se realiza por el puerto serie) y lanzarle intentos. Pero no disponía de mucho tiempo, así que me decanté por una alternativa que, por otra parte, puede repetirse en otros contextos, razón por la que me he animado a publicarla. Se trata de mandar pulsaciones de teclas directamente al desplegable que solicita la contraseña.
Para ello, me instalé el programa AutoHotkey. No sé si es bueno, es el primero que encontré buscando en Google. Lo que sí puedo decir es que tiene una sintaxis algo retorcida. Los script se crean con cualquier editor de texto, se graban con la extensión .ahk y están listos para ejecutar. Asigné la combinación CTRL+h para iniciar el envío de pulsaciones del teclado, y la tecla ESC para detenerlas. Manda, como he comentado, todas las contraseñas desde 0000 hasta 9999 acompañadas de dos pulsaciones de ENTER (una para el cuadro de diálogo de la contraseña y la segunda para aceptar el mensaje de error). El código es el siguiente:

^h:: ; La ejecución del scrip se inicia con CTRL+h

;=== Se prueban contraseñas desde 0000 hasta 9999
i=0
Loop, 10000
{
   v:=Format("{:04}",i)   ; Se le da formato de cuatro cifras

   Send, %v%{enter}{enter}   ; Se mandan las cuatro cifras seguidas de dos ENTER
   Sleep, 400 ; Pausa
   i++

   ;=== Para salir, pulsar la tecla ESC
   GetKeyState, state, Esc
   if state = D
   Exit
}

Es muy mejorable. Posiblemente se pueda reducir el tiempo de pausa, por ejemplo. Pero sirve con el Moeller. Basta intentar conectarse, pulsar CTRH+h cuando pide la contraseña, y dejarlo correr. Una vez que acierta, la conexión se mantiene. Se pulsa ESC para detener el envío de teclas y ya es posible guardar la copia del programa.

El paradigma olvidado (1). Lenguajes de PLC

publicado en: Controladores, FBD, IL, LD, Lenguajes, PLC, SFC, Siemens, ST | 0

Cuando empecé a programar autómatas, hace quince años, los lenguajes estaban muy limitados en cuanto a operaciones. Un S5-90 de Siemens, por ejemplo, sólo tenía dos operaciones aritméticas: suma y resta. Para multiplicar y dividir había que recurrir a bloques de función. Ni hablar de trigonométricas, búsquedas en tablas o manejo de cadenas. Todo eso vendría después. Recuerdo un Hitachi antiguo que sólo disponía de contactos, bobinas, un tipo de temporizador y un contador. Algunos de estos controladores disponían de más de un tipo de lenguaje de los recogidos en el estándar IEC61131-3:

  • Lista de instrucciones (IL).
  • Diagrama de bloque de funciones (FBD).
  • Ladder o escalera (LD).

En el caso que comentaba del S5 de Siemens, se llamaban AWL, FUP y KOP respectivamente. El primero de ellos sería identificado por cualquier programador como lenguaje ensamblador, ya que está formado por un listado de operaciones básicas de movimiento de registros, operaciones con aculumadores, etc. La programación se hace a nivel de máquina. Un ejemplo podría ser el siguiente:
AWL
Los bloques de funciones se identifican con una programación gráfica, al estilo Lawview, que no abunda en ámbitos distintos de la automática. En todo caso, se puede asimilar a las puertas booleanas que se manejan en electrónica.
FUP
El tercer lenguaje que he mencionado, el ladder, se desarrolló con la mira puesta en eléctricos que se introducían en la programación. Sus componentes principales son pues contactos y bobinas.
KOP
El estándar menciona más lenguajes, que yo no vería sino poco tiemp después:

  • Texto estructurado (ST).
  • Secuencias (SFC).

El texto estructurado es lo más semejante a un típico lenguaje de programación imperativa, tal como C o Basic. A diferencia de la lista de instrucciones, se trabaja a medio nivel, por lo que el desarrollo y mantenimiento es más ágil.

http://web.fe.up.pt/~asousa
Autor: Armando Jorge Sousa

Por último, los bloques de función secuenciales trasladan a los PLC los clásicos diagramas de flujo usados para representar algoritmos. Hay que hacer notar que la programación de acciones y condiciones debe realizarse en otro de los lenguajes expuestos, por lo que el SFC no es en sí completo.
http://szirty.uw.hu
Autor: externet

Esta entrada continúa en El paradigma olvidado (2). Lenguajes de HMI.

A modo de declaración de intenciones

publicado en: General | 0
http://www.flickr.com/photos/92334668@N07
Autor: tec_stromberg

He creado esta web para compartir una afición, a la que además me dedico. Abarca la automatización industrial, ingeniería, supervisión, control remoto, sistemas distribuidos, programación, comunicaciones… Son muchos temas, muy amplios y en continua renovación, así que no me puedo considerar (creo que nadie) experto. Pero sí apasionado, y con suficiente experiencia. Por ello, necesitaba un lugar donde recoger descubrimientos, ideas interesantes y proyectos en los que me voy involucrando. Porque además, este espacio puede ser útil a otros, ya que son áreas que están transformando nuestro entorno a un ritmo veloz.

Los medios suelen entonar todos estos conceptos (automatización, robótica, control) con melodías de futuro. Es un error: son presente. No simbolizan promesas; fundamentan nuestra sociedad. Otro asunto es que diverjan de las fantasías de décadas pasadas. A nuestras viviendas no han llegado mayordomos robot (como mucho, un pequeño aspirador redondo). El proceso ha sido diferente. Primero fueron las herramientas, las cadenas de montaje en las fábricas, el ámbito militar, médico, infraestructuras, transporte… Las comunicaciones permitieron el control a distancia, la informática lo llevó a nuevas cotas de complejidad. Y la domótica que, recientemente se coló en los grandes edificios, ahora atraviesa las puertas de los hogares. Pero hace mucho que la automatización nos había asaltado, por medio de productos, transformando nuestros trabajos, hábitos y relaciones. Hoy los sistemas de control son ubicuos, inervan la sociedad, y la hacen evolucionar al ritmo de sus retos. Actualmente hay grandes avances en inteligencia artificial, el big data, la interacción hombre-máquina, IoT, etc.

Mi intención es recoger en estas páginas la pequeña porción de este proceso en la que participo. Si estás también interesado en estos temas, te invito a participar, y a ponerte en contacto conmigo. Espero que este proyecto sea fructífero.