EBSILON®Professional Online Dokumentation
EbsScript / Anwendung
In diesem Thema
    Anwendung
    In diesem Thema

    Anwendung von EbsScript


    Erstellung und Ausführung

    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.

     

    Zugriff auf Modelldaten

    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".

     

    Eingabe und Ausgabe

    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.

     

    Einheitensysteme

    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.

     

    Profile

    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.

     

    Anwendung von EbsScript


    Erstellung und Ausführung

    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.

     

    Zugriff auf Modelldaten

    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".

     

    Eingabe und Ausgabe

    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.

    Hinweise (Release 11)

    Einheitensysteme

    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.

     

    Profile

    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.

     

    COM-Interface

    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. 

     

    Python-Interface

    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   

    1. Es muss Python installiert sein (Version 2.7 oder 3.0 oder neuer). Python für Windows kann von https://www.python.org/downloads/windows/ heruntergeladen werden.
    2. die Python-Erweiterung "Python for Windows Extensions" muss installiert sein (siehe z. B. http://sourceforge.net/projects/pywin32/ ).
    3. die COM-Klasse "EbsScriptPython.Interpreter" muss registriert werden: führen Sie dazu das Python-Skript “<Ebsilon-Install-Path>/Data/Python/ebsscript_python_interpreter.py” mit Python aus.

    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.


     

    COM-Interface

    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

    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...).