Main Content

Detectar errores de modelado en tiempo de edición

Cuando la comprobación en tiempo de edición está activada, el editor de Stateflow® detecta posibles errores y advertencias mientras trabaja en su gráfico. Si se solucionan estos problemas al principio del proceso de diseño, se pueden evitar las advertencias y los errores en tiempo de compilación o de ejecución.

El editor de Stateflow resalta los objetos que no pasan las comprobaciones en tiempo de edición en rojo (errores) o en naranja (advertencias). Cuando se selecciona un objeto que está resaltado y se hace clic en el indicador de error o advertencia, se muestra información sobre los detalles y las posibles soluciones.

Gestionar las comprobaciones en tiempo de edición

De forma predeterminada, las comprobaciones en tiempo de edición y el resaltado de errores de sintaxis están activados. Para desactivar las comprobaciones en tiempo de edición, en la ficha Debug, desactive la casilla Diagnostics > Edit-Time Errors & Warnings. Las comprobaciones en tiempo de edición también se pueden desactivar con edittime.setDisplayIssues (Simulink).

En esta tabla se enumeran las comprobaciones en tiempo de edición que tienen un parámetro de configuración de diagnóstico asociado en el panel Diagnostics > Stateflow del cuadro de diálogo Configuration Parameters.

Puede controlar el nivel de acción de diagnóstico de estas comprobaciones en tiempo de edición estableciendo el valor de su parámetro de configuración en error, warning o none. Cuando se modifica el ajuste de un parámetro de configuración, también cambia el nivel de diagnóstico de las correspondientes comprobaciones en tiempo de edición. Por ejemplo, si se define el parámetro de configuración Unreachable execution path como none, el editor de Stateflow no resalta las transiciones pendientes, los estados inaccesibles o el sombreado de transiciones.

Comprobaciones en tiempo de edición de estados y subgráficos

El subgráfico atómico contiene acciones de estado

  • Problema: No se admiten acciones de estado en los subgráficos atómicos.

  • Nivel de diagnóstico: Error.

  • Solución: Elimine las acciones de estado o muévalas a un subestado del subgráfico atómico.

    Atomic subchart that contains state actions.

Transición predeterminada ausente

  • Problema: En un gráfico o estado con descomposición exclusiva (OR) y al menos dos subestados o intersecciones, se requiere una transición predeterminada para indicar dónde se inicia la ejecución.

  • Nivel de diagnóstico: Error.

  • Solución: Especifique un estado inicial añadiendo una transición predeterminada. Para obtener más información, consulte Usar transiciones predeterminadas para especificar la actividad del subestado inicial.

    Chart with no default transition.

La función gráfica contiene un estado

  • Problema: Dado que las funciones gráficas se ejecutan completamente en una sola unidad de tiempo, no deben contener ningún estado.

  • Nivel de diagnóstico: Error.

  • Solución: Remplace los estados con intersecciones. Para obtener más información, consulte Reuse Logic Patterns by Defining Graphical Functions.

    Graphical function that contains a state.

Cruce no válido

  • Problema: Los estados e intersecciones no deben superponerse en el editor de Stateflow.

  • Nivel de diagnóstico: Error.

  • Solución: Evite los cruces separando los estados y las intersecciones.

    Invalid intersection between states.

Supervisión de la actividad de estados secundarios de estados paralelos

  • Problema: Los gráficos y estados con descomposición paralela (AND) no admiten la supervisión de la actividad de los estados secundarios porque los subestados paralelos están activos simultáneamente.

  • Nivel de diagnóstico: Advertencia.

  • Solución: Abra Property Inspector o Model Explorer. Desactive la casilla Create output for monitoring o seleccione Self activity en la lista desplegable. Para obtener más información, consulte Monitor State Activity Through Active State Data.

    Parallel substates in a state that monitors child state activity.

