Erkennen von Modellierungsfehlern bei der Bearbeitung
Ist die Prüfung während der Bearbeitung aktiviert, erkennt der Stateflow® Editor potenzielle Fehler und Warnungen, während Sie das Diagramm bearbeiten. Indem Sie diese Probleme früh im Entwicklungsprozess beheben, können Sie Warnungen und Fehler bei der Kompilierung oder Ausführung vermeiden.
Der Stateflow Editor hebt Objekte, die die Prüfungen während der Bearbeitung nicht bestehen, rot (Fehler) oder orange (Warnungen) hervor. Wenn Sie den Mauszeiger über ein hervorgehobenes Objekt bewegen und auf das Fehler- oder Warnungssymbol klicken, zeigt ein Tooltip Details und mögliche Abhilfemaßnahmen an.
Verwalten der Prüfungen während der Bearbeitung
Standardmäßig sind die Prüfungen während der Bearbeitung und die Hervorhebung von Syntaxfehlern aktiviert. Um die Prüfungen während der Bearbeitung zu deaktivieren, deaktivieren Sie auf der Registerkarte Debug das Kontrollkästchen Diagnostics > Edit-Time Errors & Warnings. Prüfungen während der Bearbeitung können zudem mithilfe von edittime.setDisplayIssues
(Simulink) deaktiviert werden.
In dieser Tabelle sind Prüfungen während der Bearbeitung aufgeführt, die über einen assoziierten Diagnose-Konfigurationsparameter im Fensterbereich Diagnostics > Stateflow im Konfigurationsparameter-Dialogfeld verfügen.
Problem bei Prüfung während der Bearbeitung | Diagnose-Konfigurationsparameter |
---|---|
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) |
Ungültiger Standard- oder Übergangspfad für die Eingabe | Invalid default or entry path (Simulink) |
Sie können den Grad der Diagnoseaktion für diese Prüfungen während der Bearbeitung steuern, indem Sie den Wert ihrer Konfigurationsparameter auf error
, warning
oder none
setzen. Wenn Sie die Einstellung eines Konfigurationsparameters ändern, wird der Diagnosegrad für die entsprechenden Prüfungen während der Bearbeitung ebenfalls geändert. Wenn Sie beispielsweise den Konfigurationsparameter Unreachable execution path auf none
setzen, hebt der Stateflow Editor keine nicht verbundenen Übergänge, verdeckten Übergänge (Shadowing) oder nicht erreichbare Zustände hervor.
Prüfungen von Zuständen und Unterdiagrammen während der Bearbeitung
Atomic subchart contains state actions
Problem: Zustandsaktionen werden von atomaren Unterdiagrammen nicht unterstützt.
Diagnosegrad: Fehler.
Lösung: Löschen Sie die Zustandsaktionen oder verschieben Sie sie zu einem Unterzustand des atomaren Unterdiagramms.
Default transition is missing
Problem: In einem Diagramm oder Zustand mit exklusiver (OR) Dekomposition und mindestens zwei Unterzuständen oder Verbindungen ist ein Standardübergang erforderlich, um anzugeben, wo die Ausführung beginnt.
Diagnosegrad: Fehler.
Lösung: Geben Sie einen Anfangszustand an, indem Sie einen Standardübergang hinzufügen. Weitere Informationen finden Sie unter Verwenden von Standardübergängen zur Angabe der anfänglichen Unterzustandsaktivität.
Graphical function contains a state
Problem: Da grafische Funktionen vollständig in einem einzigen Zeitschritt ausgeführt werden, dürfen sie keine Zustände enthalten.
Diagnosegrad: Fehler.
Lösung: Ersetzen Sie die Zustände durch Verbindungen. Weitere Informationen finden Sie unter Reuse Logic Patterns by Defining Graphical Functions.
Invalid intersection
Problem: Zustände und Verbindungen dürfen nicht überlappen
Diagnosegrad: Fehler.
Lösung: Vermeiden Sie Überschneidungen, indem Sie Zustände und Verbindungen trennen.
Monitoring leaf or child state activity of parallel states
Problem: Diagramme und Zustände mit paralleler (AND) Dekomposition unterstützen keine Überwachung der Leaf-Aktivität oder Aktivität untergeordneter Zustände, da parallele Unterzustände simultan aktiv sind.
Diagnosegrad: Warnung.
Lösung: Öffnen Sie Property Inspector oder den Model Explorer. Deaktivieren Sie das Kontrollkästchen Create output for monitoring oder wählen Sie aus der Drop-Down-Liste
Self activity
aus. Weitere Informationen finden Sie unter Monitor State Activity Through Active State Data.
State contains a syntax error
Problem: Eine Zustandsaktion befolgt die Stateflow-Syntaxregeln nicht. Der Stateflow Editor unterstreicht Syntaxfehler mit einer gewellten roten Linie. Siehe auch
Transition Contains a Syntax Error
.Diagnosegrad: Fehler.
Lösung: Korrigieren Sie den Syntaxfehler in der Zustandsaktion. Weitere Informationen finden Sie unter Definieren von Aktionen in einem Zustand.
Hinweis
Im übergeordneten Diagramm werden Unterdiagramme mit Syntaxfehlern rot hervorgehoben und ein Fehlersymbol weist auf den Syntaxfehler hin. Im Unterdiagramm-Editor ist der Syntaxfehler rot unterstrichen, aber es weist kein Symbol auf das Problem hin.
Unreachable state
Problem: Ein Zustand ist unerreichbar, wenn kein gültiger Ausführungspfad zu ihm hinführt.
Diagnosegrad: Hängt vom Konfigurationsparameter Unreachable execution path (Simulink) ab.
Lösung: Verbinden Sie den unerreichbaren Zustand mit einem Übergang von einer erreichbaren Quelle.
Prüfungen von Übergängen während der Bearbeitung
Dangling transition
Problem: Jeder Übergang muss ein gültiges Ziel haben.
Diagnosegrad: Hängt vom Konfigurationsparameter Unreachable execution path (Simulink) ab.
Lösung: Verbinden Sie den Übergang mit einem Zustand, einer Verbindung oder einem Port. Weitere Informationen finden Sie unter Übergang zwischen Betriebsmodi.
Default transition path does not terminate in a state
Problem: Bei Diagrammen oder Zuständen mit exklusiver (OR) Dekomposition und mindestens einem Unterzustand gilt Folgendes:
Jeder Zweig des Standard-Übergangspfads muss zu einem Unterzustand führen.
Es muss mindestens ein Zweig des Standard-Übergangspfads bestehen, der nicht von einer Bedingung geschützt ist oder von einem Ereignis ausgelöst wird.
Diagnosegrad: Hängt vom Konfigurationsparameter No unconditional default transitions (Simulink) ab.
Lösung: Schließen Sie jeden Zweig des Standard-Übergangspfads in einem Unterzustand ab. Stellen Sie sicher, dass ein Zweig des Standard-Übergangspfads nicht von einer Bedingung geschützt ist oder von einem Ereignis ausgelöst wird.
Ungültiger Standard- oder Übergangspfad für die Eingabe
Problem: Ein Standardübergangspfad oder ein Standard-Eingangsport darf den übergeordneten Zustand nicht verlassen oder an der Zustandsgrenze oder einer Verlaufsverbindung enden.
Diagnosegrad: Fehler.
Lösung: Ändern Sie den Standardübergangspfad, um im übergeordneten Zustand zu bleiben oder um nicht an der Zustandsgrenze oder einer Verlaufsverbindung zu enden.
Transition contains a syntax error
Problem: Bei einem Übergang befolgt eine Bedingung oder Aktion die Stateflow-Syntaxregeln nicht. Der Stateflow Editor unterstreicht Syntaxfehler mit einer gewellten roten Linie. Siehe auch
State Contains a Syntax Error
.Diagnosegrad: Fehler.
Lösung: Korrigieren Sie den Syntaxfehler in der Übergangsbedingung oder -Aktion. Weitere Informationen finden Sie unter Definieren von Aktionen bei einem Übergang.
Transition action precedes a condition action along this path
Problem: Wenn ein Übergang mit einer Bedingungsaktion auf einen Übergang mit einer Übergangsaktion folgt, werden die Aktionen nicht in Reihenfolge der Übergänge ausgeführt. Stateflow-Diagramme führen Bedingungsaktionen aus, wenn die assoziierte Bedingung wahr ist. Im Gegensatz hierzu führen Diagramme Übergangsaktionen nur aus, wenn der Übergangspfad vollständig ausgeführt wurde. Wenn ein Diagramm also einen Übergangspfad akzeptiert, werden die Bedingungsaktionen vor den Übergangsaktionen ausgeführt.
Diagnosegrad: Hängt vom Konfigurationsparameter Transition action specified before condition action (Simulink) ab.
Lösung: Platzieren Sie die Übergangsaktion nach der letzten Bedingungsaktion im Pfad.
Transition begins or ends in a parallel state
Problem: In Diagrammen und Zuständen mit paralleler (AND) Dekomposition sind alle benachbarten Unterzustände zugleich aktiv oder inaktiv.
Diagnosegrad: Warnung.
Lösung: Entfernen Sie die Übergänge oder ändern Sie die Dekomposition des übergeordneten Zustands in exklusiv (OR).
Transition connects to a box
Problem: Übergänge dürfen nur mit Zuständen und Verbindungen verbunden werden.
Diagnosegrad: Fehler.
Lösung: Verschieben oder löschen Sie die mit der Box verbundenen Übergänge.
Transition enters or exits graphical function
Problem: Übergänge dürfen nicht in grafische Funktionen eintreten oder diese verlassen. Flussdiagramme in grafischen Funktionen müssen sich vollständig innerhalb der Funktion befinden.
Diagnosegrad: Fehler.
Lösung: Löschen Sie den Übergang, der in die grafische Funktion eintritt oder diese verlässt.
Transition is not connected to entry/exit port
Problem: Der Übergang ist im Bereich der Quelle oder des Ziels nicht mit dem Eingangs- oder Ausgangsport verbunden.
Diagnosegrad: Warnung.
Lösung: Verbinden Sie den Übergang mit dem Port oder verschieben Sie die Übergangsquelle oder das Übergangsziel an einen anderen Ort.
Transition loops outside natural parent
Problem: Wenn ein Übergang zwischen Quelle und Ziel den übergeordneten Zustand verlässt, führt das Diagramm die
exit
- undentry
-Aktionen des übergeordneten Zustands aus, bevor der Zielzustand aktiv wird.Diagnosegrad: Hängt vom Konfigurationsparameter Transition outside natural parent (Simulink) ab.
Lösung: Verschieben Sie den Übergang, sodass dieser im übergeordneten Zustand enthalten ist.
Transition shadowing
Problem: Wenn ein unbeschränkter Übergang vor anderen ausgehenden Übergangen derselben Quelle ausgeführt wird, verhindert dies eine Ausführung der anderen Übergänge.
Diagnosegrad: Hängt vom Konfigurationsparameter Unreachable execution path (Simulink) ab.
Lösung: Erstellen Sie nicht mehr als einen unbeschränkten Übergang von jedem Zustand oder jeder Verbindung. Legen Sie explizit fest, dass der unbeschränkte Übergang nach Übergängen mit Bedingungen ausgeführt wird. Weitere Informationen finden Sie unter Transition Evaluation Order.
Unconditional path out of state with during actions or child states
Problem: Unbeschränkte Übergänge, die aus einem Zustand führen, verhindern eine Ausführung der
during
-Aktionen im Zustand und Übergänge zwischen untergeordneten Zuständen.Diagnosegrad: Hängt vom Konfigurationsparameter Transition outside natural parent (Simulink) ab.
Lösung: Fügen Sie dem Übergang eine Bedingung hinzu oder entfernen Sie „During“-Aktionen und untergeordnete Zustände aus dem Zustand.
Prüfungen von Verbindungen während der Bearbeitung
Cycle contains transitions with transition actions
Problem: Zyklen sollten keine Übergänge mit Übergangsaktionen umfassen.
Diagnosegrad: Fehler.
Lösung: Entfernen Sie die Übergangsaktion oder entfernen Sie den Zyklus, indem Sie einen Übergang löschen.
Invalid history junction
Problem: Eine Verlaufsverbindung ist ungültig, wenn:
Die Verlaufsverbindung auf Diagrammebene der Hierarchie enthalten ist.
Die Verlaufsverbindung in einem Zustand mit paralleler (AND) Dekomposition enthalten ist.
Die Verlaufsverbindung in einer grafischen Funktion enthalten ist.
Ein Zustand enthält mehrere Verlaufsverbindungen.
Die Verlaufsverbindung ist die Quelle eines Übergangs.
Diagnosegrad: Fehler.
Lösung: Entfernen Sie die Verlaufsverbindung aus der Diagrammebene der Hierarchie, einem Zustand mit paralleler (AND) Dekomposition oder einer grafischen Funktion. Entfernen Sie alle bis auf eine Verlaufsverbindung aus dem Zustand. Verschieben Sie die Übergangsquelle zu einer Verbindung oder einem Zustand. Weitere Informationen finden Sie unter Wiederaufnahme früherer Aktivitäten unterhalb der Zustandsebene durch Verwendung von Verlaufsknoten.
Invalid intersection
Problem: Verbindungen und Zustände dürfen nicht überlappen
Diagnosegrad: Fehler.
Lösung: Vermeiden Sie Überschneidungen, indem Sie Zustände und Verbindungen trennen.
Junction has no unconditional escape from cycle
Problem: Eine Verbindung muss über einen uneingeschränkten Pfad aus einem Zyklus zu einem Zustand oder einer terminalen Verbindung verfügen.
Diagnosegrad: Fehler.
Lösung: Erstellen Sie einen unbeschränkten Pfad von der Verbindung zu einem Zustand oder einer terminalen Verbindung.
Transition paths from same source have different parents
Problem: Der Übergang beginnt mit demselben Quellenzustand, weist jedoch verschiedene übergeordnete Elemente auf.
Diagnosegrad: Fehler.
Lösung: Modifizieren Sie die Übergangspfade so, dass sie dasselbe übergeordnete Element aufweisen.
Unexpected backtracking
Problem: Es kann zu einem unerwarteten Backtracking der Kontrollstrukturen kommen, wenn mehrere Übergangspfade aus derselben Quelle zu einer Verbindung führen und die Verbindung keinen unbeschränkten Pfad zu einem Zustand oder einer terminalen Verbindung aufweist.
Diagnosegrad: Hängt vom Konfigurationsparameter Unexpected backtracking (Simulink) ab.
Lösung: Erstellen Sie einen unbeschränkten Pfad von der Verbindung zu einem Zustand oder einer terminalen Verbindung. Weitere Informationen finden Sie unter Backtrack in Flow Charts.
Die hervorgehobene Verbindung auf diesem Diagramm verfügt beispielsweise nicht über einen unbeschränkten Pfad zum Zustand
A
. WennConditionA
undConditionB
wahr sind undConditionC
falsch ist, tritt im Diagramm mehrmals ein Backtracking zur ersten Verbindung im Pfad auf. Dementsprechend führt das Diagramm die drei Bedingungsaktionen aus.Um ein Backtracking zu vermeiden, kombinieren Sie die Bedingungen und erstellen Sie einen unbeschränkten Pfad von der zweiten Verbindung zum Zielzustand. Nach der Änderung führt das Diagramm nur eine Bedingungsaktion aus.
Unreachable junction
Problem: Eine Verbindung wird als unerreichbar betrachtet, wenn kein gültiger Ausführungspfad zu ihr führt.
Diagnosegrad: Hängt vom Konfigurationsparameter Unreachable execution path (Simulink) ab.
Lösung: Verbinden Sie die unerreichbare Verbindung mit einem Übergang aus einer erreichbaren Quelle.
Prüfungen von Funktionen während der Bearbeitung
Function is unused
Problem: Eine Funktion ist unbenutzt, wenn ein Diagramm über keine Ausdrücke verfügt, die diese Funktion aufrufen.
Diagnosegrad: Warnung.
Lösung: Rufen Sie die Funktion von einer Zustands- oder Übergangsaktion oder einer anderen Funktion auf.
Invalid use of keywords as function arguments
Problem: Eine Funktionsdefinition verwendet ein reserviertes Schlüsselwort als Argument.
Diagnosegrad: Fehler.
Lösung: Benennen Sie das Argument der Funktion um. Eine Liste der reservierten Schlüsselwörter finden Sie unter Anleitung zur Benennung von Stateflow-Objekten.
Prüfungen von Eingangs- und Ausgangsports während der Bearbeitung
Entry junctions must have an unconditional path to a state
Problem: Eine Eingangsverbindung muss mindestens einen Übergangspfad aufweisen, der nicht von einer Bedingung geschützt ist oder von einem Ereignis ausgelöst wird.
Diagnosegrad: Fehler.
Lösung: Fügen Sie einen unbeschränkten Pfad von der Eingangsverbindung zu einem Zustand hinzu.
Entry junctions must have outgoing transitions
Problem: Eine Eingangsverbindung hat keine Verbindung mit einem ausgehenden Übergangspfad.
Diagnosegrad: Fehler.
Lösung: Verbinden Sie Übergänge mit der Eingangsverbindung oder entfernen Sie die Verbindung.
Exit ports must have an unconditional path to a state
Problem: Ein Ausgangsport muss mindestens einen Übergangspfad aufweisen, der nicht von einer Bedingung geschützt ist oder von einem Ereignis ausgelöst wird.
Diagnosegrad: Fehler.
Lösung: Fügen Sie einen unbeschränkten Pfad vom Ausgangsport zu einem Zustand hinzu.
Exit ports must have outgoing transitions
Problem: Ein Ausgangsport hat keine Verbindung mit einem ausgehenden Übergangspfad.
Diagnosegrad: Fehler.
Lösung: Verbinden Sie Übergänge mit dem Ausgangsport oder entfernen Sie den Port.
Invalid entry or exit junction
Problem: Eingangs- und Ausgangsverbindungen werden nur in exklusiven (OR) Zuständen und atomaren Unterdiagrammen unterstützt.
Diagnosegrad: Fehler.
Lösung: Verschieben Sie die Verbindung zu einem exklusiven (OR) Zustand oder atomaren Unterdiagram oder löschen Sie die Verbindung.
Missing entry or exit junction
Problem: Ein Eingangs- oder Ausgangsport muss über eine entsprechende Eingangs- oder Ausgangsverbindung verfügen.
Diagnosegrad: Fehler.
Lösung: Löschen Sie den Port oder erstellen Sie eine entsprechende Verbindung mit derselben Kennzeichnung.
Multiple entry or exit junctions with same label
Problem: Eingangs- und Ausgangsverbindungen im selben übergeordneten Element müssen einzigartige Kennzeichnungen aufweisen.
Diagnosegrad: Fehler.
Lösung: Löschen Sie eine der Verbindungen oder ändern Sie eine Kennzeichnung.
Path from entry junction contains a terminal junction
Problem: Jeder Pfad von einer Eingangsverbindung muss zu einem Zustand führen.
Diagnosegrad: Fehler.
Lösung: Ersetzen Sie die terminale Verbindungsstelle durch einen Zustand.
Path from exit port contains a terminal junction
Problem: Jeder Pfad von einem Ausgangsport muss zu einem Zustand führen.
Diagnosegrad: Fehler.
Lösung: Ersetzen Sie die terminale Verbindungsstelle durch einen Zustand.
Transition path from an inner transition to an exit junction
Problem: Die inneren Übergangspfade dürfen nicht mit einer Ausgangsverbindung verbunden sein.
Diagnosegrad: Fehler.
Lösung: Entfernen Sie den Pfad vom inneren Übergang zur Ausgangsverbindung.
Transition path from entry junction or to exit junction must be contained in parent
Problem: Übergangspfade, die bei Eingangsverbindungen beginnen oder bei Ausgangsverbindungen enden, müssen im übergeordneten Zustand enthalten sein.
Diagnosegrad: Fehler.
Lösung: Modifizieren Sie den Übergangspfad so, dass er im übergeordneten Zustand enthalten ist.
Unreachable port or junction
Problem: Ein Port oder eine Verbindung wird als unerreichbar betrachtet, wenn kein gültiger Ausführungspfad zum Port/der Verbindung führt.
Diagnosegrad: Hängt vom Konfigurationsparameter Unreachable execution path (Simulink) ab.
Lösung: Verbinden Sie den unerreichbaren Eingangsport oder die Ausgangsverbindung mit einem Übergang aus einer erreichbaren Quelle.