Contenido principal

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Reutilizar patrones lógicos definiendo funciones gráficas

Una función gráfica en un gráfico de Stateflow® es un elemento gráfico que ayuda a reutilizar bucles lógicos e iterativos de estructuras de control. Puede crear funciones gráficas con diagramas de flujo que utilizan intersecciones y transiciones conectivas. Puede llamar a una función gráfica en las acciones de estados y transiciones. Con las funciones gráficas, puede hacer lo siguiente:

  • Crear una lógica modular reutilizable que se puede llamar desde cualquier lugar del gráfico.

  • Realizar un seguimiento del comportamiento de simulación visualmente durante la animación del gráfico.

Una función gráfica puede residir en cualquier parte de un gráfico, estado o subgráfico. La ubicación de la función determina el conjunto de estados y transiciones que puede llamar a la función.

  • Si desea llamar a la función dentro de un estado o subgráfico y sus subestados, coloque la función gráfica en ese estado o subgráfico. Esa función anula otras funciones del mismo nombre en los elementos principales y precedentes de ese estado o subgráfico.

  • Si desea llamar a la función en cualquier lugar de un gráfico, coloque la función gráfica en el nivel del gráfico.

  • Si desea llamar a la función desde cualquier gráfico del modelo, coloque la función gráfica en el nivel del gráfico y habilite la exportación de funciones en el nivel de gráfico. Para obtener más información, consulte Export Stateflow Functions for Reuse.

Nota

Una función gráfica puede acceder a los datos de gráficos y estados que quedan por encima en la jerarquía de Stateflow.

Por ejemplo, esta función gráfica se denomina f1. Toma tres argumentos (a, b y c) y devuelve tres valores de salida (x, y y z). La función contiene un diagrama de flujo que calcula tres productos diferentes de los argumentos.

A graphical function that computes three different products.

Definir una función gráfica

  1. En la paleta de objetos, haga clic en el icono de función gráfica .

  2. En el área de diseño del gráfico, haga clic en la ubicación de la nueva función gráfica.

  3. Introduzca la etiqueta de firma de la función.

    La etiqueta de firma de la función especifica un nombre para la función y los nombres formales de sus argumentos y valores devueltos. Una etiqueta de firma tiene la siguiente sintaxis:

    [return_val1,return_val2,...] = function_name(arg1,arg2,...)
    Puede especificar varios valores devueltos y varios argumentos de entrada. Cada valor devuelto y cada argumento de entrada puede ser un escalar, un vector o una matriz de valores. Para funciones con solo un valor devuelto, omita los corchetes en la etiqueta de firma.

    Puede utilizar el mismo nombre de variable tanto para argumentos como para valores devueltos. Cuando utiliza la misma variable para una entrada y una salida, se crean datos en el lugar. Por ejemplo, una función con esta etiqueta de firma utiliza las variables y1 e y2 como entradas y como salidas:

    [y1,y2,y3] = f(y1,u,y2)
    Si exporta esta función a código C, el código generado trata y1 e y2 como argumentos en el lugar que se pasan por referencia. El uso de datos en el lugar reduce el número de veces que el código generado copia los datos intermedios, lo que da lugar a un código más eficiente.

    En el panel Symbols y Model Explorer, los argumentos y los valores devueltos de la firma de función aparecen como elementos de datos que pertenecen a la función. Los argumentos tienen el ámbito Input. Los valores devueltos tienen el ámbito Output.

  4. Especifique las propiedades de datos para cada argumento y valor devuelto, como se describe en Establecer propiedades de datos. Cuando un argumento y un valor devuelto tienen el mismo nombre, solo se pueden editar las propiedades del argumento. Las propiedades del valor devuelto son de solo lectura.

  5. Para programar la función, construya un diagrama de flujo dentro del cuadro de funciones, como se describe en Crear diagramas de flujo de Stateflow.

    Dado que una función gráfica debe ejecutarse completamente cuando se la llama, no puede utilizar estados. Las intersecciones y transiciones conectivas son los únicos elementos gráficos que puede utilizar en una función gráfica.

    Nota

    En una función gráfica, no transmita eventos que puedan provocar que el estado activo cambie. En una función gráfica, el comportamiento de la transmisión de un evento que provoca una salida del estado activo es impredecible.

  6. Cree cualquier elemento de datos adicional requerido por la función. Para obtener más información, consulte Añadir datos en Model Explorer.

    La función puede acceder a sus propios datos o a datos que pertenecen a estados principales o al gráfico. Los elementos de datos de la función pueden tener uno de estos ámbitos:

    • Constant: los datos constantes mantienen su valor inicial en todas las llamadas a función.

    • Parameter: los datos de parámetros mantienen su valor inicial en todas las llamadas a función.

    • Local: los datos locales persisten en todas las llamadas a función durante toda la simulación. Válido solo en gráficos que utilizan C como lenguaje de acción.

    • Temporary: los datos temporales se inicializan al comienzo de cada llamada a función. Válido solo en gráficos que utilizan C como lenguaje de acción.

    En gráficos que utilizan C como lenguaje de acción, defina los datos locales cuando desee que los valores de datos persistan en las llamadas a función durante toda la simulación. Defina datos temporales cuando desee inicializar los valores de datos al comienzo de cada llamada a función. Por ejemplo, puede definir un contador con ámbito Local si desea realizar un seguimiento del número de veces que llama a la función. En cambio, puede designar un contador de bucle para tener el ámbito Temporary si no necesita que el valor del contador persista cuando se complete la función.

    En los gráficos que utilizan MATLAB® como lenguaje de acción, no es necesario definir datos de función locales o temporales en funciones gráficas. En su lugar, puede utilizar variables no definidas para almacenar valores a los que solo se puede acceder durante el resto de la llamada a función. Para guardar valores que persisten en todas las llamadas a función, utilice datos locales en el nivel del gráfico.

    Sugerencia

    Puede inicializar los datos locales y temporales en la función desde el área de trabajo de MATLAB. Para obtener más información, consulte Inicializar datos desde el área de trabajo base de MATLAB.

