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])