Verfasst am: 16.08.2019, 14:41
Titel: Simulink-Maske als GUI
Guten Tag zusammen,
ich probiere mich gerade daran in Simulink eine kleine Benutzeroberfläche zu implementieren.
Dazu habe ich zunächst mein ganzes Modell zu einem Subsystem gemacht und dieses dann maskiert.
Da ich keinen vernünftigen Guide dafür gefunden habe, sondern mir die einzelnen Funktionen relativ zeitaufwendig zusammensuchen musste, liste ich meine bisherigen Erfolge kurz auf, bevor ich zu meinen Fragen komme.
Um eine Maske zu erstellen, wie sie im angehängten Bild GUI_Block_parameter.png zu sehen ist, genügt im Grunde die Anleitung Create a Simple Mask.
Um einige der Parameter im Modell vernünfig nutzen zu können, musste ich sie unter "Initialization commands" noch anpassen:
Code:
if cod == "Laden"
CoD = 1;
elseif cod == "Entladen"
CoD = -1;
end
Nachdem ich im Reiter "Icon & Ports" die Options "Run initialization" auf "On" und "Icon units" auf "Normalized" gestellt hatte, habe ich es außerdem geschafft meine gewählten Einstellungen auf der Oberfläche des Subsystemblocks anzeigen zu lassen und die Ports zu beschriften.
Da ich den Pfeil in der Ecke links-unten zu unauffällig finde, habe ich eine andere Möglichkeit gefunden das darunterliegende Modell anzuzeigen. Ich habe ein leeres Subsystem ohne Ports erstellt und dann unter Properties die Callback function "OpenFcn" erstellt. Dieses Subsystem lässt sich dann als Schaltfläche missbrauchen. (vgl. GUI_Modell_als_Subsystem.PNG)
Die Funktionen zum Parameter laden, Simulation starten und Simulation Data Inspector anzeigen habe ich ebenfalls gefunden und als Callback für die Buttons eingetragen:
Code:
load param.mat; %Parameter laden (war nicht so schwer)
Simulink.sdi.view %Simulation Data Inspector öffnen (options habe ich nicht gefunden)
simOut = sim('modul3','SimulationMode','normal','AbsTol','1e-5',...
'SaveState','on','StateSaveName','xoutNew',...
'SaveOutput','on','OutputSaveName','youtNew',...
'SaveFormat', 'StructureWithTime'); %startet die Simulation
% Die Option 'Stoptime','1000' bestimmt außerdem die Simulationszeit
simOut.getSimulationMetadata.ModelInfo.SolverInfo %gibt Infos zum gewählten Solver im Command Window aus.
Soweit funktioniert es ganz gut.
Als nächstes möchte ich noch probieren über die Maske zu bestimmen, welche Signale gespeichert werden und hoffe die Befehle nutzen zu können, die ich unter Configure a Signal for Logging gefunden habe.
Nun aber zu dem was ich noch nicht geschafft habe:
1. Wenn ich die Simulation über die Maske starte, zeigen die Displays im Simulinkmodell nichts an und lässt sich nichts anklicken. Ich hätte gerne das gleiche Verhalten, wie wenn auf die grüne Run Schaltfläche gedrückt wird.
2. Ich habe es nicht geschafft, aus der Maske heraus Variablen in den Workspace zu schreiben. Die wäre ein Weg mein drittes Problem zu lösen.
3. Die in der Maske gewählte Simulationszeit wird in einer Variablen gespeichert. Diese Variable kann ich aber nicht in der "sim"-Funktion nutzen wenn ich die Simulation starte. Es wird angezeigt das die Variable nicht existiert.
Ich habe bereits gelesen, dass es ein extra Tool gibt um GUIs in Matlab zu erstellen, würde aber gerne direkt in Simulink bleiben.
Ich hoffe das meine Zusammenfassung irgendjemandem von Nutzen sein wird
und bedanke mich schon einmal für Lösungsansätze oder Anregungen zu meinen Problemen.
Ich habe nach noch tiefergehender Recherche nun auch das ordnungsgemäße Starten der Simulation und das Schreiben in den Workspace implementieren können.
Für das Starten von Simulationen eignet sich set_param wesentlich besser als sim. Mehr zu dem Befehl auf www.ece.northwestern.edu
Verfasst am: 20.08.2019, 09:34
Titel: global variable
Hallo,
Ich denke die Variablen in Maske kann man durch das Stichwort "global" universall machen.
Da Simulink ein Produkt, der basiert auf Matlab entwickelt ist, hat jede Simulink Subsystem sowie Mask seinen eigenen Workspace, genau wie Local Functions.
Eine Architectur fuer Simulink model kann man durch Simulink Explorer visualisieren.
Oscar
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
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.