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

    EbsScript Kompilierung


     

    Wenn das EbsScript während der Ausführungszeit ausgewertet werden würde, wäre die Ausführung relativ langsam. Deshalb wird ein Compiler verwendet, der das PASCAL-Script in Maschinencode der ”Virtuellen Maschine” (eine Software Emulation einer echten Maschine) transformiert, der dann das Script ausführt. Der Compiler wird automatisch jedes Mal vor der Ausführung im EbsScript Editor oder EbsScript Executor aufgerufen, wenn sich eine Änderung ergeben hat.

    Durch den EbsScript-Compiler wird insbesondere auch die Anzeige von Textfeldern, in denen EbsScripts hinterlegt sind, stark beschleunigt, da sie nicht bei jeder Bildauffrischung erneut übersetzt werden müssen.


    Zusätzlich kann man den Compiler manuell mit dem Befehlmenü ”ErstellenàSyntaktische Analyse” starten. Dadurch kann man die Richtigkeit der Syntax prüfen, bevor man das Script ausführt.

    Der EbsScript Compiler ist ein spezieller, den Anforderungen für den Gebrauch innerhalb Ebsilon angepasster PASCAL-Compiler. Deshalb gibt es dort mehrere Erweiterungen zur Sprache und mehrere spezielle Funktionen, während andere wenig genutzte Konstruktionen nur eingeschränkt verfügbar sein können.

    Die Eingabe für den EbsScript Compiler ist solch ein Script:

    var  

          CoolantTemp : integer; 

          InletTemp   : real;    

          OutletTemp  : real;

          deltaTemp   : real;

          counter     : integer;

    begin 

          counter := 0;

          setParentProfileByName ("Variation_C");

          for CoolantTemp := 60 to 85 step 5 do

          begin

                newSubProfile;

                HeatConsumer_PrimaryCircuit.T2SET := CoolantTemp;

                simulate;

                InletTemp  := last.CoolantInlet_Secondary.T;

                OutletTemp := last.CoolantOutlet_Secondary.T;

                deltaTemp  := OutletTemp - InletTemp;

                counter    := counter + 1;

                print ("Variation ", counter," :\n",

                        "The resulting power output ",

                       "with coolant inlet temperature of ",

                       last.CoolantInlet_Secondary.T, " \°C  is: ",

                       last.GeneratorOutlet.Q, " kW.  \n",

                       "Rise of coolant temperature is: ",

                       deltaTemp, " \°C.\n" 

                       ); 

                if CoolantTemp = 85.0 then

                begin

                    print ("This is the end\n");

                end;

          end;

    end.  

    Sollte ein Fehler in der Kompilierungszeit auftreten, erscheint eine Fehlermeldung wie hier unten zu sehen, und das Script wird nicht ausgeführt.

     Diese Fehlermeldung besagt, dass in Zeile 19 eine ")" fehlt.

     

    EbsScript Optionen

    Alle Optionen wurden unter dem Menüpunkt "Extras" zusammengefasst.

    Auf dem Blatt "Editor" können Einstellungen für die Ausgabe des EbsScriptes vorgenommen werden:

    Compiler Optionen können mit dem Menü ”ExtrasàOptionen…” auf dem Blatt "Syntax" (innerhalb) eingestellt werden.

     

     

    Mit aktivieren der Checkbox "Programmblock muss mit 'end.' abschließen" erwartet der EbsScript Compiler ein "end." am Ende eines Programmblock. Ist dies nicht der Falls generiert er eine Fehlermeldung (PASCAL Standard). Standardmäßig akzeptiert der EbsScript Compiler ”end;” ebenso.

    Die Option "Reelle Zahl als Ergebnis von Integer-Divisionen" regelt, ob eine Division zweier Integerzahlen eine Reelle Zahl zurückgibt oder ein Integer.
    Standardmäßig ist in PASCAL das Ergebnis einer Division zweier Integerzahlen eine Integerzahl. Da dies – insbesondere bei Verwendung in Vorgabefeldern – leicht zu unerwarteten Ergebnissen führt, besteht die Möglichkeit einzustellen, dass das Ergebnis einer Division zweier Integerzahlen eine reelle Zahl sein soll.

    Diese Einstellung kann auch in den Allgemeinen Einstellungen\Fortgeschritten\EbsScript\ vorgenommen werden. Dort besteht auch die Möglichkeit, Warnungen im Falle einer Integerdivision zu aktivieren und zu deaktivieren. Standardmäßig sind die Warnungen aktiviert.

     

    Compiler-Direktiven

    Die Einstellungen des EbsScript-Compilers, die unter „Extras“ à „Optionen“ ausgewählt werden, können auch zur Laufzeit abgefragt oder geändert werden. Zu diesem Zweck gibt es die folgenden Compiler-Direktiven:

    Wenn diese Direktive gesetzt ist, kann das Schlüsselwort „result“ als Synonym für den Funktionswert verwendet werden, insbesondere auch auf der rechten Seite einer Zuweisung.

    Bei diesen Direktiven wird die jeweilige Option durch das Argument (+) aktiviert und durch (-) deaktiviert. Durch (show) kann man den aktuellen Status abfragen (die Ausgabe erscheint dann im Konsolenfenster). Durch (push) bzw. (pop) wird der aktuelle Zustand abgelegt bzw. wiederhergestellt. Mit leerem (push) kann man den aktuellen Zustand kopieren.

    Für die Umstellung des Kontextes (um zum Beispiel beim Kompilieren in einen Makro-Kontext zu springen) gibt es die folgende Direktive:

    Kontextfreies Kompilieren:

    Mit dem Pragma

       

    Hinweis:
    Reelle Zahlen als Ergebnis von Integer-Divisionen

    Standardmäßig ist in PASCAL das Ergebnis einer Division zweier Integerzahlen eine Integerzahl. Da dies – insbesondere bei Verwendung in Vorgabefeldern – leicht zu unerwarteten Ergebnissen führt, besteht die Möglichkeit, im EbsScript-Editor unter „Extras“à „Optionen“, „Syntax“ einzustellen, dass das Ergebnis einer Division zweier Integerzahlen eine reelle Zahl sein soll.
    Diese Einstellung kann auch in den allgemeinen Einstellungen unter „Fortgeschritten“ à„EbsScript“ vorgenommen werden. Dort besteht auch die Möglichkeit, Warnungen im Falle einer Integerdivision zu aktivieren und zu deaktivieren. Standardmäßig sind die Warnungen aktiviert.

     

    Mit dem Blatt "Laufzeit" kann man einstellen, ob zur Laufzeit ein "Abbrechen"-Fenster angezeigt werden soll, um die Ausführung abbrechen zu können (wobei ein Abbrechen mit der Taste ESC immer möglich ist, auch wenn das "Abbrechen"-Fenster nicht angezeigt wird) und ob bei Beendigung des EbsScripts das Profil beibehalten werden soll, das im EbsScript eingestellt wurde (wenn es überhaupt verändert wurde), oder ob wieder das vor dem Aufruf aktive Profil aktiviert werden soll.