|
|
|
State Machine OHNE Simulink Stateflow Toolbox |
|
| elcachon |

Forum-Century
|
 |
Beiträge: 190
|
 |
|
 |
Anmeldedatum: 03.05.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.6.0(R2008a), 7.8.0(R2009a)
|
 |
|
|
 |
|
Verfasst am: 06.12.2011, 08:54
Titel: State Machine OHNE Simulink Stateflow Toolbox
|
 |
Guten Morgen,
ich würde gerne so eine Art State Machine in Matlab realisieren, da ich über ein GUI ein Oszi ansteuere. Zuerzeit mache ich es so, dass ich in einer While - Loop mir ständig die Daten ausgeben und anzeigen lasse.
Um aber Parameter zu ändern, ist die While - Loop ziemlich ungeeignet dafür.
Hat jemand zufällig einen Tip wie sich eine State Machine in Matlab realisieren lässt, ohne ein Simulink Modell zu erstellen?
Meine Idee: While Loop als 'Endlossschleife' und diese unterteilt in mehrere Switch Case Anweisungen, z.B um die Zeitachse, usw. zu ändern!
Hat das schon mal jemand gemacht??
Lg elcachon
|
|
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 06.12.2011, 12:20
Titel: Re: State Machine OHNE Simulink Stateflow Toolbox
|
 |
Hallo elcachon,
Was ganu ist das Problem?
Eine State-Machine ändert ihren Status nur bei Inputs. Eine Endlosschleife ist deshalb eigentlich laut Definition ungeeignet. Wozu Rechenzeit verbraten, wenn es nichts zu tun gibt?
Was bedeutet "über ein GUI einen Oszi ansteuern" genau?
Ich habe viele Funktionen als State-Machine implementiert, aber ich weiß noch nicht, wie sich das auf Dein Problem übertragen ließe.
Gruß, Jan
|
|
|
|
| elcachon |
Themenstarter

Forum-Century
|
 |
Beiträge: 190
|
 |
|
 |
Anmeldedatum: 03.05.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.6.0(R2008a), 7.8.0(R2009a)
|
 |
|
|
 |
|
Verfasst am: 07.12.2011, 09:06
Titel:
|
 |
Guten Morgen Jan,
| Zitat: |
Was bedeutet "über ein GUI einen Oszi ansteuern" genau?
|
Ich bediene über eine .dll Datei mein kleines Oszi (Cleverscope von der Fa. Meilhaus vertrieben). Ich versuche halt gerade alle Einstellungen in meine GUI - Oberfläche zu implementieren, wie z.B Trigger Channel,
Time Divisor, usw.
Ziel: Am Ende soll mein Oszi vollständig über meine Oberfläche bedient werden können.ö
Bin von der State Machine(obwohl meiner Meinung beste Lösung, aber ich halt nicht genau weiß wie zu handeln) wieder weg, und versuch das gerad mit einem Timer zu lösen--> Problem hier:
Auch das ist ja im Prinzip wieder eine Enlosschleife, in der in ständig in alle Funktionen springe und egal ob etwas verändert worden ist, die Funktionen bearbeitet werden.
Bin noch nicht glücklich damit, aber ich versuchs.
Wenn du dir meinen Code anschaun willst, kein Problem, aber nur halt dann als PN da ziemlich lang!!
lg elcachon
|
|
|
|
| elcachon |
Themenstarter

Forum-Century
|
 |
Beiträge: 190
|
 |
|
 |
Anmeldedatum: 03.05.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.6.0(R2008a), 7.8.0(R2009a)
|
 |
|
|
 |
|
Verfasst am: 08.12.2011, 09:06
Titel:
|
 |
Guten Morgen Jan,
kannst du mir vielleicht ein Beispiel zeigen, wie du eine State Machine eingebunden hast?
Aber ohne die Simulink Toolbox!
Würde mich mal interessieren!
Lg elcachon
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 08.12.2011, 10:49
Titel:
|
 |
| |
 |
