Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  Globale Methode in SimTalk für Anzahl aktiver eM-Plant Instanzen?

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Globale Methode in SimTalk für Anzahl aktiver eM-Plant Instanzen? (1075 mal gelesen)
Pattex
Mitglied



Sehen Sie sich das Profil von Pattex an!   Senden Sie eine Private Message an Pattex  Schreiben Sie einen Gästebucheintrag für Pattex

Beiträge: 19
Registriert: 10.01.2007

eM-Plant 7.5 unter Win XP

erstellt am: 04. Jan. 2008 22:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo und erstmal ein gutes neues Jahr zusammen!

Folgendes Problem:

Es ist ja möglich, mehrere Instanzen von eM-Plant 7.5 gleichzeitig auf einem Rechner zu öffnen und laufen zu lassen.
Genau das möchte ich verhindern - eM-Plant bzw. das Modell XY darf gleichzeitig immer nur 1x aktiv sein.

Dazu habe ich mir Folgendes überlegt:

Mittels einer AutoExec-Methode möchte ich:
1. abfragen, wie oft eM-Plant oder das Modell XY aktuell auf dem Rechner ausgeführt wird (1x,2x,...).
-->Dazu habe ich jedoch noch keine Methode in SimTalk gefunden, die genau das macht!!!

2. Wenn der Rückgabewert > 1 ist, dann soll eM-Plant beendet werden.

Kennt jemand eine solche Methode oder hat einen anderen Lösungsvorschlag?

Für Tipps bin ich jederzeit dankbar!!!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 05. Jan. 2008 03:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

nun Pattex,

was willst Du gerade ?

Erwartest Du, dass die (in meinen Augen) 3-4  erfahrenen Nutzer in diesem Forum Dir jetzt Deine nicht zu Ende gedachten eigenen Vorstellungen fuer Dich zu Ende denken ?

So ist es wohl !

Beschreibe doch mal die eigentliche Aufgabenstellung und versuche nicht jemanden aus diesem Forum vor Deinen eigenen gedanklich eingeschränkten Karren zu spannen!  

Das ist nicht mein Sinn dieses Forums !


------------------
Der Simulator

[Diese Nachricht wurde von Simulator am 05. Jan. 2008 editiert.]

Pattex
Mitglied



Sehen Sie sich das Profil von Pattex an!   Senden Sie eine Private Message an Pattex  Schreiben Sie einen Gästebucheintrag für Pattex

Beiträge: 19
Registriert: 10.01.2007

eM-Plant 7.5 unter Win XP

erstellt am: 05. Jan. 2008 13:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Simulator,

Das ist die Aufgabenstellung:

Ich habe ein Modell erstellt, das permanent überwacht, ob in einem Quell-Verzeichnis neue Input-Daten vorliegen, diese dann einliest, eine Optimierung durchführt und die Output-Daten in ein Ziel-Verzeichnis schreibt.

Nun habe ich beobachtet, dass es vorkommt, dass das Modell von den Benutzern mehrmals gleichzeitig geöffnet wurde. Es sind dann mehrere identische Modelle gleichzeitig aktiv, die diese Funktion erfüllen, was daraufhin zu Problemen führt.

Dies möchte ich verhindern - es darf max. immer nur 1 Modell geöffnet werden.

Und nun wieder zu meiner Frage:

Gibt es eine globale Methode in SimTalk, mit der ich abfragen kann, wie oft eM-Plant oder das Modell aktuell geöffnet ist?

Ich habe intensiv in der eM-Plant Hilfe nach so einer Methode gesucht, habe jedoch nichts gefunden, was mir bei diesem Problem weiterhilft. Nobody is perfect, vielleicht kennt jemand im Forum eine solche Methode? Daher wende ich mich an das Forum.
Ich beabsichtige NICHT, irgendwen vor irgendeinen Karren zu spannen!!!

Viele Grüße,

Pattex

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Homer Simpson
Mitglied



Sehen Sie sich das Profil von Homer Simpson an!   Senden Sie eine Private Message an Homer Simpson  Schreiben Sie einen Gästebucheintrag für Homer Simpson

Beiträge: 345
Registriert: 14.09.2005

erstellt am: 05. Jan. 2008 17:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Pattex 10 Unities + Antwort hilfreich

