|
|
Verzögerung bei Ausführung von Matlab Code |
|
AldiGuru |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.09.2012, 14:54
Titel: Verzögerung bei Ausführung von Matlab Code
|
 |
|
 |
|
Hallo,
ich versuche mit Matlab in das Programm Aspen Plus einzugreifen. Das geht über einen ActiveXServer und funktioniert auch problemlos.
Ich manipuliere über Matlab einen Wert in Aspen und lasse dann die Berechnung in Aspen durchlaufen. Anschließend soll Aspen mir einen Wert ausspucken und in eine Matlab Matrix schreiben.
Wenn ich das Matlab Programm ausführe, gibt er mir allerdings eine Fehlermeldung aus, dass die Berechnung noch nicht beendet ist, bevor Matlab bereits den Wert ausspucken will. Im Debug Mode oder wenn ich z.B. 0,1 Sekunden Pause dazwischen lasse, funktioniert die Berechnung dann reibungslos. Die Variante mit pause finde ich allerdings nicht sehr elegant, zumal das erst die Vorbereitungen für komplexere Berechnungen sind.
Gibt es eine Möglichkeit, wie ich Matlab anweisen kann, erst dann die nächste Zeile anzugehen, wenn die Berechnung zu Ende gebracht worden ist?
Eine weitere Bonusfrage:
Aspen öffnet die Datei, indem der Befehl InitFromArchive2 den String des kompletten Dateipfades verlangt. Kann ich den String auch in einer Variablen speichern, bzw. nur den Dateinamen angeben? So wie ich das zunächst gedacht habe, schien es nicht zu funktionieren (Habe mit addpath den Ordner eingebracht).
Evtl ist das auch ein Problem von Aspen, aber vielleicht gibt es doch eine Lösung dazu.
Vielen Dank!
Bisheriger Code:
|
|
|
|
|
AldiGuru |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 17.09.2012, 10:17
Titel:
|
 |
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 17.09.2012, 12:29
Titel: Re: Verzögerung bei Ausführung von Matlab Code
|
 |
Hallo AldiGuru,
Soweit ich das verstehe, betreffen die Fragen beide Aspen Plus, und nicht Matlab. Deshalb ist goMatlab wohl das falsche Forum für die Fragen. Falls nicht, erkläre nochmal die Details, bitte.
Gruß, Jan
|
|
|
AldiGuru |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 17.09.2012, 16:08
Titel:
|
 |
Hallo Jan,
im Kern geht es darum, dass Matlab die Zeile
Run2(AspenEngine)
ausführt, und dann mit der nächsten Zeile weiter macht, bevor das externe Programm (also Aspen) mit der Berechnung fertig ist.
Gibt es also eine Möglichkeit eine Pause in Matlab einzufügen, die dann endet, wenn die Berechnung zu Ende ist?
Ich kenne den Befehl pause( 'Zeit' ). Diesen Befehl wünsche ich mir sozusagen dynamisch in Abhängigkeit davon, ob Aspen fertig ist. Geht sowas dynamisch mit Matlab?
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 18.09.2012, 13:44
Titel:
|
 |
Hallo AldiGuru,
Es geht darum, ob Aspen über seine ActiveX-Schnittstelle eine Methode anbietet, RUN2 synchron auszuführen, also zu warten, bis der Befehl abgearbeitet wurde. Das hat also erstmal nichts mit Matlab zu tun, ausser dass der entsprechende Befehl von Matlab aus gestartet wird. Mit dem Argument wäre aber auch alles was nach "system('start photoshop')" kommt eine Matlab-Frage.
Also würde ich mich wirklich an den Support oder das Forum von Aspen Plus wenden.
Gruß, Jan
|
|
|
AldiGuru |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.09.2012, 10:31
Titel:
|
 |
Ich habe das Problem jetzt lösen können.
Einerseits liegt es zwar an Aspen, aber andererseits kann die Schnittstelle auch mit Matlab ausgelesen werden.
Die Details der AspenEngine habe ich mir mit inspect(AspenEngine) ansehen können. Dort gibt es den Boolean Operator IsRunning.
Mit
und einer if Abfrage hat es dann geklappt.
Sinnvoll ist es also bei einem ActiveX Server über die Funktion inspect zu schauen, was dort für Möglichkeiten sind.
Besten Dank trotzdem!
|
|
|
|
|
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.
|
|