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.
Definir una función gráfica
En la paleta de objetos, haga clic en el icono de función gráfica
.
En el área de diseño del gráfico, haga clic en la ubicación de la nueva función gráfica.
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:
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.[return_val1,return_val2,...] = function_name(arg1,arg2,...)
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
ey2
como entradas y como salidas:Si exporta esta función a código C, el código generado trata[y1,y2,y3] = f(y1,u,y2)
y1
ey2
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 ámbitoOutput
.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.
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.
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 ámbitoTemporary
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.
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.
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:
En la pestaña Modeling, en Design Data, seleccione Property Inspector.
En el editor de Stateflow, seleccione la función gráfica.
En Property Inspector, edite las propiedades de la transición.
Para utilizar Model Explorer:
En la pestaña Modeling, en Design Data, seleccione Model Explorer.
En el panel Model Hierarchy, seleccione la función gráfica.
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:
En el editor de Stateflow, haga clic con el botón secundario en la función gráfica.
Seleccione Properties.
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
- Model Explorer (Simulink)