WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Matlabskript aus Simulink ausführen

 

tkrhiman
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 07.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.03.2013, 19:43     Titel: Matlabskript aus Simulink ausführen
  Antworten mit Zitat      
Hallo,

ich suche eine Möglichkeit ein Matlabskript aus Simulink auszuführen. Wenn ein Signal einen bestimmten Wert in der Simulation erreicht, soll das Skript gestartet werden. Idealerweise sollte die Simulation weiter laufen, während das Skript abgearbeitet wird.

In diesem Thread habe ich einige Hintergrundinformationen gegeben wofür ich das ganze brauche.

Für Hilfe wäre ich sehr dankbar.

Simon
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.03.2013, 21:38     Titel:
  Antworten mit Zitat      
Hallo,

schau dir mal Triggered Subsystems, oder auch Enabled Subsystems an.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
tkrhiman
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 07.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.03.2013, 12:05     Titel:
  Antworten mit Zitat      
Danke erstmal für die Antwort.

Mit den Triggered Subsystems und Enabled Subsystems kann ich ja bestimmte Teilsysteme und Blöcke unter bestimmten Bedingungen ausführen lassen.
Aber ich habe noch keine Möglichkeit gefunden, wie ich von dort ein Matlabskript starte. Dieses sollte in einem eigenen Thread ausgeführt werden und unabhängig von der Simulation laufen (Damit meine ich, dass die Simulation nicht darauf wartet, dass das Skript durchgelaufen ist, sondern nur den Startbefehl erteilt).

Alternativ würde es mir wahrscheinlich auch helfen, wenn ich ein externes Programm von der Simulation aus starten könnte, an das bestimmte Parameter übergeben werden können.

Schönen Gruß
Simon
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.03.2013, 12:26     Titel:
  Antworten mit Zitat      
Hallo,

Du könntest in das Subsystem einen MATLAB Function Block setzen, in dem du dein Skript aufrufst. Mit dos oder system oder ! kannst du dann auch externe Executables aufrufen.
Das "gleichzeitig" könnte schwierig werden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
tkrhiman
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 07.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.03.2013, 16:19     Titel:
  Antworten mit Zitat      
Die einfachste Lösung (Skript direkt aus dem Simulink Block 'Matlab Function' aufzurufen) hatte ich gar nicht erst probiert.

Allerdings kommt dann die Fehlermeldung, dass ein Skript nicht aufgerufen werden darf. Beim googeln nach der genauen Fehlermeldung, bin ich dann auf einen älteren Thread gestoßen.

Wird das Skript vorher mit
Code:
coder.extrinsic('meinSkript');
meinSkript;
 

gekennzeichnet, funktioniert es ohne Probleme. Das heißt mein Hauptproblem ist schon einmal gelöst.

Allerdings wird, wie du schon vermutet hattest, das ganze nicht gleichzeitig ausgeführt. Das heißt, die Simulation pausiert, bis das Skript abgearbeitet ist. Aus dem Skript ist es mit den von dir angegeben Befehlen möglich ein externes Programm zu starten. Ob dies die Simulation zeitlich beeinflusst konnte ich jetzt erstmal nicht genau feststellen.

Ich hatte dann noch etwas mit der Simulink Coder Toolbox rumgespielt, im speziellen mit dem Asynchronous Teil, bin mir aber überhaupt nicht sicher, ob das dafür geeignet ist, ein Skript oder eine Funktion unabhängig von der Simulation auszuführen.

Auch in Matlab habe ich keine Möglichkeit gefunden, eine weitere Funktion parallel auszuführen. Wahrscheinlich wird hierfür die Parallel Computing Toolbox benötigt, die auf meinem System nicht vorhanden ist.

Falls also jemand eine Möglichkeit kennt, das ganze zu parallelisieren wäre ich sehr daran interessiert.

Simon
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.03.2013, 17:39     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Aus dem Skript ist es mit den von dir angegeben Befehlen möglich ein externes Programm zu starten.

Das sollte dann auch gleichzeitig möglich sein.
Code:
!myfile.exe &


Zitat:
Auch in Matlab habe ich keine Möglichkeit gefunden, eine weitere Funktion parallel auszuführen. Wahrscheinlich wird hierfür die Parallel Computing Toolbox benötigt, die auf meinem System nicht vorhanden ist.

Wenn es darum geht, MATLAB-Code parallel auszuführen, stimme ich zu. Bei der parallelen Ausführung von Executables könnte obige Möglichkeit helfen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 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.