|
Hallo elcachon,
Eine State-Machine ist ein Operator, dessen Ausgabe von inneren Zuständen und äußeren Eingaben abhängt. Siehe z.B. http://de.wikipedia.org/wiki/Endlicher_Automat. Ohne Eingaben ändert sich der innere Zustand nicht, sodass auch die Ausgaben gleich bleiben.
Ein GUI kann man sehr einfach als State-Machine auffassen: Die User-Inputs sind die Eingaben, die bisher ausgefüllten Felder der innere Zustand, und die Ausgabe muss nur geändert werden, wenn der Callback eines Eingabe-Feldes aufgerufen wurde.
Also kann man ein GUI erstellen, bei dem entweder alle Callbacks auf eine Funktion zeigen, oder die Ausgabe-Funktion an alle Callbacks anhängen. Wenn der Benutzer z.B. die X-Auslenkung des Messgerätes im GUI ändert, wird die benötigte Steuersequenz erzeugt und an des Gerät gesendet.
Eine Endlos-Schleife oder ein Timer ist dazu gar nicht nötig, weil die Reaktionen auf User-Inputs ausreichend sind.
Die Interpretation eines Standard-GUIs als State-Machine ist irgendwie naheliegend.
Gruß, Jan
|
|
|
|
| elcachon |
Themenstarter

Forum-Century
|
 |
Beiträge: 190
|
 |
|
 |
Anmeldedatum: 03.05.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.6.0(R2008a), 7.8.0(R2009a)
|
 |
|
|
 |
|
Verfasst am: 08.12.2011, 15:06
Titel:
|
 |
Hallo Jan,
den Timer hab ich deshalb realisiert, da ich koninuierlich, das solange wie nötig, die aktuellen Daten vom Oszi eingelesen werden müssen und dementsprechend auch im plot aktualisiert werden müssen.
| Zitat: |
| Also kann man ein GUI erstellen, bei dem entweder alle Callbacks auf eine Funktion zeigen |
Hört sich interessant an. Kannst du mir da vielleicht Hilfestellung geben und mir bitte zeigen wie du das meinst, bzw. realisierst?
lg elcachon
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 08.12.2011, 17:22
Titel:
|
 |
Hallo elcachon,
Ich setze einfach für alle Callbacks die gleiche Funktion ein, z.B. {@Fcn, TypeStr}, wobei TypeStr ein String ist, der die verschiedenen UICONTROLs klassifiziert. Innerhalb der Fcn Funktion wird dann das aktivierte Objekt ausgelesen, die Steuersequenz angepasst und an das Gerät geschickt.
Die allgemeine Beschreibung klingt komplizierter als die explizote Umsetzung.
Gruß, Jan
|
|
|
|
| elcachon |
Themenstarter

Forum-Century
|
 |
Beiträge: 190
|
 |
|
 |
Anmeldedatum: 03.05.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.6.0(R2008a), 7.8.0(R2009a)
|
 |
|
|
 |
|
Verfasst am: 12.12.2011, 11:45
Titel:
|
 |
Hallo Jan,
ah ok, kurz ob ich dich richtig verstehe.
In jedem Callback steht also der gleiche Funktionsaufruf und verweist somit auf diese.
Mit Typestr wird in der Funktion näher klassifiziert, d.h z.B über eine
versteh ich das so richtig???
Gruß elcachon
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 12.12.2011, 22:01
Titel:
|
 |
Hallo elcachon,
Fast:
Ich habe nur die Quotes eingefügt, aber das meintest Du wahrscheinlich auch so.
Gruß, Jan
|
|
|
|
| elcachon |
Themenstarter

Forum-Century
|
 |
Beiträge: 190
|
 |
|
 |
Anmeldedatum: 03.05.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.6.0(R2008a), 7.8.0(R2009a)
|
 |
|
|
 |
|
Verfasst am: 13.12.2011, 10:51
Titel:
|
 |
Hallo Jan,
Ja genau so hab ichs gemeint. Weiß nicht ob ich mein Programm nochmal so von grund auf verändere, denn mit meiner Timer Funktion funktioniert momentan die Echtzeitmessung mit meinem Oszi ganz passabel, aber es ist auf alle Fälle eine Idee, die ich in Zukunft aufgreifen werde, da es einfach Ressourcen schonender ist.
Fals meine Timer Funktion Probleme macht, oder ich mehr Zeit habe, werd ichs umbauen.
Vielen Dank Jan!
Lg elcachon
|
|
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|