Monografias.com > Computación > Software
Descargar Imprimir Comentar Ver trabajos relacionados

Toolbox Stateflow




Enviado por hernando299



    1. Stateflow
    2. Elementos
      gráficos
    3. Estados
    4. Uniones
    5. Eventos
    6. Ejemplo
    7. Observaciones

    Stateflow

    Stateflow es una librera (toolbox) de Matlab que permite
    modelar sistemas de
    eventos
    discretos dentro de Simulink, utilizando cartas de
    estado
    (statecharts). Las cartas de estado fueron introducidas por David
    Harel (Harel, 1987) y son una generalización de las
    maquinas de estados.

    La librera de Stateflow posee un único elemento o
    bloque, denominado Chart, que sirve para representar un sistema de
    eventos discretos. El bloque Chart se puede conectar con otros
    bloques de Simulink, de tiempo
    continuo o discreto, para formar modelos de
    sistemas híbridos que pueden ser muy útiles en la
    investigación del comportamiento
    de tales sistemas mediante simulación.

    Una carta de estados
    (statechart) es un grafico formado por elementos gráficos sobre los que van escritos ciertos
    elementos de texto escritos
    en un lenguaje
    especial. Entre ellos, hay unos elementos de texto especiales que
    son los datos y los
    eventos. La carta es como
    la hoja de papel en la que se representan los elementos. Cada
    carta representa un sistema de eventos discretos y constituye un
    bloque de Simulink que puede conectarse con otras cartas o con
    otros bloques de Simulink.

    Elementos
    gráficos

    Los elementos gráficos de son

    • Estados
    • Transiciones
    • Uniones

    Mientras que los elementos de texto son

    • Datos
    • Eventos

    Estados

    Los estados tienen forma de rectángulo con los
    bordes redondeados y representan estados (a veces llamados modos
    o fases) del sistema de eventos discretos. No debemos confundir
    estos estados con los estados del clásico modelo de
    estado de un sistema de control. Los
    estados aquí considerados representan los modos o formas
    de evolución del sistema al reaccionar frente
    a los eventos.

    Junto a la esquina superior izquierda, cada
    rectángulo lleva un texto con un nombre que
    idéntica al estado. Tras el nombre del estado y el
    separador opcional /", pueden aparecer otros textos indicando
    las acciones que
    llevara a cabo el sistema cuando este en ese estado. La sintaxis
    de Stateflow permite especificar el instante en que se iniciara
    la acción
    y la duración de esta:

    • entry: la acción se inicia al entrar en
      este estado.
    • exit: la acción se inicia al salir de
      este estado.

    during: la acción se inicia al entrar en
    este estado y permanece activa durante el tiempo que dura
    el
    estado.

    on event e : La acción se inicia si,
    estando en este estado, se produce el evento e. Posibles
    acciones son cambiar el valore de una salida o efectuar una
    llamada a una función de
    Matlab.

    Un estado puede contener otros estados, o subestados,
    dentro de s. Entonces dicho estado se llama estado padre, o
    súper estado, y los subestados se llaman estados hijos.
    Hay dos posibles formas de descomposición de un estado
    (padre) en subestados (hijos). Un estado (padre) tiene
    descomposición AND si los estados hijos se activan
    simultáneamente al activarse el estado padre y entonces
    los estados hijos se marcan con línea
    discontinua.

    Un estado (padre) tiene descomposición OR
    (exclusiva) si únicamente puede estar activo uno de los
    estados hijos al activarse el estado padre y entonces los estados
    hijos se marcan Con línea continua.

    Transiciones

    Las transiciones tienen forma de echa y representan las
    transiciones o saltos entre estados, Asociados a eventos, que se
    producen en el sistema de eventos discretos. Cada
    transición representa un evento e del sistema y se dibuja
    como una echa que va desde el borde de Un estado S1 hasta el
    borde de otro estado S2. Sí el sistema esta en el estado
    S1 y sé Produce el evento e, entonces el sistema pasa al
    estado S2. El disparo de una transición Puede implicar la
    ejecución de una o más acciones.

    Una transición especial es la llamada
    transición por defecto (default-transition), que sirve
    para señalar el estado inicial del sistema es decir, el
    primer estado en el que entrara él Sistema al iniciar su
    evolución, y también el estado hijo inicial dentro
    de un estado padre.

    Se reconoce por su forma ya que en el extremo opuesto a
    la derecha lleva un pequeño círculo
    Negro.

    Cada transición puede tener un texto escrito
    junto a ella que indica el evento que ha de producirse para que
    se dispare la transición así como las acciones que
    entonces el sistema Emprenderá. Este texto se divide en
    tres partes, todas ellas opcionales:

    e (en donde e es el nombre de un evento): la
    transición se dispara al producirse el evento

    e en el sistema. Si no hay nombre de evento
    entonces la transición se disparara ante Cualquier evento
    del sistema.

    [C] (en donde c es una condición): la
    transición se dispara sí la condición c
    (expresión booleana) es verdadera y se produce el evento
    e. Si esta parte no existe, se asume que C es cierta. Si la parte
    e del texto no existe, se disparara, bajo la misma
    condición, Siempre y cuando se produzca un evento
    cualquiera en el sistema.

    Fag (en donde a es una acción): al
    producirse transición el sistema lleva a cabo la
    acción

    a. Si la transición no lleva ningún
    texto, entonces se disparara automáticamente, siempre y
    Cuando se produzca un evento cualquiera en el sistema.

    Uniones

    Las uniones tienen forma de pequeño circulo. Hay
    dos tipos de uniones: uniones conectivas (connective junctions) y
    uniones de historia (history
    junctions).

    Las uniones conectivas son puntos de bifurcación
    de la carta de estados y representan Puntos de decisión
    del sistema de eventos discretos. Permiten conectar una
    transición de Entrada con varias transiciones de salida.
    Su empleo puede a
    veces simplicar la carta de estados y hacer que el código
    generado sea más eficiente.

    Al entrar en una unión conectiva, el sistema, a
    través de una condición, selecciona una de las
    transiciones de salida para su evolución.

    Las uniones de tipo historia se utilizan en estados que
    han sido divididos por una

    descomposición OR. Si en el estado padre se pone
    el símbolo H entonces cada vez que se active el estado
    padre, el primer estado que se activara será el estado
    hijo que estuvo activo por última vez.

    • Entrada de Simulink

    CREACION DE UN MODELO CON STATEFLOW {SIMULINK
    }

    • Salida de Simulink
    • Local
    • Constante
    • Temporal
    • Workspace

    Los datos declarados como entrada o salida de Simulink
    generan automáticamente una entrada o una salida en el
    bloque Chart creado por Stateflow en Simulink. Los de los tipos
    local, constante y temporal pueden definirse para toda la carta o
    dentro de un estado individual. Los datos temporales son solo
    validos mientras el estado padre sé esta ejecutando y son
    reinicializados cada vez que este se activa. El tipo workspace es
    una construcción especial que permite utilizar
    el entorno de trabajo
    (workspace) de Matlab para compartir datos a través de
    toda la simulación. Los datos por defecto, se almacenan en
    memoria en
    formato double de C pero se puede cambiar a otros formatos. Cada
    dato tiene asociado un valor inicial
    y un intervalo de posibles valores.

    Eventos

    Estos elementos representan los eventos del sistema.
    Pueden ser de los tipos:

    • Entrada de Simulink
    • Salida de Simulink
    • Local

    Para los eventos que son entradas o salidas de Simulink,
    Stateflow crea automáticamente un único puerto de
    entrada{salida de eventos en el bloque Chart de Simulink, de
    forma que todos los eventos entran o salen, formando un vector de
    eventos, por el mismo puerto.

    Cada evento lleva asociado un índice que requiere
    la posición del evento en el vector. La forma de producir
    un evento en Simulink para que entre en el bloque Chart es a
    través de cambio brusco
    (ancho) de alguna señal. Al declarar el evento en
    Stateflow, se puede elegir entre:

    • Flanco de subida
    • Flanco de bajada
    • Flanco indiferente

    Creación de un modelo con Stateflow
    Simulink

    Tras arrancar el programa Matlab,
    creamos un modelo nuevo (new-model) de Simulink y colocamos en el
    mismo, con el ratón, el bloque Chart de
    Stateflow.

    Con el editor grafico se pueden crear cartas Stateflow,
    de modo interactivo, simplemente picando con el ratón en
    cada elemento y arrastrándolo a la ventana de dibujo.

    Una vez colocados varios estados, podemos crear
    transiciones picando con el ratón en un estado y
    arrastrándolo hasta otro estado. Se etiquetan los estados
    y las transiciones indicando las acciones que van a ocurrir
    durante la ejecución y bajo que condiciones se
    harán las transiciones. Finalmente se añade el
    historial, uniones, y estados en paralelo para detallar las
    operaciones
    del modelo.

    Se pueden utilizar sub-cartas (una carta dentro de otra
    carta) para dotar de jerarquía al diseño.
    Se permite crear transiciones entre objetos que residen en
    diferentes sub-cartas al mismo nivel o a diferentes niveles en la
    carta superior. Las sub-cartas permiten reducir una carta
    complicada a un conjunto de diagramas
    organizados jerárquicamente. Con ello se consigue que la
    carta sea mas fácil de entender y de mantener sin cambiar
    para nada su semántica.

    Los pasos a seguir para una aplicación completa
    son:

    • Crear la carta Stateflow
    • Utilizar el Explorer de Stateflow
    • Definir un interfase de bloques de
      Stateflow
    • Ejecutar la simulación
    • Generar el código

    La generación de código depende de la
    maquina en donde se vaya a implementar la aplicación y no
    se hace hasta la ultima fase del diseño. El código
    generado por defecto es ANSI C pero existen programas que a
    partir del modelo de Stateflow generan código para otros
    lenguajes. Entre ellos cabe citar el programa sf2vhld, que es un
    traductor de Stateflow a VHLD, y el programa sf2plc que genera
    código para programar algunos autómatas
    programables.

    Ejemplo

    Un sistema de seguridad muy
    antiguo del ferrocarril son las barreras que se colocan en los
    cruces entre la va férrea y las carreteras o caminos. Como
    todos sabemos, el funcionamiento de una de estas barreras como la
    de la figura 2 es muy sencillo: se abre y se cierra para evitar
    que los coches choquen con los trenes. El problema que se plantea
    es diseñar un sistema de control automático que sea
    capaz de cerrar la barrera cuando se aproxime un tren y de
    cerrarla cuando el tren haya pasado.

    Supondremos en principio que la va férrea es de
    un solo sentido.

    Estamos ante un sistema de eventos discretos ya que la
    presencia y la ausencia del tren son eventos que pueden
    aprovecharse para abrir y cerrar la barrera.

    Para medir desplazamientos consideraremos una recta, eje
    x, dispuesta a lo largo de la va y con origen 0 en el punto en
    que esta colocada la barrera, siendo el sentido positivo el de
    salida del tren.

    Los componentes necesarios para montar el sistema pueden
    ser: una barrera accionada por un motor-reductor,
    dos sensores de
    presencia s1 y s2, un sistema digital y relees y elementos
    auxiliares de conexión.

    Cada sensor de presencia se instalara junto al final de
    la va de tal forma que al pasar el tren emita una señal.
    Colocaremos el sensor s1 en un punto x1 en el sentido de llegada
    del tren y alejado lo suficiente del cruce como para que de
    tiempo a bajar la barrera. El sensor s2 será colocado en
    otro punto x2 en el sentido de partida del tren, en otro lugar
    próximo al cruce. De este modo podremos utilizar las
    señales
    de los sensores como eventos indicativos de la presencia del tren
    dentro del intervalo [x1; x2].

    La operación de la barrera debe ser: cuando el
    sensor s1 se activa, la barrera debe

    cerrarse; cuando el sensor s2 se activa la barrera puede
    abrirse.

    Para realizar el modelo del sistema de control de
    eventos discretos vamos a emplear las posibilidades de
    división en paralelo (paralelismo) y de trasmisión
    de eventos de que disponen las cartas de estado.

    Los interruptores Sw1 y Sw2 indicados en la figura 3 son
    elementos de tipo Manual

    Switch de Simulink y sirven de modelos de los sensores
    de llegada y de salida del tren.

    Una transición de 0 a 1 del interruptor Sw1
    (ancho de subida) indicara que llega el tren y una
    transición de 1 a 0 del interruptor Sw2 (ancho de bajada)
    indicara que el tren se ha ido.

    La carta de estados de Stateflow se compone de dos
    estados que evolucionan en paralelo, denominados Tren y Barrera,
    con dos hijos cada uno. El estado Barrera representa el estado de
    la barrera y tiene dos hijos denominados Abrir y Cerrar. El
    estado Tren representa el estado del tren y tiene dos hijos
    denominados Fuera y Dentro.

    La carta de estados tiene como entrada (multiplexada)
    las señales generadas por los interruptores Sw1 y Sw2. En
    el estado Tren, un ancho de subida en la entrada de Sw1 es el
    evento preciso para disparar la transición s1 mientras que
    un ancho de bajada la entrada de Sw2 lo es para la s2. A su vez
    las transiciones s1 y s2 transmiten eventos

    locales al estado Barrera para disparar las transiciones
    e1 y e2.

    Supondremos que inicialmente el tren esta lejos y la
    barrera esta abierta. Por tanto, los estados iniciales del
    sistema son Fuera y Abrir.

    La proximidad de un tren se simula accionando de 0 a 1
    el interruptor Sw1. Entonces el estado Tren cambiara de Fuera a
    Dentro y antes de que se termine la transición s1, el
    evento local e1 será transmitido. El evento e1 accionara
    entonces la transición dentro del estado Barrera de Abrir
    a Cerrar.

    Observaciones

    • Si la simulación va a ser larga se puede
      adoptar un tiempo de simulación "infinito" Poniendo el
      parámetro de simulación Stop time =
      inf.
    • Para que se inicie la simulación el sistema
      necesita un primer evento, como de

    arranque. Esto en ocasiones puede resultar molesto
    porque suele requerir que usuario produzca ese evento inicial de
    forma no muy ortodoxa. Esto puede evitarse marcando X en la
    casilla con el texto Execute (enter) Chart At Initialization"
    que aparece en el menú File ! Chart Properties de la
    ventana Chart de Stateflow.

    POR :

    RIGOBERTO HERNANDO OLARTE

    ING Mecatronico.

    BUCARAMANGA – SANTANDER –
    COLOMBIA

    Renberto Pérez Urea

    Juan Manuel Bayona

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter