PM-Reluktanzsynchronmaschine und Parameteridentifikation

Parameterbasierte FE-Modellerstellung einer PM-unterstützten Reluktanz-Synchronmaschine, Simulation des Leerlauf- und Lastfalls sowie Ermittlung der Maschinenparameter des induktivitätsbasierten d-q-Modells

../../../_images/form_14.png

sowie des flussverkettungsbasierten d-q-Modells

../../../_images/form_15.png

zur Simulation des stationären und transienten Betriebsverhaltens. Es kommen die FSL-Befehle

run_models("ld_lq_fast") siehe Ld and Lq identification
run_models("psd_psq_fast") siehe Psid and Psiq identification

zur Anwendung.

Die nachfolgende Darstellung gibt einen Eindruck von der hier beispielhaft verwendeten Maschinentopologie.

../../../_images/example17_topology.png

Skript-Datei

--------------------------------------------------------------------------------
-- FSL Control Parameter -------------------------------------------------------
--------------------------------------------------------------------------------

exit_on_error = false
exit_on_end = false
verbosity = 2

--------------------------------------------------------------------------------
-- FE Model Generation ---------------------------------------------------------
--------------------------------------------------------------------------------

new_model_force("example17","PM Rel Example")

global_unit('mm')     -- Global unit of length (m; cm; mm)
pickdist(0.001)       -- Distance to select nodes by coordinates
cosys('polar')

-- General Model and Simulation Data --

m.tot_num_slot    =         24.000  -- Number of slots               (>= 1)
m.num_poles       =          4.000  -- Number of poles 2p            (>= 2)
m.npols_gen       =          1.000  -- Number of poles simulated     (>= 1)
m.num_slots       =          6.000  -- Number of slots in model
m.arm_length      =        150.000  -- Effect. armature length          [mm]
m.fc_radius       =        100.500  -- Radius air-gap center            [mm]

pre_models("basic_modpar");

-- Stator

m.yoke_diam       =        300.000  -- Outer diameter yoke   DAS        [mm]
m.inside_diam     =        202.000  -- Inner diameter        DIS        [mm]
m.slot_height     =         30.000  -- Total slot height     HSL        [mm]
m.slot_h1         =          4.000  -- Slot opening height   H1S        [mm]
m.slot_h2         =          8.000  -- Slot head height      H2S        [mm]
m.slot_width      =          7.000  -- Slot width SWI;< 0 groove in Slot[mm]
m.slot_r1         =          0.000  -- Upper Radius          R1S        [mm]
m.slot_r2         =          0.000  -- Lower Radius          R2S        [mm]
m.wedge_width1    =          0.000  -- Distance middlepoints B1S        [mm]
m.wedge_width2    =          0.000  -- Distance middlepoints B2S        [mm]
m.nodedist        =          2.000  -- Rel.nod-dist > 0 begin tooth;< 0 slot
m.middle_line     =          2.000  -- Layers: 0;vert:1;horiz:2;vert+horiz:3
m.tooth_width     =         12.000  -- Tooth width TW (replaces B1; B2) [mm]
m.slot_top_sh     =          0.000  -- Top of slot: corner=2; line=1; arc=0
m.airgap          =          0.666  -- Airgap 2/3 height:>0; <0:no ndchn[mm]
m.tot_num_sl      = m.tot_num_slot  -- Total number of teeth on 2pi
m.num_sl_gen      =    m.num_slots  -- Number of teeth be generated
m.zeroangl        =          0.000  -- Reference angle to x-axis [grad]
m.rlength         =        100.000  -- rel. length fe in z-dir [%]
m.mcvkey_yoke     =  'M400-50A_mod'

pre_models("STATOR_3");

