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_state
y 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_state
para 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_th
ydown_th
. Consulte Bind a Simulink Function to a State.Modifique el nombre de la función de Simulink de
Threshold_Calculation
acalc_threshold
introduciendo[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
throttle
al 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
throttle
a 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_TH
porque 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.