El estado contiene un error de sintaxis

  • Problema: Una acción de estado no sigue las reglas de sintaxis de Stateflow. El editor de Stateflow destaca los errores de sintaxis con una línea roja ondulada. Consulte también La transición contiene un error de sintaxis.

  • Nivel de diagnóstico: Error.

  • Solución: Corrija el error de sintaxis en la acción de estado. Para obtener más información, consulte Definir acciones en un estado.

    State that contains a syntax error.

    Nota

    En el gráfico principal, los subgráficos con errores de sintaxis se resaltan en rojo y un indicador de error destaca el problema de sintaxis. En el editor de subgráficos, el error de sintaxis aparece subrayado en rojo, pero no hay ningún indicador de problema.

Estado inaccesible

  • Problema: Un estado es inaccesible cuando ninguna ruta de ejecución válida conduce a él.

  • Nivel de diagnóstico: Depende del parámetro de configuración Unreachable execution path (Simulink).

  • Solución: Conecte el estado inaccesible con una transición desde un origen accesible.

    Chart that contains an unreachable state.

Comprobaciones en tiempo de edición de las transiciones

Transición dependiente

  • Problema: Cada transición debe tener un destino válido.

  • Nivel de diagnóstico: Depende del parámetro de configuración Unreachable execution path (Simulink).

  • Solución: Conecte la transición a un estado, intersección o puerto. Para obtener más información, consulte Transition Between Operating Modes.

    Chart that contains a dangling transition.

La ruta de transición predeterminada no termina en un estado

  • Problema: En gráficos o estados con descomposición exclusiva (OR) y al menos un subestado:

    • Cada rama de la ruta de transición predeterminada debe conducir a un subestado.

    • Debe haber una rama de la ruta de transición predeterminada que no esté protegida por una condición o activada por un evento.

  • Nivel de diagnóstico: Depende del parámetro de configuración No unconditional default transitions (Simulink).

  • Solución: Termine cada rama de la ruta de transición predeterminada en un subestado. Asegúrese de que una de las ramas de la ruta de transición predeterminada no esté protegida por una condición o activada por un evento.

    Chart without an unconditional default transition branch to a state.

Ruta de transición predeterminada no válida

  • Problema: Una ruta de transición predeterminada no debe salir del estado principal.

  • Nivel de diagnóstico: Error.

  • Solución: Cambie la ruta de transición predeterminada para que permanezca dentro del estado principal.

    Chart with an invalid default transition path.

La transición contiene un error de sintaxis

  • Problema: En una transición, una acción o condición no sigue las reglas de sintaxis de Stateflow. El editor de Stateflow destaca los errores de sintaxis con una línea roja ondulada. Consulte también El estado contiene un error de sintaxis.

  • Nivel de diagnóstico: Error.

  • Solución: Corrija el error de sintaxis en la acción o condición de transición. Para obtener más información, consulte Define Actions in a Transition.

    Transition that contains a syntax error.

La acción de transición precede a una acción de condición en esta ruta

  • Problema: Cuando una transición con una acción de transición va seguida de otra transición con una acción de condición, las acciones no se ejecutan en el orden de las transiciones. Los gráficos de Stateflow ejecutan acciones de condición cuando la condición asociada se evalúa como verdadera. Por el contrario, los gráficos ejecutan las acciones de transición solo cuando la ruta de transición se ejecuta por completo. Como consecuencia, un gráfico toma una ruta de transición y las acciones de condición ocurren antes que las de transición.

  • Nivel de diagnóstico: Depende del parámetro de configuración Transition action specified before condition action (Simulink).

  • Solución: Coloque la acción de transición después de la última acción de condición de la ruta.

    Transition path in which a transition action precedes a condition action.

La transición empieza o acaba en un estado paralelo

  • Problema: En los gráficos y estados con descomposición paralela (AND), todos los subestados afines están activos o inactivos al mismo tiempo.

  • Nivel de diagnóstico: Advertencia.

  • Solución: Elimine las transiciones o cambie la descomposición del estado principal a exclusiva (OR).

    Transitions that begin or end in a parallel states.