m.basfreq         =         50.000  -- Base Frequency for ch and cw  fo [Hz]
m.basind          =          1.500  -- Base Induction  (Peak)        Bo  [T]
m.ch              =          3.000  -- Fe-Hysteresis  -Coefficient ch [W/kg]
m.cw              =          1.500  -- Fe-Eddy current-Coefficient cw [W/kg]
m.hyscoef         =          1.000  -- Hysteresis- Frequency-Coefficient
m.edycoef         =          2.000  -- Eddycurrent-Frequency-Coefficient
m.indcoef         =          2.000  -- Induction-Coefficient
m.ffactor         =          1.000  -- Material + Field Factor >= 1
m.spweight        =          7.650  -- Specific Weight Iron         [gr/cm3]
m.fillfact        =          1.000  -- Fillfactor Iron         <= 1
m.emodul          =       0.210E12  -- E-Modul                      [kN/mm2]
m.poison          =          0.300  -- Poissonvalue      <= 1
m.dampfact        =          0.000  -- Dampingfactor
m.thcond          =         30.000  -- Thermal conductivity      [W/m degr]
m.thcap           =        480.000  -- Thermal heat capacity     [Ws/g degr]

pre_models("FE-Losses-1");

--  Windings and Conductor Specification

--m.tot_num_slot  =         24.000  -- Total Number of slots Q
--m.num_poles     =          4.000  -- Number of Poles 2p
m.num_phases      =          3.000  -- Number of Phases m  <=  200
m.num_layers      =          2.000  -- Number of Layers (slot sides)per slot
m.num_wires       =          6.000  -- Number of wires per slot side
m.current         =          0.000  -- Wdg-Current [A] or flux [Vs/mm];peak
m.coil_span       =          6.000  -- Coil span Y  >= 1
--m.num_slots     =          6.000  -- Number of slots in Model (Rot-Mot)
m.mat_type        =          1.000  -- Ma-type:1=Rot;21=lin-x;22=lin-y
m.wind_type       =          1.000  -- W-typ:1=w&cur;2=w&flux;3=bar&cur
m.win_asym        =          1.000  -- asy. slot pitch: 1=sym.; <1=asym.
m.wdg_location    =          1.000  -- Windg location:1: stator; 2: rotor
m.curr_inp        =          0.000  -- Curent:Const:0; Q-axis:1; D-axis:-1
m.dq_offset       =          0.000  -- Offset to D-axis:>=0 Compl;<0 only Re
m.npols_gen       =          1.000  -- Number of Poles simulated      (>= 1)
m.xcoil_1         =        111.538  -- center coordinate of 1. coil side [mm]
m.ycoil_1         =         14.684  -- center coordinate of 1. coil side [mm]
m.xcoil_2         =        115.699  -- center coordinate of 2. coil side [mm]
m.ycoil_2         =         47.944  -- center coordinate of 2. coil side [mm]

pre_models("Gen_winding");

m.cufilfact       =          0.450  -- Conductor space filling-factor: <= 1
m.culength        =        160.000  -- Rel. conductor length (c+e wdg)   [%]
m.cuconduct       =   56000000.000  -- Conductor conductivity 20 Dgr C [S/m]
m.numlayers       =          1.000  -- Number of conductor layers   > = 1
m.conheight       =          0.000  -- Rectangular Conductor height     [mm]
m.contemp         =         20.000  -- Conductor Temperature      [Degree C]
m.emodul          =       0.210E12  -- E-Modul                      [kN/mm2]
m.poison          =          0.300  -- Poissonvalue      <= 1
m.dampfact        =          0.000  -- Dampingfactor
m.thcond          =         30.000  -- Thermal conductivity      [W/m degr]
m.thcap           =        480.000  -- Thermal heat capacity     [Ws/g degr]
m.slot_indul      =          1.000  -- Slot insulation               [mm]
m.dia_wire        =          0.000  -- Diameter single round wire    [mm]
m.num_wire        =          0.000  -- Number of single wires/conductor

pre_models("CU-Losses-1");

-- Specify Permanent Magnet Properties

