View
233
Download
0
Category
Preview:
Citation preview
7/25/2019 State Charts
1/26
15:43 1 de 26
Andrs Djordjalian Seminario de Sistemas Embebidos
Facultad de Ingeniera de la U.B.A.
Statecharts
7/25/2019 State Charts
2/26
15:43 2 de 26
Statecharts Los diagramas de estado son particularmente tiles
para modelar sistemas embebidos porque estossuelen ser reactivos O sea, responden a eventos externos que no necesariamente
tienen orden o periodicidad
En 1987 Harel propone Statecharts, una evolucindel lenguaje clsico de los diagramas de estados D. Harel, Statecharts: A visual formalism for complex systems,
Science of Computer Programming, vol. 8 num. 3, pp. 231274,junio de 1987
Para modelar sistemas medianamente complejos, los
Statecharts son ms compactos y claros que losdiagramas de estados clsicos Principalmente porque incluyenjerarquas yconcurrencia
Forman parte del UML y se usan extensivamente en
herramientas MDD para embebidos
7/25/2019 State Charts
3/26
15:43 3 de 26
Bibliografa recomendada
M. Samek, Practical UML
Statecharts in C/C++,Captulo 2 Tambin est disponible
como artculo en lnea deEE Times
Ver en nuestra pgina dematerial de estudio
7/25/2019 State Charts
4/26
15:43 4 de 26
Para qu? Samek arranca el
captulo con un
ejemplo: lacalculadora quevena con VisualBasic, que dabaerror si uno tecleaba cosas como 2, -, -, -, =
Argumenta que, de haberla modelado con unamquina de estados antes de sentarse a programar,se podan haber evitado tantos errores
Al final del captulo disea ese modelo usando bastante de la semntica extendida que provee
Statecharts por sobre un diagrama de estados clsico
7/25/2019 State Charts
5/26
15:43 5 de 26
Estados y transiciones
Como el diagrama de estados de una mquina de
Mealy, pero usa rectngulos con esquinasredondeadas para los estados y un crculo lleno parael reset Tambin pueden modelar mquinas de Moore, lo vemos ms
adelante
Estados
Reset (Evento de) trigger
(o sea, entrada)
Accin
(o sea, salida)
7/25/2019 State Charts
6/26
15:43 6 de 26
Mquinas de estados extendidas
Extendida debido al uso de la variable key_count
Los pseudoestados de decisin son otro agregado a lasemntica clsica de las mquinas de estado que usaStatecharts 3 diapositivas atrs dijimos ms compactos y claros
7/25/2019 State Charts
7/26
15:43 7 de 26
Jerarquas
Lo que hicimos fue modelar el comportamientodentro de esperando con una mquina de estados
Este tipo de jerarquizacin permite, en muchoscasos, economizar transiciones, entre otrassimplificaciones que clarifican el diagrama y reducen la cantidad de errores en su
edicin
7/25/2019 State Charts
8/26
15:43 8 de 26
Jerarquas
Notar que, en el ejemplo, la transicin que disparacon puls empezar sale de ingresando tiempo O sea que si el sistema est en idle, pulsar empezar no
cambia el estado Al menos en lo que respecta al alcance de este diagrama
El comportamiento en ingresando tiempoprobablemente tambin sea til modelarlo con undiagrama de estados
Podemos ponerlo all adentro o en hoja separada
7/25/2019 State Charts
9/26
15:43 9 de 26
En mi microondas, si no se ingres un tiempo y sepresiona empezar, arranca con tiempo = 30s.Cmo podemos modificar el diagrama de arriba paraincorporar ese comportamiento? Pueden suponer que existe una variable tiempo que es
modificada en ingresando tiempo y tomada por el timer cuandoeste arranca
Evalen diferentes maneras de resolverlo Pueden usar sintaxis de C, separando sentencias con ;, y
poner acciones en las transiciones iniciales (o sea, resets)
Pero triggers en los resets no, por qu?
Actividad
7/25/2019 State Charts
10/26
15:43 10 de 26
Concurrencia
Las dos sub-mquinas son independientes Salvo la clusula en esperando en los triggers de abajo
Por eso, a la concurrencia comnmente se le dice ortogonalidad
7/25/2019 State Charts
11/26
15:43 11 de 26
Acciones Entry y Exit
7/25/2019 State Charts
12/26
15:43 12 de 26
Transiciones internas
Notar que son similares a transiciones que empiezan y terminanen el mismo estado, salvo que no se ejecutan las accionesentry y exit
A calentar normalmente se le dice actividad porque es untanto constante
7/25/2019 State Charts
13/26
15:43 13 de 26
Transiciones locales y externas
En las externas seejecutan la acciones
exit (porque sale) yentry (porquevuelve a entrar), en laslocales no
7/25/2019 State Charts
14/26
15:43 14 de 26
Pseudoestados Son lugares que parecen estados pero no lo son, porque elsistema no puede estar en ellos Sirven para simplificar el diagrama e incorporarle algunas funciones
Tipos:
Inicial (reset) Se indican con un crculo lleno negro
Condicin (ochoice u opcin) Se indican con un diamante, un circulo vaco o uno que contiene una C Lo usamos en la Diapositiva 6
Junturas
Se indican con un punto negro Sirven para juntar o bifurcar transiciones cuando tienen partes en comn
Historia Se indican con un crculo que contiene una H Si se entra en una transicin que termina en este pseudoestado, el prximo
estado pasa a ser el ltimo estado que tena la (sub) mquina en cuestin
Fork /Join Misma notacin y propsito que las transiciones de las redes de Petri Con un forkse abre una transicin para que pueda terminar en estados de
mquinas concurrentes. Join hace lo contrario.
Final Se indica con un crculo que contiene una T
7/25/2019 State Charts
15/26
15:43 15 de 26
Ejemplo
Tomado de B.P. Douglass,UML Statecharts,
7/25/2019 State Charts
16/26
15:43 16 de 26
Transiciones, con ms detalle Forma general del rtulo de una transicin:
Todos los campos son optativos Las acciones pueden ser salidas hacia el exterior, o eventos que
otra parte del modelo usa como trigger
Tipos de eventos: Seal
La recepcin de una seal (asincrnica) Es el tipo de evento ms comn
Tiempo Se cumpli cierto tiempo desde la llegada al estado Se escribe (ej.) after 200ms o tambin tm(200ms)
Llamada Disparado por otra parte del sistema sincrnicamente (o sea, esa
otra parte del sistema espera hasta que la llamada es atendida)
Cambio Cierta expresin condicional pasa a ser cierta Se indica con when seguido de la expresin
nombre_del_evento(parmetros) [condicin] /acciones
7/25/2019 State Charts
17/26
15:43 17 de 26
Transiciones, con ms detalle Forma general del rtulo de una transicin:
La condicin La transicin se dispara slo si esa expresin es verdadera Puede incluir (ej.) in(nombre_de_un_estado), para
condicionar la transicin a que una mquina concurrente conesta est en cierto estado
como vimos en varios de los ejemplos anteriores
Ejemplos evCaenPinos / GenerarRuido() evLlegBola / cantBolas++;print(Lleg) evCaenPinos(n)[n>=10] / MarcarChuza()
/ Inicializar() [cantidad % 10 == 0] after 10ms / InformarTimeout();AbrirPuerta() when cantidad % 10 == 0 / foo++;bar++ Puls_Empezar[in(Puerta_Cerrada)] / Arrancar
nombre_del_evento(parmetros) [condicin] /acciones
7/25/2019 State Charts
18/26
15:43 18 de 26
Preguntas
Actividad
7/25/2019 State Charts
19/26
15:4319 de 26
Statechart + requisitos de tiempo
real
B.P.Douglass; Capturing Real-Time
Requirements
Notas con requermientosde temporizacin y de
calidad de servicio (qualityof service o QoS)
7/25/2019 State Charts
20/26
15:4320 de 26
Dibujar el statechart de un dispenser de caf y leche: El dispenser puede estar desactivado (por ejemplo para ser llenado) o
activado, para lo cual se utiliza un pulsador ON/OFF. Estando activado, se sirve caf manteniendo presionando un pulsador
CAF y se detiene ese chorro soltando el pulsador. Lo mismo ocurre con
la leche y su pulsador LECHE. Hacer dos versiones del statechart: una en donde slo pueda servirse unade las bebidas a la vez, otra en donde las dos bebidas puedan servirsesimultneamente.
Dibujar el statechart de un calefactor con termostato:
El dispositivo cuenta con los siguientes pulsadores: ON/OFF,CALENTAR,ESPERAR,TERMOSTATO,TEMP+,TEMP-. ConON/OFF se enciende y apaga. Al ser encendido, entra en un estado
espera.
Cuando el usuario presiona el pulsador CALENTAR, el calefactor calienta. Cuando presiona TERMOSTATO, entra en un estado en donde calienta
slo si la temperatura del ambiente, medida mediante un sensor, es menorque un valor prefijado regulable con los pulsadores TEMP+ yTEMP-.
En el diagrama anterior, agregar otro modo de operacin que se activa alpresionar un pulsador SLEEP. En este nuevo modo, el calefactor calientadurante 10 minutos y vuelve al estado espera.
Actividades
7/25/2019 State Charts
21/26
15:4321 de 26
Cmo codificar un Statechart? Una posibilidad es crear un gran switch case,
donde cada estado corresponda a un case
7/25/2019 State Charts
22/26
15:4322 de 26
Cmo codificar un Statechart?
B.P. Douglass, State Machines and Statecharts,
7/25/2019 State Charts
23/26
15:4323 de 26
Cmo codificar un Statechart? El programa puede ser un ciclo infinito conteniendo
ese switch case Para implementar:
Concurrencia: varios switch case en secuencia Jerarquas: switch case anidados
El problema es que eso va a ocupar al 100% al procesador porms que no tenga nada real que hacer porque an no lleganestmulos
En ciencias de la computacin, esta condicin se llama busy wait Igualmente, para ciertas aplicaciones es una solucin aceptable
En otras, el consumo que esto conlleva no lo es
Si el procesador tiene otro cdigo de qu ocuparse
tambin, puede ir despus del switch case,dentro del ciclo infinito Esto modera el problema del busy wait, pero puede atentar
contra el cumplimiento de requerimientos de tiempo real
7/25/2019 State Charts
24/26
15:4324 de 26
Idea Poner al procesador en modo sleep despus del
switch case? Sleep es un modo de bajo consumo donde el microcontrolador
no procesa instrucciones pero s funcionan sus perifricos y escapaz de detectar interrupciones Los microcontroladores normalmente ofrecen varios de estos
modos, que se diferencian por las funciones que permanecenactivadas y el retardo en volver al modo de ejecucin normal
Si se puede, se hace que del modo sleep salga al detectar elestmulo que acta de triggeren la mquina de estados Si no se puede, consideremos ponerlo x tiempo (usando un timer),
siempre que no comprometa los requerimientos de tiempo real
7/25/2019 State Charts
25/26
15:4325 de 26
Maneras ms avanzadas de
codificarlo En lugar de case para cada estado (hardcodeado),
poner los datos del Statechart en un arrayy usar
una librera Tengan en cuenta que se pueden guardar punteros a funciones
que contengan las condiciones y las acciones Si el switch case quedaba intrincado, esto puede
simplificarlo
Adems, la librera puede proveer funciones avanzadas pararesolver el tema del busy wait
El libro de Samek presenta una librera as
Programar el Statechart bajo un RTOS
Usar una herramienta MDD Como IBM Rational Rhapsody o el Real-Time Workshop para
Simulink de Mathworks Funcionan con varios RTOS populares
7/25/2019 State Charts
26/26
Recommended