2016-07-03 33 views
1

I Diese Zustandsmaschine-Diagramm in Simulink die Stateflow verwendet erstellt:Simulink/Stateflow Fehler mit meiner Clock

Es gibt zwei Zustände (S1, S2), von denen einer (S1) hat 3 nested parallel FSM, die jeweils hat 4 Zustände (SS1, SS2, SS2, SS4), ich setze einen Standardzustand in allen 3 FSMs (SS1), und in den zwei Hauptzuständen (Standard S2).

Um die Haupt-FSM (S1, S2) zu testen, habe ich den Signalgenerator für alle meine Eingaben/Ereignisse verwendet. Einer der Eingänge ist eine Rechteckwelle, die ein Taktereignis für meine Haupt-FSM (1 Hz) ist, und die Dauer der Simulation beträgt 50 Sekunden.

Das Problem, das ich habe, ist, dass ich im Signalgenerator sehen kann, dass ich eine Rechteckwelle habe, aber wenn ich Umfang auf diese Uhr setze, sehe ich eine Rechteckwelle (die sich von 0 bis 49,5 Sekunden erstreckt und dann auf 0 fällt).

enter image description here

Wo ist meine Uhr? was ist es nicht meine FSM richtig füttern? Hier

ist die FSM:

enter image description here

die orthogonalen Unterzustände sind:

enter image description here

in Details:

enter image description here

zwischen S1 und S2

enter image description here

einer der Signal Builder, die das Taktsignal hat, ist:

enter image description here

Die andere hat die folgenden Signale:

enter image description here

+0

Welchen Solver verwenden Sie und welche Schrittweite wird verwendet? Warum definieren Sie Ihre Uhr von 0 -> 2 und wandeln sie dann in boolean um (was von Natur aus 0-> 1 ist)? –

+0

Löser ist Ode3.In Bezug auf die Uhr, nehme ich an, dass Sie den Konverter verwenden müssen, so dass sie boolesch sind, da ich die drei Ereignisse Uhr und zwei andere "steigende Flanke" Eingänge definiert habe. Ich bin mir nicht sicher, ob sie boolesch sein müssen. Die 0-2, die etwas von Simulink erstellt wurde, bin ich nicht sicher, warum auch nicht ... ich stelle die Amplitude von 1 einer 50Hz Rechteckwelle –

Antwort

2

Das Problem ist, dass Sie die Standardschrittgröße mit od verwenden e3. Bei Verwendung eines Fixed-Step Solver wird die Schrittweite auto als (StopTime-StartTime)/50 berechnet. In Ihrem Fall ergibt dies eine Schrittweite von 1.

Da bei t = 0,1,2,3, ... 49 die Clock einen Wert von 2 hat, sehen Sie das im Bereich. Bei t = 50 hat der Clock den Wert 0, und das sehen Sie im Bereich.

Sie müssen zum Solver Panel des Pulldown-Menüs Simulaton->Model Configuration Parameters gehen. Dann öffnen Sie die Option Additional Options und ändern Sie die Schrittgröße auf etwas kleiner, z. B. 0,01.

Alternativ (abhängig von Ihren anderen Anforderungen) können Sie einen variablen Schrittlöser verwenden.