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.

Evitar una recursión no deseada en un gráfico

La recursión puede ser útil para controlar transiciones de subestado entre estados paralelos en el mismo nivel de la jerarquía del gráfico. Por ejemplo, puede enviar la transmisión de un evento dirigida desde un estado paralelo a un estado paralelo afín para especificar una transición de subestado. Este tipo de comportamiento recurrente es conveniente y eficiente. Para obtener más información, consulte Broadcast Local Events to Synchronize Parallel States.

No obstante, la recursión no deseada también puede producirse durante la ejecución de un gráfico. Para evitar una recursión no deseada, no utilice llamadas a función recurrentes o transmisiones de eventos locales no dirigidas.

Llamadas a función recurrentes

Supongamos que tiene funciones denominadas f, g y h en un gráfico. Estas funciones pueden ser cualquier combinación de funciones gráficas, funciones de tablas de verdad, funciones de MATLAB® o funciones de Simulink®.

Para evitar un comportamiento recurrente, evite que:

  • f llame a g, que esta llame a h y que esta llame a f.

  • f, g o h se llamen a sí mismas.

Transmisiones de eventos locales no dirigidas

La transmisión de un evento no dirigida envía un evento local a todos los estados en los que es visible. El formato de la transmisión de un evento no dirigida es

send(event_name)
donde event_name es un evento local.

Para evitar un comportamiento recurrente, reemplace las transmisiones de evento no dirigidas por transmisiones de evento dirigidas usando la sintaxis

send(event_name,state_name)
donde event_name es un evento local del gráfico y state_name es un estado de destino.

  • Si la transmisión del evento local se produce en un estado de acción, asegúrese de que el estado de destino no es un precedente del estado de origen en la jerarquía del gráfico.

  • Si la transmisión del evento local se produce en una transición, asegúrese de que:

    • El estado de destino no es un precedente de la transición en la jerarquía del gráfico.

    • La transición no está conectada al estado de destino.

Para obtener más información, consulte Broadcast Local Events to Synchronize Parallel States.

Durante la simulación, los gráficos de Stateflow® pueden detectar transmisiones de eventos locales no dirigidas. Para controlar el grado de acción de diagnóstico, abra el cuadro de diálogo Configuration Parameters y, en el panel Diagnostics > Stateflow, establezca el parámetro Undirected event broadcasts en none, warning o error. El ajuste predeterminado es warning. Para obtener más información, consulte Undirected event broadcasts (Simulink).

Consulte también

Temas