Verfasst am: 08.05.2013, 17:05
Titel: Matlab GUI mit Simulink Model verbinden
Halo zusammen,
ich hab schon in der Forum gesucht und das einziege was ich zu meinem Problem gefunden habe ist die beide Befehle Sim() und set_param(). aber ich kann mit den beiden nichts anfangen und weiss absolut nicht wo ich was einsetzen soll.
ICh schildere mein Problem:
Ich will vo GUI aus die werte des Simulink Modells verändern bzw. setzen.
beim erzeigen eines Textfeldes In der GUI werden ja die erzeugt
Code:
function kraft_Callback(hObject, eventdata, handles) function kraft_CreateFcn(hObject, eventdata, handles)
nun will ich wenn ich das eine Zahl eintippe, wenn GUI gestartet ist, diese Zahl dann in Simulink übernehmen wird. Könnt ihr mir pls helfen. Ich hab noch nie sowas gemacht und ein Beispiel würde mich echt sehr helfen.
1. Du brauchst Textfelder die Erzeugt man mit "uicontrol"
2. Du brauchst Reaktionen auf Eingaben sogenannte Callbacks
3. Du lässt den Callback den Wert des Textfeldes in eine Variable speichern
4. Du verwendest diese Variable einfach in Simulink (sim-Befehl)
Code:
f = figure
c = uicontrol( 'Style' , 'edit' , 'Callback' , @(o,e)assignin( 'base' , 'zielvariable' , str2num(get( o , 'String' ))' ))
Der Callback von diesem Textfeld (edit) ist etwas kompliziert zu erklären.
Es geht darum, das in matlab (und auch in anderen Programmiersprachen)
jede Variable nur in einem gewissen "Workspace" existiert.
Der Standard-Matlab-Workspace ist "Base" wird für Skripte und die
Konsole verwendet.
Funktionen wie so ein Callback haben einen eigenen.
Sobald die Funktion durchglaufen ist, ist die Variable weg.
Deswegen schaufeln wir die Variable rüber in den Baseworkspace
mit "assignin"
das ..."@(o,e) Befehl" ... ist eine besondere Art von Funktion,
die man so kompakt überall hinschreiben können ohne extra
ein File anzulegen ( sogn. Anonymus-Fcn)
ich würde set_param hier gar nicht erst verwenden.
Den gewünschten Parameter in dem Block als Variable eintragen und dann von der GUI bzw. dem Callback aus die Variable ändern.
Aber wie gesagt, das ist kein gutes Design, wenn du z.B. später
den Wert noch von einer anderen Stelle aus änder willst musst
du ihn von dort aus auch schieben. Und dann wird es
beim debuggen schwieriger zu ermitteln wo der Wert her kam....
warum bestehst du denn darauf, set_param zu verwenden statt (wie von bluesmaster und mir vorgeschlagen) die Variable im Workspace zu setzen? Das wäre deutlich einfacher.
also ich will das so machen, weil ich es so gelesen habe. Wie gesagt, ich bin ein NEwbie und hab nicht viel Erfahrung mit malab simulink und GUI. und versuch im ersten Mom alles was mich weiter bringt.
Ich will aber das auch schön machen. aslo ih rmeint es ist schöner die Variable in workspace zu speichern?!
und wie würde ich denn in meinem Fall jetzt das machen?????
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
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.