La transición se conecta a un cuadro

  • Problema: Las transiciones deben conectarse solo con estados e intersecciones.

  • Nivel de diagnóstico: Error.

  • Solución: Mueva o elimine las transiciones unidas al cuadro.

    Chart with a transition that connects to a box.

La transición cruza estados paralelos

  • Problema: Los gráficos independientes de MATLAB® no admiten transiciones que crucen el límite de un estado paralelo.

  • Nivel de diagnóstico: Error.

  • Solución: Elimine el cruce de transición hacia o desde estados paralelos.

    Standalone chart with a transition that crosses the boundary of a parallel state.

La transición entra o sale de la función gráfica

  • Problema: Las transiciones no deben entrar o salir de una función gráfica. Los diagramas de flujo de las funciones gráficas deben estar completamente contenidos dentro de la función.

  • Nivel de diagnóstico: Error.

  • Solución: Elimine la transición que entra o sale de la función gráfica.

    Chart containing transitions that enter and exit a graphical function.

La transición no está conectada al puerto de entrada/salida

  • Problema: La transición no está conectada al puerto de entrada o salida cerca de su origen o destino.

  • Nivel de diagnóstico: Advertencia.

  • Solución: Conecte la transición al puerto o mueva su origen o destino a una ubicación diferente.

    Entry port that is located near the destination point of a default transition.

La transición sale en bucle del estado principal natural

  • Problema: Si una transición sale del estado principal entre el origen y el destino, el gráfico ejecuta las acciones exit y entry en el estado principal antes de que el estado de destino se active.

  • Nivel de diagnóstico: Depende del parámetro de configuración Transition outside natural parent (Simulink).

  • Solución: Mueva la transición para que esté contenida en el estado principal.

    Transition between substates that goes outside the boundary of the parent state.

Sombreado de transición

  • Problema: Cuando una transición incondicional se ejecuta antes que otras transiciones que salen del mismo origen, impide que se ejecuten las otras transiciones.

  • Nivel de diagnóstico: Depende del parámetro de configuración Unreachable execution path (Simulink).

  • Solución: No cree más de una transición incondicional desde cada estado o intersección. Especifique explícitamente que la transición incondicional se ejecute después de cualquier transición con condiciones. Para obtener más información, consulte Transition Evaluation Order.

    Chart with an unconditional transition that shadows a conditional transition.

Ruta incondicional de salida del estado con acciones during o estados secundarios

  • Problema: Las transiciones incondicionales que conducen a la salida de un estado impiden la ejecución de las acciones during en el estado y las transiciones entre estados secundarios.

  • Nivel de diagnóstico: Depende del parámetro de configuración Transition outside natural parent (Simulink).

  • Solución: Añada una condición a la transición o elimine las acciones during y los estados secundarios del estado.

    Chart with one transition out of a state with during actions and another transition out of a state with child states.

Comprobaciones en tiempo de edición de las intersecciones

El ciclo contiene transiciones con acciones de transición

  • Problema: Los ciclos no deben contener transiciones con acciones de transición.

  • Nivel de diagnóstico: Error.

  • Solución: Elimine la acción de transición o elimine el ciclo borrando una transición.

    Flow chart with a transition action in a cycle.

Intersección histórica no válida

  • Problema: Una intersección histórica no es válida cuando:

    • La intersección histórica está contenida en el nivel de gráfico de la jerarquía.

    • La intersección histórica está contenida en un estado con descomposición paralela (AND).

    • La intersección histórica está contenida en una función gráfica.

    • Hay varias intersecciones históricas contenidas en el mismo estado.

    • La intersección histórica es el origen de una transición.

  • Nivel de diagnóstico: Error.

  • Solución: Elimine la intersección histórica del nivel de gráfico de la jerarquía, de un estado con descomposición paralela (AND) o de una función gráfica. Elimine todas las intersecciones históricas del estado excepto una. Mueva el origen de transición a una intersección conectiva o a un estado. Para obtener más información, consulte Reanudar la actividad de un subestado previo con intersecciones históricas.

    Chart that contains an invalid history junction.

