El concepto FSM es ampliamente aplicable a una variedad de campos. Esto da como resultado muchas maneras diferentes de explicarlas, dependiendo de la aplicación, lo que puede ser muy confuso.
Mi campo es controles de máquina incrustados. En ese contexto, un FSM es un dispositivo (hardware o software) que responde a eventos externos y produce acciones. Las acciones generadas dependen de la historia pasada del sistema, es decir, su estado .
Los eventos son cosas como un interruptor de límite que se enciende.
Las acciones resultantes son cosas como encender una lámpara.
Imagine un simple interruptor de botón en una lámpara de escritorio. Cuando presiona el botón, la lámpara se enciende. Si lo presiona nuevamente, la lámpara se apaga. El mismo evento (presionar un botón) ha producido dos acciones diferentes. La acción que resulta de presionar un botón depende del historial pasado del sistema, es decir, del estado actual del sistema.
La lámpara tiene 2 estados, encendida o apagada. Ese es un número finito. De ahí la máquina de estados finitos .
Un estado no necesita ser un reflejo directo de la salida (el encendido o apagado de la lámpara). ¿Te imaginas un controlador que solo enciende la lámpara después de la sexta pulsación y luego se apaga después de la 17a pulsación? Tal FSM, además de ser moderadamente inútil, tendría 17 estados internos pero solo 2 condiciones de salida.
Mucho más útil sería un sistema con 10 botones de entrada que solo encenderá la lámpara si los botones se presionan en un cierto orden. Esto se está acercando a una de las definiciones “académicas” de un FSM: algo que procesa un flujo de símbolos de entrada y detecta patrones.
Hay mucho más en el sitio web de mi empresa.
Tabula es una herramienta de diseño y programación FSM basada en tablas:
http://www.splatco.com/tabula_s_ …
Aquí hay un tutorial sobre programación de FSM en BASIC:
http://www.splatco.com/fsm_tute/ …