Wie bekomme ich Daten aus einem Simulink-block in einer MATLAB-GUI?
Ich habe ein Simulink-Modell verwendet eine eingebettete MATLAB-Funktion für einen block, und ich habe nicht in der Lage, um herauszufinden, wie verschieben von Daten zwischen den embedded MATLAB block und eine GUI in Echtzeit (d.h. während das Modell ausgeführt wird). Ich habe versucht zu implementieren, ein "workspace" - block in mein Modell, aber ich weiß nicht, wie man richtig mit.
Weiß jemand wie das verschieben von Daten aus einem Simulink-block in eine GUI in Echtzeit?
bitte klären... welche Daten, welche Werte, welche Parameter sind, werden Sie versuchen, zu Lesen von Parametern aus dem Modell .m-Datei, oder versuchen Sie, um die Parameter aus dem Modell in eine .m-Datei, oder versuchen Sie zu verwenden workspace-Variablen in ein Modell??? (oder etwas anderes)
vielen Dank für die schnelle Beantwortung jason... sehen Sie, ich habe ein simulink-Modell, nicht viele Blöcke, und in diesem Modell, das ich verwenden Sie eine eingebettete matlab-Funktion ... und es ist unmöglich für mich, den Eingang oder Ausgang des embedded matlab block in meine gui in Echtzeit. ich habe versucht zu implementieren, ein "workspace" - block in mein Modell, und ich wurde in Echtzeit angezeigt, die im Modell, aber ich weiß nicht, wie Sie diese nutzen, wie zum implementieren dieser in meine gui, die ich verwenden kann, diese Werte für die Eingabe oder Ausgabe von mein embedded-funciton.
vielen Dank für die schnelle Beantwortung jason... sehen Sie, ich habe ein simulink-Modell, nicht viele Blöcke, und in diesem Modell, das ich verwenden Sie eine eingebettete matlab-Funktion ... und es ist unmöglich für mich, den Eingang oder Ausgang des embedded matlab block in meine gui in Echtzeit. ich habe versucht zu implementieren, ein "workspace" - block in mein Modell, und ich wurde in Echtzeit angezeigt, die im Modell, aber ich weiß nicht, wie Sie diese nutzen, wie zum implementieren dieser in meine gui, die ich verwenden kann, diese Werte für die Eingabe oder Ausgabe von mein embedded-funciton.
InformationsquelleAutor | 2009-08-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Non-real-time-Lösung:
Wenn Sie möchten, um die Parameter in einer GUI, simulieren ein Modell mit diesen Parametern, dann zeigt die simulation die Ausgabe in der GUI, es gibt ein gutes tutorial auf blinkdagger.com. Eine Lösung, die Sie beschreiben, ist die Verwendung der SIMSET Funktion zu definieren, die der Arbeitsbereich im Simulink-Modell mit der er interagiert. Sie sollten in der Lage sein, um ersetzen der base workspace so, dass die Daten stattdessen gesendet und aus dem Arbeitsbereich der GUI-Funktionen, die den Aufruf der Simulink-Modell.
Real-time-Lösung
Vorgeschlagen von MikeT, können Sie eine RuntimeObject. Müssen Sie zunächst verwenden Sie die get_param - Funktion, um die RuntimeObject aus dem block:
Wo
obj
ist entweder eine block-Pfadname oder ein block-Objekt-handle. Sie können den Pfadnamen des zuletzt ausgewählten block mit dem GCB Funktion (in dem Fall kann man ersetzenobj
mitgcb
). Sie können dann den block die Ausgabe mit dem folgenden:Eine weitere Einschränkung aus der Dokumentation:
Würden Sie wahrscheinlich am Ende mit einer Schleife oder einem timer-routine ausgeführt, die in Ihrer GUI, die ständig die Ausgabe von Daten aus der RuntimeObject so lange, wie die simulation ausgeführt wird. Die Dokumentation sagt auch:
Ihre Schleife oder timer-routine würde sich also ständig überprüfen zunächst, dass die RuntimeObject vorhanden ist, und entweder zu stoppen (wenn es nicht) oder die Daten aus (wenn es funktioniert). Ich bin mir nicht sicher genau zu prüfen, wie für die Existenz eines RuntimeObject, aber ich glaube, Sie würden entweder prüfen, ob das Objekt leer ist oder wenn die BlockHandle - Eigenschaft des Objekts leer ist:
Ich denke, es ist ein Kommunikationsproblem, was hier passiert. Hat man sich bei dem Beispiel, das ich verlinkt auf blinkdagger? Ist das die Art von Sache, die Sie versuchen zu tun (set-Parameter in einer GUI, simulieren ein Modell mit diesen Parametern, dann zeigt die simulation die Ausgabe in der GUI)?
ich denke, es ist, aber ich kann nicht öffnen, oder ich nur donno, wie ich gerade sehen kann, die 52 Kommentare :s
Die links sind leicht zu übersehen. Das tutorial hat 4 Seiten. Nach dem intro und vor dem Kommentare, die Sie sehen sollten "Seiten: 1 2 3 4", wobei jede Nummer einen link zu einer Seite des Tutorials.
InformationsquelleAutor gnovice
Aus euren Antworten, ich vermute, Sie wollen die Ergebnisse sehen, während die simulation läuft, ist das richtig? Die blinkdagger.com tutorial können Sie die Ergebnisse einer simulation, nachdem es geschehen ist, aber nicht während es läuft. Tun Sie im Grunde einbetten möchten so etwas wie einen scope-block in deine GUI?
Gibt es ein paar Möglichkeiten, dies zu tun, am besten ist wohl mit dem EML-block runtime-Objekt. Wenn Sie dieses nutzen, sollten Sie in der Lage Blick auf die Ausgabe des EML-block, während er ausgeführt wird.
InformationsquelleAutor MikeT