m.remanenc        =          0.700  -- Remanence  Br  (Ref:20 Degree C)  [T]
m.relperm         =          1.050  -- Rel. Permeability muer
m.spmaweight      =          4.000  -- Specific Weight Magnets       [gr/cm3]
m.temcoefbr       =         -0.100  -- Temperature Coefficient for Br   [%/K]
m.temcoefhc       =         -0.100  -- Temperature Coefficient for Hc   [%/K]
m.magntemp        =         20.000  -- Magnet Temperature          [Degree C]
m.magncond        =          0.000  -- Magnet el. conductivity      [1/Ohm m]
m.magsegwid       =     nil         -- Magnet segment width              [mm]
m.magseglen       =     nil         -- Magnet segment length z-direction [mm]

pre_models("Magnet-data");

-- Rotors with Permanent Magnets and Reluctance

m.rotor_rad       =        100.000  -- Outer Radius                  RA [mm]
m.inside_rad      =         40.000  -- Inner Radius; <0:holes uneven RI [mm]
m.magn_height     =          5.000  -- Inner Magnet height           HM [mm]
m.magn_width      =         50.000  -- Inner Magnet width;< 0 #      BM [mm]
m.magn_dm         =          8.000  -- Magnet distance from RI       DM [mm]
m.magn_dm1        =          8.000  -- Magnet dist. betw.magnet     DM1 [mm]
m.gap_ma_iron     =          2.000  -- Iron gap betw. magnets       DE_M[mm]
m.iron_height     =          1.500  -- Iron height circle rotor      H1 [mm]
m.corner_rad      =          2.500  -- Corner and Circle radius      R1 [mm]
m.circle_num      =         10.000  -- Number of Circles R1 per Pole NC
m.slot_num        =          3.000  -- Number of Slots per Pole NS < NC/2
m.magn_num        =          1.000  -- Number of Magnets sections NM
m.iron_shape      =         99.000  -- Airgap shape radius HA:<= RA     [mm]
m.nodedist        =          2.000  -- Rel. Node distance > 0.2
--m.airgap        =          0.666  -- Mesh height (2/3 airgap)         [mm]
--m.num_poles     =              4  -- Total number of poles on 2pi
--m.npols_gen     =              1  -- Number of poles be generated
m.zeroangl        =          0.000  -- Reference angle to x-axis [grad]
m.mcvkey_yoke     =  'M400-50A_mod'

pre_models("Magnet+Reluct");

m.basfreq         =         50.000  -- Base Frequency for ch and cw  fo [Hz]
m.basind          =          1.500  -- Base Induction  (Peak)        Bo  [T]
m.ch              =          3.000  -- Fe-Hysteresis  -Coefficient ch [W/kg]
m.cw              =          1.500  -- Fe-Eddy current-Coefficient cw [W/kg]
m.hyscoef         =          1.000  -- Hysteresis- Frequency-Coefficient
m.edycoef         =          2.000  -- Eddycurrent-Frequency-Coefficient
m.indcoef         =          2.000  -- Induction-Coefficient
m.ffactor         =          1.000  -- Material + Field Factor >= 1
m.spweight        =          7.650  -- Specific Weight Iron         [gr/cm3]
m.fillfact        =          1.000  -- Fillfactor Iron         <= 1
m.emodul          =       0.210E12  -- E-Modul                      [kN/mm2]
m.poison          =          0.300  -- Poissonvalue      <= 1
m.dampfact        =          0.000  -- Dampingfactor
m.thcond          =         30.000  -- Thermal conductivity      [W/m degr]
m.thcap           =        480.000  -- Thermal heat capacity     [Ws/g degr]

pre_models("FE-Losses-2");

-- Generate File Needed to Specify the Phase Currents

pre_models("gen_pocfile");

-- Connect the stator and rotor and apply boundary conditions automatically

pre_models("connect_models")

-- Calculation of stray inductances of the winding overhangs

m.nseg            =          4.000  -- Number of segments
m.npolsim         =    m.npols_gen  -- Number of poles simulated
--m.fc_radius     =        100.500  -- Radius air-gap center (torque) [mm]
m.perimrad        =        139.275  -- Radius of perimeter [mm]
m.vbendrad        =          5.000  -- Bending radius vertical [mm]
m.endheight       =         20.000  -- End winding height [mm]
m.wiredia         =          1.000  -- Wire diameter [mm]

