Máquinas de Estados Finitos¶

También llamados "Automatas" de estados finitos.

Modela el comportamiento de un sistema con un número limitado de modos o estados

Las MEF desde la auto-regulación¶

La máquina de estados finitos o MEF, también llamada autómata finito, está relacionada con el órgano de control del sistema. A diferencia de lo que se puede pensar, la MEF es una abstracción de las decisiones que el control tomará para satisfacer todas las necesidades o requerimientos en el proceso. Las MEF son representadas por diagramas y pueden ser programadas en cualquier lenguaje de programación.

Secador de manos¶

In [16]:
myHtml = """
<div><b>Ejemplo de un sistema "autonomo"</b></div>
<link href="/assets/css/jupyter_nb.css" rel="stylesheet"/>
<script src="/assets/js/jupyter_nb.js"></script>
""" 
display_html(myHtml, raw=True)

display(IFrame(
    "https://www.youtube-nocookie.com/embed/wZmwFvlBzyE?controls=0",
    width="100%",
    height="450px"))
Ejemplo de un sistema "autonomo"

Secador de manos¶

Antes de pensar en la MEF que controla el secador, responde las siguientes preguntas:

  • ¿Tiene sensores y actuadores el secador?
  • ¿Cuál es el sensor?
  • ¿Cuál es el actuador?

Efectivamente el secador tiene un sensor, un detector de presencia para sabe si hay o no una mano que quiere ser secada y tiene un actuador, un ventilador que genera un flujo fuerte de aire, secando así las manos.

Construcción de la MEF de control¶

Diagrama de flujo de materia¶

Descripción del proceso¶

El proceso del secador inicia cuando una persona acerca la mano a la zona de secado. Si se detecta un objeto en la zona de secado, el secador generará un flujo de aire que terminará secando el objeto.

Requerimientos del secador¶

  • Para su correcto funcionamiento, el secador debe tener un sensor que detecte la presencia de un objeto a ser secado, y de un ventilador para generar el secado
  • El sensor será denominado S, y responderá a la pregunta ¿estoy detectando presencia? con verdadero (1) o falso (0)
  • El actuador será denominado V, y esperará una respuesta verdadera (1) o falsa (0) a la pregunta ¿debo ventilar?

Reglas de control¶

Una vez tenemos los requerimientos del sistema podemos proceder al paso a paso, en donde los escribiremos usando la estructura SIEEE (o IFTTT).

  • Si el sensor detecta presencia entonces ventilar.
  • Si no detecta presencia el sensor entonces no ventilar.

Estos pasos pueden escribirse también de la siguiente forma:

  • Si S entonces V.
  • Si no S entonces no V.

MEF del control del secador¶

Anátomia de una MEF¶

Elemento Representación Descripción
Estado Círculo Define el comportamiento de la máquina y genera la orden a cada actuador.
Transición Flecha Son los cambios de estado generados por la expresión que la acompaña.
Expresión Ecuación Booleana También llamadas condiciones, son las reglas que se deben cumplir para generar la transición.
Transición Inicial Flecha que no proviene de un estado Toda MEF tiene un estado inicial que se indica con esta flecha.
Evento No se representa Cambios en las variables que hacen parte de las expresiones de la MEF

Las acciones de una MEF¶

Las acciones pueden ser ubicadas:

  • En el estado (dentro del círculo) generando una salida persistente.
  • En la transición (en la flecha) generando una salida transitoria.
In [22]:
sourcefile = 'secador-mef2.gv'
gv = open(sourcefile)
dot = Source(gv.read(),format="svg",filename = sourcefile)
dot.render(sourcefile,view=False);

Adicional a los elementos clásico de las MEF, las MEF híbridas tienen los siguientes elementos:

Elemento Descripción
Contador Son registros que varían de forma ascendente o descendente dependiendo del interés del diseño. La variación es transitoria, por lo que se genera en la transición.
Temporizador Estos nos permiten conocer el tiempo y tomar decisiones basados en él.
Time-out Son temporizadores que evitan que el proceso permanezca en un estado en caso de fallo de la transición principal.

Si volvemos a ver el vídeo del secado de manos, podemos notar que el ventilador no se apaga inmediatamente luego de que se quita la mano. Por lo que podemos pensar que el control usa temporizadores. Un MEF con un temporizador (T) se vería como sigue:

Si leemos la MEF, diremos:

  • El secador empieza en "Espera" con el ventilador apagado.
  • Si detecta un objeto con el sensor (S=1 o simplemente S), entonces empieza a "Secar" encendiendo el ventilador (V=1).
  • Si está "Secando" y deja de detectar el objeto (S=0 o también !S), entonces inicializa un temporizador en cero (/T=0) y continúa con el ventilador encendido (V=1) esperando "Parar".
  • Si está esperando "Parar" y se cumple el tiempo en el temporizador de más de 2 segundos (T > 2), entonces apaga el ventilador (V=0) y queda a la "Espera".

Para entender mejor la anatomia de las MEF, podemos ver el siguiente vídeo:

In [23]:
display(IFrame(
    "https://www.youtube-nocookie.com/embed/5KoRMjeFCZo?controls=0",
    width="100%",
    height="450px"))

Definición formal de Automata¶

Un automata (máquina) de estados finitos esta definido por una tupla de 5 elementos:

$$M = (S,I,f,S_0,F)$$

donde:

  • $S$ es el conjunto de estados finitos.
  • $I$ es el conjunto de expresiones de entrada.
  • $f:S\times I->S$ es la función de transición entre cada par estado-expresión hacia el siguiente estado.
  • $S_0 \subset S$ es el estado inicial (solo uno).
  • $F\subseteq S$ es el conjunto de estados finales.

Ejemplo de la definición formal¶

Tomemos la siguiente definición:

$$\begin{align} S &= \left\{1,2,3,4\right\} \\ I &= \left\{a,b\right\} \\ f &= \left\{(1,a,2),(1,b,4),(2,a,3),(2,b,4),(3,a,3),(3,b,3),(4,a,2),(4,b,4)\right\} \\ S_0 &= \left\{1\right\} \\ F &= \left\{4\right\} \end{align}$$

Que resulta en:

Ejercicio: Torniquete¶

¿Cómo sería la MEF de un torniqute?

Ejercicio: Torniquete¶

Construir la definición formal a partir de la MEF

$$\begin{align} S = &\left\{Bloqueado,Desbloqueado\right\} \\ I = &\left\{Mover,Moneda\right\} \\ f = &\left\{\right. (Bloqueado,Mover,Bloqueado), \\ &(Bloqueado,Moneda,Desbloqueado), \\ &(Desbloqueado,Moneda,Desbloqueado), \\ &(Desbloqueado,Mover,Bloqueado)\left. \right\} \\ S_0 = &\left\{Bloqueado\right\} \\ F = &\left\{\right\} \end{align}$$