Contenido principal

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.

  1. 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.

    Simulink model after Threshold Calculation subsystem is removed.

  2. Abra el gráfico shift_logic.

  3. En el gráfico, haga clic con el botón secundario debajo de selection_state y seleccione Paste en el menú contextual.

  4. Expanda la función de Simulink nueva para que la firma quepa dentro del cuadro de funciones.

    Stateflow chart after Simulink function is added.

    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.

  5. Expanda el borde de selection_state para incluir la función nueva.

    Stateflow chart with a Simulink function inside a state.

    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 y down_th. Consulte Bind a Simulink Function to a State.

  6. Modifique el nombre de la función de Simulink de Threshold_Calculation a calc_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);

Stateflow chart with modified during action in state selection_state.

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).

  1. 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.

  2. 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

  1. En Model Explorer, elimine el evento de salida de llamada a función CALC_TH porque el bloque Threshold Calculation ya no existe.

  2. Elimine cualquier línea de conexión discontinua del modelo.

Ejecutar el modelo nuevo

El nuevo modelo tiene un aspecto parecido a este:

Modified Simulink model without function-call subsystems.

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

Consulte también

Temas