pre_models("leak_dist_wind");
--post_models("end_wind_leak","leak");

--------------------------------------------------------
-- Simulation and Performance Analysis of the Machine --
--------------------------------------------------------

----------------------------------
-- Simulation Control Parameter --
----------------------------------

m.hc_min          =         95.000  -- Limit demagnetisa > 0:[%]Hc;<0:[kA/m]
m.con_hdcopy      =          1.000  -- Hc-copy:Name:auto:0;intact:1; none:-1
m.b_max           =          2.000  -- Max Induction [T] in colorgradation
m.b_min           =          0.000  -- Move inside: 0 ; Move outside: > 0
m.calc_fe_loss    =          1.000  -- Calc. FE-Loss:0:no; 1:yes; 2:m-output
m.eval_force      =          0.000  -- Eval. force density > 0; no <= 0
m.allow_draw      =          1.000  -- Draw Graphics :> 0: yes; 0:  no
m.fline_dens      =          1.000  -- F-Lines: 1: small; 2: medium; 3:thick
m.num_flines      =         25.000  -- Number of Field-lines:      < 100 > 2
m.name_bch_log    =          0.000  -- Name bch-file in Logfile:> 0:yes;0:no
m.st_size_move    =          0.000  -- Step size move: r/ph:[degr]; x/y:[mm]
m.num_nonl_it     =        300.000  -- Number of nonlinear Iterations   < 99
m.perm_mode       =          0.000  -- Permeability mode:>0:restore;0:actual
m.error_perm      =          0.010  -- Rel. Permeability error < 0.1     [%]
m.allow_demagn    =          0.000  -- Allow Demagnetisation:= 1:yes;= 0:no
m.maenergy        =          0.000  -- Force from magn energy 1 :yes;= 0:no
m.el_order_ag     =          1.000  -- El. order in air gap: lin=1: quadr=2
m.export_scrpt    =          0.000  -- Export parameters in script: yes > 0

pre_models("FE-contr-data");

-----------------------------------------------
-- Flux Density Distribution at Open Circuit --
-----------------------------------------------

calc_field_single(100,restored,0.01)
grf_clear()
draw_spels()
color_gradation(0,0,"tot","Babs",0,0,"example17_fluxdens_0.svg")
sleep(3)

ppc = 150     -- phase peak current

def_curr_wdg(1,ppc)
def_curr_wdg(2,-ppc/2)
def_curr_wdg(3,-ppc/2)
calc_field_single(100,restored,0.01)
grf_clear()
draw_spels()
color_gradation(0,0,"tot","Babs",0,0,"example17_fluxdens_1.svg")
sleep(3)
post_models("draw_f_lines","b")
save_metafile("example17_fluxlines.svg")
sleep(3)

-----------------------------------------------
-- Open Circuit and Load Voltages and Torque --
-----------------------------------------------

-- Parameter commented out are requested by run_models() but
-- already given above.

m.move_action     =          0.000    -- Move Action: rotate=0; linear=1
--m.arm_length    =        150.000    -- Effect. armature length          [mm]
m.num_pol_pair    =  m.num_poles/2    -- Number of Pole pairs           (>= 1)
--m.npols_gen     =          1.000    -- Number of Poles simulated      (>= 1)
m.speed           =       2500.000    -- Speed: rotate                 [1/min]
m.skew_angle      =          0.000    -- Skew angle                  [Deg; mm]
m.nu_skew_steps   =          0.000    -- No of skew sect:>0:finite;0:infinite
m.eval_force      =          0.000    -- Evaluate force density: no = 0;yes >0
m.current         =            ppc    -- Nominal stator coil current(Peak) [A]
m.angl_i_up       =          0.000    -- Angle current I vs. voltage Up  [Deg]
m.num_par_wdgs    =          0.000    -- Number of parallel Windings   (>= 1)
m.magn_temp       =         20.000    -- Temperature Magnet            [Deg C]
--m.fc_radius     =        100.500    -- Radius air-gap center (torque)   [mm]
m.optim_i_up      =          1.000    -- Optimize < I vs Up : no = 0; yes > 0
m.calc_fe_loss    =          1.000    -- Calculate Losses:>0; areas>0; no = 0
m.nu_move_steps   =        -13.000    -- Number of move steps
m.range_phi       =        180.000    -- Move range angle
m.phi_start       =          0.000    -- Start angle
m.pm_eff_aktiv    =              0    -- No interaction
m.fc_mult_move_type =          1.0    -- Type of move path in air gap
m.fc_force_points   =        0.000    -- Number move points in air gap
m.pocfilename    = 'example17_4p.poc'

