TDII R4052 - Máquina de Estado - 2010 8 de Mayo de 2010 Universidad Tecnológica Nacional Facultad Regional Buenos Aires Temario Ingeniería Electrónica Técnicas Digitales II Máquina de Estado Introducción Estado del arte Problemática general Criterios de diseño C Casos típicos tí i de d estudio t di Un ejemplo de aplicación Ejercicios propuestos Ing. Juan Manuel Cruz ([email protected]) Profesor Asociado Ordinario Ing. Alex Lozano ([email protected] ) Jefe de Trabajos Prácticos Ordinario Buenos Aires, 8 de Mayo de 2010 8 de Mayo de 2010 Máquina de Estado (palotes ++) Máquina de Estado (State Machine) Existen múltiples terminologías: Modelo matemático de un sistema con entradas y salidas discretas, que posee sintaxis y semántica formales Utiles para representar aspectos dinámicos no representables por diagramas de otro tipo 8 de Mayo de 2010 Ing. Juan Manuel Cruz Ing. Juan Manuel Cruz 2 ¿Como qué se las conoce? Ing. Juan Manuel Cruz 3 Statechart FSM & EFSM (Finite State Machine & Extended FSM) PFSM & CFSM (Partial & Complete FSM) TFSM (Timed FSM) DFSM & NFSM (Deterministic & Nondeterministic FSM) LTS (Labelled Transition System) A t Automata t (teoría (t í de d lenguajes) l j ) Timed Automata IOA (Input Output Automata) Etc., etc., etc. 8 de Mayo de 2010 Ing. Juan Manuel Cruz 4 1 TDII R4052 - Máquina de Estado - 2010 8 de Mayo de 2010 ¿Qué son? ¿Para qué sirven? Modelo de Comportamiento (Behavior), denotan evolución mediante: Especificar aspectos formales relacionados con: Estados (comportamiento estático) Transiciones (evolución entre estados) Excitaciones (que condicionan las transiciones) Acciones (asociadas a las transiciones) Determinísticas y no determinísticas Composición en paralelo de múltiples máquinas 8 de Mayo de 2010 Ing. Juan Manuel Cruz 5 ¿Por qué usarlas? 8 de Mayo de 2010 Rigurosa descripción del comportamiento de la solución al problema planteado Soluciones muy sofisticadas y ridículamente sencillas. Incluso compuestas por la operación en paralelo de múltiples máquinas Código más Códi á simple, i l eficiente fi i y preciso. i Más Má fácil fá il de d depurar, d modificar, expandir y mejor organizado Facilitan el análisis, el diseño y la implementación Existen métodos para minimizar estados Mediante diversos lenguajes de programación: 8 de Mayo de 2010 Ing. Juan Manuel Cruz Ing. Juan Manuel Cruz 7 Funciones matemática Diagramas / Tablas de Estados y Transiciones Redes de Petri 6 Mediante diversos métodos de representación: Ing. Juan Manuel Cruz ¿Cómo se formalizan? Sistemas de Control en Tiempo Real Dominios Reactivos o Autónomos Computación Reactiva Protocolos Circuitos Eléctricos/Electrónicos (Lógica Secuencial) A i Arquitectura de d Software S f Análisis Lexicográfico, Gramatical Etc., etc., etc. Assembly, C p/micros o PCs C++, Java, UML VHDL, etc., etc., etc. 8 de Mayo de 2010 Ing. Juan Manuel Cruz 8 2 TDII R4052 - Máquina de Estado - 2010 8 de Mayo de 2010 Casos típicos de estudio Un ejemplo de aplicación: Contador Contador Ascendente / Descendente Surgen de combinar los siguientes factores: Excitadas por Eventos Excitadas por Sincronismos (time-out, timer-tick) Excitadas por Semáforos/Variables/Colas (mensajes) Interacción con Entradas/Salidas Composición en paralelo de múltiples máquinas Moore & Mealy Turing & Markov 8 de Mayo de 2010 Ing. Juan Manuel Cruz 9 Contador DES cuenta < CUENTAfiNAL / cuenta++ Ing. Juan Manuel Cruz Itera Variables: estado , cuenta Defines: Ing. Juan Manuel Cruz 10 Estado Actual Excitación Estado Futuro Acción X RESET || estado >= ESTADOmAXIMO ESTADOiNICIAL cuenta = CUENTAiNICIAL estado < ESTADOmAXIMO && cuenta < CUENTAfINAL ASCENDENTE cuenta++ estado < ESTADOmAXIMO && cuenta == CUENTAfINAL DESCENDENTE cuenta-- estado < ESTADOmAXIMO && cuenta > CUENTAiNICIAL DESCENDENTE cuenta-- estado < ESTADOmAXIMO && cuenta == CUENTAiNICIAL ASCENDENTE cuenta++ cuenta > CUENTAiNICIAL / cuenta -- Ing. Juan Manuel Cruz ASCENDENTE, DESCENDENTE, ESTADOmAXIMO, ESTADOiNICIAL, CUENTAiNICIAL, CUENTAfINAL 8 de Mayo de 2010 ASCENDENTE DESCENDENTE cuenta == CUENTAiNICIAL / cuenta++ 8 de Mayo de 2010 Cuenta descendente desde CUENTAfINAL Î hasta CUENTAiNICIAL Tabla de Estados y Transiciones cuenta == CUENTAfiNAL / cuenta-- ASC Contador Diagrama de Estados y transiciones RESET / cuenta = CUENTAiNICIAL Cuenta ascendente desde CUENTAiNICIAL Î hasta CUENTAfINAL Recursos Algunas máquinas con nombre propio: 11 8 de Mayo de 2010 Ing. Juan Manuel Cruz 12 3 TDII R4052 - Máquina de Estado - 2010 8 de Mayo de 2010 Contador Contador Implementaciones posibles Implementación con switch (1 de 3) /* Inclusión de Archivos #include <Macros51.h> #include <Defines51.h> Implementación mediante: Switch (estado) Arrays de punteros a función (estado) Múltiples if (estado) /* Declaración de Prototipos void InicializarContador (void); void Contador (void); Desarrolladas en esta presentación /* Se escucharán propuestas en esta presentación Se recomienda compararlas en la práctica de laboratorio 8 de Mayo de 2010 Ing. Juan Manuel Cruz 13 Contador Reserva de Variables */ // Estado de Contador de 8 bits Asc. / Desc. unsigned char data cuenta; // Contador de 8 bits Asc. / Desc. /* Programa } Ing. Juan Manuel Cruz ASCENDENTE #define CUENTAiNICIAL #define CUENTAfINAL 0x00 0xFF 8 de Mayo de 2010 // Límites de Cuenta Ing. Juan Manuel Cruz } return; case DESCENDENTE: if (cuenta > CUENTAiNICIAL) cuenta--; switch (estado) { // En función del Estado y la Excitación Actualiza las Variables las Variables, Salidas de Control y retorna // Inicializa las Variables y Salidas de Control case ASCENDENTE: if (cuenta < CUENTAfINAL) cuenta++; Ing. Juan Manuel Cruz 14 esle l { estado = DESCENDENTE; cuenta--; } break; if (estado >= ESTADOmAX) { InicializarContador(); return; 8 de Mayo de 2010 #define ESTADOiNICIAL void Contador (void) { // Si ell Estado E d esta fuera f de d rango reinicializa la M de E y retorna */ void InicializarContador (void) { estado = ESTADOiNICIAL; cuenta = CUENTAiNICIAL; 0 // Estados 1 DESCENDENTE + 1 Implementación con switch (3 de 3) // Reservas en RAM Interna de acceso directo unsigned char data estado; */ Contador Implementación con switch (2 de 3) /* */ Defines del correspondientes al Contador #define ASCENDENTE #define DESCENDENTE #define ESTADOmAX Tablas de excitaciones & acciones (estado, excitación) */ // Incluyo Archivo con Macros de Uso General // Incluyo Archivo con defines para 8051 15 8 de Mayo de 2010 } } Ing. Juan Manuel Cruz else { estado = ASCENDENTE; cuenta++; } break; 16 4 TDII R4052 - Máquina de Estado - 2010 8 de Mayo de 2010 Contador Contador Implementación c/punteros a función (1 de 2) /* Declaración de Prototipos Implementación c/punteros a función (2 de 2) */ void Ascendiendo(void) { if (cuenta < CUENTAfINAL) cuenta++; void Ascendiendo (void); void Descendiendo (void); // Arreglo de Punteros a las Funciones para cada Estado code void (code *ArrayFuncionesEstadoContador []) (void) = { Ascendiendo, \ Descendiendo}; /* Programa */ void Contador (void) { else { estado = DESCENDENTE; cuenta--; } // Si el Estado esta fuera de rango g reinicializa la M de E y retorna if (estado >= ESTADOmAX) { InicializarContador(); return; } } } Ing. Juan Manuel Cruz 17 return; } */ 18 } void Contador (void) { // Si el Estado esta fuera de rango reinicializa la M de E y retorna return; } // (estado == DESCENDENTE) else { if (estado >= ESTADOmAX) { InicializarContador(); return; } if (estado == ASCENDENTE) { if (cuenta < CUENTAfINAL) cuenta++; else { estado = DESCENDENTE; cuenta--; 8 de Mayo de 2010 Ing. Juan Manuel Cruz Comparación de Implementaciones Implementación con múltiples if Programa 8 de Mayo de 2010 Contador Contador Ing. Juan Manuel Cruz } return; else { estado = ASCENDENTE; cuenta++; (*ArrayFuncionesEstadoContador [estado]) (); 8 de Mayo de 2010 /* void Descendiendo (void) { if (cuenta > CUENTAiNICIAL) cuenta--; } } Ing. Juan Manuel Cruz if (cuenta > CUENTAiNICIAL) cuenta--; else { estado = ASCENDENTE; cuenta++; } 19 Module Information Switch Punteros a función Multiples if 55 Code size 59 77 Contant size - 4 - XDATA size - - - PDATA size - - - DATA size 2 2 2 IDATA size - - - BIT size - - - 8 de Mayo de 2010 Ing. Juan Manuel Cruz 20 5 TDII R4052 - Máquina de Estado - 2010 8 de Mayo de 2010 Ejercicios propuestos Detector de Secuencia Seguimiento de señales Generador de Secuencia Referencias Señales luminosas Control de Acceso con/sin cupo Ascensor de 2 plantas Escale a mecánica unidireccional/bidireccional Escalera nidi eccional/bidi eccional Puerta corrediza/Portón levadizo Máquinas expendedoras o de autoservicio Maquinaria o procesos industriales 8 de Mayo de 2010 Ing. Juan Manuel Cruz 21 Ingeniería g de Software I,, DC - FCEyN y – UBA Software de Tiempo Real - FRBB – UTN Sintaxis y Semántica del Lenguaje - FRT - UTN Finite State Machines: Making simple work of complex functions Ingeniería en Controladores - Máquinas de Estado An Introduction to Finite State Machines JOURNAL OF OBJECT TECHNOLOGY: A Typing Scheme for Behavioural Models Teoría de Autómatas - Guillermo Morales-Luna Máquinas de Estados Finitos -Jorge Alejandro Gutiérrez Orozco Finite State Machines - James Grimbleby Grupo de Inteligencia Artificial y Robótica - FRBA - UTN 8 de Mayo de 2010 Ing. Juan Manuel Cruz 22 Referencias R3CT18: Manejo de Cola en C de 8051 R3CT19: Máquina de Estado (Contador de 8 bits) en C de 8051 R3CT20: Máquina de Estados (Tanque) en C de 8051 R3CT23: Teclado Matricial en C de 8051 R3CT24: Display Multiplexado en C de 8051 Autor: Ing. Juan Manuel Cruz Publicados por CEIT – Electrónica – FRBA – UTN (2002) Autor: A to Ing Ing. JJuan an Manuel Man el Cruz C Publicados por CEIT – Electrónica – FRBA – UTN (2003) R3CT25: Comunicación Serie en C de 8051 Autor: Ing. Juan Manuel Cruz Publicado por CEIT – Electrónica – FRBA – UTN (2004) 8 de Mayo de 2010 Ing. Juan Manuel Cruz Ing. Juan Manuel Cruz 23 6