Erstellen von Diagrammen mithilfe eines MATLAB-Skripts
Dieses Beispiel zeigt, wie Stateflow®-API-Befehle in eine MATLAB®-Funktion oder ein Skript eingebunden werden. Durch die Erstellung eines Skripts mit API-Befehlen können Sie wiederholte Schritte bei der Diagrammerstellung vermeiden und dasselbe Modell mit einem einzigen Befehl neu erstellen. Weitere Informationen finden Sie unter Overview of the Stateflow API.
Ausführen der MATLAB-Funktion
Die Funktion makeMyModel
, die unten auf dieser Seite definiert ist, erzeugt ein „Basis“-Stateflow-Diagramm, das Sie als Vorlage für Ihre Anwendungen wiederverwenden können.
ch = makeMyModel; view(ch)
Funktion zur Erstellung eines Basisdiagramms
Diese Funktion erstellt ein Stateflow-Diagramm und gibt das entsprechende Stateflow.Chart
-Objekt zurück.
function ch = makeMyModel
Erstellen Sie ein Modell und greifen Sie auf das neue Stateflow.Chart
-Objekt zu.
rt = sfroot; prev_machines = find(rt,"-isa","Stateflow.Machine"); sfnew; curr_machines = find(rt,"-isa","Stateflow.Machine"); m = setdiff(curr_machines,prev_machines); ch = find(m,"-isa","Stateflow.Chart");
Erstellen Sie im Diagramm den Zustand A
.
sA = Stateflow.State(ch);
sA.Name = "A";
sA.Position = [50 50 310 200];
Erstellen Sie den Zustand A1
innerhalb des Zustands A
.
sA1 = Stateflow.State(ch);
sA1.Name = "A1";
sA1.Position = [80 120 90 60];
Erstellen Sie den Zustand A2
innerhalb des Zustands A
.
sA2 = Stateflow.State(ch);
sA2.Name = "A2";
sA2.Position = [240 120 90 60];
Erstellen Sie einen Übergang von A1
zu A2
.
tA1A2 = Stateflow.Transition(ch); tA1A2.Source = sA1; tA1A2.Destination = sA2; tA1A2.SourceOClock = 3; tA1A2.DestinationOClock = 9;
Fügen Sie den Standardübergang zu Zustand A
hinzu.
dtA = Stateflow.Transition(ch); dtA.Destination = sA; dtA.DestinationOClock = 0; dtA.SourceEndPoint = dtA.DestinationEndpoint-[0 30]; dtA.MidPoint = dtA.DestinationEndpoint-[0 15];
Fügen Sie den Standardübergang zu Zustand A1
hinzu.
dtA1 = Stateflow.Transition(ch);
dtA1.Destination = sA1;
dtA1.DestinationOClock = 0;
dtA1.SourceEndPoint = dtA1.DestinationEndpoint-[0 30];
dtA1.MidPoint = dtA1.DestinationEndpoint-[0 15];
end