Software: SimX - Magnetoptimierung - Magnetische Durchflutung anstatt konkreter Spule: Unterschied zwischen den Versionen
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
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:
- Ersatz des Spulenstroms i durch die magnetische Durchflutung i*w
- 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
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 !!!