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.
Problema de comprobación en tiempo de edición | Parámetro de configuración de diagnóstico |
---|---|
Transición dependiente | Unreachable execution path (Simulink) |
La ruta de transición predeterminada no termina en un estado | No unconditional default transitions (Simulink) |
La acción de transición precede a una acción de condición en esta ruta | Transition action specified before condition action (Simulink) |
La transición sale en bucle del estado principal natural | Transition outside natural parent (Simulink) |
Sombreado de transición | Unreachable execution path (Simulink) |
Ruta incondicional de salida del estado con acciones during o estados secundarios | Transition outside natural parent (Simulink) |
Retroceso inesperado | Unexpected backtracking (Simulink) |
Intersección inaccesible | Unreachable execution path (Simulink) |
Intersección o puerto inaccesibles | Unreachable execution path (Simulink) |
Estado inaccesible | Unreachable execution path (Simulink) |
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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
yentry
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.
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.
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.
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.
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.
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.
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
. SiConditionA
yConditionB
son verdaderas yConditionC
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.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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.