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(“pm_sym_fast”) siehe Simulation PM/Reluctance motor
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

Die Datei der Magnetisierungskennlinie M400-50A_mod.MCV ist im Falle der Ausführung des Skripts unter Windows in ihrer Endung von MCV in MC umzubenennen und ebenso die jeweiligen Angaben in der Skript-Datei.

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.MCV'

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.MCV'

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