La intersección no tiene una salida incondicional del ciclo

  • Problema: Una intersección debe tener una ruta de salida incondicional de un ciclo a un estado o intersección de terminación.

  • Nivel de diagnóstico: Error.

  • Solución: Cree una ruta incondicional desde la intersección hasta un estado o intersección de terminación.

    Junction with no unconditional escape from a cycle.

Retroceso inesperado

  • Problema: Se puede producir un retroceso inesperado de las estructuras de control cuando varias rutas de transición del mismo origen conducen a una intersección y esta no tiene una ruta incondicional a un estado o intersección de terminación.

  • Nivel de diagnóstico: Depende del parámetro de configuración Unexpected backtracking (Simulink).

  • Solución: Cree una ruta incondicional desde la intersección hasta un estado o intersección de terminación. Para obtener más información, consulte Backtrack in Flow Charts.

    Por ejemplo, la intersección resaltada en este gráfico no tiene una ruta incondicional al estado A. Si ConditionA y ConditionB son verdaderas y ConditionC es falsa, el gráfico retrocede hasta la primera intersección de la ruta varias veces. Como resultado, el gráfico ejecuta las tres acciones de condición.

    Chart with unexpected backtracking.

    Para evitar el retroceso, se combinan las condiciones y se crea una ruta incondicional desde la segunda intersección hasta el estado de destino. Después del cambio, el gráfico ejecuta una sola acción de condición.

    Chart with no unexpected backtracking.

Intersección inaccesible

  • Problema: Una intersección es inaccesible cuando ninguna ruta de ejecución válida conduce a ella.

  • Nivel de diagnóstico: Depende del parámetro de configuración Unreachable execution path (Simulink).

  • Solución: Conecte la intersección inaccesible con una transición desde un origen accesible.

    Chart that contains an unreachable junction.

Comprobaciones en tiempo de edición de las funciones

La función no se utiliza

  • Problema: Una función no se utiliza en un gráfico cuando no hay instrucciones que llamen a la función.

  • Nivel de diagnóstico: Advertencia.

  • Solución: Llame a la función desde una acción de estado o transición o desde otra función.

    Chart containing an unused function.

Uso no válido de palabras clave como argumentos de funciones

  • Problema: Una definición de función utiliza una palabra clave reservada como argumento.

  • Nivel de diagnóstico: Error.

  • Solución: Cambie el nombre del argumento de la función. Para ver una lista de palabras clave reservadas, consulte Directrices para nombrar objetos de Stateflow.

    Function that uses a reserved keyword as an argument.

Comprobaciones en tiempo de edición de los puertos de entrada y salida

Intersección de entrada o de salida en un nivel superior del gráfico

  • Problema: Las intersecciones de entrada y de salida solo se admiten en los estados exclusivos (OR) y en los subgráficos atómicos.

  • Nivel de diagnóstico: Error.

  • Solución: Mueva la intersección a un estado exclusivo (OR) o a un subgráfico atómico, o bien elimínela.

    Entry and exit junctions on the top level of a chart.

Las intersecciones de entrada deben tener una ruta incondicional a un estado

  • Problema: Una intersección de entrada debe tener una ruta de transición que no esté protegida por una condición o activada por un evento.

  • Nivel de diagnóstico: Error.

  • Solución: Añada una ruta incondicional desde la intersección de entrada hasta el estado.

    Entry junction that connects to a single conditional path to a state.

Las intersecciones de entrada deben tener transiciones salientes

  • Problema: Una intersección de entrada no conecta con una ruta de transición saliente

  • Nivel de diagnóstico: Error.

  • Solución: Una las transiciones a la intersección de entrada o elimine la intersección.

    Entry junction that does not connect to a transition path.

