.. highlightlang:: us .. _formelinterpreter-2---erstellung-der-formeltabelle: .. _formula-interpreter-formula-table: Formelinterpreter 2 - Erstellung der Formeltabelle ================================================== Im Kapitel :ref:`formelinterpreter-1---einfuhrung` wurde kurz auf die Erstellung der Formeltabelle eingegangen. Dies soll in diesem Kapitel noch einmal ausführlicher dargestellt werden. .. index:: Formeltabelle .. _die-formeltabelle: Die Formeltabelle ----------------- In der Formeltabelle befindet sich in jeder Zeile eine Formel. Die Formeltabelle ist besonders für einfache, kurze Formeln geeignet. Die Tabelle kann mit Excel erzeugt und bearbeitet werden. Alternativ kann die Tabelle auch als Textdatei gespeichert werden. Das folgende Bild zeigt eine Excel-Tabelle mit einer Formel: .. image:: S:/uniplot-obj/images/formel-excel-tabelle.* Die erste Zelle (A1) der Excel-Tabelle muss die Zeichenkette ``"UniPlotFormulaTable"`` oder ``"UniPlotFormelTabelle"`` enthalten. Die zweite Zeile enthält die Spaltennamen und wird ignoriert. Die Tabelle kann Leerzeilen und Kommentarzeilen enthalten. Bei Kommentarzeilen muss die Zelle in der ersten Spalte mit einem Nummernzeichen (#) beginnen. Man kann damit auch Formeln auskommentieren. Eine Beispieldatei finden Sie im Verzeichnis ``\samples``. In den weiteren Zeilen wird eine Formel pro Zeile definiert. Die Tabelle enthält 8 Spalten. Die Spalten werden nun ausführlich beschrieben. 1. Spalte - FunctionName ^^^^^^^^^^^^^^^^^^^^^^^^ In der ersten Spalte steht der Name der Formel. Die Namen müssen den Namensregeln für UniScript-Namen entsprechen. D.h. der Name muss mit einem Buchstaben oder Unterstrich beginnen. Dem ersten Zeichen können Buchstaben (a-z und A-Z, keine Umlaute oder länderspezifische Buchstaben), Ziffern und Unterstriche folgen. Der Name muss außerdem eindeutig sein, d. h. er darf nicht nochmal in der ersten Spalte der Tabelle vorhanden sein. Er sollte auch nicht in einer anderen Datei verwendet worden sein. 2. Spalte - Description ^^^^^^^^^^^^^^^^^^^^^^^ Beschreibung der Formel. Die Beschreibung wird im Kanalattribut ``Description`` in der NC-Datei gespeichert. 3. Spalte - Unit ^^^^^^^^^^^^^^^^ In dieser Spalte wird die Einheit der Formel angegeben. Die Einheit wird im Kanal-Attribut ``units`` gespeichert. 4. Spalte - Output ^^^^^^^^^^^^^^^^^^ Name des Ausgabekanals. Das ist der Name, unter dem die berechneten Daten in der NC-Datei gespeichert werden sollen. Falls in der NC-Datei der Name bereits existiert, wird der Kanal von der Formel überschrieben. Der Name muss mit einem Buchstaben oder einem Unterstrich beginnen, gefolgt von 0 oder mehr Buchstaben oder Ziffern sowie dem Unterstrich (_). Groß- und Kleinbuchstaben werden unterschieden. Sonderzeichen im Namen werden durch Unterstriche ersetzt. Umlaute werden wie folgt umgesetzt: Ä->A, ä->a, Ö->O, ö->o, Ü->U, ü->u, ß->s. Option: Missing Value Behandlung Um die missing value (ungültige Werte) Behandlung abzuschalten, wird vor den Output-Name ein ``@``-Zeichen gesetzt, z. B. ``@P_kor``. Die missing value Behandlung muss abgeschaltet werden, wenn Sie ungültige Werte mit der Funktion replace_missing() durch gültige Werte ersetzen möchten. 5. Spalte - Formula ^^^^^^^^^^^^^^^^^^^ In dieser Spalte wird die Rechenvorschrift der Formel definiert (siehe :ref:`definition-von-formeln`). Eine Tabellenformel darf nicht mehr als 255 Zeichen enthalten. Konstante Werte müssen mit dem Dezimaltrennzeichen Punkt (.) eingegeben werden. 6. Spalte - OnlyIf ^^^^^^^^^^^^^^^^^^ In dieser Spalte kann eine Bedingung angegeben werden, die darüber entscheidet, ob die Formel auf die aktive NC-Datei angewendet werden soll. Wenn keine Bedingung angegeben wird (leeres Feld), wird immer versucht, die Formel auszuwerten. Wie man eine Bedingung definiert, wird unter :ref:`definition-einer-bedingung` beschrieben. Beispiele für typische Bedingungen: ``diesel``: Berechne diesen Kanal nur bei Dieselmotoren. ``otto``: Berechne diesen Kanal nur bei Ottomotoren. ``turbodiesel``: Berechne diesen Kanal nur bei aufgeladenen Dieselmotoren. 7. Spalte - Numberformat ^^^^^^^^^^^^^^^^^^^^^^^^ Formatbescheibung, z. B. %e oder %.4f, weitere Informationen finden Sie bei der Funktionsbeschreibung von :ref:`printf`. Die Formatbeschreibung wird im Attribut ``C_format`` in der NC-Datei gespeichert. 8. Spalte - Use SI-Units ^^^^^^^^^^^^^^^^^^^^^^^^^ Falls in dieser Spalte der Wert 1 angegeben ist, wird die Formel in SI-Einheiten berechnet. Dazu werden alle Kanäle in SI-Einheiten konvertiert, bevor die Formel ausgewertet wird. Das Ergebnis der Berechnung wird in die Einheit konvertiert, die in Spalte 3 definiert ist. Eine Formel wird nur berechnet, wenn alle Einheiten in der Einheitentabelle enthalten sind. Siehe auch :ref:`unit-converter`. (Neu in UniPllot R2013.11.) 9. Spalte - Comment ^^^^^^^^^^^^^^^^^^^ Bis UniPlot R2013.11 stand der Kommentar in Spalte 8. In dieser Spalte kann ein Kommentar eingetragen werden. .. index:: Konstantentabelle .. _die-konstantentabelle: Die Konstantentabelle --------------------- In dieser Tabelle werden die Konstanten gespeichert. Der Name einer Konstanten muss eindeutig sein. Der Name sollte also nicht mit einem globalen NC-Dateiattribut (Stammdatum) oder einem Kanalnamen übereinstimmen. Mit der Funktion :ref:`ch` werden Daten aus einer NC-Datei oder aus der Konstantentabelle gelesen. Die Funktion geht dabei wie folgt vor: Zuerst prüft die Funktion, ob ein Kanal mit dem angegebenen Namen existiert. Falls kein Kanal existiert, prüft die Funktion, ob ein globales Attribut in der NC-Datei mit dem Namen existiert. Falls auch kein globales Attribut existiert, prüft die Funktion, ob der angegebene Name mit einen Namen aus der Konstantentabelle übereinstimmt und liefert den entsprechenden Wert zurück. Das folgende Bild zeigt eine Konstantentabelle: .. image:: S:/uniplot-obj/images/formel-Konstantentabelle.* Die Zelle "A1" enthält die Zeichenkette ``"UniPlotFormulaConstants"`` oder ``"UniPlotFormelKonstanten"``. Die zweite Zeile enthält die Spaltenüberschriften. Die folgenden Zeilen enthalten die Konstanten. Die Tabelle enthält 4 Spalten: 1. Spalte - Name Name der Konstanten 2. Spalte - Unit Einheit der Konstanten. 3. Spalte - Description Beschreibung der Konstanten 4. Spalte - Value Wert der Konstanten. Wie bei der Formeltabelle werden Leer- und Kommentarzeilen ignoriert. Kommentarzeilen beginnen in der erste Spalte mit einem Nummern-Zeichen (#). Die Konstantentabelle kann als separate Excel-Datei oder als Tabellenblatt innerhalb der Excel-Formel-Datei gespeichert werden. Beim Konvertieren der Formeltabelle wird auch die Konstantentabelle in eine UniScript-Map konvertiert. .. _formeltabelle-laden.: Formeltabelle laden ------------------- .. us.bug missing .. index:: Konvertierung der Formeltabelle .. _formel-konfiguration: Formel-Konfiguration -------------------- Um die in der Tabelle definierten Formeln in UniPlot zu laden, gehen Sie wie folgt vor: * Starten Sie UniPlot. * Wählen Sie :ref:`extrasformel-konfiguration`. .. image:: S:/uniplot-obj/images/formel-konfiguration-dlg.* * Im Suchpfad geben Sie die Verzeichnisse an, in denen sich Formeltabellen befinden. * Drücken Sie :guilabel:`OK`. Falls die Tabelle ungültige Formeln enthält, wird eine Fehlerliste erzeugt und in einem Editor angezeigt. Konnten die Formeln fehlerfrei konvertiert werden, stehen sie sofort für die Berechnung zur Verfügung. UniPlot muss also nicht neu gestartet werden. Bevor die Formeln geladen werden, werden alle bereits geladenen Formeln gelöscht. Damit es es möglich zwischen zwei verschiedenen Formelsätze in unterschiedlichen Verzeichnissen zu wechseln. Die Tabellenformeln werden von einem Programm in Skript-Formeln umgewandelt und in Textdateien gespeichert. Der Dateiname setzt sich aus der Vorsilbe ``_fi_`` und dem Namen der Formel mit der Erweiterung :file:`.ic` zusammen, beispielsweise :file:`_fi_Power.ic`. Die Formeln in diesen Datei sollten nicht manuell bearbeitet werden, da die Dateien bei erneuter Konvertierung überschrieben werden und damit die Änderungen verloren gehen würden. .. _formeln-debuggen: Formeln debuggen ---------------- Um eine Formel zu debuggen, öffnen Sie die entsprechende IC-Datei. Um einen Anhaltepunkt zu setzen, klicken Sie die gewünschte Zeile innerhalb der Funktion an und drücken dann :kbd:`F9`. Falls kein Anhaltepunkt gesetzt werden kann, drücken Sie :kbd:`F4` um die Funktion zu übersetzen und drücken dann wieder :kbd:`F9`. Am linken Rand wird dann ein roter Punkt angezeigt. Öffnen Sie dann die gewünschte Datendatei mit dem Datenbrowser und drücken :kbd:`F9` um die Formeln neu zu berechnen. Falls die Formel berechnet werden kann, wird die Programmausführung am Anhaltepunkt unterbrochen. .. image:: S:/uniplot-obj/images/editor-debug.* Mit :kbd:`F10` bzw. :kbd:`F11` können Sie die Funktion durchlaufen. Um sich Werte von Variablen anzuschauen, platzieren Sie den Mauscursor auf einer Variablen. Der Wert wird dann in einem kleinen Fenster angezeigt. Weitere Informationen zum Debuggen finden Sie unter :ref:`der-debugger-fur-funktionen`. Zum nächsten Abschnitt: :ref:`formelinterpreter-3---erstellung-von-scriptformeln`. :sub:`id-6196`