martes, 6 de noviembre de 2012

Seguridad para Automatización Industrial y Sistemas de Control


White Paper
Security for Industrial Automation and Control Systems
By: ABB



Este artículo nos habla sobre cómo la seguridad en sistemas de control y automatización industrial es un punto incluso más importante que en un sistema computacional ordinario, debido a que un ataque a un sistema de automatización o control puede incluso llegar a atentar contra la integridad física o la vida misma de los operadores de dichas mquinas y/o sistemas.

Ellos definen o toman el concepto de seguridad desde la perspectiva de proteger la confiabilidad, disponibilidad e integridad del sistema de control.

En el articulo se menciona que es imposible asegurar la seguridad del sistema al 100% ya que hay muchos factores que pueden atentar contra ésta por ello es necesario que el control de seguridad del sistema sea constante o rutinario para así disminuir las probabilidades de ataque al sistema.

Recomienda la empresa, que cualquier establecimiento que use sistemas de control designen un departamento específico que se encargue del control de la seguridad del sistema, que diseñe y proponga medidas preventivas de seguridad así como planes de reacción contra contingencias (ataques) para una rápida reacción ante el mismo y poder recuperar el control y la estabilidad del sistema antes de que las pérdidas (tanto economicas como incluso vitales de los operadores) aumenten.

