Diseñar gráficos con funciones de Simulink
En este tutorial, utilice una función de Simulink® en un gráfico de Stateflow® para mejorar el diseño de un modelo que contiene un subsistema de llamada a función. Puede reemplazar un subsistema de llamada a función por una función de Simulink en un gráfico cuando:
El subsistema realiza cálculos requeridos por el gráfico.
Otros bloques del modelo no necesitan acceder a las salidas del subsistema.
Para obtener más información, consulte Reutilizar las funciones de Simulink en gráficos de Stateflow.
Nota
Para omitir los pasos de conversión, puede abrir el modelo modificado introduciendo:
openExample("old_sf_car_with_sl_function")Abrir el modelo
Abra el modelo old_sf_car. Este modelo contiene un subsistema de llamada a función denominado Threshold Calculation y un gráfico de Stateflow denominado shift_logic.

Cuando ejecuta este modelo, el gráfico transmite el evento de salida CALC_TH para activar el subsistema de llamada a función. El subsistema interpola dos valores del gráfico shift_logic. Las salidas del subsistema (up_th y down_th) vuelven al gráfico como entradas.
Después de la simulación, el bloque Scope engine RPM muestra estos resultados.

Añadir una función de Simulink al gráfico
Siga estos pasos para añadir una función de Simulink al gráfico shift_logic.
En el modelo de Simulink, haga clic con el botón secundario en el bloque Threshold Calculation en la esquina inferior izquierda y seleccione Cut en el menú contextual.

Abra el gráfico shift_logic.
En el gráfico, haga clic con el botón secundario debajo de
selection_statey seleccione Paste en el menú contextual.Expanda la función de Simulink nueva para que la firma quepa dentro del cuadro de funciones.

Sugerencia
Para cambiar el tamaño de fuente de una función, haga clic con el botón secundario en el cuadro de funciones y seleccione un tamaño nuevo en el menú Font Size.
Expanda el borde de
selection_statepara incluir la función nueva.
Nota
La función reside en este estado en lugar de en el nivel del gráfico porque ningún otro estado del gráfico requiere las salidas de la función
up_thydown_th. Consulte Bind a Simulink Function to a State.Modifique el nombre de la función de Simulink de
Threshold_Calculationacalc_thresholdintroduciendo[down_th, up_th] = calc_threshold(gear, throttle)en el cuadro de funciones.
Cambiar el ámbito de datos de gráfico
En Model Explorer, cambie el ámbito de los datos en el nivel de gráfico up_th y down_th a Local porque los cálculos para esos datos ahora tienen lugar dentro del gráfico.
Actualizar una acción de estado en el gráfico
En el editor de Stateflow, cambie la acción during en selection_state para llamar a la función de Simulink calc_threshold.
during: [down_th, up_th] = calc_threshold(gear, throttle);

Añadir datos al gráfico
Dado que la función calc_threshold toma throttle como una entrada, debe definir esos datos como una entrada de gráfico. (Para obtener más información, consulte Añadir datos de Stateflow).
Añada datos de entrada
throttleal gráfico con una propiedad Port de 1.Usar el puerto 1 evita que las líneas de conexión se superpongan en el modelo de Simulink.
En el modelo de Simulink, añada una línea de conexión para
throttlea una entrada para el bloque Engine y a una entrada para el gráfico shift_logic.
Eliminar elementos no utilizados en el modelo
En Model Explorer, elimine el evento de salida de llamada a función
CALC_THporque el bloque Threshold Calculation ya no existe.Elimine cualquier línea de conexión discontinua del modelo.
Ejecutar el modelo nuevo
El nuevo modelo tiene un aspecto parecido a este:

Si simula el modelo nuevo, los resultados coinciden con los del diseño original.