Software: FEMM - Stromfluss - OptiY-Modellinterface

Aus OptiYummy
Zur Navigation springenZur Suche springen

Simulation des Trimmens - Datenschnittstelle zum Modell
Software FEMM - Stromfluss - Optiy input-output-files.gif

Es existieren unterschiedliche Varianten, wie ein Optimierungstool die Parameterwerte (Input) eines Modells modifizieren und auf die damit berechneten Ergebniswerte (Output) zugreifen kann. Eine sehr allgemeine und übersichtliche Methode ist die Benutzung von ASCII-Textdateien für den Input/Output eines Modells:

  • Das Optimierungstool schreibt die aktuellen Parameterwerte an die dafür vorgesehenen Stellen in eine Textdatei.
  • Aus dieser Textdatei erhält das Modell seine Werte für eine Simulationsrechnung.
  • Die berechneten Ergebnisgrößen stehen nach der Simulationsrechnung wieder an definierter Stelle in einer Textdatei.
  • Das Optimierungstool liest diese Ergebniswerte aus der Textdatei und berechnet daraus die erforderlichen Änderungen der Parameterwerte für eine weitere Verbesserung des Modellverhaltens.
  • Der Zyklus beginnt dann von vorn, bis keine weitere Verbesserung mehr erreichbar ist.

Es ist im Allgemeinen besser, eine strikte Trennung zwischen Parametern (Input-File), Modell (LUA-Script) und Ergebnisgrößen (Output-File) vorzunehmen. In diesem Sinne soll das LUA-Script nun umgestaltet werden:


1. Input-Datei für Vorgabe-Parameter

Bisher sind die Input-Parameter Bestandteil des Modell-Scripts. Die Input-Parameter sollen als separate Textdatei gestaltet. Für diese Übung nennen wir die ASCII-Textdatei Input_xx.txt (mit xx=Teilnehmer-Nummer). Die Datenwerte in dieser Textdatei müssen so strukturiert werden, dass sowohl das Optimierungsprogramm als auch das Modellscript problemlos darauf zugreifen können:

s
25
Ls
500
bz
200
d
20 
RF
100 
Pmax
6.2
RN
240
Szul
0.02
PV
0.2 
SF
0.3

Achtung: Die Teilnehmer-Nummer xx kommt hier nicht in die Input-Datei, sondern bleibt Bestandteil des Modells!


2. Einlesen der Daten im LUA-Script

Die ursprünglichen Parameterwerte sollte man mit Standardwerten versehen und auskommentieren. Damit weiß man auch später noch, um welche Parameter es sich handelt.

Achtung: Die Teilnehmer-Nummer xx darf nicht auskommentiert werden!
-- Funktionelle und technologische Parameter (Standardwerte)
   xx=00; -- Teilnehmer-Nr. 00 bis 30
-- s=25; -- Schnittbreite des Laser-Strahls [µm]
-- Ls=500; -- aktuelle Länge L-Schnitt [µm]
-- bz=200; -- Breite eines Zuschlags für Fertigung [µm]
-- d=20; -- Schichtdicke in µm = Dicke 2D-Elemente
-- RF=100; -- Nennwert Flächenwiderstand der Paste [Ohm/Quadrat]
-- Pmax=6.2; -- max. zul. Leistungsdichte in Paste [W/cm²]
-- RN=240; -- Nennwert nach Trimmen [Ohm]
-- Szul=0.02; -- zulässige relative Toleranz von RN
-- PV=0.2; -- max. Verlustleistung im Betrieb [W]
-- SF=0.3; -- Fertigungsstreuung ungetrimmter Widerstand (rel.)
-- Parameter aus Textdatei einlesen mit Fehlertest
   in = openfile("e:\\femm\\Input_xx.txt","r"); -- Datei öffnen zum Lesen
   if in then -- wenn Datei geöffnet, dann Werte einlesen
   read(in, "*l");
   s = read(in, "*l", "*n");
   read(in, "*l");
   Ls = read(in, "*l", "*n");
   read(in, "*l");
   bz = read(in, "*l", "*n");
   read(in, "*l");
   d = read(in, "*l", "*n");
   read(in, "*l");
   RF = read(in, "*l", "*n");
   read(in, "*l");
   Pmax = read(in, "*l", "*n");
   read(in, "*l");
   RN = read(in, "*l", "*n");
   read(in, "*l");
   Szul = read(in, "*l", "*n");
   read(in, "*l");
   PV = read(in, "*l", "*n");
   read(in, "*l");
   SF = read(in, "*l", "*n");
   else print("Could not open Input_xx.txt"); end;
   closefile(in);
-- Berechnete Geometrie- und Material-Parameter
   :

Die Input-Zeilen mit den Parameter-Namen werden jeweils überlesen. Der auf der nächsten Zeile folgende Wert wird dem im Script definierten Parameter-Bezeichner zugewiesen.


Achtung: Es ist unbedingt zu überprüfen, ob nach der Verwendung einer Input-Datei mit den gleichen Parameter-Werten wirklich die gleichen Ergebnisse berechnet werden!


3. Output-Datei für Simulationsergebnisse

Die für die Bewertung der Simulation relevanten Ergebnisgrößen müssen ebenfalls in eine Textdatei geschrieben werden. In unserem Beispiel ist das nur der aus der aktuellen Parameterbelegung berechnete Widerstand der Anordnung:

   :
   print ("R=", R, "[Ohm]") -- Werte in Outputfeld der LUA-Cosole
   print (" mit v=", v, "[V]");
   print (" und i=", i, "[A]");
   out = openfile("e:\\femm\\Output_xx.txt", "w");
   write(out, "R=", R, "\n");
   closefile(out);

Die erforderlichen File-Operationen werden an das Ende des LUA-Scripts platziert.


4. Portabilität des Modells

Bisher ist es erforderlich, an verschiedenen Stellen des LUA-Scripts das aktuell benutzte Arbeitsverzeichnis einzutragen (im Beispiel: e:\femm\). Die erforderliche Script-Anpassung wird im Folgenden auf eine Stelle konzentriert. Dazu wird in der ersten Scriptzeile eine Variable mydir mit dem konkreten Pfad-Bezeichner belegt. Durch Verwendung von mydir wird dann an allen anderen Stellen der aktuelle Datei-Name generiert:

   mydir="E:\\femm\\";
   :
   in = openfile(mydir .. "Input_xx.txt","r"); -- Datei öffnen zum Lesen
   :
   ci_saveas(mydir .. "LaserTrimm.fec"); -- Speichern in vorh. Ordner
   :
   out = openfile(mydir .. "Output_xx.txt", "w");
   :
Hinweis: Wenn man mydir="" setzt, so müssen sich alle Daten-Files im gleichen Ordner befinden, wie das LUA-Script.


5. Verifizierung des Modells

Nach diesen Änderungen muss nach Ausführung des kompletten LUA-Scripts im FEMM in der Datei Output_xx.txt der richtige Wert für den aktuellen Widerstand stehen.


6. Einbindung in den OptiY-Workflow

Falls es nicht mehr geöffnet ist, so öffnen wir erneut OptiY mit der Datei LaserTrimm_xx.opy und ergänzen nun die fehlende Einbindung des Modells.

  • Einfügen der Symbole von Input- und Output-File auf dem Workflow, Benennung und Zuordnung der konkreten ASCII-Textdatei:
    Software FEMM - Stromfluss - Optiy Outputfile zuordnen.gif
  • Bevor wir die Nennwerte des Workflows mit der Input-Datei verbinden, beginnen wir mit der Zuordnung der einen Output-Verbindung zur Output-Datei. Wir markieren dazu im Dialogfenster des Outputfiles die zu verbindende Größe R_ist und aktivieren das "Zuordnen":
  • Nach Wahl der zuzuordnenden Output-Variablen R_ist definieren wir "R=" als Key-String, welcher vor dem eigentlichen Wert steht:
    • Nach dem Markieren des Strings führt der Klick mit der rechten Maustaste zum Definitionsmenü.
    • Wird ein Key-String definiert, so wird der Zahlenwert erst nach diesem Schlüsselwort erwartet.
  • Die zuzuordnende Output-Variable sollte immer noch ausgewählt sein. Wir definieren nun die Position des Zahlenwertes relativ zum Key-String:
  • Mit dieser Art der Definition findet OptiY den Wert für R_ist auch, wenn sich durch weitere Ergebnisgrößen die Struktur der Output-Datei ändert. Allerdings muss vor dem Zahlenwert der Key-String "R=" stehen!
  • Die Zuordnung der Workflow-Ausgangsgröße R_ist zur Output-Datei widerspiegelt sich im Workflow:
    Software FEMM - Stromfluss - Optiy Ausgang zugeordnet.gif
  • Die im Workflow noch fehlende Anbindung der In- und Outputdateien an das Modell wollen wir nun nachholen. Dazu öffnen wir durch Doppelklick den Script-Dialog zu LaserTrimm.LUA und markieren die entsprechenden Input-/Output-Verbindungen:
    Software FEMM - Stromfluss - Optiy Inout-Verbindungen.gif
  • Es fehlt noch die Zuordnung der Schnittlänge Ls und des Nennwiderstands RN zur Input-Datei. Nach Doppelklick auf Input.txt markiert man diese Input-Verbindungen:
    Software FEMM - Stromfluss - Optiy Inputparm verbinden.gif
  • Danach muss über den Button der Zuordnen-Dialog aufgerufen werden. Hier erhält OptiY die Information, wo die beiden Parameter-Werte in die Input-Datei einzutragen sind. Die Zuordnung innerhalb der Input-Datei funktioniert nach dem gleichen Schema, wie in der Output-Datei (Input-Variable wählen und zugehörigen Wert markieren). Jedoch existiert im Menü der rechten Maustaste nur die Funktion "Variable einfügen":