Otra de las recomendaciones que realiza la empresa en el artículo es la de mantener "aislado" el sistema de control de redes externas que pudieran vulnerabilizar al mismo y exponiendolo a ataques. Ellos proponen que la red del sistema de control sea "rodeada" por diversos muros (firewalls, proxys, DNS's, etc) para evitar conexiones no autorizadas con el exterior. Y se corra el riesgo de que el sistema contraiga un virus o que algun agente malintencionado entre al sistema remotamente y altere los procesos y funciones del mismo cuyas consecuencias podrían ser ostentosas e incluso lamentables (si se atenta contra la integridad de los operadores).

Se habla de que aunque la red de un sistema de control esté blindada y protegida contra conexiones con redes externas, el sistema sigue siendo vulnerable pero ahora no por un agente o atacante externo que hackee la red, sino de los mismos operadores del sistema. Como medidas precautorias ante ataques intencionales o no intencionales de parte de los mismos operadores del sistema es la de darles los permisos suficientes sobre el sistema para que puedan hacer su trabajo, ni más permisos, ni menos. Es necesario también que el departamento encargado de la seguridad del sistema, mantenga constantes capacitaciones para los operadores, así como constantes pruebas de confidencialidad y aptitudes.

Finalmente como conclusión, se enfatiza en tener constantes pruebas y chequeos de seguridad, actualizar sistemas, sistemas operativos, controlar las conexiones remotas hacia la red el sistema, exhortar a operadores y empleados no usar dispositivos externos de almacenamiento ya que esto puede ser riesgo de contagio de virus y gusanos los cuales pueden poner en riesgo la estabilidad del sistema y mantener actualizadas evaluaciones de casos de vulnerabilidad y porcentajes de riesgo de ataques para así estar preparados para enfrentar cualquier tipo de contingencia de seguridad.

Fuente de consulta:
http://www05.abb.com/global/scot/scot296.nsf/veritydisplay/b1f29a78bc9979d7c12577ec00177633/$file/3bse032547_b_en_security_for_industrial_automation_and_control_systems.pdf

lunes, 5 de noviembre de 2012

Tarea 10 - Expresiones ω-regular

Para esta tarea debemos inventar una expresión del tipo ω-regular que cumpla con los siguientes requisitos:


  • Contener por lo menos dos símbolos.
  • Contener por lo menos dos operadores.
Una vez definida la expresión, dibujar su NBA (Nondeterministic Büchi Automaton) correspondiente.

Mi expresión es la siguiente:



Y aquí represento su NBA correspondiente:


Fuentes de consulta.
Principles of Model Checking

jueves, 1 de noviembre de 2012

Margen de fase de función de transferencia (Laboratorio)

Para este reporte elegí el siguiente problema:

Considere el sistema de control con retroalimentación unitaria cuya función de transferencia en lazo abierto es:
Determine el valor de a tal que el margen de fase sea 45°.

Lo primero es igualar G(s) en terminos de G(jw) y sustituir las s por w.


Lo siguiente es representar la ecuación en forma de la razón de la amplitud elevando al cuadrado y aplicando raíz cuadrada:




Después igualamos a 1 toda la ecuación y después la simplificamos:




Habiendo desarrollado la ecuación anterior lo siguiente es definir la ecuación para ángulo de fase, ésta está denotada de la siguiente manera:


Si evaluamos con  :



Finalmente con:


evaluamos y despejamos a.

Primero escribimos la ecuación en terminos de a:





Luego  del numerador con  del denominador se hace 1 y se elimina y nos queda:



Despejamos a:



Y finalmente calculamos el resultado:



Comprobación octave:
En esta imagen con el comando margin obtenemos parametros Gm: Margen de ganancia (dB), Pm: Margen de fase (en grados), Wcg: frecuencia para fase,Wcp: frecuencia para ganancia y en el Pm que corresponde a margen de ganancia encontramos los 45° por lo que se comprueba que el resultado obtenido de a es correcto.

Finalmente, el diagama de nyquist




Fuentes de consulta:

martes, 30 de octubre de 2012

Programa de estabilidad

Para este reporte se nos asignó comprobar si el modelo de nuestro sistema de control es estable o no lo es.

La función de transferencia que tenemos del sistema es:


Primeramente analizamos las raíces de la función de transferencia para revisar si cumple con la condición de que raíces reales menores a 0 representan a un sistema estable o de lo contrario el sistema sea inestable.

Para sacar dichas raíces de la función basta con ejecutar los siguientes comandos en octave:
El vector que usamos para obtener las raíces es el denominador de nuestra función de transferencia. Analizando las raíces reales (no imaginarias) obtenidas podemos determinar que son menores a 0 por lo que podemos concluir que nuestro sistema es estable.

A manera de comprobación mostraré la evidencia de estabilidad del sistema representandola mediante un diagrama de impulso y el de posición de las raíces (rlocus).

Primero los comandos para obtener el diagrama de impulso para nuestra función de transferencia:

Obteniendo el siguiente resultado:

Con esta gráfica se demuestra que después de un impulso inicial, el sistema tarda al rededor de entre 3000 y 4000 segundos en finalmente estabilizarse.

Finalmente para reafirmar la estabilidad del sistema obtuve la gráfica del lugar de las raíces usando rlocus de la siguiente manera:

En la línea de comandos queda agregar
octave:4> rlocus(sys)

Y obtuve el siguiente resultado:

Con esta última gráfica queda en evidencia que las raíces del sistema no pasan por ningún punto positivo del eje x lo que comprueba que el sistema es estable.


Fuentes de consulta:

Tarea 9 - Modelado de sistemas de transiciones

Para esta entrada se nos asignó analizar los ejemplos 2.29, 2.30 y 2.32 del libro Principles of model checking, para después modelar un ejemplo similar propio a manera de sistema de transiciones o de grafo de un programa (dependiendo cuál sea más conveniente).

Como sistema a modelar se me ocurrió una tortillería.

Los componentes que integran una tortillería son:
  • Mano de obra, encargada de poner el maíz dentro del molino, de trasladar la masa resultante a la banda de cocción y finalmente de empaquetar el producto.
  • Molino, encargado de moler el maíz para convertirlo en masa.
  • Banda de cocción, una vez salida la masa del molino, ésta pasa a través de una banda donde es cortada en forma tradicional y posteriormente cocida.
Posteriormente realicé los siguientes diagramas de estado y de acción para cada componente.

En lo concerniente a la mano de obra.
  • Estados:
    • Inicio.
    • Espera. 
    • Traslado.
  • Acciones:
    • Llenado contenedor del molino.
    • Recolección de masa una vez que haya salido del molino.
    • Traslada masa a banda de cocción.

(Nota. Una vez que traslada la masa a la banda, regresa a esperar que salga más masa del molino o si éste ya está vacío lo vuelve a llenar)

En lo concerniente al molino.
  • Estados:
    • Ocupado.
    • Libre.
  • Acciones:
    • Moliendo maíz.
    • Esperando por más maíz o en estado de standby.

En lo concerniente a la banda de cocción.
  • Estados:
    • Procesando.
    • Repetición.
    • Finalización.
  • Acciones:
    • Moldeado y cocción.
    • Repetición proceso de producción, volver al inicio del sistema.
    • Fin proceso de producción.

Ya para el diagrama del sistema final abrevié tanto estados como acciones de la siguiente manera:
Mano de obra: (Inicio, Espera, Traslado) = (E0, E1, E2)
                         (Llenado, Recolección, Traslado)=(A0, A1, A2)

Molino: (Libre, Ocupado) = (0, 1)
              (Moliendo, Esperando) = (M,W)

Banda de cocción: (Procesar, Repetición, Finalización) = (P, R, T)
                              (Moldeado y cocción, Repetir proceso) = (C, Rp)

Y finalmente aquí está el esquema final:




Fuentes de Consulta
Principles of Model Checking


lunes, 22 de octubre de 2012

Tarea 8 - Redes Petri

Para esta entrada el objetivo es diseñar o inventar un sistema concurrente sencillo el cuál posteriormente, podamos modelarlo en forma de una Red Petri, apoyándonos con el paquete Snakes de Python.
Si deseas saber qué es una Red Petri haz clic aquí.

El sistema consiste en un abanico controlado por un interruptor. A grandes rasgos, la descripción del mismo es la siguiente:
  • Inicialmente el ventilador se encuentra en un estado de reposo (v0).
  • Al accionar el interruptor por primera vez (le llamo transición 0) el abanico comienza a girar con una velocidad (v1).
  • Una vez en v1 al volver accionar el interruptor (llega a la transición 1) el abanico empieza a girar ahora con una velocidad más alta (v2).
  • Finalmente, al estar el abanico girando a una v2 volviendo a accionar el interruptor (llega a la transición 2) regresa a su estado inicial de reposo (v0) y comienza el ciclo de nuevo.


El código de la representación del sistema en Python es el siguiente:
(Para esta implementación me base en un ejemplo de la misma API de Snakes al cual hago referencia en las fuentes de consulta)

jueves, 18 de octubre de 2012

Análisis Sistema Mecánico Masa-Resorte (Laboratorio)

Para esta entrega el problema que elegí es el siguiente:

"Considere que el sistema está inicialmente en reposo. Suponga que el carro se pone en movimiento mediante una fuerza de impulso unitario. ¿Puede detenerse mediante otra fuerza de impulso equivalente?"
Representación del sistema de baja fidelidad. La imagen que tomé del sistema original que aparece en el libro estaba muy distorsionada y decidí recrearla. Lo siento mucho.

Comenzando el análisis nos damos cuenta que cuando el objeto m se pone en movimiento por una fuerza de impulso unitario, tenemos que:

El siguiente paso es definir otra fuerza de impulso que detenga el movimiento denotada por: 

en la que A es una magnitud indeterminada de la fuerza de impulso, y (t - T) es el instante indeterminado en que el impulso es aplicado al sistema. Ahora juntando esta nueva ecuación con la anterior tenemos:

Calculando la transformada de Laplace de la ecuación anterior tenemos como resultado:

Despejando X(s) nos queda:

Separando constantes obtenemos:

Finalmente aplicando transformada inversa de Laplace a la pasada formula:

Ya sobre esta última función nos damos cuenta que si la masa m es detenida en el instante (t - T), entonces x(t) automáticamente se convertirá en 0 para t >= T.

Para hacer x(t) = 0, podemos aplicar las siguientes igualdades para periodo :

Volviendo a la pregunta principal del problema " ¿Puede detenerse mediante otra fuerza de impulso equivalente?" la respuesta es . Una masa impulsada m puede ser detenida por otra fuerza de impulso equivalente como: