State Charts

Embed Size (px)

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