Documente Academic
Documente Profesional
Documente Cultură
QUE SON:
Más conocidas por su acrónimo en inglés FSM (Finite State Machine), se utilizan
ampliamente en el diseño de circuitos digitales (además de en otros ámbitos de la
ingeniería, como la programación), para describir el comportamiento de un sistema según
el valor de sus entradas y de cómo van cambiando en el tiempo. Ésta es una definición
parcial pero que nos permite hacernos una primera idea intuitiva. Desde el punto de vista
de las FSM, un sistema está compuesto de estados por los que va pasando el sistema, de
señales de entrada que modifican esos estados y de señales de salida que pueden utilizarse
para conocer el estado del sistema y actuar en consecuencia. Un ejemplo muy visual podría
ser un semáforo, el cuál dispone de tres estados diferentes, uno para cada color. Las
entradas del sistema las podría generar un temporizador que activa una señal cada cierto
tiempo, indicando que hay que pasar al siguiente estado. Por último, las salidas del sistema
podrían ser tres señales que indiquen qué lámpara, de las tres disponibles, tiene que
encenderse.
DONDE SE UTILIZAN :
es una de las arquitecturas fundamentales que los desarrolladores de LabVIEW usan con
frecuencia para construir aplicaciones rápidamente. La arquitectura State Machine se
puede utilizar para implementar complejos algoritmos de toma de decisiones
representados por diagramas de estado o diagramas de flujo. Más precisamente, una
máquina de estados implementa cualquier algoritmo descrito por una "máquina de
Moore", que realiza una acción específica para cada estado en el diagrama.
Las máquinas de estado se utilizan con mayor frecuencia al programar interfaces de usuario.
Al crear una interfaz de usuario, diferentes acciones de usuario envían la interfaz de usuario
a diferentes segmentos de procesamiento. Cada uno de estos segmentos actuará como
estados en la máquina de estados. Estos segmentos pueden conducir a otro segmento para
su procesamiento posterior o esperar a otro evento de usuario. En este ejemplo, la máquina
de estado monitorea constantemente al usuario para la siguiente acción a realizar. Existe
otro patrón de diseño que se puede utilizar para implementar una interfaz de usuario, el
controlador de mensajes en cola. Un controlador de mensajes en cola es una versión más
sofisticada de State Machine y ofrece flexibilidad adicional, pero también agrega
complejidad adicional. Los controladores de mensajes en cola se tratarán en otro momento.
Las pruebas de procesos son otra aplicación común de State Machines. En este ejemplo,
cada segmento del proceso está representado por un estado. Según el resultado de la
prueba de cada estado, se puede llamar a un estado diferente. Esto puede suceder de
manera continua, realizando un análisis en profundidad del proceso que se está probando.
Máquina de Moore:Las salidas dependen sólo del estado presente Las entradas intervienen en la
decisión del próximo estadoZ = f(y)
Máquina de Mealy:Las salidas dependen del estado presente y del valor de las entradasZ = f(y,X)
Diagramas de estados
Para cualquier estado, hay un número finitode posibles próximos estados En cada ciclo de reloj la
máquina cambia al siguiente estado Uno de los posibles próximos estados se convierte en el nuevo
estado presente Depende del estado presente y de las entradas
NOTAS IMPORTANTES
Hay algunas advertencias a tener en cuenta al crear una máquina de estado, es decir, la redundancia
de código y el uso de Enum.
Redundancia de código
Problema: la parte más difícil de crear una máquina de estados es diferenciar entre los posibles
estados en el diagrama de estados. Por ejemplo, en el diagrama de estado de la máquina de coque
(figura 4), podríamos haber tenido estados de 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50 centavos en
lugar de tener un "esperar respuesta ”Estado que va de un estado a otro dependiendo del tipo de
moneda que se suelte. Eso crearía 11 estados diferentes con el mismo diagrama de caso exacto. El
código redundante puede crear un gran problema en una aplicación más grande.
Solución: si diferentes estados tienen el mismo diagrama de casos, intente combinarlos en un solo
estado. Por ejemplo, el estado de "espera de respuesta" se crea para evitar la redundancia de
código.
Uso de enumeración
Problema: Las enumeraciones se utilizan ampliamente como selectores de casos en State Machines.
Si el usuario intenta agregar o eliminar un estado de esta enumeración, los cables restantes
conectados a las copias de esta enumeración se romperán. Este es uno de los obstáculos más
comunes al implementar State Machines con enumeraciones.