.. _exampleIron: ====================== Eisenverlustberechnung ====================== Die nachfolgenden Skript-Beispiele erstellen ein FEMAG-Modell und führen eine Leerlaufrechnung sowie eine Eisenverlustberechnung durch. Die Eisenverluste werden nach der FEMAG-internen Methode und unter Verwendung eines in Skript definierten Verlustmodells (Jordan) berechnet, das der FEMAG-internen Methode entspricht. Die Eisenverluste in den Zähnen und im Joch der externen und internen Methode werden zum Vergleich ausgegeben. Eine detailliertere Beschreibung der Eisenverlustberechnung über FEMAG-Skript ist unter FEMAG-Anwendertreffen 2012, Externe Eisenverlustberechnung (J. Krotsch) zu finden. Bildschirmausgabe und Ergebnis ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :: +-------------------------------------------------------------------+ | **** FSL **** Version Dec 10 2014, 20:45:16 | +-------------------------------------------------------------------+ | FEMAG Script Language Interpreter | +-------------------------------------------------------------------+ Start: Sun Dec 21 09:56:10 2014 FSL...init FSL...exe "example6b.fsl" Load model "Test" Global unit is 0.001 m Pick distance is 0.001 Set coordinate system to polar Preprocessing CAD model FE-contr-data Postprocessing CAD model: calc_losses => b Eisenverluste im Joch (FEMAG intern): 30.2413 W Postprocessing CAD model: calc_losses => b Eisenverluste im Joch (Skript): 30.2413 W Postprocessing CAD model: calc_losses => b Eisenverluste in Zähnen (FEMAG intern): 24.1331 W Postprocessing CAD model: calc_losses => b Eisenverluste in Zähnen (Skript): 24.1331 W FSL...end Stop: Sun Dec 21 09:56:10 2014 Elapsed time: 0s Skript zur Modellerstellung ^^^^^^^^^^^^^^^^^^^^^^^^^^^ :: --------------------------------------------- -- Allgemeine Einstellungen ----------------- --------------------------------------------- exit_on_error = false -- Verhalten nach Fehler exit_on_end = true -- Verhalten nach Skriptausfuehrung verbosity = 2 -- Grad der Bildschirmmeldungen --------------------------------------------- -- Modellerstellung ------------------------- --------------------------------------------- new_model_force("example","PMSM IL OM") global_unit('mm') -- Globale Einheit (m, cm, mm) pickdist(0.001) -- Abstand Schnappen auf Knotenpunkt cosys('polar') -- FE-contr-data m.hc_min = 95.0 -- Limit demagnetisa > 0:[%]Hc,<0:[kA/m] m.con_hdcopy = 0.00 -- Hc-copy:Name:auto:0,intact:1, none:-1 m.b_max = 2.40 -- Max Induction [T] in colorgradation m.b_min = 0.00 -- Move inside: 0 , Move outside: > 0 m.calc_fe_loss = 1.00 -- Calcul. FE-Loss > 0, areas <0, no = 0 m.eval_force = 0.00 -- Eval. force density > 0, no <= 0 m.allow_draw = 1.00 -- Draw Graphics :> 0: yes, 0: no m.fline_dens = 1.00 -- F-Lines: 1: small, 2: medium, 3:thick m.num_flines = 10.00 -- Number of Field-lines: < 100 > 2 m.name_bch_log = 0.00 -- Name bch-file in Logfile:> 0:yes,0:no m.st_size_move = 0.00 -- Step size move: r/ph:[degr], x/y:[mm] m.num_nonl_it = 1.00 -- Number of nonlinear Iterations < 99 m.perm_mode = 0.00 -- Permeability mode:>0:restore,0:actual m.error_perm = 0.500E-01 -- Rel. Permeability error < 0.1 [%] m.allow_demagn = 0.00 -- Allow Demagnetisation:= 1:yes,= 0:no m.maenergy = 0.00 -- Force from magn energy 1 :yes,= 0:no m.el_order_ag = 1.00 -- El. order in air gap: lin=1: quadr=2 m.export_scrpt = 0.00 -- Export parameters in script: yes > 0 pre_models("FE-contr-data"); -- CAD-Parameter Data: -- STATOR_3 m.yoke_diam = 130. -- Outer diameter yoke DAS [mm] m.inside_diam = 70.0 -- Inner diameter DIS [mm] m.slot_height = 20.0 -- Total slot height HSL [mm] m.slot_h1 = 2.00 -- Slot opening height H1S [mm] m.slot_h2 = 4.00 -- Slot head height H2S [mm] m.slot_width = 3.00 -- Slot width SWI,< 0 groove in Slot[mm] m.slot_r1 = 0.00 -- Upper Radius R1S [mm] m.slot_r2 = 0.00 -- Lower Radius R2S [mm] m.wedge_width1 = 0.00 -- Distance middlepoints B1S [mm] m.wedge_width2 = 0.00 -- Distance middlepoints B2S [mm] m.nodedist = 1.00 -- Rel. node distance in iron > 0.5 m.middle_line = 0.00 -- Layers: 0,vert:1,horiz:2,vert+horiz:3 m.tooth_width = 9.00 -- Tooth width TW (replaces B1, B2) [mm] m.slot_top_sh = 0.00 -- Top of slot: corner=2, line=1, arc=0 m.airgap = 1.00 -- Mesh in airgap: 2/3 airgap height[mm] m.tot_num_sl = 12 -- Total number of teeth on 2pi m.num_sl_gen = 3 -- Number of teeth be generated m.zeroangl = 0.00 -- Reference angle to x-axis [grad] m.mcvkey_yoke = 'dummy' pre_models("STATOR_3"); -- CAD-Parameter Data: -- Magnet-Sector m.magn_rad = 33.5 -- Radius Magnet airgap side RA [mm] m.yoke_rad = 20.0 -- Radius iron yoke inside RI [mm] m.magn_height = 5.00 -- Magnet height HM [mm] m.magn_width = 80.0 -- Magnet width: > 0: [%], < 0: BM [mm] m.airgap = 1.00 -- Mesh height (2/3 airgap) [mm] m.nodedist = 1.00 -- Rel. Node distance > 0.2 .. m.condshaft_r = 20.0 -- Conduct. Shaft Radius:< yoke_rad [mm] m.magn_num = 1.00 -- Number Magnet sections: > = 1 m.magn_perm = 1.05 -- Radius Iron between magnets [mm] m.magn_l = 100. -- Magnet Length: < 150 % [%] m.magn_ori = 1.00 -- Magnet: par = 1, Pol = 2, halbach = 3 m.magn_type = 2.00 -- Mag Type:Ac:1,Acp:2,Rc:3, Rcp:4,AAp:5 m.magn_shape = 0.00 -- Magnet surface radius or shape HA[mm] m.br_height = 0.00 -- Iron bridge height: = 0: none BH[mm] m.br_width = 0.00 -- Iron bridge width : = 0: none BW[mm] m.num_poles = 4 -- Total number of poles on 2pi m.npols_gen = 1 -- Number of poles be generated m.zeroangl = 0.00 -- Reference angle to x-axis [grad] m.cond_shaft = 0.00 -- El. Conductivity of shaft [S/m] m.mcvkey_yoke = 'dummy' m.mcvkey_mshaft = 'dummy' pre_models("Magnet-Sector"); -- connect_models pre_models("connect_models"); -- Gen_winding m.tot_num_slot = 12.0 -- Total Number of slots Q m.num_poles = 4.00 -- Number of Poles 2p m.num_phases = 3.00 -- Number of Phases m <= 500 m.num_layers = 1.00 -- Number of Layers (slot sides)per slot m.num_wires = 20.0 -- Number of wires per slot side m.current = 1.00 -- Wdg-Current [A] or flux [Vs/mm],peak m.coil_span = 3.00 -- Coil span Y >= 1 m.num_slots = 3.00 -- Number of slots in Model (Rot-Mot) m.mat_type = 1.00 -- Ma-type:1=Rot;21=lin-x;22=lin-y m.wind_type = 1.00 -- W-typ:1=w&cur;2=w&flux;3=bar&cur m.win_asym = 1.00 -- asy. slot pitch: 1=sym.; <1=asym. m.wdg_location = 1.00 -- Windg location:1: stator, 2: rotor m.curr_inp = 0.00 -- Curent:Const:0, Q-axis:1, D-axis:-1 m.dq_offset = 0.00 -- Offset to D-axis:>=0 Compl;<0 only Re m.xcoil_1 = 44.433 -- center coordinate of 1. coil side [mm] m.ycoil_1 = 11.906 -- center coordinate of 1. coil side [mm] m.xcoil_2 = 0.000 -- center coordinate of 2. coil side [mm] m.ycoil_2 = 0.000 -- center coordinate of 2. coil side [mm] pre_models("Gen_winding"); -- GEN_POC pre_models("GEN_POC"); -- FE-Losses-1 m.basfreq = 50.0 -- Base Frequency for ch and cw fo [Hz] m.basind = 1.50 -- Base Induction (Peak) Bo [T] m.ch = 4.00 -- Fe-Hysteresis -Coefficient ch [W/kg] m.cw = 2.00 -- Fe-Eddy current-Coefficient cw [W/kg] m.hyscoef = 1.00 -- Hysteresis- Frequency-Coefficient m.edycoef = 2.00 -- Eddycurrent-Frequency-Coefficient m.indcoef = 2.00 -- Induction-Coefficient m.ffactor = 1.00 -- Material + Field Factor >= 1 m.spweight = 7.65 -- Specific Weight Iron [gr/cm3] m.fillfact = 1.00 -- Fillfactor Iron <= 1 m.emodul = 0.210E+12 -- E-Modul [kN/mm2] m.poison = 0.300 -- Poissonvalue <= 1 m.dampfact = 0.00 -- Dampingfactor m.thcond = 0.00 -- Thermal conductivity [W/m degr] m.thcap = 0.00 -- Thermal heat capacity [Ws/g degr] pre_models("FE-Losses-1"); -- FE-Losses-2 m.basfreq = 50.0 -- Base Frequency for ch and cw fo [Hz] m.basind = 1.50 -- Base Induction (Peak) Bo [T] m.ch = 4.00 -- Fe-Hysteresis -Coefficient ch [W/kg] m.cw = 2.00 -- Fe-Eddy current-Coefficient cw [W/kg] m.hyscoef = 1.00 -- Hysteresis- Frequency-Coefficient m.edycoef = 2.00 -- Eddycurrent-Frequency-Coefficient m.indcoef = 2.00 -- Induction-Coefficient m.ffactor = 1.00 -- Material + Field Factor >= 1 m.spfeweight = 7.65 -- Specific Weight Iron [gr/cm3] m.fefilfact = 1.00 -- Fillfactor Iron <= 1 m.emodul = 0.210E+12 -- E-Modul [kN/mm2] m.poison = 0.300 -- Poissonvalue <= 1 m.dampfact = 0.00 -- Dampingfactor m.thcond = 0.00 -- Thermal conductivity [W/m degr] m.thcap = 0.00 -- Thermal heat capacity [Ws/g degr] pre_models("FE-Losses-2"); --------------------------------------------- -- Berechnung ------------------------------- --------------------------------------------- -- cogg_calc m.move_action = 0.00 -- Move Action: rotate=0, linear=1 m.arm_length = 1.00 -- Effect. armature length [mm] m.num_pol_pair = 2.00 -- Number of Pole pairs (>= 1) m.npols_gen = 1.00 -- Number of Poles simulated (>= 1) m.skew_angle = 0.00 -- Skew angle [Deg,mm] m.nu_skew_steps = 0.00 -- No of skew sect: >0:finite,0:infinite m.eval_force1 = 0.00 -- Evaluate force density:no = 0,yes > 0 m.fc_radius1 = 34.2 -- Air-gap center 1:radius/position [mm] m.fc_radius2 = 0.00 -- Air-gap center 2:radius [mm] m.nu_force_pat = 0.00 -- Number of extra force pathes < = 3 m.magn_temp = 20.0 -- Temperature Magnet [Deg C] m.speed = 3000.0 -- Speed: rotate [1/min] m.nu_move_steps = 61.0 -- Number of move steps m.range_phi = 180.0 -- Move range angle m.phi_start = 0.0 -- Start angle m.fc_mult_move_type = 0.0 -- Type of move path in air gap m.fc_radius1 = 34.237 -- position [mm] of move path in air gap m.pocfilename = 'Test_4p.poc' run_models("cogg_calc"); Es ist zu beachten, dass der Parameter "m.calc_fe_loss" in Abschnitt "FE-contr-data" vor einer Betriebsfallrechnung auf 1 gesetzt wird. Hierdurch werden die Induktionverläufe über dem Drehwinkel gespeichert, die Basis für die Eisenverlustberechnung über die in Skript definierte Funktion sind. Bei "m.calc_fe_loss = 0" wird stets eine FEMAG-interne Berechnungsmethode ausgehend von der Induktionsgrundschwingung verwendet. **Skript zur Eisenverlustberechnung** ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :: --------------------------------------------- -- Allgemeine Einstellungen ----------------- --------------------------------------------- exit_on_error = false -- Verhalten nach Fehler exit_on_end = true -- Verhalten nach Skriptausfuehrung verbosity = 2 -- Grad der Bildschirmmeldungen --------------------------------------------- -- Modellerstellung ------------------------- --------------------------------------------- load_model("example","PMSM IL OM") global_unit('mm') -- Globale Einheit (m, cm, mm) pickdist(0.001) -- Abstand Schnappen auf Knotenpunkt cosys('polar') -- FE-contr-data m.hc_min = 95.0 -- Limit demagnetisa > 0:[%]Hc,<0:[kA/m] m.con_hdcopy = 0.00 -- Hc-copy:Name:auto:0,intact:1, none:-1 m.b_max = 2.40 -- Max Induction [T] in colorgradation m.b_min = 0.00 -- Move inside: 0 , Move outside: > 0 m.calc_fe_loss = 0.00 -- Calcul. FE-Loss > 0, areas <0, no = 0 m.eval_force = 0.00 -- Eval. force density > 0, no <= 0 m.allow_draw = 1.00 -- Draw Graphics :> 0: yes, 0: no m.fline_dens = 1.00 -- F-Lines: 1: small, 2: medium, 3:thick m.num_flines = 10.0 -- Number of Field-lines: < 100 > 2 m.name_bch_log = 0.00 -- Name bch-file in Logfile:> 0:yes,0:no m.st_size_move = 0.00 -- Step size move: r/ph:[degr], x/y:[mm] m.num_nonl_it = 1.00 -- Number of nonlinear Iterations < 99 m.perm_mode = 0.00 -- Permeability mode:>0:restore,0:actual m.error_perm = 0.500E-01 -- Rel. Permeability error < 0.1 [%] m.allow_demagn = 0.00 -- Allow Demagnetisation:= 1:yes,= 0:no m.maenergy = 0.00 -- Force from magn energy 1 :yes,= 0:no m.el_order_ag = 1.00 -- El. order in air gap: lin=1: quadr=2 m.export_scrpt = 0.00 -- Export parameters in script: yes > 0 pre_models("FE-contr-data"); -------------------------------------------------------------------------- -- Definition benutzerspezifische Funktion zur Eisenverlustberechung ----- -------------------------------------------------------------------------- function pfe(Bx,By,kh,fnu,km) -- Bx Induktionsamplitude x-Komponente -- By Induktionsamplitude y-Komponente -- kh Hysteresefaktor (rotierend/pulsierend) -- fnu Frequenz -- km Materialfaktor (Zuschlagsfaktor) -- ph Rückgabewert Hystereseverluste -- pw Rückgabewert Wirbelstromverluste -- iret Rückgabewert Fehlerstatus -- Parameter basfrq=50.0 -- Base Frequency for ch and cw [Hz] basind=1.5 -- Base Induction (Peak) [T] ch=4.0 -- Fe Hysteresis Coefficient ch [W/kg] cw=2.0 -- Fe Eddy Current Coefficient cw [W/kg] hyscoef=1.0 -- Hysteresis Frequency Coefficient edycoef=2.0 -- Eddy Current Frequency Coefficient indcoef=2.0 -- Induction Coefficient spweight=7.65 -- Specific Weight Iron [gr/cm3] fillfact=1.0 -- Fillfactor Iron <= 1 -- Eisenverlustmodell hxx = Bx/fillfact -- Bx hyy = By/fillfact -- By b21 = math.sqrt(hxx*hxx+hyy*hyy) b2 = math.pow(b21/basind,indcoef) hi = fnu/basfrq hch = math.pow(hi,hyscoef) hcw = math.pow(hi,edycoef) ph = kh*ch*hch*b2*spweight*1000.0*km -- [W/m3] pw = cw*hcw*b2*spweight*1000.0*km -- [W/m3] iret=1 return ph, pw, iret end -------------------------------------------------------------------------- -- Eisenverlustberechung ------------------------------------------------- -------------------------------------------------------------------------- m.loss_funct = 0.00 -- Loss-Function: own = 0, extern = 1 m.coord_x = 44.4 -- Location of Loss_calc: x [mm] m.coord_y = 38.4 -- Location of Loss_calc: y [mm] m.frequency = 100. -- Frequency [Hz] m.arm_length = 50.0 -- Effect. armature length [mm] m.num_pol_pair = 2.00 -- Number of Pole pairs p (>= 1) m.npols_gen = 1.00 -- Number of Poles simulated ps (>= 1) m.loss_fact = 1.00 -- Loss multiplication factor: 1 .. 1.8 post_models("calc_losses","b") printf(" Eisenverluste im Joch (FEMAG intern): %g W",b[1]) m.loss_funct = 1.00 -- Loss-Function: own = 0, extern = 1 post_models("calc_losses","b") printf(" Eisenverluste im Joch (Skript): %g W",b[1]) m.loss_funct = 0.00 -- Loss-Function: own = 0, extern = 1 m.coord_x = 40.7 -- Location of Loss_calc: x [mm] m.coord_y = 24.8 -- Location of Loss_calc: y [mm] post_models("calc_losses","b") printf(" Eisenverluste in Zähnen (FEMAG intern): %g W",b[1]) m.loss_funct = 1.00 -- Loss-Function: own = 0, extern = 1 post_models("calc_losses","b") printf(" Eisenverluste in Zähnen (Skript): %g W",b[1])