Wirbelstrombremse (AC)

Am Beispiel einer Wirbelstrombremse wird die magnetodynamische Rechnung (Fall v > 0) mit FSL veranschaulicht. Die nachfolgende linke Abbildung zeigt das FEMAG-Modell mit einem inneren Stator der aus einem Jochring mit aufgebrachten Permanentmagneten besteht und einem äußeren Rotor.

../../../_images/example14_topology.png ../../../_images/example14_fieldl_1.png ../../../_images/example14_fieldl_2.png

Das mittlere Bild stellt den Feldlinienverlauf im ruhenden Zustand dar und das rechte bei bewegtem Rotor. Durch die im massiven Rotor entstehenden Wirbelströme kommt es zu einer Feldverdrängung, hier noch gering, das die Drehzahl klein ist.

Permeabilität, Leitfähigkeit und Geschwindigkeit können beispielsweise über die FSL-Befehle

def_mat_fm(x,y, ...)
set_mat_perm(x,y, ...)
set_mat_cond(x,y, ...)
set_mat_velo(x,y,...)

vorgegeben bzw. geändert werden (siehe Abschnitt Material assignment).

../../../_images/example14_ecurd_1.png ../../../_images/example14_ecurd_2.png ../../../_images/example14_eclosd_1.png ../../../_images/example14_eclosd_2.png

Die Abbildungen zeigen links die Wirbelstromdichte und rechts die resultierende Verlustdichte und wurden mit den FSL-Befehlen

color_gradation(0,0,"tot","ecurd",0,0,"Filename.eps")
color_gradation(0,0,"tot","eclosd",0,0,"Filename.eps")

erzeugt (siehe Abschnitt Graphical display of results).

Nachfolgendes Skript wurde verwendet, das zusätzlich zeigt, wie die Induktion, Wirbelstromdichte und Verlustdichte an bestimmten Postitionen ermittelt und in eine Datei ausgegeben werden können, hier im Beispiel über dem Radius veranschaulicht durch die scharze Markierungen im Rotor.

../../../_images/example14_induc_1.png ../../../_images/example14_induc_2.png

Skript-Datei

--------------------------------------------------------------------------------
-- Allgemeine Einstellungen ----------------------------------------------------
--------------------------------------------------------------------------------

exit_on_error = true    -- Verhalten nach Fehler
exit_on_end = true      -- Verhalten nach Skriptausfuehrung
verbosity = 2           -- Grad der Bildschirmmeldungen
tts = 2                 -- Wartezeit zwischen den Darstellungen

new_model_force("example14", "FEMAG-AC FSL Example")

global_unit('mm')       -- Globale Einheit (m; cm; mm)
pickdist(0.001)         -- Abstand Schnappen auf Knotenpunkt
cosys('polar')          -- Polares Beszugssystem

--------------------------------------------------------------------------------
-- Modelldefinition ------------------------------------------------------------
--------------------------------------------------------------------------------

-- Magnetring
pole = 8            -- Anzahl Pole
dam = 50            -- Aussendurchmesser des Magnetrings
dim = dam-2*5.0     -- Innendurchmesser des Magnetrings
hrsi = 5            -- Rückschlusshöhe

-- Rotor
delta = 0.5         -- Luftspaltweite
dir = dam+2*delta   -- Inndendurchmesser Rotor
dar = dir+2*5.0

dn = 0.5            -- Knotenabstand

speed = 250         -- Drehzahl in 1/min

--------------------------------------------------------------------------------
-- Modellerstellung ------------------------------------------------------------
--------------------------------------------------------------------------------

ar = 360/pole       -- Segmentwinkel des Magnetrings
rim = dim/2         -- Innenradius Magnetring
ram = dam/2         -- Aussenradius Magnetring
rir = dir/2         -- Innenradius Rotor
rar = dar/2         -- Aussenradius Rotor
ril = rim-hrsi      -- Innenradius Rückschluss

nmt = math.ceil(math.pi*dam/(dn*pole))+1
nt = 2*(nmt-1)+1
nmr = math.ceil((ram-rim)/dn)
nrr = math.ceil((rar-rir)/dn)
ndelta = math.ceil(delta/dn)
if ndelta < 2 then
  ndelta = 2
end
nli = math.ceil((rim-ril)/dn)

-- Magnetring
x1,y1 = pd2c(rim, 0)
x2,y2 = pd2c(rim, ar)
x3,y3 = pd2c(ram, 0)
x4,y4 = pd2c(ram, ar)
x5,y5 = pd2c(rim, ar/2)
x6,y6 = pd2c(ram, ar/2)
nc_circle(x1,y1, x5,y5, nmt)
nc_circle(x3,y3, x6,y6, nmt)
nc_line(x1,y1, x3,y3, nmr)
nc_line(x5,y5, x6,y6, nmr)

create_mesh()
mirror_nodechains(x6,y6, x5,y5)

