6.2 Diagramas de estado
Las máquinas de estado se suelen representar mediante un grafo, denominado diagrama de estados, cuyos vértices representan estados (normalmente círculos) y los arcos dirigidos (líneas entre vértices) la evolución entre estados. El arco siempre apunta en la dirección del estado nuevo. La etiqueta del arco refleja el valor de las entradas que provoca la transición desde el estado origen al estado apuntado por el arco.
En el caso de una máquina de Moore, y siempre y cuando las salidas dependan de un único estado, el diagrama de estados permite dibujar el valor de las salidas dentro de los vértices (estados), indicando así la relación de dependencia. La Fig. 6.6 muestra un ejemplo de este caso (se corresponde con el ejemplo de sumador binario que se verá en la sección 6.6.1). En los vértices la notación empleada es <estado>/<salidas>.
En una máquina de Mealy, los valores de las salidas se muestran también en los arcos, junto a los valores de las entradas, en la forma <entradas>/<salidas>. Esto es debido a que las salidas dependen tanto del estado como de las entradas. Como ejemplo, la Fig. 6.7 muestra el mismo ejemplo de antes (máquina de Moore del sumador binario que se verá en la sección 6.6.1) pero en este caso implementado mediante una Máquina de Mealy con dos entradas y una única salida.
6.2.1 Elección de estados
La elección de los estados para modelar un sistema secuencial es una de las labores propias de los diseñadores. Hay muchas formas de elegir los estados que llevan a máquinas de estados que cumplen con la especificación del sistema.
En el caso de sistemas secuenciales con aplicaciones a control industrial, se suele partir de un estado inicial (también llamado estado de reposo) y un conjunto de estados que representan salidas de control a los que puede evolucionar el sistema. A partir de ahí se va analizando qué ocurre cuando varían los valores de las entradas: si el sistema permanece en el mismo estado (es decir, esa combinación de entradas no produce como efecto el cambio de estado) o si por el contrario evoluciona a otro estado.
6.2.2 Ecuaciones de activación y retención de estados
Se define la ecuación de activación de un estado a aquella función que expresa las combinaciones de entradas y estados que producen que el sistema evolucione de otro estado al estado en cuestión. Y se denomina ecuación de retención de un estado a aquella función que expresa las combinaciones de entradas y estados que producen que el sistema se mantenga en el estado en cuestión. La combinación de las ecuaciones de activación y retención de todos los estados determina unívocamente la función que gobierna la transición entre estados, el cuarto elemento de la 5-tupla que define a la máquina (véase la sección 6.1.3).
Para explicarlo mejor tomemos como ejemplo la máquina de estados de la Fig. 6.7. La ecuación de activación del estado m0 sería (suponiendo que las entradas son x1 y x2):
\[m_0 = m_1 · (\overline{x_1} · \overline{x_2})\]
puesto que para que se active el estado \(m_0\) se debe estar en el estado \(m_1\), y la única combinación de entradas que lleva a \(m_0\) es \(\overline{x_1} · \overline{x_2}\).
La ecuación de retención del estado \(m_0\) se puede obtener de varias formas. La primer sería en función de las entradas que no provocan un cambio de estado:
\[m_0= m_0 · (x_1 · \overline{x_2} + \overline{x_1} · x_2 + x_1 · x_2)\]
Otra forma de expresar la retención del estado \(m_0\), con aplicación directa a los sistemas de control automático, se basa en razonar con los estados futuros inmediatos alcanzables desde \(m_0\). En el ejemplo, se “retiene” el estado \(m_0\) mientras no se active el estado \(m_1\), y la ecuación de retención toma la forma:
\[m_0=m_0 · \overline{m_1}\]
La ecuación que expresa la evolución de la máquina al estado \(m_0\) es el OR de los minitérminos de activación y retención anteriores:
\[m_0 = m_1 · (\overline{x_1} · \overline{x_2}) + m_0 · \overline{m_1}\]
El primer minitérmino corresponde con la ecuación de activación y el segundo con la de retención.
Nota.- La implementación de las ecuaciones de activación siempre se realiza de forma explícita, pues es imprescindible para el cambio de estados. No así la implementación de las ecuaciones de retención que suele ser de forma implícita: si no se activa un nuevo estado, se permanece en el estado actual.