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