-- Rotor
x11,y11 = pd2c(rir, 0)
x12,y12 = pd2c(rir, ar)
x13,y13 = pd2c(rar, 0)
x14,y14 = pd2c(rar, ar)

nc_circle(x11,y11, x12,y12, nt)
nc_circle(x13,y13, x14,y14, nt)
nc_line(x11,y11, x13,y13, nrr)
nc_line(x12,y12, x14,y14, nrr)

-- Luftspalt
nc_line(x3,y3, x11,y11, ndelta)
nc_line(x4,y4, x12,y12, ndelta)

-- Rückschluss
x21,y21 = pd2c(ril, 0)
x22,y22 = pd2c(ril, ar)
nc_circle(x21,y21, x22,y22, nt)
nc_line(x21,y21, x1,y1, nli)
nc_line(x22,y22, x2,y2, nli)

create_mesh()

--------------------------------------------------------------------------------
-- Randbedingungen -------------------------------------------------------------
--------------------------------------------------------------------------------

def_bcond(x21,y21, x13,y13, x14, y14, x22, y22, 4)
def_bcond_vpo(x13,y13, x14, y14)
def_bcond_vpo(x22,y22, x21, y21)

--------------------------------------------------------------------------------
-- Materialzuweisung -----------------------------------------------------------
--------------------------------------------------------------------------------

-- Rotor
x,y = pd2c((rar+rir)/2, ar/2)
def_mat_fm(x,y, 1000, 100)
set_mat_perm(x,y,500)
set_mat_cond(x,y,1.4e6)
set_mat_velo(x,y,0,speed/60*2*math.pi)

x,y = pd2c(rim-hrsi/2,ar/2)
def_mat_fm(x,y, 1000, 100)
set_mat_cond(x,y,1.4e6)

-- Magnetring
x,y = pd2c((rim+ram)/2, ar/4)
def_mat_pm(x,y, "red", 1.3, 1.05, 0.0, m.radial, 100)
set_mat_cond(x,y,0.6e6)

x,y = pd2c((rim+ram)/2, ar*3/4)
def_mat_pm(x,y, "green", 1.3, 1.05, 180.0, m.radial, 100)
set_mat_cond(x,y,0.6e6)

grf_clear()
adapt_window()

--------------------------------------------------------------------------------
-- Berechnen -------------------------------------------------------------------
--------------------------------------------------------------------------------

state_of_problem("mag_static")
calc_field_single(1,actual,0.01)
post_models("draw_f_lines","b")
sleep(tts)
color_gradation(0,0,"tot","induc",0,0,"")
sleep(tts)

ax = 15.5
f = assert(io.open("example14_induc_stat.txt","w"))
f:write("# Flux density distribution static\n");
f:write("# radius[mm]    angle[mm]      real[T]      imag[T]\n");
for i=1,nrr-1 do
  rx = rir+(i-0.5)*(rar-rir)/(nrr-1)
  ecr,eci = get_elem_data("induc",pd2c(rx,ax))
  f:write(string.format("%9.6e %9.6e %9.6e %9.6e\n",rx,ax,ecr,eci));
end
io.close(f)

state_of_problem("mag_dynamic")
calc_field_single(1,actual,0.01)
post_models("draw_f_lines","b")
sleep(tts)
color_gradation(0,0,"tot","induc",0,0,"")
sleep(tts)

f = assert(io.open("example14_induc_dyn.txt","w"))
f:write("# Flux density distribution dynamic\n");
f:write("# radius[mm]    angle[mm]      real[T]      imag[T]\n");
for i=1,nrr-1 do
  rx = rir+(i-0.5)*(rar-rir)/(nrr-1)
  ecr,eci = get_elem_data("induc",pd2c(rx,ax))
  f:write(string.format("%9.6e %9.6e %9.6e %9.6e\n",rx,ax,ecr,eci));
end
io.close(f)

color_gradation(0,0,"tot","ecurd",0,0,"")
sleep(tts)

f = assert(io.open("example14_ecurd.txt","w"))
f:write("# Eddy current density distribution\n");
f:write("# radius[mm]    angle[mm]  real[A/mm2]  imag[A/mm2]\n");
for i=1,nrr-1 do
  rx = rir+(i-0.5)*(rar-rir)/(nrr-1)
  ecr,eci = get_elem_data("ecurd",pd2c(rx,ax))
  f:write(string.format("%9.6e %9.6e %9.6e %9.6e\n",rx,ax,ecr,eci));
end
io.close(f)

color_gradation(0,0,"tot","eclosd",0,0,"")
sleep(tts)

f = assert(io.open("example14_eclosd.txt","w"))
f:write("# Eddy current losses distribution\n");
f:write("# radius[mm]    angle[mm] eclos[W/mm3]\n");
for i=1,nrr-1 do
  rx = rir+(i-0.5)*(rar-rir)/(nrr-1)
  eclos = get_elem_data("eclosd",pd2c(rx,ax))
  f:write(string.format("%9.6e %9.6e %9.6e\n",rx,ax,eclos));
end
io.close(f)

save_model('close')