The Modul EbsScript ermöglicht eine automatisierte Durchführung von Zuweisungen und Berechnungen. Zur Anwendung muss zunächst ein Programm (das "EbsScript") erstellt werden unter Verwendung des EbsScript Editors. Als Programmiersprache dient PASCAL, mit auf EBSILON zugeschnittenen Spracherweiterungen. Nach der Erstellung des Scripts, kann man mit Hilfe des EbsScriptCompilers die Richtigkeit der Syntax zu überprüfen und das EbsScript ausführen. Bereits fertig gestellte EbsScripte kann man auch ohne den Editor direkt mit dem EbsScriptExecutor compilieren und ausführen.
Während man mit dem EbsScript Editor arbeitet, kann man zum EBSILON-Modell umschalten und wieder zurück zum Editor. Dies ist hilfreich, wenn man bestimmte Namen oder Werte nachschauen will. Man kann auch das Ebsilon-Modell modifizieren, während der EbsScript Editor geöffnet ist. Wenn man allerdings im Modell Objekte eingefügt, gelöscht oder umbenannt hat, sollte man den Objektbaum im Editor aktualisieren, in dem man Menü-Kommando ”Extras" à"Objektbaum neu erstellen" verwendet.
Wenn Sie mehrere Modelle geöffnet haben, können Sie für jedes dieser Modelle einen EbsScript Editor öffnen. Auf dem Bildschirm sehen Sie nur einen EbsScript Editor, nämlich den, der dem gerade aktiven Modell zugeordnet ist. Andere EbsScript Editoren sind unsichtbar. Wenn Sie von einem zum anderen Modell umschalten, wird der entsprechende Editor des anderen Modells sichtbar.
Sie können mehrere EbsScript für ein Modell entwickeln. Diese Scripts werden innerhalb der ”.ebs” Datei gespeichert. Dort gibt es Import/Export Funktionen, die den Transfer von EbsScript von einem zum anderen Modell möglich machen.
EbsScript ist besonders darauf angelegt, Modelldaten zu verarbeiten. Die in der Schaltung vorhandenen Namen können deshalb direkt in EbsScript verwendet werden. Um z.B. einer Turbinenscheibe mit dem Namen NDT_2B einen Wert für den isentropen Wirkungsgrad zuzuweisen, verwendet man die Syntax
NDT_2B.ETAIN:=0.89;
Genau wie in den Eingabefeldern selbst können hierbei einem Spezifikationswert auch Ausdrücke zugewiesen werden. Zur Realisierung dieser Zugriffsmöglichkeiten bedient sich EbsScript eines eigenen primitiven Datentyps "ebsvar".
Es gibt mehrere Möglichkeiten, Daten für die Ausführung des EbsScripts einzugeben:
Um EbsScript Ergebnisse zu erhalten, kann man
Da einige EbsScript-Funktionen Teil des Ebsilon Performance Optimization Systems, EPOS, sind, können sie nur mit entsprechenden Zusatzlizenzen genutzt werden. Einzelheiten sind in der Funktionsliste aufgeführt.
Innerhalb von EbsScript kann man direkt auf Modellgrößen zugreifen. Dabei werden allerdings nicht die in der Oberfläche angezeigten Einheiten zugrundegelegt, sondern die intern gespeicherten, auch im Ebsilon-Rechenkern verwendeten Einheiten des SI Einheiten Systems:
Deshalb bedeutet eine direkte Zuordnung wie
Turbine.M1N := 100;
immer 100 kg/s.
Einer der Hauptvorteile von EbsScript ist das Feature, mit dem Sie Berechnungen für unterschiedliche Profile durchführen können. Innerhalb von EbsScript können Sie neue Profile erstellen und von einem zum anderen Profil umschalten. Für die Profiloperationen werden folgende Profile festgelegt:
Das aktuelle Berechnungsprofil wird zur Durchführung einer Rechnung verwendet. Es wird weiterhin zum Lesen von Werten aus demModell oder zum Schreiben von Werten ins Modell benutzt. Zusätzlich gelten eine Menge Profiloperationen für dieses Profil (siehe Kapitel "Profile" in der EbsScript-Funktionsübersicht).
Das aktuelle Elternprofil wird zur Erstellung eines neuen Unterprofils verwendet, d.h. das neue Unterprofil ist ein Kindprofil des aktuellen Elternprofils. Das aktuelle Elternprofil muss nicht das Elternprofil des aktuellen Berechnungsprofils sein (dies ist allerdings dann der Fall, wenn man in einem Unterprofil arbeitet, das man gerade innerhalb EbsScripts erstellt hat).
Wenn man EbsScript startet, werden beide, das aktuelle Berechnungs- und das aktuelle Elternprofil, auf das Profil gesetzt, das aktiv war, als EbsScript aufgerufen wurde.
Beispiel: Wenn Sie EbsScript starten, während Sie sich in Profil A befinden und die Befehle
newSubProfile;
newSubProfile;
ausführen, erhalten Sie zwei neue Profile, die Kinder von Profil A sind.
The Modul EbsScript ermöglicht eine automatisierte Durchführung von Zuweisungen und Berechnungen. Zur Anwendung muss zunächst ein Programm (das "EbsScript") erstellt werden unter Verwendung des EbsScript Editors. Als Programmiersprache dient PASCAL, mit auf EBSILON zugeschnittenen Spracherweiterungen. Nach der Erstellung des Scripts, kann man mit Hilfe des EbsScriptCompilers die Richtigkeit der Syntax zu überprüfen und das EbsScript ausführen. Bereits fertig gestellte EbsScripte kann man auch ohne den Editor direkt mit dem EbsScriptExecutor compilieren und ausführen.
Während man mit dem EbsScript Editor arbeitet, kann man zum EBSILON-Modell umschalten und wieder zurück zum Editor. Dies ist hilfreich, wenn man bestimmte Namen oder Werte nachschauen will. Man kann auch das Ebsilon-Modell modifizieren, während der EbsScript Editor geöffnet ist. Wenn man allerdings im Modell Objekte eingefügt, gelöscht oder umbenannt hat, sollte man den Objektbaum im Editor aktualisieren, in dem man Menü-Kommando ”Extras" à"Objektbaum neu erstellen" verwendet.
Wenn Sie mehrere Modelle geöffnet haben, können Sie für jedes dieser Modelle einen EbsScript Editor öffnen. Auf dem Bildschirm sehen Sie nur einen EbsScript Editor, nämlich den, der dem gerade aktiven Modell zugeordnet ist. Andere EbsScript Editoren sind unsichtbar. Wenn Sie von einem zum anderen Modell umschalten, wird der entsprechende Editor des anderen Modells sichtbar.
Sie können mehrere EbsScript für ein Modell entwickeln. Diese Scripts werden innerhalb der ”.ebs” Datei gespeichert. Dort gibt es Import/Export Funktionen, die den Transfer von EbsScript von einem zum anderen Modell möglich machen.
EbsScript ist besonders darauf angelegt, Modelldaten zu verarbeiten. Die in der Schaltung vorhandenen Namen können deshalb direkt in EbsScript verwendet werden. Um z.B. einer Turbinenscheibe mit dem Namen NDT_2B einen Wert für den isentropen Wirkungsgrad zuzuweisen, verwendet man die Syntax
NDT_2B.ETAIN:=0.88;
Genau wie in den Eingabefeldern selbst können hierbei einem Spezifikationswert auch Ausdrücke zugewiesen werden. Zur Realisierung dieser Zugriffsmöglichkeiten bedient sich EbsScript eines eigenen primitiven Datentyps "ebsvar".
Es gibt mehrere Möglichkeiten, Daten für die Ausführung des EbsScripts einzugeben:
Um EbsScript Ergebnisse zu erhalten, kann man
Da einige EbsScript-Funktionen Teil des Ebsilon Performance Optimization Systems, EPOS, sind, können sie nur mit entsprechenden Zusatzlizenzen genutzt werden. Einzelheiten sind in der Funktionsliste aufgeführt.
Innerhalb von EbsScript kann man direkt auf Modellgrößen zugreifen. Dabei werden allerdings nicht die in der Oberfläche angezeigten Einheiten zugrundegelegt, sondern die intern gespeicherten, auch im Ebsilon-Rechenkern verwendeten Einheiten des SI Einheiten Systems:
Deshalb bedeutet eine direkte Zuordnung wie
Turbine.M1N := 100;
immer 100 kg/s.
Einer der Hauptvorteile von EbsScript ist das Feature, mit dem Sie Berechnungen für unterschiedliche Profile durchführen können. Innerhalb von EbsScript können Sie neue Profile erstellen und von einem zum anderen Profil umschalten. Für die Profiloperationen werden folgende Profile festgelegt:
Das aktuelle Berechnungsprofil wird zur Durchführung einer Rechnung verwendet. Es wird weiterhin zum Lesen von Werten aus demModell oder zum Schreiben von Werten ins Modell benutzt. Zusätzlich gelten eine Menge Profiloperationen für dieses Profil (siehe Kapitel "Profile" in der EbsScript-Funktionsübersicht).
Das aktuelle Elternprofil wird zur Erstellung eines neuen Unterprofils verwendet, d.h. das neue Unterprofil ist ein Kindprofil des aktuellen Elternprofils. Das aktuelle Elternprofil muss nicht das Elternprofil des aktuellen Berechnungsprofils sein (dies ist allerdings dann der Fall, wenn man in einem Unterprofil arbeitet, das man gerade innerhalb EbsScripts erstellt hat).
Wenn man EbsScript startet, werden beide, das aktuelle Berechnungs- und das aktuelle Elternprofil, auf das Profil gesetzt, das aktiv war, als EbsScript aufgerufen wurde.
Beispiel: Wenn Sie EbsScript starten, während Sie sich in Profil A befinden und die Befehle
newSubProfile;
newSubProfile;
ausführen, erhalten Sie zwei neue Profile, die Kinder von Profil A sind.
Wenn das zweite neue Profil ein Kind des ersten sein soll, müssen Sie
i:=newSubProfile;
setParentProfile( i );
newSubProfile;
schreiben.
Es besteht die Möglichkeit, auf COM-Bibliotheken zuzugreifen. Die entsprechenden Datentypen und Funktionen sind in der interface “@ComObj´“definiert
Unter „EbsScript -> Add Unit from Typelib“ kann im EbsScript-Editor ein Typbibliotheks-Importier-Dialog geöffnet werden. Mit den damit erstellten EbsScript-Units können COM-Objekte instantiiert und verwendet werden. Damit ist eine einfache Kommunikation zwischen EbsScript und COM-fähigen Programmen möglich.
Die Interface-Unit „@Python“ ermöglicht das Ausführen von Python-Code direkt aus EbsScript heraus. Es können sowohl Code direkt als auch Python-Dateien (*.py) ausgeführt werden. Zum Verwenden der Schnittstelle muss
Während der Ausführung eines EbsScripts bleibt das globale Dictionary von Python erhalten, d.h. mehrere hintereinander ausgeführte Aufrufe an Python können z.B. Python-Variablen anlegen und anschließend auslesen.
ACHTUNG: Nach der Beendigung eines EbsScripts wird das globale Python-Dictionary gelöscht. Ein Zugriff auf Variablen aus
einem vorhergehenden EbsScript-Laufes ist damit über das Dictionary nicht möglich (kann z.B. mittels „Python-pickling“ erreicht werden).
Folgende Funktionen/Prozeduren sind in „@Python“ enthalten:
function pyEvaluate(expression:string):variant; internal;
Evaluiert „expression” und gibt das Ergebnis zurück.
procedure pyExecute(expression:string); internal;
Führt den Code in „expression” aus.
procedure pyExecuteFile(file:string); internal;
Führt den in „file” enthaltenen Code aus.
function pyGetVariable(name:String):variant; internal;
gibt den Wert der globalen Variablen „name“ (d.h. Element des globalen Dictionary) zurück.
procedure pySetVariable(name:String; const value:variant); internal;
setzt den Wert der globalen Variablen „name“.
Wenn das zweite neue Profil ein Kind des ersten sein soll, müssen Sie
i:=newSubProfile;
setParentProfile( i );
newSubProfile;
schreiben.
Es besteht die Möglichkeit, auf COM-Bibliotheken zuzugreifen. Die entsprechenden Datentypen und Funktionen sind in der interface “@ComObj´“definiert
Unter „EbsScript -> Add Unit from Typelib“ kann im EbsScript-Editor ein Typebibliotheks-Importier-Dialog geöffnet werden. Mit den damit erstellten EbsScript-Units können COM-Objekte instantiiert und verwendet werden. Damit ist eine einfache Kommunikation zwischen EbsScript und COM-fähigen Programmen möglich.
Anonyme Funktionen sind Funktionen oder Prozeduren ohne Namen. Zwei einfache Beispiele:
var p:procedure();
begin
p:=procedure ()
begin
println(445);
end;
p();
end;
var f:function():string;
begin
f:=function ():string
begin
println(445);
result := "Hi";
end;
println (f());
end;
Besonders nützlich sind anonyme Funktionen in Textfeldern oder Ausdrücken.
Sie erlauben hier die Verwendung von Variablen und Funktionsaufrufen
(es besteht Zugriff auf alle EbsScript-Funktionen).
Leistung einer Windturbine als Funktion
der Windgeschwindigkeit
{ function (v : real):string
var s:string; P:real;
begin
s := "Aktuelle Windgeschwindigkeit: " + printtostring (v:5:2);
s := s + " m/s \nLeistung ";
P := Windturb.CLPower.interpolate(v);
s := s + printtostring (P:5:2) + " MW\n";
result := s;
end (Sun.VWIND) }
Weitere Beispiele finden sie unter den mitgelieferten Beispielen (Dateinamen beginnen mit anonymous_functions...).