Meines Wissens gibt es keine einfache Möglichkeit dieses Problem zu lösen. Ich könnte mir aber vorstellen, dass folgender Ansatz funktioniert: Man lege eine Datei an, z.B. C:\TEMP\semaphore.txt, die in einer autoexec-Methode zum Schreiben geöffnet wird. Wird das Modell geschlossen, so sollte (theoretisch) auch automatisch die Datei geschlossen werden. Wird das Modell ein zweites Mal geöffnet und die autoexec-Methode ausgeführt, so müsste das Öffnen der Datei fehlschlagen, da sie ja bereits zum Schreiben geöffnet wurde.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 05. Jan. 2008 19:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

@ Homer Simpson

das hatte ich auch gedacht, aber Du kannst  via "dateischnittstelle.oeffnen" von verschiedenen eMPlant-Instanzen quasi gleichzeitig auf eine Datei zugreifen bzw. schreiben. Habs ausprobiert

Weitere Idee war via initDDE(servername) =(true/false) herauszufinden ob  ein bestimmter eMPlant-Prozess läuft. Hat allerdings auch nicht funktioniert.

@Pattex

hier eine Methode, mit der Du die Anzahl der Tune-Prozesse abfragen kannst

is
str :string;
i :integer;
do
ds.schliessen; -- = dateischnittstelle
str:=sprint("tasklist /fi \"imagename eq Tune.exe\" /nh /fo csv | find /c \"Tune.exe\" >", ds.dateiname);
-- print str;
print system (str);

ds.oeffnen;
i:=str_to_num(ds.lesezeile);
ds.schliessen;

if i<=1 then
print "IO";
else
print sprint("es sind",i, "eMPlant-Anwendungen ","geöffnet");
end;
end;

------------------
Der Simulator

Pattex
Mitglied



Sehen Sie sich das Profil von Pattex an!   Senden Sie eine Private Message an Pattex  Schreiben Sie einen Gästebucheintrag für Pattex

Beiträge: 19
Registriert: 10.01.2007

eM-Plant 7.5 unter Win XP

erstellt am: 06. Jan. 2008 12:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

@ Homer Simpson & Simulator:

SUPER!
Funktioniert genau so, wie es soll.

Vielen Dank für die schnelle Lösung meines Problems!!!

@ Simulator:

Nur für mich als DOS-Laien zum Verständnis:


"str:=sprint("tasklist /fi \"imagename eq Tune.exe\" /nh /fo csv | find /c \"Tune.exe\" >", ds.dateiname);"
str ist der DOS-Befehl, der dann mit "system (str);" ausgeführt wird.

Was genau macht dieser DOS-Befehl?
Soweit ich das nachvollziehen kann, sucht er in der Taskliste des Task-Managers nach dem Prozess Tune.exe (eM-Plant) und dann?

Egal wieviele eM-Plant Instanzen ich öffne, erhalte ich für "print system (str);" immer den Wert 0.

Nochmals vielen Dank und viele Grüße,

Pattex

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 06. Jan. 2008 14:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

@   
Zitat:

str:=sprint("tasklist /fi \"imagename eq Tune.exe\" /nh /fo csv | find /c \"Tune.exe\" >", ds.dateiname);"

Tasklist                      : druckt Prozessliste
/fi "imagename eq Tune.exe"   : filter um  Tune-Abb. zu drucken (filter)
/nh                           : drucken ohne Spaltenkopf (no header)
/fo  CSV                      : im csv -Format  (format), (obsolet)
| find /c "tune.exe"          : stream nach find um Anzahl der "tune"-Zeilen zu bestimmen
> ds.dateiname                : stream nach Dateischnittstelle

print system (str)  gibt den Ausführungsstatus (exitcode) des str-Befehls zurück.  0 = IO ; > 0 = anderer Status.

Es hat also nichts mit der Anzahl der Tune-Prozesse zu tun.

Die Anzahl wird in der vorgegebenen Datei gespeichert und nicht als exitcode des Prozesses.

------------------
Der Simulator

[Diese Nachricht wurde von Simulator am 07. Jan. 2008 editiert.]

Pattex
Mitglied



Sehen Sie sich das Profil von Pattex an!   Senden Sie eine Private Message an Pattex  Schreiben Sie einen Gästebucheintrag für Pattex

Beiträge: 19
Registriert: 10.01.2007

eM-Plant 7.5 unter Win XP

erstellt am: 06. Jan. 2008 16:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Simulator,

danke für die detaillierte Erläuterung.

Jetzt hab ich das auch verstanden.

Vielen Dank,

Pattex

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz