Software: SimX - Magnetoptimierung - Magnetische Durchflutung anstatt konkreter Spule: Unterschied zwischen den Versionen

Aus OptiYummy
Zur Navigation springenZur Suche springen
Zeile 18: Zeile 18:
Ohne das bisherige Modell zu zerstören, werden wir die Möglichkeit ergänzen, die Durchflutung '''iw''' als unabhängige Variable zu benutzen:
Ohne das bisherige Modell zu zerstören, werden wir die Möglichkeit ergänzen, die Durchflutung '''iw''' als unabhängige Variable zu benutzen:
* Ist '''iw< 0''', so soll das Modell wie bisher über '''iSpule''' und '''wSpule''' parametrisiert werden.
* Ist '''iw< 0''', so soll das Modell wie bisher über '''iSpule''' und '''wSpule''' parametrisiert werden.
* Ist '''iw>=0''', so wird '''iSpule=iw/wSpule''' benutzt. Es wird eine hinreichend große Windungszahl benutzt(z.B. '''wSpule=1000''').   
* Ist '''iw>=0''', so wird '''iSpule=iw/wSpule''' benutzt. Es wird eine hinreichend große Windungszahl benutzt(z.B. '''wSpule=1000''').
Dazu wird '''Magnet.LUA''' wie folgt erweitert:    
    :
    '''iw=-1;                      -- mag. Durchflutung (deaktiviert)'''
-- Parameter aus Textdatei einlesen mit Fehlertest
    in = openfile(mydir .. "Eingabe.txt","r"); -- Datei öffnen zum Lesen
    if in then -- wenn Datei geöffnet, dann Werte einlesen
    read(in, "*l"); dMagnet= read(in, "*l", "*n");
    read(in, "*l"); hTopf  = read(in, "*l", "*n");
    read(in, "*l"); dAnker = read(in, "*l", "*n");
    read(in, "*l"); lAnker = read(in, "*l", "*n");
    read(in, "*l"); hDeckel= read(in, "*l", "*n");
    read(in, "*l"); dStift = read(in, "*l", "*n");
    read(in, "*l"); dWand  = read(in, "*l", "*n");
    read(in, "*l"); wSpule = read(in, "*l", "*n");
    read(in, "*l"); dLack  = read(in, "*l", "*n");
    read(in, "*l"); sWickel= read(in, "*l", "*n");
    read(in, "*l"); sAnker = read(in, "*l", "*n");
    read(in, "*l"); sDeckel= read(in, "*l", "*n");
    read(in, "*l"); sGleit = read(in, "*l", "*n");
    read(in, "*l"); iSpule = read(in, "*l", "*n");
    '''read(in, "*l"); iw    = read(in, "*l", "*n"); if iw == nil then iw=-1; end;'''
    else print("Could not open Eingabe.txt"); end;
    closefile(in);
-------------------------------------------------------------------------------
-- Unzulässige Eingabe-Parameter von OptiY begrenzen                        --
-------------------------------------------------------------------------------
    if 1*sAnker  < 0.03  then sAnker=0.03;  end;
    if 1*sAnker  > 5    then sAnker=5;    end;
    if 1*sGleit  < 0.05  then sGleit=0.05;  end;
    if 1*sGleit  > 1    then sGleit=1;    end;
    if 1*sDeckel < 0.01  then sDeckel=0.01; end;
    if 1*sDeckel > 1    then sDeckel=1;    end;
    if 1*iSpule  <=1E-10 then iSpule=1E-10; end; -- damit R und L berechenbar!
'''-------------------------------------------------------------------------------'''
'''-- Wenn kein iw angegeben wurde, wird die Durchflutung aus i*w berechnet    --'''
'''-------------------------------------------------------------------------------'''
    '''if 1*iw      < 0    then  iw=iSpule*wSpule; else wSpule=1000; end;'''
    '''iSpule      = iw/wSpule;'''
    :
Die Kennfeld-Identifikation in OptiY muss mit diesem LUA-Script dass gleiche Ergebnis erzielen, wie zuvor.
 
Wir werden nun den Experiment-Workflow so umgestalten, dass anstatt des Spulenstroms die magnetische Durchflutung als Variable benutzt wird:
* Dazu erweitern wir zuerst das Input-File '''Eingabe.txt''' um den Wert für die Durchflutung, die wir mit einem negativen Wert vorläufig deaktivieren:
dMagnet
40
hTopf
27.5
dAnker
10
lAnker
10
hDeckel
2.5
dStift
1
dWand
1
wSpule
400
dLack
0.06
sWickel
0.5
sAnker
1.000000E+000
sDeckel
0.01
sGleit
0.1
iSpule
4.000000E+000
'''iw'''
'''-1'''





Version vom 23. Juni 2010, 08:39 Uhr

Magnetische Durchflutung anstatt konkreter Spule


