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 |
---|---|
Dangling transition | Unreachable execution path (Simulink) |
Default transition path does not terminate in a state | No unconditional default transitions (Simulink) |
Transition action precedes a condition action along this path | Transition action specified before condition action (Simulink) |
Transition loops outside natural parent | Transition outside natural parent (Simulink) |
Transition shadowing | Unreachable execution path (Simulink) |
Unconditional path out of state with during actions or child states | Transition outside natural parent (Simulink) |
Unexpected backtracking | Unexpected backtracking (Simulink) |
Unreachable junction | Unreachable execution path (Simulink) |
Unreachable port or junction | Unreachable execution path (Simulink) |
Unreachable state | 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
Atomic subchart contains state actions
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.
Default transition is missing
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.
Graphical function contains a state
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.
Invalid intersection
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.
Monitoring leaf or child state activity of parallel states
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.
State contains a syntax error
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
Transition Contains a Syntax Error
.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.
Unreachable state
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
Dangling transition
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 Transición entre modos de funcionamiento.
Default transition path does not terminate in a state
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.
Invalid default transition path
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.
Transition contains a syntax error
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
State Contains a Syntax Error
.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 Definir acciones en una transición.
Transition action precedes a condition action along this path
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 begins or ends in a parallel state
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).
Transition connects to a box
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.
Transition crosses parallel states
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.
Transition enters or exits graphical function
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.
Transition is not connected to entry/exit port
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.
Transition loops outside natural parent
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 convierte en activo .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 shadowing
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.
Unconditional path out of state with during actions or child states
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
Cycle contains transitions with transition actions
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.
Invalid history junction
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.
Junction has no unconditional escape from cycle
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.
Transition paths from same source have different parents
Problema: las rutas de transición comienzan en el mismo estado de origen, pero tienen elementos principales diferentes.
Nivel de diagnóstico: Error.
Solución: modificar las rutas de transición para que tengan el mismo elemento principal.
Unexpected backtracking
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.
Unreachable junction
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
Function is unused
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.
Invalid use of keywords as function arguments
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
Entry junctions must have an unconditional path to a state
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 junctions must have outgoing transitions
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.
Exit ports must have an unconditional path to a state
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 ports must have outgoing transitions
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.
Invalid entry or exit junction
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.
Missing entry or exit junction
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.
Multiple entry or exit junctions with same label
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.
Path from entry junction contains a terminal junction
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.
Path from exit port contains a terminal junction
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.
Transition path from an entry junction to a history junction
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.
Transition path from an inner transition to an exit junction
Problema: Las rutas de transición internas no deben conectar con una intersección de salida.
Nivel de diagnóstico: Error.
Solución: Elimine la ruta desde la transición interna hasta la intersección de salida.
Transition path from entry junction or to exit junction must be contained in parent
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.
Unreachable port or junction
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.