Los puertos de salida deben tener una ruta incondicional a un estado

  • Problema: Un puerto de salida debe tener una ruta de transición que no esté protegida por una condición o activada por un evento.

  • Nivel de diagnóstico: Error.

  • Solución: Añada una ruta incondicional desde el puerto de salida hasta el estado.

    Exit port that connects to a single conditional path to a state.

Los puertos de salida deben tener transiciones salientes

  • Problema: Un puerto de salida no se conecta a una ruta de transición saliente.

  • Nivel de diagnóstico: Error.

  • Solución: Una las transiciones al puerto de salida o elimine el puerto.

    Exit port that does not connect to a transition path.

Intersección de entrada o de salida no válida

  • Problema: Las intersecciones de entrada y de salida solo se admiten en los estados exclusivos (OR) y en los subgráficos atómicos.

  • Nivel de diagnóstico: Error.

  • Solución: Mueva la intersección a un estado exclusivo (OR) o a un subgráfico atómico, o bien elimínela.

    Entry and exit junctions in parallel (AND) states.

Intersección de entrada o de salida ausente

  • Problema: Un puerto de entrada o de salida debe tener una intersección de entrada o de salida correspondiente.

  • Nivel de diagnóstico: Error.

  • Solución: Elimine el puerto o cree una intersección correspondiente con la misma etiqueta.

    Entry and exit ports that do not have a matching junction.

Varias intersecciones de entrada o de salida con la misma etiqueta

  • Problema: Las intersecciones de entrada y de salida del mismo estado principal deben tener etiquetas únicas.

  • Nivel de diagnóstico: Error.

  • Solución: Elimine una de las intersecciones o cambie una de las etiquetas.

    Two entry junctions that have the same label in1.

La ruta desde la intersección de entrada contiene una intersección terminal

  • Problema: Todas las rutas desde una intersección de entrada deben llevar a un estado.

  • Nivel de diagnóstico: Error.

  • Solución: Remplace la intersección terminal por un estado.

    Entry junction that connects to a terminal junction.

La ruta desde el puerto de salida contiene una intersección terminal

  • Problema: Todas las rutas desde un puerto de salida deben llevar a un estado.

  • Nivel de diagnóstico: Error.

  • Solución: Remplace la intersección terminal por un estado.

    Exit port that connects to a terminal junction.

Ruta de transición desde una intersección de entrada a una intersección histórica

  • Problema: Las rutas de transición desde las intersecciones de entrada no deben conectar con las intersecciones históricas.

  • Nivel de diagnóstico: Error.

  • Solución: Elimine la ruta desde la intersección de entrada hasta la intersección histórica.

    Entry junction that connects to a history junction.

Ruta de transición desde una transición interior hasta una intersección de salida

  • Problema: Las rutas de transición interiores no deben conectar con una intersección de salida.

  • Nivel de diagnóstico: Error.

  • Solución: Elimine la ruta desde la transición interior hasta la intersección de salida.

    State that contains an inner transition to an exit port.

La ruta de transición desde la intersección de entrada o hacia la intersección de salida debe estar contenida en el estado principal

  • Problema: Las rutas de transición que empiezan en las intersecciones de entrada o que terminan en las intersecciones de salida deben estar contenidas en el estado principal.

  • Nivel de diagnóstico: Error.

  • Solución: Modifique la ruta de transición para que esté contenida en el estado principal.

    Transition path that exits and re-enters a state before connecting to an exit junction.

Intersección o puerto inaccesibles

  • Problema: Un puerto o una intersección son inaccesibles cuando ninguna ruta de ejecución válida conduce a ellos.

  • Nivel de diagnóstico: Depende del parámetro de configuración Unreachable execution path (Simulink).

  • Solución: Conecte el puerto de entrada o la intersección de salida inaccesibles con una transición desde un origen accesible.

    Chart that contains an unreachable entry junction and port.

Temas relacionados