Llamar a funciones gráficas en estados y transiciones

Puede llamar a funciones gráficas desde las acciones de cualquier estado o transición o desde otras funciones. Si exporta una función gráfica, puede llamarla desde cualquier gráfico del modelo. Para obtener más información sobre cómo exportar funciones, consulte Export Stateflow Functions for Reuse.

Para llamar a una función gráfica, utilice la firma de función e incluya un valor de argumento para cada argumento formal en la firma de función.

[return_val1,return_val2,...] = function_name(arg1,arg2,...)

Si los tipos de datos del argumento real y formal difieren, la función convierte el argumento real al tipo del argumento formal.

Gestionar funciones gráficas de gran tamaño

Puede optar por hacer que la función gráfica sea de gran tamaño según lo desee. Si el tamaño de la función es demasiado grande, puede ocultar su contenido haciendo clic con el botón secundario dentro del cuadro de funciones y seleccionando Group & Subchart > Subchart en el menú contextual.

A subcharted graphical function with its content preview enabled.

Para hacer el cuadro de funciones gráficas opaco, haga clic con el botón secundario en la función y desactive la propiedad Content Preview en el menú contextual.

A subcharted graphical function with its content preview disabled.

Para dedicar toda la ventana del gráfico a programar la función, acceda al diagrama de flujo en la función gráfica con subgráfico haciendo doble clic en el cuadro de funciones. Para obtener más información, consulte Encapsulate Modal Logic by Using Subcharts.

Especificar propiedades de funciones gráficas

Las propiedades que se enumeran a continuación especifican cómo interactúa una función gráfica con los demás componentes de un gráfico de Stateflow. Puede modificar estas propiedades en Property Inspector, Model Explorer o el cuadro de diálogo de las propiedades de la función.

Para utilizar Property Inspector:

  1. En la pestaña Modeling, en Design Data, seleccione Property Inspector.

  2. En el editor de Stateflow, seleccione la función gráfica.

  3. En Property Inspector, edite las propiedades de la transición.

Para utilizar Model Explorer:

  1. En la pestaña Modeling, en Design Data, seleccione Model Explorer.

  2. En el panel Model Hierarchy, seleccione la función gráfica.

  3. En el panel Dialog, edite las propiedades de la función gráfica.

Para utilizar el cuadro de diálogo de propiedades de la función:

  1. En el editor de Stateflow, haga clic con el botón secundario en la función gráfica.

  2. Seleccione Properties.

  3. En el cuadro de diálogo de propiedades, edite las propiedades de la función gráfica.

También puede modificar estas propiedades de forma programática con objetos Stateflow.Function. Para obtener más información sobre la interfaz programática de Stateflow, consulte Visión general de la API de Stateflow.

Nombre

Nombre de función. Haga clic en el enlace del nombre de la función para colocar la función en primer plano de su gráfico nativo.

Opción de insertar una función en línea

Controla la inserción en línea de la función en el código generado:

  • Auto: determina si se inserta la función en línea basándose en un cálculo interno.

  • Inline: inserta la función en línea si no la exporta a otros gráficos y no forma parte de una recursión. (Una recursión existe si la función se llama a sí misma directa o indirectamente a través de otra llamada a función).

  • Function: no inserta la función en línea.

Esta propiedad no está disponible en Property Inspector.

Etiqueta

Etiqueta de firma para la función. La etiqueta de firma de la función especifica un nombre para la función y los nombres formales de sus argumentos y valores devueltos. Esta propiedad no está disponible en Property Inspector.

Descripción

Descripción de la función gráfica.

Enlace del documento

Enlace a la documentación online de la función gráfica. Puede introducir una dirección URL o un comando de MATLAB que muestre la documentación como un archivo HTML o como texto en la ventana de comandos de MATLAB. Cuando hace clic en el hipervínculo Document link, Stateflow evalúa el enlace y muestra la documentación.

Consulte también

Objetos

Herramientas

Temas