====================== 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. .. image:: example14_topology.png .. image:: example14_fieldl_1.png .. image:: 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 :any:`emagModelMat`). .. image:: example14_ecurd_1.png .. image:: example14_ecurd_2.png .. image:: example14_eclosd_1.png .. image:: 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 :any:`emagEvalGraph`). 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. .. image:: example14_induc_1.png .. image:: example14_induc_2.png .. role:: big :big:`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')