run_models("pm_sym_fast");

-------------------------------------------------------
-- Maschine Parameter Identification (Psi_m, Ld, Lq) --
-------------------------------------------------------

-- Parameter commented out are requested by run_models() but
-- already given above.

--m.move_action   =          0.000    -- Move Action: rotate=0; linear=1
--m.arm_length    =        150.000    -- Effect. armature length          [mm]
--m.num_pol_pair  =          2.000    -- Number of Pole pairs           (>= 1)
--m.npols_gen     =          1.000    -- Number of Poles simulated      (>= 1)
--m.speed         =       2500.000    -- Speed: rotate                 [1/min]
--m.skew_angle    =          0.000    -- Skew angle                  [Deg; mm]
--m.nu_skew_steps =          0.000    -- No of skew sect:>0:finite;0:infinite
m.current         =          2*ppc    -- Nominal stator coil current(Peak) [A]
--m.num_par_wdgs  =          1.000    -- Number of parallel Windings    (>= 1)
--m.magn_temp     =         20.000    -- Temperature Magnet            [Deg C]
--m.fc_radius     =        100.923    -- Radius air-gap center (torque)  [mm]
m.num_cur_steps   =          3.000    -- Number of current steps    <= 15
m.nu_beta_steps   =          3.000    -- Number of beta angle steps <= 15
m.beta_max        =          0.000    -- Beta angle maximum
m.beta_min        =        -60.000    -- Beta angle minimum
--m.nu_move_steps =        -13.000    -- Number of move steps
--m.range_phi     =        180.000    -- Move range angle
--m.phi_start     =          0.000    -- Start angle
m.pm_eff_aktiv    =              0    -- No interaction
--m.pocfilename   = 'example17_4p.poc'

--run_models("ld_lq_fast");           -- <<< uncomment to activate

------------------------------------------------------
-- Maschine Parameter Identification (Psi_d, Psi_q) --
------------------------------------------------------

-- Parameter commented out are requested by run_models() but
-- already given above.

--m.arm_length    =        150.000    -- Effect. armature length          [mm]
--m.num_pol_pair  =          2.000    -- Number of Pole pairs           (>= 1)
--m.npols_gen     =          1.000    -- Number of Poles simulated      (>= 1)
--m.speed         =       2500.000    -- Speed: rotate                 [1/min]
--m.skew_angle    =          0.000    -- Skew angle                  [Deg; mm]
--m.nu_skew_steps =          0.000    -- No of skew sect: >0:finite;0:infinite
--m.num_par_wdgs  =          1.000    -- Number of parallel Windings    (>= 1)
--m.fc_radius     =        100.500    -- Radius air-gap center (torque)   [mm]
m.maxid           =          2*ppc    -- Max value Id-current              [A]
m.minid           =         -2*ppc    -- Min value Id-current              [A]
m.maxiq           =          2*ppc    -- Max value Iq-current              [A]
m.miniq           =         -2*ppc    -- Min value Iq-current              [A]
m.delta_id        =          2*ppc    -- Delta Id                          [A]
m.delta_iq        =          2*ppc    -- Delta Iq                          [A]
--m.nu_move_steps =        -13.000    -- Number of move steps
--m.range_phi     =        180.000    -- Move range angle
--m.phi_start     =          0.000    -- Start angle
--m.pocfilename   = 'example17_4p.poc'

run_models("psd_psq_fast");           -- <<< uncomment to activate