EBSILON®Professional Online Dokumentation
In diesem Thema
    Makros
    In diesem Thema

    Makros

    Mit dem "neuen", hier beschriebenen Makro-Mechanismus kann man sich aus Einzelbauteilen eigene Bauteile zusammenbauen, die als Teilmodell bzw. ”Black Box” in Schaltungen eingebaut werden können. Dabei können

     definiert werden. Für diese EbsScripte wird ein eigenständiger Namensraum verwendet, so dass auch bei Mehrfachverwendung eines solchen Makros keine Konflikte entstehen.

    Diese Makros werden als Rechtecke dargestellt.

    Verwendung von Makros

    Makros können wie normale Bauteile verwendet werden. Man kann sie bewegen, kopieren und einfügen (mehrfach in verschiedene Schaltungen).

    Durch einen Doppelklick öffnet man das Eigenschaftenfenster des Makros, auf dem die extern (außen) sichtbaren Eigenschaften des Makros betrachtet und modifiziert werden können.

    Welche Eigenschaften in der Außenansicht sichtbar sein sollen, wird bei der Erstellung des Makros in dessen Innenansicht definiert.

    Um die internen Eigenschaften des Makros zu ändern, muss das Makro geöffnet werden. Dann wird die Innenansicht in einem neuen Fenster dargestellt.

    Makros können geschützt werden, so dass bei so geschützten Makros die Innenansicht nicht geöffnet werden kann.

    Erstellung von Makros

    Mit dem Menübefehl "Einfügen"à"Makro-Objekt" wird ein neues Makro in die Schaltung eingefügt. Man kann es nun positionieren und seinen Namen und die Beschreibung ändern. Diese Beschreibung erscheint auch als Text auf dem Makro-Rechteck.

    Bearbeitung von Makros

    Klickt man mit der rechten Maustaste auf das Makro, kann man mit dem Befehl "Makro-Object öffnen" das Makro öffnen.

    Um ein Makro zum Bearbeiten zu öffnen, kann auch die mittlere Maustaste verwendet werden. Ein Doppelklick mit der mittleren Maustaste auf das Makro-Objekt öffnet das entsprechende Makro, ein Doppelklick mit der mittleren Maustaste auf das Interface-Objekt im Inneren des Makros öffnet die entsprechende übergeordnete Instanz, in der das Makro enthalten ist.

     

    Es erscheint dann ein neues Fenster, das die "Innenansicht" des Makros" anzeigt. Dieses Fenster ist ein weiteres Fenster für die zuvor geöffnete Schaltung, und man kann einfach zwischen den Fenstern hin- und herwechseln, um zwischen "Innenansicht" und "Außenansicht" zu wechseln.

    Durch einen Doppelklick auf das Makro in der "Innenansicht" kann man das interne Eigenschaftenfenster des Makros öffnen. In diesem Fenster kann man festlegen, welche Eigenschaften nach außen hin sichtbar sein sollen.

     

    Das Makro-Eigenschaften Fenster (innere Ansicht)

    Die Eigenschaften des Makros (intern) werden auf den nachfolgenden genannten Blättern angezeigt:

    Abhängig vom Makrotyp können einige Blätter leer sein.

    Blatt Allgemeines (Außenansicht)

     

     

    Das Feld "Name des Komponente" wird für Anzeige und Eingabe des Makronamens verwendet.

    Das Feld "Beschreibung" ist für die Eingabe einer zusätzlichen Beschreibung dieses Makros gedacht.

    Das Feld "Kennung für Leittechnik (EPOSInterface)" dient zur Verknüpfung eines Makros  mit einem Leittechnik-System. Hier ist der Name einzutragen, unter dem
    EPOSInterface die Daten von der Leittechnik erhält.

    Die Felder "Verwendungsbereich" und "Kennzeichen" stehen zur freien Verfügung und können zur Klassifizierung und Identifizierung verwendet werden (z.B. Verweis auf ein
    R&I-Schema).

    Blatt Experten (Außenansicht)

    Benutzerdefinierte Berechnung

    Die Berechnung jedes Ebsilon-Bauteils (insb. auch Makros) kann durch eine benutzerdefinierte Berechnung überschrieben werden.

    Hierfür stehen die Modi:

    Kernel-Script:

    Das Bauteil rechnet mittels eines Kernel-Scripts (wie Bauteil 93); der Zugriff auf Vorgabe-/Ergebniswerte durch die Funktionen: ksGetSPEC, ksGetRES, ksSetSPEC, ksSetRES ist nicht möglich, stattdessen kann aber direkt über den Namen auf die Werte Zugegriffen werden. Achtung: Hierfür ist die Lizenzoption EbsScript/EbsOpen notwendig.

    XUI-DLL:

    Die "XUI-DLL" wird zur Berechnung und zur Erweiterung der GUI-Funktionalität des Makros genutzt. Das Berechnungs-Interface der XUI-DLL ist identisch mit dem für das Bauteil 65. Es ist in „/Data/Examples/Programmable/ebsuser.h“ beschrieben. Der Zugriff auf Vorgabe-/Ergebniswerte, (Ergebnis-)Kennlinien, (Ergebnis-)Makros, ist ausschließlich durch das IDispatch-Interface das Bauteils mittels der EbsOpen-Schnittstelle möglich (Achtung: Hierfür ist die Lizenzoption EbsScript/EbsOpen notwendig.)

    Bei Makros bedeutet eine Überschreibung durch eine benutzerdefinierte Berechnung, dass die Bauteile innerhalb des Makros nicht gerechnet werden, sondern ausschließlich mit dem Kernel-Script / bzw. der XUI-DLL.

     

    • Pfad zu XUI-DLL

    Einstellmöglichkeit des Pfades zur DLL

    Rechnung (Außenansicht)

    Das Blatt "Rechnung" zeigt die Verwendung eines Makros durch den EBSILON®Professional-Rechenkern. 
     


     

    Geöffnetes Makro (Innenansicht)

    Anschlüsse

    Auf dem Blatt "Anschlüsse" (Innenansicht) kann man definieren, welche Anschlüsse das Makro nach außen hin haben soll.

    Durch Klick in das Feld "Zum Einfügen bitte anklicken..." kann man einen neuen Anschluss definieren, durch Markieren einer Zeile und die Taste "Löschen" einen Anschluss entfernen. Klickt man in ein Feld der 2. Spalte, erscheint eine Auswahlbox, in der man den Leitungstyp festlegen kann.

    In der dritten Spalte kann bei Anschlüssen eine Checkbox mit Überschrift "Nichts" aktiviert werden. In diesem Fall kann der Anschluss vom Benutzer ausgeblendet werden. Der Anschluss wird NUR auf der ÄUßEREN Seite des Makros ausgeblendet - im inneren des Makros bleibt er immer sichtbar.

    In der vierten Spalte wird definiert, ob es sich um einen Anschluss handelt, der in das Makro hineingeht (Eintritte sind durch kleine weiße Quadrate) oder aus dem Makro herauskommt (Austritte durch kleine schwarze Quadrate ). Der in der Spalte "Kurzbeschreibung" eingetragene Text erscheint als Beschreibung im externen Eigenschaftenfenster des Makros.

    Die Darstellung in der Schaltung erfolgt spiegelbildlich (siehe Innenansicht Makro). Sofern man das Makro nicht gedreht oder gespiegelt hat und die Positionen auch nicht verändert hat (s. u.),, liegen die Anschlüsse in der externen Darstellung oben. Eingangsleitungen sind als Eingänge und Ausgangsleitungen als Ausgänge dargestellt.

    In der internen Darstellung gehen die Anschlüsse nach unten. Eingangsleitungen werden hier als Ausgänge und Ausgangsleitungen als Eingänge dargestellt. Das Makro-Symbol stellt also in dieser Darstellung die "Außenwelt" da.

    An diese von der Außenwelt kommenden Anschlüsse schließt man die Modellierung für das Makro-Innere an. Dies kann in gewohnter Weise (wie in der "Außenwelt") geschehen. Makros können geschachtelt werden, man kann auch in der Innenwelt eines Makros weitere Makros einbauen. Da das Makro über einen eigenen Namensraum verfügt, ist man bei der Namensvorgabe im Innern unabhängig von der Außenschaltung (es kann also im Makro eine Komponente geben, die den gleichen Namen trägt wie eine andere Komponente im Außenraum).


    Anschluss-Positionen

    Auf dem Blatt "Anschlusspositionen" des internen Makro-Eigenschaftenfensters können die Anschluss-Positionen und die minimale Größe des Makro-Rechtecks definiert werden.

    Die Werte Breite und Höhe spielen eine entscheidende Rollen beim Verhältnis Breite-Höhe (aspect ratio) und bei der Größe des Makros in der finalen Schaltung.
    Wenn der Modus der Positionierung auf "benutzerdefiniert" steht, kann damit das finale Makro-Rechteck z. B. quadratisch gemacht werden oder die minimale Größe des Macro-Rechtecks gesetzt werden.

    Die minimale Makrogröße ändert sich gleichzeitig in der Innen- und der Außenansicht.

     

    Nachdem die Rohranschlüsse definiert sind, können mit dem Blatt "Anschluss-Positionen" die Rohranschlüsse ausgewählt und verschoben werden.
    Um die Positionen der Anschlüsse zu verschieben, wählen Sie in der Auswahlbox die Einstellung "Benutzerdefiniert".
    Nach der Aktivierung kann der Benutzer den Anschluss auswählen, der verschoben werden soll. Zuerst wird die "Ausrichtung" des Anschlusses definiert "Oben", "Unten", "Links" oder "Rechts" , d. h. auf welche Seite der Anschluss kommt, oder die Anordnung wird beibehalten.

    Dann kann die "Position" seitlich oder nach oben und unten bewegt werden, indem die entsprechende Position ausgewählt wird. Die Menge an verfügbaren Positionen pro Seite der Anzeige ist eine Funktion der benutzerdefinierten Höhe und Breite.
       


     

    Vorgabewerte

     

    Auf dem Blatt "Vorgabewerte" des internen Makro-Eigenschaftenfensters kann man Vorgabewerte des Makros definieren.

    Auf dem Blatt "Ergebnisse" des internen Makro-Eigenschaftenfensters kann man Ergebniswerte des Makros definieren.

    Die Verarbeitung im Inneren ist über die Makro-EbsScripte möglich. Man kann zum Beispiel einen Makro-Vorgabewert auf einen Vorgabewert einer Komponente im Makro-Inneren kopieren oder einen Makro-Ergebniswert (errechnen und) zuweisen.

    Bezeichner und Beschreibung können frei eingeben werden, die Dimension des Vorgabewerts ist der Auswahlbox auszuwählen. Diese Vorgabewerte erscheinen dann so im externen Eigenschaftenfenster, wo der Anwender die gewünschten Werte eintragen kann.

     

    Ein Häkchen bei "Tooltipp" bewirkt, dass dieser Wert im Tooltipp des Makros angezeigt wird (wenn man mit dem Cursor auf die "Außenansicht" des Makros zeigt).

     

    Wählt man als Größe bzw. Dimension "Text", so wird der Vorgabewert als Text definiert. Der Anwender kann dann statt eines Zahlenwerts einen Text eintragen.

     

    Für Vorgabewerte und Ergebniswerte besteht die Möglichkeit für die Größe Auswahlboxen vorzusehen. Sie brauchen dann keine Zahl vorzugeben, sondern wählen einen Eintrag aus der Auswahlbox (entspricht einem Flag-Vorgabewert). Diese Einträge werden im Makro definiert, in dem man bei der Festlegung der Größe des Vorgabe- bzw. Ergebniswertes ”Auswahlbox-Einträge” auswählt. Anschließend kann durch Anklicken der Schaltfläche in der Spalte ”Auswahlbox-Einträge” ein Dialog geöffnet werden, in dem man die angezeigten Texte und die zugehörigen Kennziffern definieren kann.

    Die Auswahl "XUI-Callback" als Größe bedeutet, dass die Anwahl eines in der Auswahlbox enthaltenen Größen-Eintrags über die XUI-Dll-Schnittstelle gesteuert wird (siehe xui_dll.cpp im Beispiel).

     

    Vorgabewerte können für den Nutzer des Makros auf „Nur Lesen“ gesetzt werden. Mit "Nur Lesen" werden diese Werte auf dem Eigenschaften-Blatt Vorgabewerte eines Makros zwar angezeigt, sind aber nicht veränderbar.

     

    Weiterhin kann die "Sichtbarkeit des Wertes" eingestellt werden.

    Die Sichbarkeit "XUI-Callback" bedeutet, dass die Sichtbarkeit eines solchen Wertes über die XUI-Dll-Schnittstelle gesteuert wird (siehe xui_dll.cpp im Beispiel).

     

    Auch eine „Kategorie" kann zugewiesen werden:  

    Die Kategorie wird nur bei der Darstellung genutzt:
    Nominalwerte werden blau dargestellt (wie bei allen Bauteilen).
    Vorgabewerte, die nur bei Auslegungsrechnung verwendet werden, werden lila dargestellt.
    Im EbsScript verwendete Werte werden grün dargestellt.
    Die Kategorie "XUI-Callback" bedeutet, dass die Kategorie eines solchen Wertes über die XUI-Dll-Schnittstelle gesteuert wird (siehe xui_dll.cpp im Beispiel).

     

    Gruppierung

    Mehrere Vorgabe- und Ergebniswerte eines Makros können zu Gruppen zusammengefasst werden, wie es auch bei einigen Bauteilen bereits durchgeführt wurde. Dazu sind in der Spalte "Gruppierung" Einträge zu machen:

    Gruppen können geschachtelt sein. Weitere Details können dem Beispiel unten entnommen werden. Im oberen Bild ist die innere Ansicht des Makros (Makro geöffnet) dargestellt, im unteren die äußere Ansicht (alle Gruppen geöffnet).

     

     

     

     

    Automatisch übertragen

    Im Makro definierte Vorgabewerte können direkt an Vorgabewerte von Bauteilen innerhalb des Makros gekoppelt werden. Dadurch erspart man sich die Zuweisung im EbsScript. Hierzu trägt man auf dem Blatt Vorgabewerte des MakroInterface-Eigenschaftenfensters in der Spalte „Auto-Transfer“ bzw. "automatisch übertragen" den gewünschten Vorgabewert ein, auf den der Wert übertragen werden soll. Um einen Makro-Vorgabewert mehreren Vorgabewerten innerhalb des Makros zuzuweisen, können auch mehrere Vorgabewerte eingetragen werden (mit „;“ getrennt) - siehe dazu auch das Beispiel oben.

    Analog ist auch eine automatische Kopplung von Ergebniswerten möglich. Hierbei können in der Spalte „Auto-Transfer“ bzw. "automatisch übertragen" auch Ausdrücke verwendet werden. Auch Kennlinien, Ergebniskennfelder, Matrizen und Ergebnismatrizen können auf diese Weise gekoppelt werden, jedoch immer nur als Ganzes (durch Angabe des Namens der Kennlinie/Matrix).

    Bei fehlerhafter Eingabe erfolgt bei einer Simulation eine Fehlermeldung mit Verweis auf das Makro.


     

    Ergebnisse

    Auf dem Blatt "Ergebnisse" des internen Makro-Eigenschaftenfensters kann man Ergebniswerte definieren. Bezeichner und Beschreibung können frei eingeben werden, die Dimension des Vorgabewerts aus der Auswahlbox ausgewählt werden. Diese Ergebniswerte erscheinen dann so im externen Eigenschaftenfenster.

    Die Besetzung der Ergebniswerte muss in einem EbsScript im Inneren des Makros erfolgen. Die dabei eingetragenen Werte sind dann nach Abschluss der Rechnung in der Außenwelt sichtbar.

    Weitere Informationen siehe Abschnitt "Vorgabewerte".


     

    EbsScripte

    Auf dem Blatt "EbsScripte" des internen Makro-Eigenschaftenfensters kann man EbsScripte definieren.

     

    Wenn eine Berechnung (Simulation oder Validierung) durchgeführt wird und in der Schaltung Makros vorhanden sind, wird vor dem Aufruf des EBSILON®Professional-Rechenkerns das "EbsScript zur Ausführung vor der Rechnung" aufgerufen. Somit hat man in diesem EbsScript die Möglichkeit, Spezifikationswerte in die Bauteile im Innern des Makros einzutragen. Die Leitungswerte (Ergebnisse der Berechnung) stehen in diesem Moment allerdings noch nicht zur Verfügung, da die Berechnung noch nicht erfolgt ist.

    Nach Abschluss der Berechnung wird das "EbsScript zur Ausführung nach der Rechnung" aufgerufen. In diesem EbsScript stehen nun auch alle Leitungswerte zur Verfügung. Es kann dazu verwendet werden, Ergebnisse aus dem Inneren in die nach außen sichtbaren Ergebniswerte zu übertragen.   

    Auf der Spezifikationsseite für EbsScripte gibt es einen dritten Eintrag für die Übernahme von Nominalwerten. Hier kann ebenfalls mittels EbsScript-Funktions-Implementierungen für die Funktionen „hasNominalValues“ und „takeOverNominalValues“ das Verhalten des Makros bestimmt werden. Der Rückgabewert von „hasNominalValues“ bestimmt, ob das Makro im Nominalwert-Übernahme-Dialog angezeigt wird (sofern der Anwender dies nicht in den allgemeinen Einstellungen ausgeschlossen hat), und ob die Funktion „takeOverNominalValues“ aufgerufen wird.

    function hasNominalValues():boolean;
    begin

           // return true to indicate that the component
           // has calculated new nominal values
           hasNominalValues:=false;
    end; 

    procedure takeOverNominalValues(source_profile_id, real_target_profile_id : integer; full_specification:boolean);
    begin

        // copy the nominal-values in this procedure
        // arguments reflect the selection from the user in the dialog after the calculation
        // (resp. the preselected options)
    end;

    Beispiel-Modell Makro_NominalValues.ebs:

    Das Beispiel zeigt eine Zusammenführung mit Druckverlust. Eine Anpassung des Bauteils 60 für den Modus P2=min(P1,P3) bei dem die Richtung der Druckvorgabe umgedreht werden kann und der Druck in der Leitung mit dem höheren Druck über den Druckverlust eines Bauteils 2 berechnet wird. 

    Das Modell hat vier Profile

    ·         Globale Auslegung

    ·         Lokale Auslegung

    ·         Identifikation

    ·         Simulation 

    In lokaler und globaler Auslegung können die Nominalwerte jeweils aus dem Berechnungsergebnis übernommen werden.


     

    Kennlinien

    In Makros können auch Kennlinien verwendet werden. Hierzu müssen innerhalb des Makros für jede Kennlinie

    angegeben werden.

    Suchen von Objekten in Makros

    Um Objekte zu suchen, die sich innerhalb von Makros befinden, kann man im Suchen-Dialog (Fernglas-Icon) die Checkbox ”Makros öffnen” aktivieren. Dadurch werden auch Objekte in Makros in die Suche einbezogen.

    QT-Diagramme für Makros

    Standardmäßig werden QT-Diagramme über Makro-Grenzen hinweg gezeichnet, d.h. die in einem Makro enthaltenen Wärmetauscher werden genau wie die Wärmetauscher außerhalb des Makros im Diagramm dargestellt.

    Es besteht die Möglichkeit, das Makro als Ganzes als Objekt in ein QT-Diagramm einzufügen. Zu diesem Zweck gibt es im MakroInterface-Eigenschaftendialog ein neues Blatt „QT-Diagramm“, auf dem die Interpretation der Makro-Anschlüsse für das Diagramm einzutragen ist.

    Zunächst besteht die Auswahl, ob es sich bei dem Makro um

    • keinen Wärmetauscher,

    • einen einfachen Wärmetauscher ohne Nebenkondensat,

    • einen einfachen Wärmetauscher mit Nebenkondensat oder

    • einen Duplex-Wärmetauscher

    handelt.

     

    Anschließend wird festgelegt, welche Anschlüsse Ein- und Ausgänge für die kalte bzw. heiße Seite sind (gegebenenfalls noch Nebenkondensat bzw. zweiter kalter Strang).

     

     

     

    EbsScript-Funktionen nur für Makros

    Es gibt die Funktion runEbsScript speziell für Macro-Objekte. Sie ermöglicht das explizite Ausführen der Macro-EbsScripte „Vor der Berechnung", „Nach der Berechnung" und „Übernahme der Nominalwerte".

    Beispielscript - lauffähig im Beispiel Block750.ebs:

    var rc: ebsscriptstatusenum;
    begin
    clrscr;
    rc := VW2_mit_NK::MacroInterface.runEbsScript (UserCodeTypeAfterCalculation);
    println (enumtostring(rc));
    rc := VW1_mit_NK::MacroInterface.runEbsScript (UserCodeTypeBeforeCalculation);
    println (enumtostring(rc));
    end.

    Ausgabe des Scripts:

    EbsScriptStatusOk
    EbsScriptStatusScriptNotFound

     

     

    Die Methode „getobjects(ebsobjecttype:string, includeChildContexts:boolean)" erlaubt den Zugriff auf Objekte innerhalb eines Macros (ggfs. gefiltert nach Typ bzw. ob auch Objekte aus enthaltenen Macros enthalten sein sollen).

    Beispielscript - lauffähig im Beispiel Block750.ebs:

    var eo: array of ebsobject;  ce:integer;
    begin
    eo := VW2_mit_NK::MacroInterface.getObjects ("ebspipe", true);
    for ce := low (eo) to high (eo) do begin
    println (eo[ce].name);
    end;
    end.

    Ausgabe des Scripts:

    H2O_FLUESSIG_16
    H2O_FLUESSIG_36
    Dampf
    Wasser_1
    Wasser_2
    Wasser_3