Mit dem bisherigen Finite Element Modell gewinnt man Kennfelder des Wandlers, welche nur für eine konkrete Anzahl von Windungen gültig sind:

  • Ein wesentlicher Aspekt der Magnetoptimierung ist die Ermittlung einer optimalen Windungszahl.
  • Variationen der Windungszahl im Optimierungsprozess würden deshalb ständig Aktualisierungen der Kennfelder mittels langwieriger FEM-Simulationen erfordern.

Um die Windungszahl als Parameter des Finite Element Modells zu elimieren, nehmen wir folgende Änderungen vor:

  1. Ersatz des Spulenstroms i durch die magnetische Durchflutung i*w
  2. Ersatz des Koppelflusses Psi durch den mittleren Windungsfluss Psi/w


Magnetische Durchflutung

In der Öffnung unserer relativ langen Zylinderspule gilt bei hunderten Windungen näherungsweise für die magnetische Durchflutung

Θ=iSpule*wSpule

Ohne das bisherige Modell zu zerstören, werden wir die Möglichkeit ergänzen, die Durchflutung iw als unabhängige Variable zu benutzen:

  • Ist iw< 0, so soll das Modell wie bisher über iSpule und wSpule parametrisiert werden.
  • Ist iw>=0, so wird iSpule=iw/wSpule benutzt. Es wird eine hinreichend große Windungszahl benutzt(z.B. wSpule=1000).

Dazu wird Magnet.LUA wie folgt erweitert:

   : 
   iw=-1;                       -- mag. Durchflutung (deaktiviert) 
-- Parameter aus Textdatei einlesen mit Fehlertest
   in = openfile(mydir .. "Eingabe.txt","r"); -- Datei öffnen zum Lesen
   if in then -- wenn Datei geöffnet, dann Werte einlesen
   read(in, "*l"); dMagnet= read(in, "*l", "*n");
   read(in, "*l"); hTopf  = read(in, "*l", "*n");
   read(in, "*l"); dAnker = read(in, "*l", "*n");
   read(in, "*l"); lAnker = read(in, "*l", "*n");
   read(in, "*l"); hDeckel= read(in, "*l", "*n");
   read(in, "*l"); dStift = read(in, "*l", "*n");
   read(in, "*l"); dWand  = read(in, "*l", "*n");
   read(in, "*l"); wSpule = read(in, "*l", "*n");
   read(in, "*l"); dLack  = read(in, "*l", "*n");
   read(in, "*l"); sWickel= read(in, "*l", "*n");
   read(in, "*l"); sAnker = read(in, "*l", "*n");
   read(in, "*l"); sDeckel= read(in, "*l", "*n");
   read(in, "*l"); sGleit = read(in, "*l", "*n");
   read(in, "*l"); iSpule = read(in, "*l", "*n");
   read(in, "*l"); iw     = read(in, "*l", "*n"); if iw == nil then iw=-1; end;
   else print("Could not open Eingabe.txt"); end;
   closefile(in);
-------------------------------------------------------------------------------
-- Unzulässige Eingabe-Parameter von OptiY begrenzen                         --
-------------------------------------------------------------------------------
   if 1*sAnker  < 0.03  then sAnker=0.03;  end;
   if 1*sAnker  > 5     then sAnker=5;     end;
   if 1*sGleit  < 0.05  then sGleit=0.05;  end;
   if 1*sGleit  > 1     then sGleit=1;     end;
   if 1*sDeckel < 0.01  then sDeckel=0.01; end;
   if 1*sDeckel > 1     then sDeckel=1;    end;
   if 1*iSpule  <=1E-10 then iSpule=1E-10; end; -- damit R und L berechenbar!
-------------------------------------------------------------------------------
-- Wenn kein iw angegeben wurde, wird die Durchflutung aus i*w berechnet     --
-------------------------------------------------------------------------------
   if 1*iw      < 0     then  iw=iSpule*wSpule; else wSpule=1000; end;
   iSpule       = iw/wSpule;
   :

Die Kennfeld-Identifikation in OptiY muss mit diesem LUA-Script dass gleiche Ergebnis erzielen, wie zuvor.

Wir werden nun den Experiment-Workflow so umgestalten, dass anstatt des Spulenstroms die magnetische Durchflutung als Variable benutzt wird:

  • Dazu erweitern wir zuerst das Input-File Eingabe.txt um den Wert für die Durchflutung, die wir mit einem negativen Wert vorläufig deaktivieren:
dMagnet
40
hTopf
27.5
dAnker
10
lAnker
10
hDeckel
2.5
dStift
1
dWand
1
wSpule
400
dLack
0.06
sWickel
0.5
sAnker
1.000000E+000
sDeckel
0.01 
sGleit
0.1 
iSpule
4.000000E+000
iw
-1


===>>> Hier geht es bald weiter !!!