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

save_model("close")

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