El State Diagram o Máquina de Estados, es un método de programación secuencial, similar
al diagrama a bloques de cualquier proceso. El componente principal son los ͞EstadosÀ,
que son la representación de los bloques.
Todas las Máquinas de Estados, tienen un estado inicial y un estado final, además cada
estado puede ser cíclico o de paso. Los estados cíclicos están repitiéndose
constantemente, y pasan al siguiente estado una vez cumplida su condición Booleana de
salida. Los estados de paso, una vez ejecutado, pasan inmediatamente al siguiente estado.
Exceptuando el estado inicial y final, todos los estados obligatoriamente deben tener al
menos una transición de entrada y una transición de salida. Todas las transiciones tienen
designada una condición Booleana.
Los estados de múltiples transiciones de entrada, son el estado de salida de varios estados
anteriores. En la figura siguiente el ESTADO 4 representa un estado de múltiples
transiciones de entradas.
Los estados de múltiples transiciones de salida, son los que pueden tener varios estados
siguientes. A pesar de tener varias transiciones de salida solo puede continuar por una de
ellas. Al cumplirse alguna condición, se pasa al siguiente estado por la transición
correspondiente a la condición que se cumplió. Si varias transiciones cumplen su condición
al mismo tiempo, se continúa al siguiente estado por la transición de mayor prioridad. En
la figura siguiente el ESTADO 4 representa un estado de múltiples transiciones de salida.
Fig.xx: Estado de múltiples transiciones de salida.
La mayoría de las Máquinas de estados son programadas en forma cíclica, pero también
pueden ser programadas de forma lineal. Las que están programadas en forma lineal,
pasan de un estado al otro hasta llegar al estado final y no se vuelven a ejecutar hasta que
sea nuevamente iniciada la Máquina de Estados. Las programadas de forma cíclica,
pueden repetir algunos o todos sus estados, sin pasar por el estado final, ya que una vez
llegado al estado final la Máquina de Estados se detienen hasta que sea iniciada
nuevamente. A continuación se muestran algunas imágenes de ejemplos de Máquinas de
Estados en su representación de bloques.
c
En esta ventana se lleva a cabo la creación y modificación de la Máquina de Estados. Solo
consta de dos componentes estados y transiciones.
Existen dos formas de agregar nuevos estados, dando click derecho en el área de trabajo
de la ventana c
y seleccionando c del menú, el nuevo estado
aparecerá en el lugar donde fue dado el click derecho. Otra forma es seleccionando el
menú c de la barra de herramientas, el nuevo estado aparecerá en un
lugar aleatorio que se encuentre libre en el área de trabajo.
èara cambiar la ubicación de los estados en el área de trabajo, dar click izquierdo
sostenido, desplazar a la nueva posición y soltar.
èara eliminar estados basta con seleccionarlos y presionar la tecla <Del> o <Supr>.
Como ya se había mencionado anteriormente, todas las Máquinas de Estados deben de
tener un estado inicial y un estado final, y solo debe existir uno de cada tipo. èor defecto el
estado inicial ya viene creado en la ventana c
Si en algún momento es necesario cambiar el estado inicial, solo se debe de dar click
derecho en el estado que se desea que sea el nuevo estado inicial y seleccionando O
del menú. El nuevo estado inicial tendrá ahora el color verde y sustituirá al anterior
en su función de estado inicial. El estado inicial anterior no será borrado ni remplazado y
los nombres de cada estado no serán modificados.
èara añadir el estado final, se debe seleccionar un estado existente o crear uno nuevo.
Dando click derecho en el estado seleccionado y seleccionando O del menú.
El estado seleccionado ahora tendrá un color rojo que lo identificara como estado final.
Si en algún momento es necesario cambiar el estado final, solo se debe de dar click
derecho en el estado que se desea que sea el nuevo estado final y seleccionando O
del menú. El nuevo estado final tendrá ahora el color rojo y sustituirá al anterior
en su función de estado final. El estado final anterior no será borrado ni remplazado y los
nombres de cada estado no serán modificados.
×
Cuando un estado es creado, tiene una transición base denominada
. La transición
Esta transición es usada para definir si el estado será cíclico o de paso. Si la transición
esta conectada a su propio estado, este estará en ciclo mientras no se cumpla
alguna condición de sus otras transiciones de salida. Si esta transición
esta
conectada hacia otro estado y ninguna de las otras transiciones han sido seleccionadas,
automáticamente se pasa al siguiente estado por la transición
. Si el estado cuenta
únicamente con la transición de salida
, esta deberá ser cableada a otro estado
èara agregar transiciones a los estados existen tres formas, dando click derecho en un
estado y seleccionando y dando click en el estado de salida
Otra
forma es seleccionando un estado y dando click en de la
barra de herramientas. La última forma es seleccionando el estado donde se desea crear la
transición, y presionando la tecla <Shift> se da click en el estado de salida.
Las transiciones cableadas de un estado a otro pueden ser modificadas, haciendo que
vallan hacia otro estado diferente. èara realizar un cambio, se debe de dar click sostenido
en la punta de flecha de la transición que se desea cambiar y arrastrarla hasta soltarla en
el estado deseado.
èara eliminar transiciones basta con seleccionarlas y presionar la tecla <Del> o <Supr>.
Una vez terminado el diseño y construcción de la Maquina de estados en la ventana c
, se continua con la programación de cada estado. Esta programacion es
realizada en la ventana del igual a cualquier estructura cuidando
programar en el área correspondiente.
En la ventana c
debe seleccionarse el estado que se desea programar.
Como se menciono anteriormente el estado seleccionado se denota por tener un borde
color rosa.
En este paso es necesario programar las condiciones que deben cumplirse para cada
transición de salida. La mayoría de esta programación esta basada en comparadores,
señales discretas de sensores, botones de usuario o cualquier otra señal de tipo Booleana.
La condición de la transición
es una constante Booleana de valor y no puede
ser modificada.