M quinas de estado (Transparencia de Juan Manuel Cruz)

Anuncio
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
Descargar